# Path: firebase_admin/_auth_utils.py
# EMULATOR_HOST_ENV_VAR = 'FIREBASE_AUTH_EMULATOR_HOST'
# MAX_CLAIMS_PAYLOAD_SIZE = 1000
# RESERVED_CLAIMS = set([
#     'acr', 'amr', 'at_hash', 'aud', 'auth_time', 'azp', 'cnf', 'c_hash', 'exp', 'iat',
#     'iss', 'jti', 'nbf', 'nonce', 'sub', 'firebase',
# ])
# VALID_EMAIL_ACTION_TYPES = set(['VERIFY_EMAIL', 'EMAIL_SIGNIN', 'PASSWORD_RESET'])
# _CODE_TO_EXC_TYPE = {
#     'CONFIGURATION_NOT_FOUND': ConfigurationNotFoundError,
#     'DUPLICATE_EMAIL': EmailAlreadyExistsError,
#     'DUPLICATE_LOCAL_ID': UidAlreadyExistsError,
#     'EMAIL_EXISTS': EmailAlreadyExistsError,
#     'EMAIL_NOT_FOUND': EmailNotFoundError,
#     'INSUFFICIENT_PERMISSION': InsufficientPermissionError,
#     'INVALID_DYNAMIC_LINK_DOMAIN': InvalidDynamicLinkDomainError,
#     'INVALID_ID_TOKEN': InvalidIdTokenError,
#     'PHONE_NUMBER_EXISTS': PhoneNumberAlreadyExistsError,
#     'TENANT_NOT_FOUND': TenantNotFoundError,
#     'USER_NOT_FOUND': UserNotFoundError,
# }
# class PageIterator:
# class UidAlreadyExistsError(exceptions.AlreadyExistsError):
# class EmailAlreadyExistsError(exceptions.AlreadyExistsError):
# class InsufficientPermissionError(exceptions.PermissionDeniedError):
# class InvalidDynamicLinkDomainError(exceptions.InvalidArgumentError):
# class InvalidIdTokenError(exceptions.InvalidArgumentError):
# class PhoneNumberAlreadyExistsError(exceptions.AlreadyExistsError):
# class UnexpectedResponseError(exceptions.UnknownError):
# class UserNotFoundError(exceptions.NotFoundError):
# class EmailNotFoundError(exceptions.NotFoundError):
# class TenantNotFoundError(exceptions.NotFoundError):
# class TenantIdMismatchError(exceptions.InvalidArgumentError):
# class ConfigurationNotFoundError(exceptions.NotFoundError):
# class UserDisabledError(exceptions.InvalidArgumentError):
#     def __init__(self, current_page):
#     def __next__(self):
#     def __iter__(self):
#     def items(self):
# def get_emulator_host():
# def is_emulated():
# def validate_uid(uid, required=False):
# def validate_email(email, required=False):
# def validate_phone(phone, required=False):
# def validate_password(password, required=False):
# def validate_bytes(value, label, required=False):
# def validate_display_name(display_name, required=False):
# def validate_provider_id(provider_id, required=True):
# def validate_provider_uid(provider_uid, required=True):
# def validate_photo_url(photo_url, required=False):
# def validate_timestamp(timestamp, label, required=False):
# def validate_int(value, label, low=None, high=None):
# def validate_string(value, label):
# def validate_boolean(value, label):
# def validate_custom_claims(custom_claims, required=False):
# def validate_action_type(action_type):
# def validate_provider_ids(provider_ids, required=False):
# def build_update_mask(params):
#     def __init__(self, message, cause, http_response):
#     def __init__(self, message, cause, http_response):
#     def __init__(self, message, cause, http_response):
#     def __init__(self, message, cause, http_response):
#     def __init__(self, message, cause=None, http_response=None):
#     def __init__(self, message, cause, http_response):
#     def __init__(self, message, cause=None, http_response=None):
#     def __init__(self, message, cause=None, http_response=None):
#     def __init__(self, message, cause=None, http_response=None):
#     def __init__(self, message, cause=None, http_response=None):
#     def __init__(self, message):
#     def __init__(self, message, cause=None, http_response=None):
#     def __init__(self, message, cause=None, http_response=None):
# def handle_auth_backend_error(error):
# def _parse_error_body(response):
# def _build_error_message(code, exc_type, custom_message):


