# 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 (
        CountBillingCreditsGrantsParams,
        CountBillingCreditsGrantsResponse,
        CountBillingCreditsParams,
        CountBillingCreditsResponse,
        CountBillingPlanCreditGrantsParams,
        CountBillingPlanCreditGrantsResponse,
        CountCreditBundlesParams,
        CountCreditBundlesRequestStatus,
        CountCreditBundlesResponse,
        CountCreditBundlesResponseParamsStatus,
        CountCreditLedgerParams,
        CountCreditLedgerRequestPeriod,
        CountCreditLedgerResponse,
        CountCreditLedgerResponseParamsPeriod,
        CreateBillingCreditRequestBodyBurnStrategy,
        CreateBillingCreditRequestBodyDefaultRolloverPolicy,
        CreateBillingCreditResponse,
        CreateBillingPlanCreditGrantRequestBodyExpiryType,
        CreateBillingPlanCreditGrantRequestBodyExpiryUnit,
        CreateBillingPlanCreditGrantRequestBodyResetCadence,
        CreateBillingPlanCreditGrantRequestBodyResetStart,
        CreateBillingPlanCreditGrantRequestBodyResetType,
        CreateBillingPlanCreditGrantResponse,
        CreateCompanyCreditGrantExpiryType,
        CreateCompanyCreditGrantExpiryUnit,
        CreateCreditBundleRequestBodyExpiryType,
        CreateCreditBundleRequestBodyExpiryUnit,
        CreateCreditBundleRequestBodyStatus,
        CreateCreditBundleResponse,
        DeleteBillingPlanCreditGrantResponse,
        DeleteCreditBundleResponse,
        GetCreditBundleResponse,
        GetEnrichedCreditLedgerParams,
        GetEnrichedCreditLedgerRequestPeriod,
        GetEnrichedCreditLedgerResponse,
        GetEnrichedCreditLedgerResponseParamsPeriod,
        GetSingleBillingCreditResponse,
        GrantBillingCreditsToCompanyResponse,
        ListBillingCreditsParams,
        ListBillingCreditsResponse,
        ListBillingPlanCreditGrantsParams,
        ListBillingPlanCreditGrantsResponse,
        ListCompanyGrantsParams,
        ListCompanyGrantsRequestDir,
        ListCompanyGrantsRequestOrder,
        ListCompanyGrantsResponse,
        ListCompanyGrantsResponseParamsDir,
        ListCompanyGrantsResponseParamsOrder,
        ListCreditBundlesParams,
        ListCreditBundlesRequestStatus,
        ListCreditBundlesResponse,
        ListCreditBundlesResponseParamsStatus,
        ListGrantsForCreditParams,
        ListGrantsForCreditResponse,
        SoftDeleteBillingCreditResponse,
        UpdateBillingCreditRequestBodyBurnStrategy,
        UpdateBillingCreditRequestBodyDefaultRolloverPolicy,
        UpdateBillingCreditResponse,
        UpdateCreditBundleDetailsRequestBodyExpiryType,
        UpdateCreditBundleDetailsRequestBodyExpiryUnit,
        UpdateCreditBundleDetailsRequestBodyStatus,
        UpdateCreditBundleDetailsResponse,
        ZeroOutGrantRequestBodyReason,
        ZeroOutGrantResponse,
    )
