# @generated by generate_proto_mypy_stubs.py.  Do not edit!
import sys
from google.protobuf.descriptor import (
    EnumDescriptor as google___protobuf___descriptor___EnumDescriptor,
)

from google.protobuf.message import (
    Message as google___protobuf___message___Message,
)

from typing import (
    List as typing___List,
    Optional as typing___Optional,
    Text as typing___Text,
    Tuple as typing___Tuple,
    cast as typing___cast,
)

from typing_extensions import (
    Literal as typing_extensions___Literal,
)


class BitBoxBaseHeartbeatRequest(google___protobuf___message___Message):
    class StateCode(int):
        DESCRIPTOR: google___protobuf___descriptor___EnumDescriptor = ...
        @classmethod
        def Name(cls, number: int) -> str: ...
        @classmethod
        def Value(cls, name: str) -> BitBoxBaseHeartbeatRequest.StateCode: ...
        @classmethod
        def keys(cls) -> typing___List[str]: ...
        @classmethod
        def values(cls) -> typing___List[BitBoxBaseHeartbeatRequest.StateCode]: ...
        @classmethod
        def items(cls) -> typing___List[typing___Tuple[str, BitBoxBaseHeartbeatRequest.StateCode]]: ...
        IDLE = typing___cast(BitBoxBaseHeartbeatRequest.StateCode, 0)
        WORKING = typing___cast(BitBoxBaseHeartbeatRequest.StateCode, 1)
        WARNING = typing___cast(BitBoxBaseHeartbeatRequest.StateCode, 2)
        ERROR = typing___cast(BitBoxBaseHeartbeatRequest.StateCode, 3)
    IDLE = typing___cast(BitBoxBaseHeartbeatRequest.StateCode, 0)
    WORKING = typing___cast(BitBoxBaseHeartbeatRequest.StateCode, 1)
    WARNING = typing___cast(BitBoxBaseHeartbeatRequest.StateCode, 2)
    ERROR = typing___cast(BitBoxBaseHeartbeatRequest.StateCode, 3)

    class DescriptionCode(int):
        DESCRIPTOR: google___protobuf___descriptor___EnumDescriptor = ...
        @classmethod
        def Name(cls, number: int) -> str: ...
        @classmethod
        def Value(cls, name: str) -> BitBoxBaseHeartbeatRequest.DescriptionCode: ...
        @classmethod
        def keys(cls) -> typing___List[str]: ...
        @classmethod
        def values(cls) -> typing___List[BitBoxBaseHeartbeatRequest.DescriptionCode]: ...
        @classmethod
        def items(cls) -> typing___List[typing___Tuple[str, BitBoxBaseHeartbeatRequest.DescriptionCode]]: ...
        EMPTY = typing___cast(BitBoxBaseHeartbeatRequest.DescriptionCode, 0)
        INITIAL_BLOCK_SYNC = typing___cast(BitBoxBaseHeartbeatRequest.DescriptionCode, 1)
        DOWNLOAD_UPDATE = typing___cast(BitBoxBaseHeartbeatRequest.DescriptionCode, 2)
        OUT_OF_DISK_SPACE = typing___cast(BitBoxBaseHeartbeatRequest.DescriptionCode, 3)
        REDIS_ERROR = typing___cast(BitBoxBaseHeartbeatRequest.DescriptionCode, 4)
        REBOOT = typing___cast(BitBoxBaseHeartbeatRequest.DescriptionCode, 5)
        SHUTDOWN = typing___cast(BitBoxBaseHeartbeatRequest.DescriptionCode, 6)
        UPDATE_FAILED = typing___cast(BitBoxBaseHeartbeatRequest.DescriptionCode, 7)
        NO_NETWORK_CONNECTION = typing___cast(BitBoxBaseHeartbeatRequest.DescriptionCode, 8)
    EMPTY = typing___cast(BitBoxBaseHeartbeatRequest.DescriptionCode, 0)
    INITIAL_BLOCK_SYNC = typing___cast(BitBoxBaseHeartbeatRequest.DescriptionCode, 1)
    DOWNLOAD_UPDATE = typing___cast(BitBoxBaseHeartbeatRequest.DescriptionCode, 2)
    OUT_OF_DISK_SPACE = typing___cast(BitBoxBaseHeartbeatRequest.DescriptionCode, 3)
    REDIS_ERROR = typing___cast(BitBoxBaseHeartbeatRequest.DescriptionCode, 4)
    REBOOT = typing___cast(BitBoxBaseHeartbeatRequest.DescriptionCode, 5)
    SHUTDOWN = typing___cast(BitBoxBaseHeartbeatRequest.DescriptionCode, 6)
    UPDATE_FAILED = typing___cast(BitBoxBaseHeartbeatRequest.DescriptionCode, 7)
    NO_NETWORK_CONNECTION = typing___cast(BitBoxBaseHeartbeatRequest.DescriptionCode, 8)

    state_code = ... # type: BitBoxBaseHeartbeatRequest.StateCode
    description_code = ... # type: BitBoxBaseHeartbeatRequest.DescriptionCode

    def __init__(self,
        *,
        state_code : typing___Optional[BitBoxBaseHeartbeatRequest.StateCode] = None,
        description_code : typing___Optional[BitBoxBaseHeartbeatRequest.DescriptionCode] = None,
        ) -> None: ...
    @classmethod
    def FromString(cls, s: bytes) -> BitBoxBaseHeartbeatRequest: ...
    def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    if sys.version_info >= (3,):
        def ClearField(self, field_name: typing_extensions___Literal[u"description_code",u"state_code"]) -> None: ...
    else:
        def ClearField(self, field_name: typing_extensions___Literal[u"description_code",b"description_code",u"state_code",b"state_code"]) -> None: ...

