from google.protobuf.internal import containers as _containers
from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union

DESCRIPTOR: _descriptor.FileDescriptor

class Level(_message.Message):
    __slots__ = ("visitor_threshold", "difficulty_factor")
    VISITOR_THRESHOLD_FIELD_NUMBER: _ClassVar[int]
    DIFFICULTY_FACTOR_FIELD_NUMBER: _ClassVar[int]
    visitor_threshold: int
    difficulty_factor: int
    def __init__(self, visitor_threshold: _Optional[int] = ..., difficulty_factor: _Optional[int] = ...) -> None: ...

class Defense(_message.Message):
    __slots__ = ("levels",)
    LEVELS_FIELD_NUMBER: _ClassVar[int]
    levels: _containers.RepeatedCompositeFieldContainer[Level]
    def __init__(self, levels: _Optional[_Iterable[_Union[Level, _Mapping]]] = ...) -> None: ...

class MCaptcha(_message.Message):
    __slots__ = ("duration", "defense")
    DURATION_FIELD_NUMBER: _ClassVar[int]
    DEFENSE_FIELD_NUMBER: _ClassVar[int]
    duration: int
    defense: Defense
    def __init__(self, duration: _Optional[int] = ..., defense: _Optional[_Union[Defense, _Mapping]] = ...) -> None: ...

class AddCaptchaRequest(_message.Message):
    __slots__ = ("id", "mcaptcha")
    ID_FIELD_NUMBER: _ClassVar[int]
    MCAPTCHA_FIELD_NUMBER: _ClassVar[int]
    id: str
    mcaptcha: MCaptcha
    def __init__(self, id: _Optional[str] = ..., mcaptcha: _Optional[_Union[MCaptcha, _Mapping]] = ...) -> None: ...

class RenameCaptchaRequest(_message.Message):
    __slots__ = ("name", "rename_to")
    NAME_FIELD_NUMBER: _ClassVar[int]
    RENAME_TO_FIELD_NUMBER: _ClassVar[int]
    name: str
    rename_to: str
    def __init__(self, name: _Optional[str] = ..., rename_to: _Optional[str] = ...) -> None: ...

class CachePowRequest(_message.Message):
    __slots__ = ("string", "difficulty_factor", "duration", "key")
    STRING_FIELD_NUMBER: _ClassVar[int]
    DIFFICULTY_FACTOR_FIELD_NUMBER: _ClassVar[int]
    DURATION_FIELD_NUMBER: _ClassVar[int]
    KEY_FIELD_NUMBER: _ClassVar[int]
    string: str
    difficulty_factor: int
    duration: int
    key: str
    def __init__(self, string: _Optional[str] = ..., difficulty_factor: _Optional[int] = ..., duration: _Optional[int] = ..., key: _Optional[str] = ...) -> None: ...

class CacheResultRequest(_message.Message):
    __slots__ = ("token", "key", "duration")
    TOKEN_FIELD_NUMBER: _ClassVar[int]
    KEY_FIELD_NUMBER: _ClassVar[int]
    DURATION_FIELD_NUMBER: _ClassVar[int]
    token: str
    key: str
    duration: int
    def __init__(self, token: _Optional[str] = ..., key: _Optional[str] = ..., duration: _Optional[int] = ...) -> None: ...

class DeleteCaptchaResultRequest(_message.Message):
    __slots__ = ("token",)
    TOKEN_FIELD_NUMBER: _ClassVar[int]
    token: str
    def __init__(self, token: _Optional[str] = ...) -> None: ...

class CaptchaID(_message.Message):
    __slots__ = ("id",)
    ID_FIELD_NUMBER: _ClassVar[int]
    id: str
    def __init__(self, id: _Optional[str] = ...) -> None: ...

class PoID(_message.Message):
    __slots__ = ("id",)
    ID_FIELD_NUMBER: _ClassVar[int]
    id: str
    def __init__(self, id: _Optional[str] = ...) -> None: ...

