# File generated from our OpenAPI spec by Castiron. See CONTRIBUTING.md for details.

import typing as _t

if _t.TYPE_CHECKING:
    from .roles import (
        Roles as Roles,
        AsyncRoles as AsyncRoles,
        RolesWithRawResponse as RolesWithRawResponse,
        AsyncRolesWithRawResponse as AsyncRolesWithRawResponse,
        RolesWithStreamingResponse as RolesWithStreamingResponse,
        AsyncRolesWithStreamingResponse as AsyncRolesWithStreamingResponse,
    )
    from .users import (
        Users as Users,
        AsyncUsers as AsyncUsers,
        UsersWithRawResponse as UsersWithRawResponse,
        AsyncUsersWithRawResponse as AsyncUsersWithRawResponse,
        UsersWithStreamingResponse as UsersWithStreamingResponse,
        AsyncUsersWithStreamingResponse as AsyncUsersWithStreamingResponse,
    )
    from .groups import (
        Groups as Groups,
        AsyncGroups as AsyncGroups,
        GroupsWithRawResponse as GroupsWithRawResponse,
        AsyncGroupsWithRawResponse as AsyncGroupsWithRawResponse,
        GroupsWithStreamingResponse as GroupsWithStreamingResponse,
        AsyncGroupsWithStreamingResponse as AsyncGroupsWithStreamingResponse,
    )
    from .api_keys import (
        APIKeys as APIKeys,
        AsyncAPIKeys as AsyncAPIKeys,
        APIKeysWithRawResponse as APIKeysWithRawResponse,
        AsyncAPIKeysWithRawResponse as AsyncAPIKeysWithRawResponse,
        APIKeysWithStreamingResponse as APIKeysWithStreamingResponse,
        AsyncAPIKeysWithStreamingResponse as AsyncAPIKeysWithStreamingResponse,
    )
    from .projects import (
        Projects as Projects,
        AsyncProjects as AsyncProjects,
        ProjectsWithRawResponse as ProjectsWithRawResponse,
        AsyncProjectsWithRawResponse as AsyncProjectsWithRawResponse,
        ProjectsWithStreamingResponse as ProjectsWithStreamingResponse,
        AsyncProjectsWithStreamingResponse as AsyncProjectsWithStreamingResponse,
    )
    from .rate_limits import (
        RateLimits as RateLimits,
        AsyncRateLimits as AsyncRateLimits,
        RateLimitsWithRawResponse as RateLimitsWithRawResponse,
        AsyncRateLimitsWithRawResponse as AsyncRateLimitsWithRawResponse,
        RateLimitsWithStreamingResponse as RateLimitsWithStreamingResponse,
        AsyncRateLimitsWithStreamingResponse as AsyncRateLimitsWithStreamingResponse,
    )
    from .spend_limit import (
        SpendLimit as SpendLimit,
        AsyncSpendLimit as AsyncSpendLimit,
        SpendLimitWithRawResponse as SpendLimitWithRawResponse,
        AsyncSpendLimitWithRawResponse as AsyncSpendLimitWithRawResponse,
        SpendLimitWithStreamingResponse as SpendLimitWithStreamingResponse,
        AsyncSpendLimitWithStreamingResponse as AsyncSpendLimitWithStreamingResponse,
    )
    from .certificates import (
        Certificates as Certificates,
        AsyncCertificates as AsyncCertificates,
        CertificatesWithRawResponse as CertificatesWithRawResponse,
        AsyncCertificatesWithRawResponse as AsyncCertificatesWithRawResponse,
        CertificatesWithStreamingResponse as CertificatesWithStreamingResponse,
        AsyncCertificatesWithStreamingResponse as AsyncCertificatesWithStreamingResponse,
    )
    from .spend_alerts import (
        SpendAlerts as SpendAlerts,
        AsyncSpendAlerts as AsyncSpendAlerts,
        SpendAlertsWithRawResponse as SpendAlertsWithRawResponse,
        AsyncSpendAlertsWithRawResponse as AsyncSpendAlertsWithRawResponse,
        SpendAlertsWithStreamingResponse as SpendAlertsWithStreamingResponse,
        AsyncSpendAlertsWithStreamingResponse as AsyncSpendAlertsWithStreamingResponse,
    )
    from .data_retention import (
        DataRetention as DataRetention,
        AsyncDataRetention as AsyncDataRetention,
        DataRetentionWithRawResponse as DataRetentionWithRawResponse,
        AsyncDataRetentionWithRawResponse as AsyncDataRetentionWithRawResponse,
        DataRetentionWithStreamingResponse as DataRetentionWithStreamingResponse,
        AsyncDataRetentionWithStreamingResponse as AsyncDataRetentionWithStreamingResponse,
    )
    from .service_accounts import (
        ServiceAccounts as ServiceAccounts,
        AsyncServiceAccounts as AsyncServiceAccounts,
        ServiceAccountsWithRawResponse as ServiceAccountsWithRawResponse,
        AsyncServiceAccountsWithRawResponse as AsyncServiceAccountsWithRawResponse,
        ServiceAccountsWithStreamingResponse as ServiceAccountsWithStreamingResponse,
        AsyncServiceAccountsWithStreamingResponse as AsyncServiceAccountsWithStreamingResponse,
    )
    from .model_permissions import (
        ModelPermissions as ModelPermissions,
        AsyncModelPermissions as AsyncModelPermissions,
        ModelPermissionsWithRawResponse as ModelPermissionsWithRawResponse,
        AsyncModelPermissionsWithRawResponse as AsyncModelPermissionsWithRawResponse,
        ModelPermissionsWithStreamingResponse as ModelPermissionsWithStreamingResponse,
        AsyncModelPermissionsWithStreamingResponse as AsyncModelPermissionsWithStreamingResponse,
    )
    from .hosted_tool_permissions import (
        HostedToolPermissions as HostedToolPermissions,
        AsyncHostedToolPermissions as AsyncHostedToolPermissions,
        HostedToolPermissionsWithRawResponse as HostedToolPermissionsWithRawResponse,
        AsyncHostedToolPermissionsWithRawResponse as AsyncHostedToolPermissionsWithRawResponse,
        HostedToolPermissionsWithStreamingResponse as HostedToolPermissionsWithStreamingResponse,
        AsyncHostedToolPermissionsWithStreamingResponse as AsyncHostedToolPermissionsWithStreamingResponse,
    )

