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

# isort: skip_file

import typing
from importlib import import_module

if typing.TYPE_CHECKING:
    from .types import (
        AuthorizedSignatory,
        AuthorizedSignatoryUpdate,
        AuthorizedSignatoryUpdate_Remove,
        AuthorizedSignatoryUpdate_Set,
        Contract,
        ContractBase,
        ContractId,
        ContractInvalidExpirationDateError,
        ContractIsLinkedToFeeScheduleError,
        ContractSortField,
        ContractStatus,
        ContractWithProviders,
        ContractingProviderId,
        ContractsPage,
        DateUpdate,
        DateUpdate_Remove,
        DateUpdate_Set,
        InsuranceTypes,
        InsuranceTypes_AllApply,
        InsuranceTypes_NoneApply,
        InsuranceTypes_TheseApply,
        RegionsUpdate,
        RegionsUpdate_Remove,
        RegionsUpdate_Set,
        RenderingProviderid,
    )
    from .errors import ContractInvalidExpirationDateHttpError, ContractIsLinkedToFeeScheduleHttpError
_dynamic_imports: typing.Dict[str, str] = {
    "AuthorizedSignatory": ".types",
    "AuthorizedSignatoryUpdate": ".types",
    "AuthorizedSignatoryUpdate_Remove": ".types",
    "AuthorizedSignatoryUpdate_Set": ".types",
    "Contract": ".types",
    "ContractBase": ".types",
    "ContractId": ".types",
    "ContractInvalidExpirationDateError": ".types",
    "ContractInvalidExpirationDateHttpError": ".errors",
    "ContractIsLinkedToFeeScheduleError": ".types",
    "ContractIsLinkedToFeeScheduleHttpError": ".errors",
    "ContractSortField": ".types",
    "ContractStatus": ".types",
    "ContractWithProviders": ".types",
    "ContractingProviderId": ".types",
    "ContractsPage": ".types",
    "DateUpdate": ".types",
    "DateUpdate_Remove": ".types",
    "DateUpdate_Set": ".types",
    "InsuranceTypes": ".types",
    "InsuranceTypes_AllApply": ".types",
    "InsuranceTypes_NoneApply": ".types",
    "InsuranceTypes_TheseApply": ".types",
    "RegionsUpdate": ".types",
    "RegionsUpdate_Remove": ".types",
    "RegionsUpdate_Set": ".types",
    "RenderingProviderid": ".types",
}


def __getattr__(attr_name: str) -> typing.Any:
    module_name = _dynamic_imports.get(attr_name)
    if module_name is None:
        raise AttributeError(f"No {attr_name} found in _dynamic_imports for module name -> {__name__}")
    try:
        module = import_module(module_name, __package__)
        if module_name == f".{attr_name}":
            return module
        else:
            return getattr(module, attr_name)
    except ImportError as e:
        raise ImportError(f"Failed to import {attr_name} from {module_name}: {e}") from e
    except AttributeError as e:
        raise AttributeError(f"Failed to get {attr_name} from {module_name}: {e}") from e


def __dir__():
    lazy_attrs = list(_dynamic_imports.keys())
    return sorted(lazy_attrs)


__all__ = [
    "AuthorizedSignatory",
    "AuthorizedSignatoryUpdate",
    "AuthorizedSignatoryUpdate_Remove",
    "AuthorizedSignatoryUpdate_Set",
    "Contract",
    "ContractBase",
    "ContractId",
    "ContractInvalidExpirationDateError",
    "ContractInvalidExpirationDateHttpError",
    "ContractIsLinkedToFeeScheduleError",
    "ContractIsLinkedToFeeScheduleHttpError",
    "ContractSortField",
    "ContractStatus",
    "ContractWithProviders",
    "ContractingProviderId",
    "ContractsPage",
    "DateUpdate",
    "DateUpdate_Remove",
    "DateUpdate_Set",
    "InsuranceTypes",
    "InsuranceTypes_AllApply",
    "InsuranceTypes_NoneApply",
    "InsuranceTypes_TheseApply",
    "RegionsUpdate",
    "RegionsUpdate_Remove",
    "RegionsUpdate_Set",
    "RenderingProviderid",
]
