"""Пакет авторизации и аутентификации"""

from .core import (
    SECRET_KEY,
    ALGORITHM,
    PARTIAL_TOKEN_EXPIRE_MINUTES,
    ACCESS_TOKEN_EXPIRE_MINUTES,
    REFRESH_TOKEN_EXPIRE_DAYS,
    ARGON2_TIME_COST,
    ARGON2_MEMORY_COST,
    ARGON2_PARALLELISM,
    ARGON2_SALT_LENGTH,
    ARGON2_HASH_LENGTH,
    RECOVERY_CODES_COUNT,
    RECOVERY_CODE_SEGMENTS,
    RECOVERY_CODE_SEGMENT_BYTES,
    RECOVERY_MIN_REMAINING_WARNING,
    RECOVERY_MAX_AGE_DAYS,
    KeyDeriver,
    deriver,
    AES256Cipher,
    cipher,
    verify_password,
    get_password_hash,
    create_access_token,
    create_refresh_token,
    create_partial_token,
    decode_token,
    authenticate_user,
    get_current_user,
    get_optional_user,
    get_current_active_user,
    get_user_from_partial_token,
    require_role,
    require_any_role,
    is_user_staff,
    is_user_admin,
    OptionalAuth,
    RequireAuth,
    RequireAuthWS,
    RequireAdmin,
    RequireMember,
    RequireLibrarian,
    RequirePartialAuth,
    RequireStaff,
    RequireStaffWS,
)

from .seed import (
    seed_roles,
    seed_admin,
    run_seeds,
)

from .recovery import (
    generate_codes_for_user,
    verify_and_use_code,
    get_codes_status,
)

from .totp import (
    generate_secret,
    get_provisioning_uri,
    verify_totp_code,
    qr_to_bitmap_b64,
    generate_totp_setup,
    TOTP_ISSUER,
    TOTP_VALID_WINDOW,
)

__all__ = [
    "SECRET_KEY",
    "ALGORITHM",
    "ACCESS_TOKEN_EXPIRE_MINUTES",
    "REFRESH_TOKEN_EXPIRE_DAYS",
    "ARGON2_TIME_COST",
    "ARGON2_MEMORY_COST",
    "ARGON2_PARALLELISM",
    "ARGON2_SALT_LENGTH",
    "ARGON2_HASH_LENGTH",
    "RECOVERY_CODES_COUNT",
    "RECOVERY_CODE_SEGMENTS",
    "RECOVERY_CODE_SEGMENT_BYTES",
    "RECOVERY_MIN_REMAINING_WARNING",
    "RECOVERY_MAX_AGE_DAYS",
    "KeyDeriver",
    "deriver",
    "AES256Cipher",
    "cipher",
    "verify_password",
    "get_password_hash",
    "create_access_token",
    "create_refresh_token",
    "decode_token",
    "authenticate_user",
    "get_current_user",
    "get_current_active_user",
    "get_optional_user",
    "require_role",
    "require_any_role",
    "is_user_staff",
    "is_user_admin",
    "OptionalAuth",
    "RequireAuth",
    "RequireAuthWS",
    "RequireAdmin",
    "RequireMember",
    "RequireLibrarian",
    "RequireStaff",
    "RequireStaffWS",
    "seed_roles",
    "seed_admin",
    "run_seeds",
    "generate_secre",
    "get_provisioning_uri",
    "verify_totp_code",
    "qr_to_bitmap_b64",
    "generate_totp_setup,generate_codes_for_user",
    "verify_and_use_code",
    "get_codes_status",
    "CODES_COUNT",
    "MIN_REMAINING_WARNING",
    "TOTP_ISSUER",
    "TOTP_VALID_WINDOW",
]
