# 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 (
        CountCompanyOverridesParams,
        CountCompanyOverridesResponse,
        CountFeatureCompaniesParams,
        CountFeatureCompaniesResponse,
        CountFeatureUsageParams,
        CountFeatureUsageResponse,
        CountFeatureUsersParams,
        CountFeatureUsersResponse,
        CountPlanEntitlementsParams,
        CountPlanEntitlementsResponse,
        CreateCompanyOverrideRequestBodyMetricPeriod,
        CreateCompanyOverrideRequestBodyMetricPeriodMonthReset,
        CreateCompanyOverrideRequestBodyValueType,
        CreateCompanyOverrideResponse,
        CreatePlanEntitlementRequestBodyMetricPeriod,
        CreatePlanEntitlementRequestBodyMetricPeriodMonthReset,
        CreatePlanEntitlementRequestBodyPriceBehavior,
        CreatePlanEntitlementRequestBodyValueType,
        CreatePlanEntitlementResponse,
        DeleteCompanyOverrideResponse,
        DeletePlanEntitlementResponse,
        GetCompanyOverrideResponse,
        GetFeatureUsageByCompanyParams,
        GetFeatureUsageByCompanyResponse,
        GetPlanEntitlementResponse,
        ListCompanyOverridesParams,
        ListCompanyOverridesResponse,
        ListFeatureCompaniesParams,
        ListFeatureCompaniesResponse,
        ListFeatureUsageParams,
        ListFeatureUsageResponse,
        ListFeatureUsersParams,
        ListFeatureUsersResponse,
        ListPlanEntitlementsParams,
        ListPlanEntitlementsResponse,
        UpdateCompanyOverrideRequestBodyMetricPeriod,
        UpdateCompanyOverrideRequestBodyMetricPeriodMonthReset,
        UpdateCompanyOverrideRequestBodyValueType,
        UpdateCompanyOverrideResponse,
        UpdatePlanEntitlementRequestBodyMetricPeriod,
        UpdatePlanEntitlementRequestBodyMetricPeriodMonthReset,
        UpdatePlanEntitlementRequestBodyPriceBehavior,
        UpdatePlanEntitlementRequestBodyValueType,
        UpdatePlanEntitlementResponse,
    )
_dynamic_imports: typing.Dict[str, str] = {
    "CountCompanyOverridesParams": ".types",
    "CountCompanyOverridesResponse": ".types",
    "CountFeatureCompaniesParams": ".types",
    "CountFeatureCompaniesResponse": ".types",
    "CountFeatureUsageParams": ".types",
    "CountFeatureUsageResponse": ".types",
    "CountFeatureUsersParams": ".types",
    "CountFeatureUsersResponse": ".types",
    "CountPlanEntitlementsParams": ".types",
    "CountPlanEntitlementsResponse": ".types",
    "CreateCompanyOverrideRequestBodyMetricPeriod": ".types",
    "CreateCompanyOverrideRequestBodyMetricPeriodMonthReset": ".types",
    "CreateCompanyOverrideRequestBodyValueType": ".types",
    "CreateCompanyOverrideResponse": ".types",
    "CreatePlanEntitlementRequestBodyMetricPeriod": ".types",
    "CreatePlanEntitlementRequestBodyMetricPeriodMonthReset": ".types",
    "CreatePlanEntitlementRequestBodyPriceBehavior": ".types",
    "CreatePlanEntitlementRequestBodyValueType": ".types",
    "CreatePlanEntitlementResponse": ".types",
    "DeleteCompanyOverrideResponse": ".types",
    "DeletePlanEntitlementResponse": ".types",
    "GetCompanyOverrideResponse": ".types",
    "GetFeatureUsageByCompanyParams": ".types",
    "GetFeatureUsageByCompanyResponse": ".types",
    "GetPlanEntitlementResponse": ".types",
    "ListCompanyOverridesParams": ".types",
    "ListCompanyOverridesResponse": ".types",
    "ListFeatureCompaniesParams": ".types",
    "ListFeatureCompaniesResponse": ".types",
    "ListFeatureUsageParams": ".types",
    "ListFeatureUsageResponse": ".types",
    "ListFeatureUsersParams": ".types",
    "ListFeatureUsersResponse": ".types",
    "ListPlanEntitlementsParams": ".types",
    "ListPlanEntitlementsResponse": ".types",
    "UpdateCompanyOverrideRequestBodyMetricPeriod": ".types",
    "UpdateCompanyOverrideRequestBodyMetricPeriodMonthReset": ".types",
    "UpdateCompanyOverrideRequestBodyValueType": ".types",
    "UpdateCompanyOverrideResponse": ".types",
    "UpdatePlanEntitlementRequestBodyMetricPeriod": ".types",
    "UpdatePlanEntitlementRequestBodyMetricPeriodMonthReset": ".types",
    "UpdatePlanEntitlementRequestBodyPriceBehavior": ".types",
    "UpdatePlanEntitlementRequestBodyValueType": ".types",
    "UpdatePlanEntitlementResponse": ".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__ = [
    "CountCompanyOverridesParams",
    "CountCompanyOverridesResponse",
    "CountFeatureCompaniesParams",
    "CountFeatureCompaniesResponse",
    "CountFeatureUsageParams",
    "CountFeatureUsageResponse",
    "CountFeatureUsersParams",
    "CountFeatureUsersResponse",
    "CountPlanEntitlementsParams",
    "CountPlanEntitlementsResponse",
    "CreateCompanyOverrideRequestBodyMetricPeriod",
    "CreateCompanyOverrideRequestBodyMetricPeriodMonthReset",
    "CreateCompanyOverrideRequestBodyValueType",
    "CreateCompanyOverrideResponse",
    "CreatePlanEntitlementRequestBodyMetricPeriod",
    "CreatePlanEntitlementRequestBodyMetricPeriodMonthReset",
    "CreatePlanEntitlementRequestBodyPriceBehavior",
    "CreatePlanEntitlementRequestBodyValueType",
    "CreatePlanEntitlementResponse",
    "DeleteCompanyOverrideResponse",
    "DeletePlanEntitlementResponse",
    "GetCompanyOverrideResponse",
    "GetFeatureUsageByCompanyParams",
    "GetFeatureUsageByCompanyResponse",
    "GetPlanEntitlementResponse",
    "ListCompanyOverridesParams",
    "ListCompanyOverridesResponse",
    "ListFeatureCompaniesParams",
    "ListFeatureCompaniesResponse",
    "ListFeatureUsageParams",
    "ListFeatureUsageResponse",
    "ListFeatureUsersParams",
    "ListFeatureUsersResponse",
    "ListPlanEntitlementsParams",
    "ListPlanEntitlementsResponse",
    "UpdateCompanyOverrideRequestBodyMetricPeriod",
    "UpdateCompanyOverrideRequestBodyMetricPeriodMonthReset",
    "UpdateCompanyOverrideRequestBodyValueType",
    "UpdateCompanyOverrideResponse",
    "UpdatePlanEntitlementRequestBodyMetricPeriod",
    "UpdatePlanEntitlementRequestBodyMetricPeriodMonthReset",
    "UpdatePlanEntitlementRequestBodyPriceBehavior",
    "UpdatePlanEntitlementRequestBodyValueType",
    "UpdatePlanEntitlementResponse",
]
