"""
FreeExile Authentication & Account Management Package.
Exports core entities, services, crypto engines, captcha, and OAuth providers.
"""

from server.auth.models import (
    Account,
    AccountStatus,
    Role,
    OAuthProviderType,
    OAuthIdentity,
    AuthTokenPair,
    AccountRegistrationResult,
    EmailVerificationResult,
    LoginResult,
    OAuthLoginResult,
    RefreshTokenResult,
)
from server.auth.crypto import PasswordHasher, TokenService
from server.auth.captcha import (
    CaptchaEngine,
    CaptchaType,
    CaptchaChallenge,
    RateLimiter,
)
from server.auth.email_verification import (
    EmailSender,
    MockEmailSender,
    ConsoleEmailSender,
    VerificationCode,
    EmailVerificationService,
)
from server.auth.oauth import (
    OAuthProvider,
    OAuthUserProfile,
    GoogleOAuthProvider,
    AppleOAuthProvider,
    FacebookOAuthProvider,
    OAuthService,
)
from server.auth.auth_service import AccountRepository, AuthService
from server.auth.database import DatabaseAccountRepository
from server.auth.bank_security import (
    BankGradeSecurityEngine,
    SecurityEventType,
    DeviceFingerprint,
    RememberTokenResult,
)
from server.auth.character_service import (
    CharacterService,
    Character,
    CharacterClass,
    CharacterCreationResult,
)

__all__ = [
    "Account",
    "AccountStatus",
    "Role",
    "OAuthProviderType",
    "OAuthIdentity",
    "AuthTokenPair",
    "AccountRegistrationResult",
    "EmailVerificationResult",
    "LoginResult",
    "OAuthLoginResult",
    "RefreshTokenResult",
    "PasswordHasher",
    "TokenService",
    "CaptchaEngine",
    "CaptchaType",
    "CaptchaChallenge",
    "RateLimiter",
    "EmailSender",
    "MockEmailSender",
    "ConsoleEmailSender",
    "VerificationCode",
    "EmailVerificationService",
    "OAuthProvider",
    "OAuthUserProfile",
    "GoogleOAuthProvider",
    "AppleOAuthProvider",
    "FacebookOAuthProvider",
    "OAuthService",
    "AccountRepository",
    "AuthService",
    "DatabaseAccountRepository",
    "BankGradeSecurityEngine",
    "SecurityEventType",
    "DeviceFingerprint",
    "RememberTokenResult",
    "CharacterService",
    "Character",
    "CharacterClass",
    "CharacterCreationResult",
]