class BitBoxBaseConfirmPairingRequest(google___protobuf___message___Message):
    msg = ... # type: bytes

    def __init__(self,
        *,
        msg : typing___Optional[bytes] = None,
        ) -> None: ...
    @classmethod
    def FromString(cls, s: bytes) -> BitBoxBaseConfirmPairingRequest: ...
    def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    if sys.version_info >= (3,):
        def ClearField(self, field_name: typing_extensions___Literal[u"msg"]) -> None: ...
    else:
        def ClearField(self, field_name: typing_extensions___Literal[u"msg",b"msg"]) -> None: ...

class BitBoxBaseSetConfigRequest(google___protobuf___message___Message):
    class StatusLedMode(int):
        DESCRIPTOR: google___protobuf___descriptor___EnumDescriptor = ...
        @classmethod
        def Name(cls, number: int) -> str: ...
        @classmethod
        def Value(cls, name: str) -> BitBoxBaseSetConfigRequest.StatusLedMode: ...
        @classmethod
        def keys(cls) -> typing___List[str]: ...
        @classmethod
        def values(cls) -> typing___List[BitBoxBaseSetConfigRequest.StatusLedMode]: ...
        @classmethod
        def items(cls) -> typing___List[typing___Tuple[str, BitBoxBaseSetConfigRequest.StatusLedMode]]: ...
        LED_ALWAYS = typing___cast(BitBoxBaseSetConfigRequest.StatusLedMode, 0)
        LED_ON_WORKING = typing___cast(BitBoxBaseSetConfigRequest.StatusLedMode, 1)
        LED_ON_WARNING = typing___cast(BitBoxBaseSetConfigRequest.StatusLedMode, 2)
        LED_ON_ERROR = typing___cast(BitBoxBaseSetConfigRequest.StatusLedMode, 3)
    LED_ALWAYS = typing___cast(BitBoxBaseSetConfigRequest.StatusLedMode, 0)
    LED_ON_WORKING = typing___cast(BitBoxBaseSetConfigRequest.StatusLedMode, 1)
    LED_ON_WARNING = typing___cast(BitBoxBaseSetConfigRequest.StatusLedMode, 2)
    LED_ON_ERROR = typing___cast(BitBoxBaseSetConfigRequest.StatusLedMode, 3)

    class StatusScreenMode(int):
        DESCRIPTOR: google___protobuf___descriptor___EnumDescriptor = ...
        @classmethod
        def Name(cls, number: int) -> str: ...
        @classmethod
        def Value(cls, name: str) -> BitBoxBaseSetConfigRequest.StatusScreenMode: ...
        @classmethod
        def keys(cls) -> typing___List[str]: ...
        @classmethod
        def values(cls) -> typing___List[BitBoxBaseSetConfigRequest.StatusScreenMode]: ...
        @classmethod
        def items(cls) -> typing___List[typing___Tuple[str, BitBoxBaseSetConfigRequest.StatusScreenMode]]: ...
        SCREEN_ALWAYS = typing___cast(BitBoxBaseSetConfigRequest.StatusScreenMode, 0)
        SCREEN_ON_WORKING = typing___cast(BitBoxBaseSetConfigRequest.StatusScreenMode, 1)
        SCREEN_ON_WARNING = typing___cast(BitBoxBaseSetConfigRequest.StatusScreenMode, 2)
        SCREEN_ON_ERROR = typing___cast(BitBoxBaseSetConfigRequest.StatusScreenMode, 3)
    SCREEN_ALWAYS = typing___cast(BitBoxBaseSetConfigRequest.StatusScreenMode, 0)
    SCREEN_ON_WORKING = typing___cast(BitBoxBaseSetConfigRequest.StatusScreenMode, 1)
    SCREEN_ON_WARNING = typing___cast(BitBoxBaseSetConfigRequest.StatusScreenMode, 2)
    SCREEN_ON_ERROR = typing___cast(BitBoxBaseSetConfigRequest.StatusScreenMode, 3)

    status_led_mode = ... # type: BitBoxBaseSetConfigRequest.StatusLedMode
    status_screen_mode = ... # type: BitBoxBaseSetConfigRequest.StatusScreenMode
    ip = ... # type: bytes
    hostname = ... # type: typing___Text

    def __init__(self,
        *,
        status_led_mode : typing___Optional[BitBoxBaseSetConfigRequest.StatusLedMode] = None,
        status_screen_mode : typing___Optional[BitBoxBaseSetConfigRequest.StatusScreenMode] = None,
        ip : typing___Optional[bytes] = None,
        hostname : typing___Optional[typing___Text] = None,
        ) -> None: ...
    @classmethod
    def FromString(cls, s: bytes) -> BitBoxBaseSetConfigRequest: ...
    def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    if sys.version_info >= (3,):
        def HasField(self, field_name: typing_extensions___Literal[u"ip",u"ip_option"]) -> bool: ...
        def ClearField(self, field_name: typing_extensions___Literal[u"hostname",u"ip",u"ip_option",u"status_led_mode",u"status_screen_mode"]) -> None: ...
    else:
        def HasField(self, field_name: typing_extensions___Literal[u"ip",b"ip",u"ip_option",b"ip_option"]) -> bool: ...
        def ClearField(self, field_name: typing_extensions___Literal[u"hostname",b"hostname",u"ip",b"ip",u"ip_option",b"ip_option",u"status_led_mode",b"status_led_mode",u"status_screen_mode",b"status_screen_mode"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions___Literal[u"ip_option",b"ip_option"]) -> typing_extensions___Literal["ip"]: ...

class BitBoxBaseDisplayStatusRequest(google___protobuf___message___Message):
    duration = ... # type: int

    def __init__(self,
        *,
        duration : typing___Optional[int] = None,
        ) -> None: ...
    @classmethod
    def FromString(cls, s: bytes) -> BitBoxBaseDisplayStatusRequest: ...
    def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    if sys.version_info >= (3,):
        def ClearField(self, field_name: typing_extensions___Literal[u"duration"]) -> None: ...
    else:
        def ClearField(self, field_name: typing_extensions___Literal[u"duration",b"duration"]) -> None: ...

class BitBoxBaseRequest(google___protobuf___message___Message):

    @property
    def heartbeat(self) -> BitBoxBaseHeartbeatRequest: ...

    @property
    def set_config(self) -> BitBoxBaseSetConfigRequest: ...

    @property
    def confirm_pairing(self) -> BitBoxBaseConfirmPairingRequest: ...

    @property
    def display_status(self) -> BitBoxBaseDisplayStatusRequest: ...

    def __init__(self,
        *,
        heartbeat : typing___Optional[BitBoxBaseHeartbeatRequest] = None,
        set_config : typing___Optional[BitBoxBaseSetConfigRequest] = None,
        confirm_pairing : typing___Optional[BitBoxBaseConfirmPairingRequest] = None,
        display_status : typing___Optional[BitBoxBaseDisplayStatusRequest] = None,
        ) -> None: ...
    @classmethod
    def FromString(cls, s: bytes) -> BitBoxBaseRequest: ...
    def MergeFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    def CopyFrom(self, other_msg: google___protobuf___message___Message) -> None: ...
    if sys.version_info >= (3,):
        def HasField(self, field_name: typing_extensions___Literal[u"confirm_pairing",u"display_status",u"heartbeat",u"request",u"set_config"]) -> bool: ...
        def ClearField(self, field_name: typing_extensions___Literal[u"confirm_pairing",u"display_status",u"heartbeat",u"request",u"set_config"]) -> None: ...
    else:
        def HasField(self, field_name: typing_extensions___Literal[u"confirm_pairing",b"confirm_pairing",u"display_status",b"display_status",u"heartbeat",b"heartbeat",u"request",b"request",u"set_config",b"set_config"]) -> bool: ...
        def ClearField(self, field_name: typing_extensions___Literal[u"confirm_pairing",b"confirm_pairing",u"display_status",b"display_status",u"heartbeat",b"heartbeat",u"request",b"request",u"set_config",b"set_config"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions___Literal[u"request",b"request"]) -> typing_extensions___Literal["heartbeat","set_config","confirm_pairing","display_status"]: ...