from firebase_admin import _auth_utils
    See ``auth.get_user()``.
    """

    def __init__(self, phone_number):
        """Constructs a new `PhoneIdentifier` object.

        Args:
            phone_number: A phone number string.
        """
        self._phone_number = _auth_utils.validate_phone(phone_number, required=True)

    @property
    def phone_number(self):
        return self._phone_number


class ProviderIdentifier(UserIdentifier):
    """Used for looking up an account by provider.

    See ``auth.get_user()``.
    """

    def __init__(self, provider_id, provider_uid):
        """Constructs a new `ProviderIdentifier` object.

        Args:
            provider_id: A provider ID string.
            provider_uid: A provider UID string.
        """
        self._provider_id = _auth_utils.validate_provider_id(provider_id, required=True)

# Path: firebase_admin/_auth_utils.py
# EMULATOR_HOST_ENV_VAR = 'FIREBASE_AUTH_EMULATOR_HOST'
# MAX_CLAIMS_PAYLOAD_SIZE = 1000
# RESERVED_CLAIMS = set([
#     'acr', 'amr', 'at_hash', 'aud', 'auth_time', 'azp', 'cnf', 'c_hash', 'exp', 'iat',
#     'iss', 'jti', 'nbf', 'nonce', 'sub', 'firebase',
# ])
# VALID_EMAIL_ACTION_TYPES = set(['VERIFY_EMAIL', 'EMAIL_SIGNIN', 'PASSWORD_RESET'])
# _CODE_TO_EXC_TYPE = {
#     'CONFIGURATION_NOT_FOUND': ConfigurationNotFoundError,
#     'DUPLICATE_EMAIL': EmailAlreadyExistsError,
#     'DUPLICATE_LOCAL_ID': UidAlreadyExistsError,
#     'EMAIL_EXISTS': EmailAlreadyExistsError,
#     'EMAIL_NOT_FOUND': EmailNotFoundError,
#     'INSUFFICIENT_PERMISSION': InsufficientPermissionError,
#     'INVALID_DYNAMIC_LINK_DOMAIN': InvalidDynamicLinkDomainError,
#     'INVALID_ID_TOKEN': InvalidIdTokenError,
#     'PHONE_NUMBER_EXISTS': PhoneNumberAlreadyExistsError,
#     'TENANT_NOT_FOUND': TenantNotFoundError,
#     'USER_NOT_FOUND': UserNotFoundError,
# }
# class PageIterator:
# class UidAlreadyExistsError(exceptions.AlreadyExistsError):
# class EmailAlreadyExistsError(exceptions.AlreadyExistsError):
# class InsufficientPermissionError(exceptions.PermissionDeniedError):
# class InvalidDynamicLinkDomainError(exceptions.InvalidArgumentError):
# class InvalidIdTokenError(exceptions.InvalidArgumentError):
# class PhoneNumberAlreadyExistsError(exceptions.AlreadyExistsError):
# class UnexpectedResponseError(exceptions.UnknownError):
# class UserNotFoundError(exceptions.NotFoundError):
# class EmailNotFoundError(exceptions.NotFoundError):
# class TenantNotFoundError(exceptions.NotFoundError):
# class TenantIdMismatchError(exceptions.InvalidArgumentError):
# class ConfigurationNotFoundError(exceptions.NotFoundError):
# class UserDisabledError(exceptions.InvalidArgumentError):
#     def __init__(self, current_page):
#     def __next__(self):
#     def __iter__(self):
#     def items(self):
# def get_emulator_host():
# def is_emulated():
# def validate_uid(uid, required=False):
# def validate_email(email, required=False):
# def validate_phone(phone, required=False):
# def validate_password(password, required=False):
# def validate_bytes(value, label, required=False):
# def validate_display_name(display_name, required=False):
# def validate_provider_id(provider_id, required=True):
# def validate_provider_uid(provider_uid, required=True):
# def validate_photo_url(photo_url, required=False):
# def validate_timestamp(timestamp, label, required=False):
# def validate_int(value, label, low=None, high=None):
# def validate_string(value, label):
# def validate_boolean(value, label):
# def validate_custom_claims(custom_claims, required=False):
# def validate_action_type(action_type):
# def validate_provider_ids(provider_ids, required=False):
# def build_update_mask(params):
#     def __init__(self, message, cause, http_response):
#     def __init__(self, message, cause, http_response):
#     def __init__(self, message, cause, http_response):
#     def __init__(self, message, cause, http_response):
#     def __init__(self, message, cause=None, http_response=None):
#     def __init__(self, message, cause, http_response):
#     def __init__(self, message, cause=None, http_response=None):
#     def __init__(self, message, cause=None, http_response=None):
#     def __init__(self, message, cause=None, http_response=None):
#     def __init__(self, message, cause=None, http_response=None):
#     def __init__(self, message):
#     def __init__(self, message, cause=None, http_response=None):
#     def __init__(self, message, cause=None, http_response=None):
# def handle_auth_backend_error(error):
# def _parse_error_body(response):
# def _build_error_message(code, exc_type, custom_message):


# Path: firebase_admin/_user_identifier.py
from firebase_admin import _auth_utils

    See ``auth.get_user()``.
    """

    def __init__(self, phone_number):
        """Constructs a new `PhoneIdentifier` object.

        Args:
            phone_number: A phone number string.
        """
        self._phone_number = _auth_utils.validate_phone(phone_number, required=True)

    @property
    def phone_number(self):
        return self._phone_number


class ProviderIdentifier(UserIdentifier):
    """Used for looking up an account by provider.

    See ``auth.get_user()``.
    """

    def __init__(self, provider_id, provider_uid):
        """Constructs a new `ProviderIdentifier` object.

        Args:
            provider_id: A provider ID string.
            provider_uid: A provider UID string.
        """
        self._provider_id = _auth_utils.validate_provider_id(provider_id, required=True)

        self._provider_uid = _auth_utils.validate_provider_uid(