from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper
from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
from typing import ClassVar as _ClassVar, Optional as _Optional, Union as _Union

DESCRIPTOR: _descriptor.FileDescriptor

class AccountStatus(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
    __slots__ = ()
    STATUS_UNSPECIFIED: _ClassVar[AccountStatus]
    STATUS_PENDING_ACTIVATION: _ClassVar[AccountStatus]
    STATUS_ACTIVE: _ClassVar[AccountStatus]
    STATUS_SUSPENDED: _ClassVar[AccountStatus]
    STATUS_BANNED: _ClassVar[AccountStatus]

class OAuthProviderType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
    __slots__ = ()
    PROVIDER_UNSPECIFIED: _ClassVar[OAuthProviderType]
    PROVIDER_GOOGLE: _ClassVar[OAuthProviderType]
    PROVIDER_APPLE: _ClassVar[OAuthProviderType]
    PROVIDER_FACEBOOK: _ClassVar[OAuthProviderType]

class CaptchaType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
    __slots__ = ()
    CAPTCHA_MATH: _ClassVar[CaptchaType]
    CAPTCHA_POW: _ClassVar[CaptchaType]
STATUS_UNSPECIFIED: AccountStatus
STATUS_PENDING_ACTIVATION: AccountStatus
STATUS_ACTIVE: AccountStatus
STATUS_SUSPENDED: AccountStatus
STATUS_BANNED: AccountStatus
PROVIDER_UNSPECIFIED: OAuthProviderType
PROVIDER_GOOGLE: OAuthProviderType
PROVIDER_APPLE: OAuthProviderType
PROVIDER_FACEBOOK: OAuthProviderType
CAPTCHA_MATH: CaptchaType
CAPTCHA_POW: CaptchaType

class CaptchaChallengeRequest(_message.Message):
    __slots__ = ("client_ip", "preferred_type")
    CLIENT_IP_FIELD_NUMBER: _ClassVar[int]
    PREFERRED_TYPE_FIELD_NUMBER: _ClassVar[int]
    client_ip: str
    preferred_type: CaptchaType
    def __init__(self, client_ip: _Optional[str] = ..., preferred_type: _Optional[_Union[CaptchaType, str]] = ...) -> None: ...

class CaptchaChallengeResponse(_message.Message):
    __slots__ = ("challenge_id", "captcha_type", "question_or_seed", "difficulty", "expires_at_ms", "signature")
    CHALLENGE_ID_FIELD_NUMBER: _ClassVar[int]
    CAPTCHA_TYPE_FIELD_NUMBER: _ClassVar[int]
    QUESTION_OR_SEED_FIELD_NUMBER: _ClassVar[int]
    DIFFICULTY_FIELD_NUMBER: _ClassVar[int]
    EXPIRES_AT_MS_FIELD_NUMBER: _ClassVar[int]
    SIGNATURE_FIELD_NUMBER: _ClassVar[int]
    challenge_id: str
    captcha_type: CaptchaType
    question_or_seed: str
    difficulty: int
    expires_at_ms: int
    signature: str
    def __init__(self, challenge_id: _Optional[str] = ..., captcha_type: _Optional[_Union[CaptchaType, str]] = ..., question_or_seed: _Optional[str] = ..., difficulty: _Optional[int] = ..., expires_at_ms: _Optional[int] = ..., signature: _Optional[str] = ...) -> None: ...

class QuickRegisterRequest(_message.Message):
    __slots__ = ("email", "password", "username", "captcha_id", "captcha_solution", "client_ip")
    EMAIL_FIELD_NUMBER: _ClassVar[int]
    PASSWORD_FIELD_NUMBER: _ClassVar[int]
    USERNAME_FIELD_NUMBER: _ClassVar[int]
    CAPTCHA_ID_FIELD_NUMBER: _ClassVar[int]
    CAPTCHA_SOLUTION_FIELD_NUMBER: _ClassVar[int]
    CLIENT_IP_FIELD_NUMBER: _ClassVar[int]
    email: str
    password: str
    username: str
    captcha_id: str
    captcha_solution: str
    client_ip: str
    def __init__(self, email: _Optional[str] = ..., password: _Optional[str] = ..., username: _Optional[str] = ..., captcha_id: _Optional[str] = ..., captcha_solution: _Optional[str] = ..., client_ip: _Optional[str] = ...) -> None: ...

class QuickRegisterResponse(_message.Message):
    __slots__ = ("success", "message", "account_id", "email", "requires_verification", "code_expires_in_seconds")
    SUCCESS_FIELD_NUMBER: _ClassVar[int]
    MESSAGE_FIELD_NUMBER: _ClassVar[int]
    ACCOUNT_ID_FIELD_NUMBER: _ClassVar[int]
    EMAIL_FIELD_NUMBER: _ClassVar[int]
    REQUIRES_VERIFICATION_FIELD_NUMBER: _ClassVar[int]
    CODE_EXPIRES_IN_SECONDS_FIELD_NUMBER: _ClassVar[int]
    success: bool
    message: str
    account_id: str
    email: str
    requires_verification: bool
    code_expires_in_seconds: int
    def __init__(self, success: _Optional[bool] = ..., message: _Optional[str] = ..., account_id: _Optional[str] = ..., email: _Optional[str] = ..., requires_verification: _Optional[bool] = ..., code_expires_in_seconds: _Optional[int] = ...) -> None: ...

class VerifyEmailRequest(_message.Message):
    __slots__ = ("email", "verification_code", "activation_token")
    EMAIL_FIELD_NUMBER: _ClassVar[int]
    VERIFICATION_CODE_FIELD_NUMBER: _ClassVar[int]
    ACTIVATION_TOKEN_FIELD_NUMBER: _ClassVar[int]
    email: str
    verification_code: str
    activation_token: str
    def __init__(self, email: _Optional[str] = ..., verification_code: _Optional[str] = ..., activation_token: _Optional[str] = ...) -> None: ...

class VerifyEmailResponse(_message.Message):
    __slots__ = ("success", "message", "account_id", "access_token", "refresh_token", "expires_in_seconds")
    SUCCESS_FIELD_NUMBER: _ClassVar[int]
    MESSAGE_FIELD_NUMBER: _ClassVar[int]
    ACCOUNT_ID_FIELD_NUMBER: _ClassVar[int]
    ACCESS_TOKEN_FIELD_NUMBER: _ClassVar[int]
    REFRESH_TOKEN_FIELD_NUMBER: _ClassVar[int]
    EXPIRES_IN_SECONDS_FIELD_NUMBER: _ClassVar[int]
    success: bool
    message: str
    account_id: str
    access_token: str
    refresh_token: str
    expires_in_seconds: int
    def __init__(self, success: _Optional[bool] = ..., message: _Optional[str] = ..., account_id: _Optional[str] = ..., access_token: _Optional[str] = ..., refresh_token: _Optional[str] = ..., expires_in_seconds: _Optional[int] = ...) -> None: ...

class ResendVerificationCodeRequest(_message.Message):
    __slots__ = ("email", "client_ip", "captcha_id", "captcha_solution")
    EMAIL_FIELD_NUMBER: _ClassVar[int]
    CLIENT_IP_FIELD_NUMBER: _ClassVar[int]
    CAPTCHA_ID_FIELD_NUMBER: _ClassVar[int]
    CAPTCHA_SOLUTION_FIELD_NUMBER: _ClassVar[int]
    email: str
    client_ip: str
    captcha_id: str
    captcha_solution: str
    def __init__(self, email: _Optional[str] = ..., client_ip: _Optional[str] = ..., captcha_id: _Optional[str] = ..., captcha_solution: _Optional[str] = ...) -> None: ...

class ResendVerificationCodeResponse(_message.Message):
    __slots__ = ("success", "message", "cooldown_seconds")
    SUCCESS_FIELD_NUMBER: _ClassVar[int]
    MESSAGE_FIELD_NUMBER: _ClassVar[int]
    COOLDOWN_SECONDS_FIELD_NUMBER: _ClassVar[int]
    success: bool
    message: str
    cooldown_seconds: int
    def __init__(self, success: _Optional[bool] = ..., message: _Optional[str] = ..., cooldown_seconds: _Optional[int] = ...) -> None: ...

class LoginRequest(_message.Message):
    __slots__ = ("email", "password", "captcha_id", "captcha_solution", "client_ip")
    EMAIL_FIELD_NUMBER: _ClassVar[int]
    PASSWORD_FIELD_NUMBER: _ClassVar[int]
    CAPTCHA_ID_FIELD_NUMBER: _ClassVar[int]
    CAPTCHA_SOLUTION_FIELD_NUMBER: _ClassVar[int]
    CLIENT_IP_FIELD_NUMBER: _ClassVar[int]
    email: str
    password: str
    captcha_id: str
    captcha_solution: str
    client_ip: str
    def __init__(self, email: _Optional[str] = ..., password: _Optional[str] = ..., captcha_id: _Optional[str] = ..., captcha_solution: _Optional[str] = ..., client_ip: _Optional[str] = ...) -> None: ...

class LoginResponse(_message.Message):
    __slots__ = ("success", "message", "access_token", "refresh_token", "account_id", "username", "status", "requires_captcha")
    SUCCESS_FIELD_NUMBER: _ClassVar[int]
    MESSAGE_FIELD_NUMBER: _ClassVar[int]
    ACCESS_TOKEN_FIELD_NUMBER: _ClassVar[int]
    REFRESH_TOKEN_FIELD_NUMBER: _ClassVar[int]
    ACCOUNT_ID_FIELD_NUMBER: _ClassVar[int]
    USERNAME_FIELD_NUMBER: _ClassVar[int]
    STATUS_FIELD_NUMBER: _ClassVar[int]
    REQUIRES_CAPTCHA_FIELD_NUMBER: _ClassVar[int]
    success: bool
    message: str
    access_token: str
    refresh_token: str
    account_id: str
    username: str
    status: AccountStatus
    requires_captcha: bool
    def __init__(self, success: _Optional[bool] = ..., message: _Optional[str] = ..., access_token: _Optional[str] = ..., refresh_token: _Optional[str] = ..., account_id: _Optional[str] = ..., username: _Optional[str] = ..., status: _Optional[_Union[AccountStatus, str]] = ..., requires_captcha: _Optional[bool] = ...) -> None: ...

class OAuthLoginRequest(_message.Message):
    __slots__ = ("provider", "auth_code_or_token", "redirect_uri", "client_ip")
    PROVIDER_FIELD_NUMBER: _ClassVar[int]
    AUTH_CODE_OR_TOKEN_FIELD_NUMBER: _ClassVar[int]
    REDIRECT_URI_FIELD_NUMBER: _ClassVar[int]
    CLIENT_IP_FIELD_NUMBER: _ClassVar[int]
    provider: OAuthProviderType
    auth_code_or_token: str
    redirect_uri: str
    client_ip: str
    def __init__(self, provider: _Optional[_Union[OAuthProviderType, str]] = ..., auth_code_or_token: _Optional[str] = ..., redirect_uri: _Optional[str] = ..., client_ip: _Optional[str] = ...) -> None: ...

class OAuthLoginResponse(_message.Message):
    __slots__ = ("success", "message", "access_token", "refresh_token", "account_id", "username", "is_new_account")
    SUCCESS_FIELD_NUMBER: _ClassVar[int]
    MESSAGE_FIELD_NUMBER: _ClassVar[int]
    ACCESS_TOKEN_FIELD_NUMBER: _ClassVar[int]
    REFRESH_TOKEN_FIELD_NUMBER: _ClassVar[int]
    ACCOUNT_ID_FIELD_NUMBER: _ClassVar[int]
    USERNAME_FIELD_NUMBER: _ClassVar[int]
    IS_NEW_ACCOUNT_FIELD_NUMBER: _ClassVar[int]
    success: bool
    message: str
    access_token: str
    refresh_token: str
    account_id: str
    username: str
    is_new_account: bool
    def __init__(self, success: _Optional[bool] = ..., message: _Optional[str] = ..., access_token: _Optional[str] = ..., refresh_token: _Optional[str] = ..., account_id: _Optional[str] = ..., username: _Optional[str] = ..., is_new_account: _Optional[bool] = ...) -> None: ...

class RefreshTokenRequest(_message.Message):
    __slots__ = ("refresh_token",)
    REFRESH_TOKEN_FIELD_NUMBER: _ClassVar[int]
    refresh_token: str
    def __init__(self, refresh_token: _Optional[str] = ...) -> None: ...

class RefreshTokenResponse(_message.Message):
    __slots__ = ("success", "message", "access_token", "refresh_token", "expires_in_seconds")
    SUCCESS_FIELD_NUMBER: _ClassVar[int]
    MESSAGE_FIELD_NUMBER: _ClassVar[int]
    ACCESS_TOKEN_FIELD_NUMBER: _ClassVar[int]
    REFRESH_TOKEN_FIELD_NUMBER: _ClassVar[int]
    EXPIRES_IN_SECONDS_FIELD_NUMBER: _ClassVar[int]
    success: bool
    message: str
    access_token: str
    refresh_token: str
    expires_in_seconds: int
    def __init__(self, success: _Optional[bool] = ..., message: _Optional[str] = ..., access_token: _Optional[str] = ..., refresh_token: _Optional[str] = ..., expires_in_seconds: _Optional[int] = ...) -> None: ...