class AddVisitorResult(_message.Message):
    __slots__ = ("duration", "difficulty_factor")
    DURATION_FIELD_NUMBER: _ClassVar[int]
    DIFFICULTY_FACTOR_FIELD_NUMBER: _ClassVar[int]
    duration: int
    difficulty_factor: int
    def __init__(self, duration: _Optional[int] = ..., difficulty_factor: _Optional[int] = ...) -> None: ...

class OptionAddVisitorResult(_message.Message):
    __slots__ = ("result",)
    RESULT_FIELD_NUMBER: _ClassVar[int]
    result: AddVisitorResult
    def __init__(self, result: _Optional[_Union[AddVisitorResult, _Mapping]] = ...) -> None: ...

class RaftRequest(_message.Message):
    __slots__ = ("data",)
    DATA_FIELD_NUMBER: _ClassVar[int]
    data: str
    def __init__(self, data: _Optional[str] = ...) -> None: ...

class RaftReply(_message.Message):
    __slots__ = ("data", "error")
    DATA_FIELD_NUMBER: _ClassVar[int]
    ERROR_FIELD_NUMBER: _ClassVar[int]
    data: str
    error: str
    def __init__(self, data: _Optional[str] = ..., error: _Optional[str] = ...) -> None: ...

class Learner(_message.Message):
    __slots__ = ("id", "addr")
    ID_FIELD_NUMBER: _ClassVar[int]
    ADDR_FIELD_NUMBER: _ClassVar[int]
    id: int
    addr: str
    def __init__(self, id: _Optional[int] = ..., addr: _Optional[str] = ...) -> None: ...

class CaptchaExistsResponse(_message.Message):
    __slots__ = ("exists",)
    EXISTS_FIELD_NUMBER: _ClassVar[int]
    exists: bool
    def __init__(self, exists: bool = ...) -> None: ...

class GetVisitorCountResponse(_message.Message):
    __slots__ = ("visitors",)
    VISITORS_FIELD_NUMBER: _ClassVar[int]
    visitors: int
    def __init__(self, visitors: _Optional[int] = ...) -> None: ...

class OptionGetVisitorCountResponse(_message.Message):
    __slots__ = ("result",)
    RESULT_FIELD_NUMBER: _ClassVar[int]
    result: GetVisitorCountResponse
    def __init__(self, result: _Optional[_Union[GetVisitorCountResponse, _Mapping]] = ...) -> None: ...

class DcacheRequest(_message.Message):
    __slots__ = ("addCaptcha", "addVisitor", "renameCaptcha", "removeCaptcha", "cachePow", "cacheResult", "captchaExists", "getVisitorCount")
    ADDCAPTCHA_FIELD_NUMBER: _ClassVar[int]
    ADDVISITOR_FIELD_NUMBER: _ClassVar[int]
    RENAMECAPTCHA_FIELD_NUMBER: _ClassVar[int]
    REMOVECAPTCHA_FIELD_NUMBER: _ClassVar[int]
    CACHEPOW_FIELD_NUMBER: _ClassVar[int]
    CACHERESULT_FIELD_NUMBER: _ClassVar[int]
    CAPTCHAEXISTS_FIELD_NUMBER: _ClassVar[int]
    GETVISITORCOUNT_FIELD_NUMBER: _ClassVar[int]
    addCaptcha: AddCaptchaRequest
    addVisitor: CaptchaID
    renameCaptcha: RenameCaptchaRequest
    removeCaptcha: CaptchaID
    cachePow: CachePowRequest
    cacheResult: CacheResultRequest
    captchaExists: CaptchaID
    getVisitorCount: CaptchaID
    def __init__(self, addCaptcha: _Optional[_Union[AddCaptchaRequest, _Mapping]] = ..., addVisitor: _Optional[_Union[CaptchaID, _Mapping]] = ..., renameCaptcha: _Optional[_Union[RenameCaptchaRequest, _Mapping]] = ..., removeCaptcha: _Optional[_Union[CaptchaID, _Mapping]] = ..., cachePow: _Optional[_Union[CachePowRequest, _Mapping]] = ..., cacheResult: _Optional[_Union[CacheResultRequest, _Mapping]] = ..., captchaExists: _Optional[_Union[CaptchaID, _Mapping]] = ..., getVisitorCount: _Optional[_Union[CaptchaID, _Mapping]] = ...) -> None: ...