_dynamic_imports: typing.Dict[str, str] = {
    "CountBillingCreditsGrantsParams": ".types",
    "CountBillingCreditsGrantsResponse": ".types",
    "CountBillingCreditsParams": ".types",
    "CountBillingCreditsResponse": ".types",
    "CountBillingPlanCreditGrantsParams": ".types",
    "CountBillingPlanCreditGrantsResponse": ".types",
    "CountCreditBundlesParams": ".types",
    "CountCreditBundlesRequestStatus": ".types",
    "CountCreditBundlesResponse": ".types",
    "CountCreditBundlesResponseParamsStatus": ".types",
    "CountCreditLedgerParams": ".types",
    "CountCreditLedgerRequestPeriod": ".types",
    "CountCreditLedgerResponse": ".types",
    "CountCreditLedgerResponseParamsPeriod": ".types",
    "CreateBillingCreditRequestBodyBurnStrategy": ".types",
    "CreateBillingCreditRequestBodyDefaultRolloverPolicy": ".types",
    "CreateBillingCreditResponse": ".types",
    "CreateBillingPlanCreditGrantRequestBodyExpiryType": ".types",
    "CreateBillingPlanCreditGrantRequestBodyExpiryUnit": ".types",
    "CreateBillingPlanCreditGrantRequestBodyResetCadence": ".types",
    "CreateBillingPlanCreditGrantRequestBodyResetStart": ".types",
    "CreateBillingPlanCreditGrantRequestBodyResetType": ".types",
    "CreateBillingPlanCreditGrantResponse": ".types",
    "CreateCompanyCreditGrantExpiryType": ".types",
    "CreateCompanyCreditGrantExpiryUnit": ".types",
    "CreateCreditBundleRequestBodyExpiryType": ".types",
    "CreateCreditBundleRequestBodyExpiryUnit": ".types",
    "CreateCreditBundleRequestBodyStatus": ".types",
    "CreateCreditBundleResponse": ".types",
    "DeleteBillingPlanCreditGrantResponse": ".types",
    "DeleteCreditBundleResponse": ".types",
    "GetCreditBundleResponse": ".types",
    "GetEnrichedCreditLedgerParams": ".types",
    "GetEnrichedCreditLedgerRequestPeriod": ".types",
    "GetEnrichedCreditLedgerResponse": ".types",
    "GetEnrichedCreditLedgerResponseParamsPeriod": ".types",
    "GetSingleBillingCreditResponse": ".types",
    "GrantBillingCreditsToCompanyResponse": ".types",
    "ListBillingCreditsParams": ".types",
    "ListBillingCreditsResponse": ".types",
    "ListBillingPlanCreditGrantsParams": ".types",
    "ListBillingPlanCreditGrantsResponse": ".types",
    "ListCompanyGrantsParams": ".types",
    "ListCompanyGrantsRequestDir": ".types",
    "ListCompanyGrantsRequestOrder": ".types",
    "ListCompanyGrantsResponse": ".types",
    "ListCompanyGrantsResponseParamsDir": ".types",
    "ListCompanyGrantsResponseParamsOrder": ".types",
    "ListCreditBundlesParams": ".types",
    "ListCreditBundlesRequestStatus": ".types",
    "ListCreditBundlesResponse": ".types",
    "ListCreditBundlesResponseParamsStatus": ".types",
    "ListGrantsForCreditParams": ".types",
    "ListGrantsForCreditResponse": ".types",
    "SoftDeleteBillingCreditResponse": ".types",
    "UpdateBillingCreditRequestBodyBurnStrategy": ".types",
    "UpdateBillingCreditRequestBodyDefaultRolloverPolicy": ".types",
    "UpdateBillingCreditResponse": ".types",
    "UpdateCreditBundleDetailsRequestBodyExpiryType": ".types",
    "UpdateCreditBundleDetailsRequestBodyExpiryUnit": ".types",
    "UpdateCreditBundleDetailsRequestBodyStatus": ".types",
    "UpdateCreditBundleDetailsResponse": ".types",
    "ZeroOutGrantRequestBodyReason": ".types",
    "ZeroOutGrantResponse": ".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__ = [
    "CountBillingCreditsGrantsParams",
    "CountBillingCreditsGrantsResponse",
    "CountBillingCreditsParams",
    "CountBillingCreditsResponse",
    "CountBillingPlanCreditGrantsParams",
    "CountBillingPlanCreditGrantsResponse",
    "CountCreditBundlesParams",
    "CountCreditBundlesRequestStatus",
    "CountCreditBundlesResponse",
    "CountCreditBundlesResponseParamsStatus",
    "CountCreditLedgerParams",
    "CountCreditLedgerRequestPeriod",
    "CountCreditLedgerResponse",
    "CountCreditLedgerResponseParamsPeriod",
    "CreateBillingCreditRequestBodyBurnStrategy",
    "CreateBillingCreditRequestBodyDefaultRolloverPolicy",
    "CreateBillingCreditResponse",
    "CreateBillingPlanCreditGrantRequestBodyExpiryType",
    "CreateBillingPlanCreditGrantRequestBodyExpiryUnit",
    "CreateBillingPlanCreditGrantRequestBodyResetCadence",
    "CreateBillingPlanCreditGrantRequestBodyResetStart",
    "CreateBillingPlanCreditGrantRequestBodyResetType",
    "CreateBillingPlanCreditGrantResponse",
    "CreateCompanyCreditGrantExpiryType",
    "CreateCompanyCreditGrantExpiryUnit",
    "CreateCreditBundleRequestBodyExpiryType",
    "CreateCreditBundleRequestBodyExpiryUnit",
    "CreateCreditBundleRequestBodyStatus",
    "CreateCreditBundleResponse",
    "DeleteBillingPlanCreditGrantResponse",
    "DeleteCreditBundleResponse",
    "GetCreditBundleResponse",
    "GetEnrichedCreditLedgerParams",
    "GetEnrichedCreditLedgerRequestPeriod",
    "GetEnrichedCreditLedgerResponse",
    "GetEnrichedCreditLedgerResponseParamsPeriod",
    "GetSingleBillingCreditResponse",
    "GrantBillingCreditsToCompanyResponse",
    "ListBillingCreditsParams",
    "ListBillingCreditsResponse",
    "ListBillingPlanCreditGrantsParams",
    "ListBillingPlanCreditGrantsResponse",
    "ListCompanyGrantsParams",
    "ListCompanyGrantsRequestDir",
    "ListCompanyGrantsRequestOrder",
    "ListCompanyGrantsResponse",
    "ListCompanyGrantsResponseParamsDir",
    "ListCompanyGrantsResponseParamsOrder",
    "ListCreditBundlesParams",
    "ListCreditBundlesRequestStatus",
    "ListCreditBundlesResponse",
    "ListCreditBundlesResponseParamsStatus",
    "ListGrantsForCreditParams",
    "ListGrantsForCreditResponse",
    "SoftDeleteBillingCreditResponse",
    "UpdateBillingCreditRequestBodyBurnStrategy",
    "UpdateBillingCreditRequestBodyDefaultRolloverPolicy",
    "UpdateBillingCreditResponse",
    "UpdateCreditBundleDetailsRequestBodyExpiryType",
    "UpdateCreditBundleDetailsRequestBodyExpiryUnit",
    "UpdateCreditBundleDetailsRequestBodyStatus",
    "UpdateCreditBundleDetailsResponse",
    "ZeroOutGrantRequestBodyReason",
    "ZeroOutGrantResponse",
]
