# 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,
        CountCreditBundlesResponse,
        CountCreditLedgerParams,
        CountCreditLedgerResponse,
        CreateBillingCreditResponse,
        CreateBillingPlanCreditGrantResponse,
        CreateCreditBundleResponse,
        DeleteBillingPlanCreditGrantParams,
        DeleteBillingPlanCreditGrantResponse,
        DeleteCreditBundleResponse,
        GetCreditBundleResponse,
        GetEnrichedCreditLedgerParams,
        GetEnrichedCreditLedgerResponse,
        GetSingleBillingCreditResponse,
        GrantBillingCreditsToCompanyResponse,
        ListBillingCreditsParams,
        ListBillingCreditsResponse,
        ListBillingPlanCreditGrantsParams,
        ListBillingPlanCreditGrantsResponse,
        ListCompanyGrantsParams,
        ListCompanyGrantsResponse,
        ListCreditBundlesParams,
        ListCreditBundlesResponse,
        ListGrantsForCreditParams,
        ListGrantsForCreditResponse,
        SoftDeleteBillingCreditResponse,
        UpdateBillingCreditResponse,
        UpdateBillingPlanCreditGrantResponse,
        UpdateCreditBundleDetailsResponse,
        ZeroOutGrantResponse,
    )
_dynamic_imports: typing.Dict[str, str] = {
    "CountBillingCreditsGrantsParams": ".types",
    "CountBillingCreditsGrantsResponse": ".types",
    "CountBillingCreditsParams": ".types",
    "CountBillingCreditsResponse": ".types",
    "CountBillingPlanCreditGrantsParams": ".types",
    "CountBillingPlanCreditGrantsResponse": ".types",
    "CountCreditBundlesParams": ".types",
    "CountCreditBundlesResponse": ".types",
    "CountCreditLedgerParams": ".types",
    "CountCreditLedgerResponse": ".types",
    "CreateBillingCreditResponse": ".types",
    "CreateBillingPlanCreditGrantResponse": ".types",
    "CreateCreditBundleResponse": ".types",
    "DeleteBillingPlanCreditGrantParams": ".types",
    "DeleteBillingPlanCreditGrantResponse": ".types",
    "DeleteCreditBundleResponse": ".types",
    "GetCreditBundleResponse": ".types",
    "GetEnrichedCreditLedgerParams": ".types",
    "GetEnrichedCreditLedgerResponse": ".types",
    "GetSingleBillingCreditResponse": ".types",
    "GrantBillingCreditsToCompanyResponse": ".types",
    "ListBillingCreditsParams": ".types",
    "ListBillingCreditsResponse": ".types",
    "ListBillingPlanCreditGrantsParams": ".types",
    "ListBillingPlanCreditGrantsResponse": ".types",
    "ListCompanyGrantsParams": ".types",
    "ListCompanyGrantsResponse": ".types",
    "ListCreditBundlesParams": ".types",
    "ListCreditBundlesResponse": ".types",
    "ListGrantsForCreditParams": ".types",
    "ListGrantsForCreditResponse": ".types",
    "SoftDeleteBillingCreditResponse": ".types",
    "UpdateBillingCreditResponse": ".types",
    "UpdateBillingPlanCreditGrantResponse": ".types",
    "UpdateCreditBundleDetailsResponse": ".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",
    "CountCreditBundlesResponse",
    "CountCreditLedgerParams",
    "CountCreditLedgerResponse",
    "CreateBillingCreditResponse",
    "CreateBillingPlanCreditGrantResponse",
    "CreateCreditBundleResponse",
    "DeleteBillingPlanCreditGrantParams",
    "DeleteBillingPlanCreditGrantResponse",
    "DeleteCreditBundleResponse",
    "GetCreditBundleResponse",
    "GetEnrichedCreditLedgerParams",
    "GetEnrichedCreditLedgerResponse",
    "GetSingleBillingCreditResponse",
    "GrantBillingCreditsToCompanyResponse",
    "ListBillingCreditsParams",
    "ListBillingCreditsResponse",
    "ListBillingPlanCreditGrantsParams",
    "ListBillingPlanCreditGrantsResponse",
    "ListCompanyGrantsParams",
    "ListCompanyGrantsResponse",
    "ListCreditBundlesParams",
    "ListCreditBundlesResponse",
    "ListGrantsForCreditParams",
    "ListGrantsForCreditResponse",
    "SoftDeleteBillingCreditResponse",
    "UpdateBillingCreditResponse",
    "UpdateBillingPlanCreditGrantResponse",
    "UpdateCreditBundleDetailsResponse",
    "ZeroOutGrantResponse",
]
