"""Observability Common - Shared utilities for the observability platform."""

from observability_common.auth import (
    AuthProvider,
    AuthResult,
    AuthChain as ChainAuthProvider,
    JWTAuthProvider,
    MTLSAuthProvider,
    APIKeyAuthProvider,
    PassthroughAuthProvider,
    load_auth_provider,
)
from observability_common.auth_hooks import (
    AuthHook,
    NoAuthHook,
    StaticTokenAuthHook,
    APIKeyAuthHook,
    CallableAuthHook,
    EnvironmentAuthHook,
    OIDCAuthHook,
    KeycloakAuthHook,
    DeviceAuthHook,
    BrowserAuthHook,
    keycloak_auth_hook,
    okta_auth_hook,
    azure_ad_auth_hook,
    device_auth_hook_keycloak,
    device_auth_hook_azure,
    browser_auth_hook_keycloak,
    browser_auth_hook_azure,
    browser_auth_hook_google,
)
from observability_common.tls import (
    TLSConfig,
    ServerTLSConfig,
    TLSConfigWithFallback,
    get_shared_tls_config,
)
from observability_common.grpc_interceptors import (
    AuthInterceptor,
    AsyncAuthInterceptor,
    create_mtls_interceptor,
    create_spiffe_interceptor,
    create_service_interceptor,
    get_auth_context,
    require_role,
    require_any_role,
    disable_rbac,
    enable_rbac,
)
from observability_common.auth_config import (
    AuthorizationConfig,
    EntityConfig,
    load_auth_config,
    get_auth_config,
    set_auth_config,
    DEFAULT_CONFIG,
)

__all__ = [
    # Server-side auth providers
    "AuthProvider",
    "AuthResult",
    "ChainAuthProvider",
    "JWTAuthProvider",
    "MTLSAuthProvider",
    "APIKeyAuthProvider",
    "PassthroughAuthProvider",
    "load_auth_provider",
    # Client-side auth hooks
    "AuthHook",
    "NoAuthHook",
    "StaticTokenAuthHook",
    "APIKeyAuthHook",
    "CallableAuthHook",
    "EnvironmentAuthHook",
    "OIDCAuthHook",
    "KeycloakAuthHook",
    "DeviceAuthHook",
    "BrowserAuthHook",
    "keycloak_auth_hook",
    "okta_auth_hook",
    "azure_ad_auth_hook",
    "device_auth_hook_keycloak",
    "device_auth_hook_azure",
    "browser_auth_hook_keycloak",
    "browser_auth_hook_azure",
    "browser_auth_hook_google",
    # TLS
    "TLSConfig",
    "ServerTLSConfig",
    "TLSConfigWithFallback",
    "get_shared_tls_config",
    # gRPC Interceptors
    "AuthInterceptor",
    "AsyncAuthInterceptor",
    "create_mtls_interceptor",
    "create_spiffe_interceptor",
    "create_service_interceptor",
    "get_auth_context",
    "require_role",
    "require_any_role",
    "disable_rbac",
    "enable_rbac",
    # Authorization Config
    "AuthorizationConfig",
    "EntityConfig",
    "load_auth_config",
    "get_auth_config",
    "set_auth_config",
    "DEFAULT_CONFIG",
]
