# @generated by generate_proto_mypy_stubs.py.  Do not edit!
import sys
from .common_pb2 import (
    PubResponse as common_pb2___PubResponse,
)

from google.protobuf.descriptor import (
    EnumDescriptor as google___protobuf___descriptor___EnumDescriptor,
)

from google.protobuf.internal.containers import (
    RepeatedScalarFieldContainer as google___protobuf___internal___containers___RepeatedScalarFieldContainer,
)

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

from typing import (
    Iterable as typing___Iterable,
    List as typing___List,
    Optional as typing___Optional,
    Tuple as typing___Tuple,
    cast as typing___cast,
)

from typing_extensions import (
    Literal as typing_extensions___Literal,
)


class ETHCoin(int):
    DESCRIPTOR: google___protobuf___descriptor___EnumDescriptor = ...
    @classmethod
    def Name(cls, number: int) -> str: ...
    @classmethod
    def Value(cls, name: str) -> ETHCoin: ...
    @classmethod
    def keys(cls) -> typing___List[str]: ...
    @classmethod
    def values(cls) -> typing___List[ETHCoin]: ...
    @classmethod
    def items(cls) -> typing___List[typing___Tuple[str, ETHCoin]]: ...
    ETH = typing___cast(ETHCoin, 0)
    RopstenETH = typing___cast(ETHCoin, 1)
    RinkebyETH = typing___cast(ETHCoin, 2)
ETH = typing___cast(ETHCoin, 0)
RopstenETH = typing___cast(ETHCoin, 1)
RinkebyETH = typing___cast(ETHCoin, 2)

class ETHPubRequest(google___protobuf___message___Message):
    class OutputType(int):
        DESCRIPTOR: google___protobuf___descriptor___EnumDescriptor = ...
        @classmethod
        def Name(cls, number: int) -> str: ...
        @classmethod
        def Value(cls, name: str) -> ETHPubRequest.OutputType: ...
        @classmethod
        def keys(cls) -> typing___List[str]: ...
        @classmethod
        def values(cls) -> typing___List[ETHPubRequest.OutputType]: ...
        @classmethod
        def items(cls) -> typing___List[typing___Tuple[str, ETHPubRequest.OutputType]]: ...
        ADDRESS = typing___cast(ETHPubRequest.OutputType, 0)
        XPUB = typing___cast(ETHPubRequest.OutputType, 1)
    ADDRESS = typing___cast(ETHPubRequest.OutputType, 0)
    XPUB = typing___cast(ETHPubRequest.OutputType, 1)

    keypath = ... # type: google___protobuf___internal___containers___RepeatedScalarFieldContainer[int]
    coin = ... # type: ETHCoin
    output_type = ... # type: ETHPubRequest.OutputType
    display = ... # type: bool
    contract_address = ... # type: bytes

    def __init__(self,
        *,
        keypath : typing___Optional[typing___Iterable[int]] = None,
        coin : typing___Optional[ETHCoin] = None,
        output_type : typing___Optional[ETHPubRequest.OutputType] = None,
        display : typing___Optional[bool] = None,
        contract_address : typing___Optional[bytes] = None,
        ) -> None: ...
    @classmethod
    def FromString(cls, s: bytes) -> ETHPubRequest: ...
    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"coin",u"contract_address",u"display",u"keypath",u"output_type"]) -> None: ...
    else:
        def ClearField(self, field_name: typing_extensions___Literal[u"coin",b"coin",u"contract_address",b"contract_address",u"display",b"display",u"keypath",b"keypath",u"output_type",b"output_type"]) -> None: ...

class ETHSignRequest(google___protobuf___message___Message):
    coin = ... # type: ETHCoin
    keypath = ... # type: google___protobuf___internal___containers___RepeatedScalarFieldContainer[int]
    nonce = ... # type: bytes
    gas_price = ... # type: bytes
    gas_limit = ... # type: bytes
    recipient = ... # type: bytes
    value = ... # type: bytes
    data = ... # type: bytes

    def __init__(self,
        *,
        coin : typing___Optional[ETHCoin] = None,
        keypath : typing___Optional[typing___Iterable[int]] = None,
        nonce : typing___Optional[bytes] = None,
        gas_price : typing___Optional[bytes] = None,
        gas_limit : typing___Optional[bytes] = None,
        recipient : typing___Optional[bytes] = None,
        value : typing___Optional[bytes] = None,
        data : typing___Optional[bytes] = None,
        ) -> None: ...
    @classmethod
    def FromString(cls, s: bytes) -> ETHSignRequest: ...
    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"coin",u"data",u"gas_limit",u"gas_price",u"keypath",u"nonce",u"recipient",u"value"]) -> None: ...
    else:
        def ClearField(self, field_name: typing_extensions___Literal[u"coin",b"coin",u"data",b"data",u"gas_limit",b"gas_limit",u"gas_price",b"gas_price",u"keypath",b"keypath",u"nonce",b"nonce",u"recipient",b"recipient",u"value",b"value"]) -> None: ...

