"""
BreakPilot Authentication Module

Hybrid authentication supporting both Keycloak and local JWT tokens.
"""

from .keycloak_auth import (
    # Config & Models
    KeycloakConfig,
    KeycloakUser,

    # Authenticators
    KeycloakAuthenticator,
    HybridAuthenticator,

    # Exceptions
    KeycloakAuthError,
    TokenExpiredError,
    TokenInvalidError,
    KeycloakConfigError,
)

from .dependencies import (
    # Factory functions
    get_keycloak_config_from_env,
    get_authenticator,
    get_auth,

    # FastAPI dependencies
    get_current_user,
    require_role,
)

__all__ = [
    # Config & Models
    "KeycloakConfig",
    "KeycloakUser",

    # Authenticators
    "KeycloakAuthenticator",
    "HybridAuthenticator",

    # Exceptions
    "KeycloakAuthError",
    "TokenExpiredError",
    "TokenInvalidError",
    "KeycloakConfigError",

    # Factory functions
    "get_keycloak_config_from_env",
    "get_authenticator",
    "get_auth",

    # FastAPI dependencies
    "get_current_user",
    "require_role",
]