else:
    _EXPORTS = {
        "Users": (".users", "Users"),
        "AsyncUsers": (".users", "AsyncUsers"),
        "UsersWithRawResponse": (".users", "UsersWithRawResponse"),
        "AsyncUsersWithRawResponse": (".users", "AsyncUsersWithRawResponse"),
        "UsersWithStreamingResponse": (".users", "UsersWithStreamingResponse"),
        "AsyncUsersWithStreamingResponse": (".users", "AsyncUsersWithStreamingResponse"),
        "ServiceAccounts": (".service_accounts", "ServiceAccounts"),
        "AsyncServiceAccounts": (".service_accounts", "AsyncServiceAccounts"),
        "ServiceAccountsWithRawResponse": (".service_accounts", "ServiceAccountsWithRawResponse"),
        "AsyncServiceAccountsWithRawResponse": (".service_accounts", "AsyncServiceAccountsWithRawResponse"),
        "ServiceAccountsWithStreamingResponse": (".service_accounts", "ServiceAccountsWithStreamingResponse"),
        "AsyncServiceAccountsWithStreamingResponse": (".service_accounts", "AsyncServiceAccountsWithStreamingResponse"),
        "APIKeys": (".api_keys", "APIKeys"),
        "AsyncAPIKeys": (".api_keys", "AsyncAPIKeys"),
        "APIKeysWithRawResponse": (".api_keys", "APIKeysWithRawResponse"),
        "AsyncAPIKeysWithRawResponse": (".api_keys", "AsyncAPIKeysWithRawResponse"),
        "APIKeysWithStreamingResponse": (".api_keys", "APIKeysWithStreamingResponse"),
        "AsyncAPIKeysWithStreamingResponse": (".api_keys", "AsyncAPIKeysWithStreamingResponse"),
        "RateLimits": (".rate_limits", "RateLimits"),
        "AsyncRateLimits": (".rate_limits", "AsyncRateLimits"),
        "RateLimitsWithRawResponse": (".rate_limits", "RateLimitsWithRawResponse"),
        "AsyncRateLimitsWithRawResponse": (".rate_limits", "AsyncRateLimitsWithRawResponse"),
        "RateLimitsWithStreamingResponse": (".rate_limits", "RateLimitsWithStreamingResponse"),
        "AsyncRateLimitsWithStreamingResponse": (".rate_limits", "AsyncRateLimitsWithStreamingResponse"),
        "ModelPermissions": (".model_permissions", "ModelPermissions"),
        "AsyncModelPermissions": (".model_permissions", "AsyncModelPermissions"),
        "ModelPermissionsWithRawResponse": (".model_permissions", "ModelPermissionsWithRawResponse"),
        "AsyncModelPermissionsWithRawResponse": (".model_permissions", "AsyncModelPermissionsWithRawResponse"),
        "ModelPermissionsWithStreamingResponse": (".model_permissions", "ModelPermissionsWithStreamingResponse"),
        "AsyncModelPermissionsWithStreamingResponse": (
            ".model_permissions",
            "AsyncModelPermissionsWithStreamingResponse",
        ),
        "HostedToolPermissions": (".hosted_tool_permissions", "HostedToolPermissions"),
        "AsyncHostedToolPermissions": (".hosted_tool_permissions", "AsyncHostedToolPermissions"),
        "HostedToolPermissionsWithRawResponse": (".hosted_tool_permissions", "HostedToolPermissionsWithRawResponse"),
        "AsyncHostedToolPermissionsWithRawResponse": (
            ".hosted_tool_permissions",
            "AsyncHostedToolPermissionsWithRawResponse",
        ),
        "HostedToolPermissionsWithStreamingResponse": (
            ".hosted_tool_permissions",
            "HostedToolPermissionsWithStreamingResponse",
        ),
        "AsyncHostedToolPermissionsWithStreamingResponse": (
            ".hosted_tool_permissions",
            "AsyncHostedToolPermissionsWithStreamingResponse",
        ),
        "Groups": (".groups", "Groups"),
        "AsyncGroups": (".groups", "AsyncGroups"),
        "GroupsWithRawResponse": (".groups", "GroupsWithRawResponse"),
        "AsyncGroupsWithRawResponse": (".groups", "AsyncGroupsWithRawResponse"),
        "GroupsWithStreamingResponse": (".groups", "GroupsWithStreamingResponse"),
        "AsyncGroupsWithStreamingResponse": (".groups", "AsyncGroupsWithStreamingResponse"),
        "Roles": (".roles", "Roles"),
        "AsyncRoles": (".roles", "AsyncRoles"),
        "RolesWithRawResponse": (".roles", "RolesWithRawResponse"),
        "AsyncRolesWithRawResponse": (".roles", "AsyncRolesWithRawResponse"),
        "RolesWithStreamingResponse": (".roles", "RolesWithStreamingResponse"),
        "AsyncRolesWithStreamingResponse": (".roles", "AsyncRolesWithStreamingResponse"),
        "DataRetention": (".data_retention", "DataRetention"),
        "AsyncDataRetention": (".data_retention", "AsyncDataRetention"),
        "DataRetentionWithRawResponse": (".data_retention", "DataRetentionWithRawResponse"),
        "AsyncDataRetentionWithRawResponse": (".data_retention", "AsyncDataRetentionWithRawResponse"),
        "DataRetentionWithStreamingResponse": (".data_retention", "DataRetentionWithStreamingResponse"),
        "AsyncDataRetentionWithStreamingResponse": (".data_retention", "AsyncDataRetentionWithStreamingResponse"),
        "SpendLimit": (".spend_limit", "SpendLimit"),
        "AsyncSpendLimit": (".spend_limit", "AsyncSpendLimit"),
        "SpendLimitWithRawResponse": (".spend_limit", "SpendLimitWithRawResponse"),
        "AsyncSpendLimitWithRawResponse": (".spend_limit", "AsyncSpendLimitWithRawResponse"),
        "SpendLimitWithStreamingResponse": (".spend_limit", "SpendLimitWithStreamingResponse"),
        "AsyncSpendLimitWithStreamingResponse": (".spend_limit", "AsyncSpendLimitWithStreamingResponse"),
        "SpendAlerts": (".spend_alerts", "SpendAlerts"),
        "AsyncSpendAlerts": (".spend_alerts", "AsyncSpendAlerts"),
        "SpendAlertsWithRawResponse": (".spend_alerts", "SpendAlertsWithRawResponse"),
        "AsyncSpendAlertsWithRawResponse": (".spend_alerts", "AsyncSpendAlertsWithRawResponse"),
        "SpendAlertsWithStreamingResponse": (".spend_alerts", "SpendAlertsWithStreamingResponse"),
        "AsyncSpendAlertsWithStreamingResponse": (".spend_alerts", "AsyncSpendAlertsWithStreamingResponse"),
        "Certificates": (".certificates", "Certificates"),
        "AsyncCertificates": (".certificates", "AsyncCertificates"),
        "CertificatesWithRawResponse": (".certificates", "CertificatesWithRawResponse"),
        "AsyncCertificatesWithRawResponse": (".certificates", "AsyncCertificatesWithRawResponse"),
        "CertificatesWithStreamingResponse": (".certificates", "CertificatesWithStreamingResponse"),
        "AsyncCertificatesWithStreamingResponse": (".certificates", "AsyncCertificatesWithStreamingResponse"),
        "Projects": (".projects", "Projects"),
        "AsyncProjects": (".projects", "AsyncProjects"),
        "ProjectsWithRawResponse": (".projects", "ProjectsWithRawResponse"),
        "AsyncProjectsWithRawResponse": (".projects", "AsyncProjectsWithRawResponse"),
        "ProjectsWithStreamingResponse": (".projects", "ProjectsWithStreamingResponse"),
        "AsyncProjectsWithStreamingResponse": (".projects", "AsyncProjectsWithStreamingResponse"),
    }
    _SUBMODULES = {
        "api_keys",
        "certificates",
        "data_retention",
        "groups",
        "hosted_tool_permissions",
        "model_permissions",
        "projects",
        "rate_limits",
        "roles",
        "service_accounts",
        "spend_alerts",
        "spend_limit",
        "users",
    }

    def __getattr__(name: str) -> _t.Any:
        import importlib

        if name in _EXPORTS:
            module_name, symbol_name = _EXPORTS[name]
            value = getattr(importlib.import_module(module_name, __name__), symbol_name)
        elif name in _SUBMODULES:
            value = importlib.import_module(f".{name}", __name__)
        else:
            raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
        globals()[name] = value
        return value

    def __dir__() -> list[str]:
        return sorted(set(globals()) | set(_EXPORTS) | _SUBMODULES)