class ETHSignMessageRequest(google___protobuf___message___Message):
    coin = ... # type: ETHCoin
    keypath = ... # type: google___protobuf___internal___containers___RepeatedScalarFieldContainer[int]
    msg = ... # type: bytes

    def __init__(self,
        *,
        coin : typing___Optional[ETHCoin] = None,
        keypath : typing___Optional[typing___Iterable[int]] = None,
        msg : typing___Optional[bytes] = None,
        ) -> None: ...
    @classmethod
    def FromString(cls, s: bytes) -> ETHSignMessageRequest: ...
    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"coin",u"keypath",u"msg"]) -> None: ...
    else:
        def ClearField(self, field_name: typing_extensions___Literal[u"coin",b"coin",u"keypath",b"keypath",u"msg",b"msg"]) -> None: ...

class ETHSignResponse(google___protobuf___message___Message):
    signature = ... # type: bytes

    def __init__(self,
        *,
        signature : typing___Optional[bytes] = None,
        ) -> None: ...
    @classmethod
    def FromString(cls, s: bytes) -> ETHSignResponse: ...
    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"signature"]) -> None: ...
    else:
        def ClearField(self, field_name: typing_extensions___Literal[u"signature",b"signature"]) -> None: ...

class ETHRequest(google___protobuf___message___Message):

    @property
    def pub(self) -> ETHPubRequest: ...

    @property
    def sign(self) -> ETHSignRequest: ...

    @property
    def sign_msg(self) -> ETHSignMessageRequest: ...

    def __init__(self,
        *,
        pub : typing___Optional[ETHPubRequest] = None,
        sign : typing___Optional[ETHSignRequest] = None,
        sign_msg : typing___Optional[ETHSignMessageRequest] = None,
        ) -> None: ...
    @classmethod
    def FromString(cls, s: bytes) -> ETHRequest: ...
    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"pub",u"request",u"sign",u"sign_msg"]) -> bool: ...
        def ClearField(self, field_name: typing_extensions___Literal[u"pub",u"request",u"sign",u"sign_msg"]) -> None: ...
    else:
        def HasField(self, field_name: typing_extensions___Literal[u"pub",b"pub",u"request",b"request",u"sign",b"sign",u"sign_msg",b"sign_msg"]) -> bool: ...
        def ClearField(self, field_name: typing_extensions___Literal[u"pub",b"pub",u"request",b"request",u"sign",b"sign",u"sign_msg",b"sign_msg"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions___Literal[u"request",b"request"]) -> typing_extensions___Literal["pub","sign","sign_msg"]: ...

class ETHResponse(google___protobuf___message___Message):

    @property
    def pub(self) -> common_pb2___PubResponse: ...

    @property
    def sign(self) -> ETHSignResponse: ...

    def __init__(self,
        *,
        pub : typing___Optional[common_pb2___PubResponse] = None,
        sign : typing___Optional[ETHSignResponse] = None,
        ) -> None: ...
    @classmethod
    def FromString(cls, s: bytes) -> ETHResponse: ...
    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"pub",u"response",u"sign"]) -> bool: ...
        def ClearField(self, field_name: typing_extensions___Literal[u"pub",u"response",u"sign"]) -> None: ...
    else:
        def HasField(self, field_name: typing_extensions___Literal[u"pub",b"pub",u"response",b"response",u"sign",b"sign"]) -> bool: ...
        def ClearField(self, field_name: typing_extensions___Literal[u"pub",b"pub",u"response",b"response",u"sign",b"sign"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions___Literal[u"response",b"response"]) -> typing_extensions___Literal["pub","sign"]: ...
