# This file was auto-generated by Fern from our API Definition.

import typing

from ..core import enum

T_Result = typing.TypeVar("T_Result")


class AzurePiiCategory(enum.StrEnum):
    ALL = "all"
    PERSON = "Person"
    PERSON_TYPE = "PersonType"
    PHONE_NUMBER = "PhoneNumber"
    ORGANIZATION = "Organization"
    ADDRESS = "Address"
    EMAIL = "Email"
    URL = "URL"
    IP_ADDRESS = "IP Address"
    DATE_TIME = "DateTime"
    BANK_ACCOUNT_NUMBER = "BankAccountNumber"
    DRIVERS_LICENSE_NUMBER = "DriversLicenseNumber"
    PASSPORT_NUMBER = "PassportNumber"

    def visit(
        self,
        all_: typing.Callable[[], T_Result],
        person: typing.Callable[[], T_Result],
        person_type: typing.Callable[[], T_Result],
        phone_number: typing.Callable[[], T_Result],
        organization: typing.Callable[[], T_Result],
        address: typing.Callable[[], T_Result],
        email: typing.Callable[[], T_Result],
        url: typing.Callable[[], T_Result],
        ip_address: typing.Callable[[], T_Result],
        date_time: typing.Callable[[], T_Result],
        bank_account_number: typing.Callable[[], T_Result],
        drivers_license_number: typing.Callable[[], T_Result],
        passport_number: typing.Callable[[], T_Result],
    ) -> T_Result:
        if self is AzurePiiCategory.ALL:
            return all_()
        if self is AzurePiiCategory.PERSON:
            return person()
        if self is AzurePiiCategory.PERSON_TYPE:
            return person_type()
        if self is AzurePiiCategory.PHONE_NUMBER:
            return phone_number()
        if self is AzurePiiCategory.ORGANIZATION:
            return organization()
        if self is AzurePiiCategory.ADDRESS:
            return address()
        if self is AzurePiiCategory.EMAIL:
            return email()
        if self is AzurePiiCategory.URL:
            return url()
        if self is AzurePiiCategory.IP_ADDRESS:
            return ip_address()
        if self is AzurePiiCategory.DATE_TIME:
            return date_time()
        if self is AzurePiiCategory.BANK_ACCOUNT_NUMBER:
            return bank_account_number()
        if self is AzurePiiCategory.DRIVERS_LICENSE_NUMBER:
            return drivers_license_number()
        if self is AzurePiiCategory.PASSPORT_NUMBER:
            return passport_number()