__all__ = [
    "Users",
    "AsyncUsers",
    "UsersWithRawResponse",
    "AsyncUsersWithRawResponse",
    "UsersWithStreamingResponse",
    "AsyncUsersWithStreamingResponse",
    "ServiceAccounts",
    "AsyncServiceAccounts",
    "ServiceAccountsWithRawResponse",
    "AsyncServiceAccountsWithRawResponse",
    "ServiceAccountsWithStreamingResponse",
    "AsyncServiceAccountsWithStreamingResponse",
    "APIKeys",
    "AsyncAPIKeys",
    "APIKeysWithRawResponse",
    "AsyncAPIKeysWithRawResponse",
    "APIKeysWithStreamingResponse",
    "AsyncAPIKeysWithStreamingResponse",
    "RateLimits",
    "AsyncRateLimits",
    "RateLimitsWithRawResponse",
    "AsyncRateLimitsWithRawResponse",
    "RateLimitsWithStreamingResponse",
    "AsyncRateLimitsWithStreamingResponse",
    "ModelPermissions",
    "AsyncModelPermissions",
    "ModelPermissionsWithRawResponse",
    "AsyncModelPermissionsWithRawResponse",
    "ModelPermissionsWithStreamingResponse",
    "AsyncModelPermissionsWithStreamingResponse",
    "HostedToolPermissions",
    "AsyncHostedToolPermissions",
    "HostedToolPermissionsWithRawResponse",
    "AsyncHostedToolPermissionsWithRawResponse",
    "HostedToolPermissionsWithStreamingResponse",
    "AsyncHostedToolPermissionsWithStreamingResponse",
    "Groups",
    "AsyncGroups",
    "GroupsWithRawResponse",
    "AsyncGroupsWithRawResponse",
    "GroupsWithStreamingResponse",
    "AsyncGroupsWithStreamingResponse",
    "Roles",
    "AsyncRoles",
    "RolesWithRawResponse",
    "AsyncRolesWithRawResponse",
    "RolesWithStreamingResponse",
    "AsyncRolesWithStreamingResponse",
    "DataRetention",
    "AsyncDataRetention",
    "DataRetentionWithRawResponse",
    "AsyncDataRetentionWithRawResponse",
    "DataRetentionWithStreamingResponse",
    "AsyncDataRetentionWithStreamingResponse",
    "SpendLimit",
    "AsyncSpendLimit",
    "SpendLimitWithRawResponse",
    "AsyncSpendLimitWithRawResponse",
    "SpendLimitWithStreamingResponse",
    "AsyncSpendLimitWithStreamingResponse",
    "SpendAlerts",
    "AsyncSpendAlerts",
    "SpendAlertsWithRawResponse",
    "AsyncSpendAlertsWithRawResponse",
    "SpendAlertsWithStreamingResponse",
    "AsyncSpendAlertsWithStreamingResponse",
    "Certificates",
    "AsyncCertificates",
    "CertificatesWithRawResponse",
    "AsyncCertificatesWithRawResponse",
    "CertificatesWithStreamingResponse",
    "AsyncCertificatesWithStreamingResponse",
    "Projects",
    "AsyncProjects",
    "ProjectsWithRawResponse",
    "AsyncProjectsWithRawResponse",
    "ProjectsWithStreamingResponse",
    "AsyncProjectsWithStreamingResponse",
]