class DcacheResponse(_message.Message):
    __slots__ = ("option_add_visitor_result", "other", "captcha_exists", "get_visitor_count")
    OPTION_ADD_VISITOR_RESULT_FIELD_NUMBER: _ClassVar[int]
    OTHER_FIELD_NUMBER: _ClassVar[int]
    CAPTCHA_EXISTS_FIELD_NUMBER: _ClassVar[int]
    GET_VISITOR_COUNT_FIELD_NUMBER: _ClassVar[int]
    option_add_visitor_result: OptionAddVisitorResult
    other: RaftReply
    captcha_exists: CaptchaExistsResponse
    get_visitor_count: OptionGetVisitorCountResponse
    def __init__(self, option_add_visitor_result: _Optional[_Union[OptionAddVisitorResult, _Mapping]] = ..., other: _Optional[_Union[RaftReply, _Mapping]] = ..., captcha_exists: _Optional[_Union[CaptchaExistsResponse, _Mapping]] = ..., get_visitor_count: _Optional[_Union[OptionGetVisitorCountResponse, _Mapping]] = ...) -> None: ...

class DcacheBatchRequest(_message.Message):
    __slots__ = ("requests",)
    REQUESTS_FIELD_NUMBER: _ClassVar[int]
    requests: _containers.RepeatedCompositeFieldContainer[DcacheRequest]
    def __init__(self, requests: _Optional[_Iterable[_Union[DcacheRequest, _Mapping]]] = ...) -> None: ...

class DcacheBatchResponse(_message.Message):
    __slots__ = ("responses",)
    RESPONSES_FIELD_NUMBER: _ClassVar[int]
    responses: _containers.RepeatedCompositeFieldContainer[DcacheResponse]
    def __init__(self, responses: _Optional[_Iterable[_Union[DcacheResponse, _Mapping]]] = ...) -> None: ...

class RetrievePowRequest(_message.Message):
    __slots__ = ("token", "key")
    TOKEN_FIELD_NUMBER: _ClassVar[int]
    KEY_FIELD_NUMBER: _ClassVar[int]
    token: str
    key: str
    def __init__(self, token: _Optional[str] = ..., key: _Optional[str] = ...) -> None: ...

class RetrievePowResponse(_message.Message):
    __slots__ = ("difficulty_factor", "duration", "key")
    DIFFICULTY_FACTOR_FIELD_NUMBER: _ClassVar[int]
    DURATION_FIELD_NUMBER: _ClassVar[int]
    KEY_FIELD_NUMBER: _ClassVar[int]
    difficulty_factor: int
    duration: int
    key: str
    def __init__(self, difficulty_factor: _Optional[int] = ..., duration: _Optional[int] = ..., key: _Optional[str] = ...) -> None: ...

class CaptchaResultVerified(_message.Message):
    __slots__ = ("verified",)
    VERIFIED_FIELD_NUMBER: _ClassVar[int]
    verified: bool
    def __init__(self, verified: bool = ...) -> None: ...

class DeletePowRequest(_message.Message):
    __slots__ = ("string",)
    STRING_FIELD_NUMBER: _ClassVar[int]
    string: str
    def __init__(self, string: _Optional[str] = ...) -> None: ...

class OptionalRetrievePoWResponse(_message.Message):
    __slots__ = ("result",)
    RESULT_FIELD_NUMBER: _ClassVar[int]
    result: RetrievePowResponse
    def __init__(self, result: _Optional[_Union[RetrievePowResponse, _Mapping]] = ...) -> None: ...
