from v4_proto.amino import amino_pb2 as _amino_pb2
from v4_proto.gogoproto import gogo_pb2 as _gogo_pb2
from v4_proto.cosmos.crypto.multisig.v1beta1 import multisig_pb2 as _multisig_pb2
from v4_proto.cosmos.base.v1beta1 import coin_pb2 as _coin_pb2
from v4_proto.cosmos.tx.signing.v1beta1 import signing_pb2 as _signing_pb2
from google.protobuf import any_pb2 as _any_pb2
from v4_proto.cosmos_proto import cosmos_pb2 as _cosmos_pb2
from google.protobuf.internal import containers as _containers
from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
from collections.abc import Iterable as _Iterable, Mapping as _Mapping
from typing import ClassVar as _ClassVar, Optional as _Optional, Union as _Union

DESCRIPTOR: _descriptor.FileDescriptor

class Tx(_message.Message):
    __slots__ = ("body", "auth_info", "signatures")
    BODY_FIELD_NUMBER: _ClassVar[int]
    AUTH_INFO_FIELD_NUMBER: _ClassVar[int]
    SIGNATURES_FIELD_NUMBER: _ClassVar[int]
    body: TxBody
    auth_info: AuthInfo
    signatures: _containers.RepeatedScalarFieldContainer[bytes]
    def __init__(self, body: _Optional[_Union[TxBody, _Mapping]] = ..., auth_info: _Optional[_Union[AuthInfo, _Mapping]] = ..., signatures: _Optional[_Iterable[bytes]] = ...) -> None: ...

class TxRaw(_message.Message):
    __slots__ = ("body_bytes", "auth_info_bytes", "signatures")
    BODY_BYTES_FIELD_NUMBER: _ClassVar[int]
    AUTH_INFO_BYTES_FIELD_NUMBER: _ClassVar[int]
    SIGNATURES_FIELD_NUMBER: _ClassVar[int]
    body_bytes: bytes
    auth_info_bytes: bytes
    signatures: _containers.RepeatedScalarFieldContainer[bytes]
    def __init__(self, body_bytes: _Optional[bytes] = ..., auth_info_bytes: _Optional[bytes] = ..., signatures: _Optional[_Iterable[bytes]] = ...) -> None: ...

class SignDoc(_message.Message):
    __slots__ = ("body_bytes", "auth_info_bytes", "chain_id", "account_number")
    BODY_BYTES_FIELD_NUMBER: _ClassVar[int]
    AUTH_INFO_BYTES_FIELD_NUMBER: _ClassVar[int]
    CHAIN_ID_FIELD_NUMBER: _ClassVar[int]
    ACCOUNT_NUMBER_FIELD_NUMBER: _ClassVar[int]
    body_bytes: bytes
    auth_info_bytes: bytes
    chain_id: str
    account_number: int
    def __init__(self, body_bytes: _Optional[bytes] = ..., auth_info_bytes: _Optional[bytes] = ..., chain_id: _Optional[str] = ..., account_number: _Optional[int] = ...) -> None: ...

class SignDocDirectAux(_message.Message):
    __slots__ = ("body_bytes", "public_key", "chain_id", "account_number", "sequence", "tip")
    BODY_BYTES_FIELD_NUMBER: _ClassVar[int]
    PUBLIC_KEY_FIELD_NUMBER: _ClassVar[int]
    CHAIN_ID_FIELD_NUMBER: _ClassVar[int]
    ACCOUNT_NUMBER_FIELD_NUMBER: _ClassVar[int]
    SEQUENCE_FIELD_NUMBER: _ClassVar[int]
    TIP_FIELD_NUMBER: _ClassVar[int]
    body_bytes: bytes
    public_key: _any_pb2.Any
    chain_id: str
    account_number: int
    sequence: int
    tip: Tip
    def __init__(self, body_bytes: _Optional[bytes] = ..., public_key: _Optional[_Union[_any_pb2.Any, _Mapping]] = ..., chain_id: _Optional[str] = ..., account_number: _Optional[int] = ..., sequence: _Optional[int] = ..., tip: _Optional[_Union[Tip, _Mapping]] = ...) -> None: ...

class TxBody(_message.Message):
    __slots__ = ("messages", "memo", "timeout_height", "extension_options", "non_critical_extension_options")
    MESSAGES_FIELD_NUMBER: _ClassVar[int]
    MEMO_FIELD_NUMBER: _ClassVar[int]
    TIMEOUT_HEIGHT_FIELD_NUMBER: _ClassVar[int]
    EXTENSION_OPTIONS_FIELD_NUMBER: _ClassVar[int]
    NON_CRITICAL_EXTENSION_OPTIONS_FIELD_NUMBER: _ClassVar[int]
    messages: _containers.RepeatedCompositeFieldContainer[_any_pb2.Any]
    memo: str
    timeout_height: int
    extension_options: _containers.RepeatedCompositeFieldContainer[_any_pb2.Any]
    non_critical_extension_options: _containers.RepeatedCompositeFieldContainer[_any_pb2.Any]
    def __init__(self, messages: _Optional[_Iterable[_Union[_any_pb2.Any, _Mapping]]] = ..., memo: _Optional[str] = ..., timeout_height: _Optional[int] = ..., extension_options: _Optional[_Iterable[_Union[_any_pb2.Any, _Mapping]]] = ..., non_critical_extension_options: _Optional[_Iterable[_Union[_any_pb2.Any, _Mapping]]] = ...) -> None: ...

class AuthInfo(_message.Message):
    __slots__ = ("signer_infos", "fee", "tip")
    SIGNER_INFOS_FIELD_NUMBER: _ClassVar[int]
    FEE_FIELD_NUMBER: _ClassVar[int]
    TIP_FIELD_NUMBER: _ClassVar[int]
    signer_infos: _containers.RepeatedCompositeFieldContainer[SignerInfo]
    fee: Fee
    tip: Tip
    def __init__(self, signer_infos: _Optional[_Iterable[_Union[SignerInfo, _Mapping]]] = ..., fee: _Optional[_Union[Fee, _Mapping]] = ..., tip: _Optional[_Union[Tip, _Mapping]] = ...) -> None: ...

class SignerInfo(_message.Message):
    __slots__ = ("public_key", "mode_info", "sequence")
    PUBLIC_KEY_FIELD_NUMBER: _ClassVar[int]
    MODE_INFO_FIELD_NUMBER: _ClassVar[int]
    SEQUENCE_FIELD_NUMBER: _ClassVar[int]
    public_key: _any_pb2.Any
    mode_info: ModeInfo
    sequence: int
    def __init__(self, public_key: _Optional[_Union[_any_pb2.Any, _Mapping]] = ..., mode_info: _Optional[_Union[ModeInfo, _Mapping]] = ..., sequence: _Optional[int] = ...) -> None: ...

class ModeInfo(_message.Message):
    __slots__ = ("single", "multi")
    class Single(_message.Message):
        __slots__ = ("mode",)
        MODE_FIELD_NUMBER: _ClassVar[int]
        mode: _signing_pb2.SignMode
        def __init__(self, mode: _Optional[_Union[_signing_pb2.SignMode, str]] = ...) -> None: ...
    class Multi(_message.Message):
        __slots__ = ("bitarray", "mode_infos")
        BITARRAY_FIELD_NUMBER: _ClassVar[int]
        MODE_INFOS_FIELD_NUMBER: _ClassVar[int]
        bitarray: _multisig_pb2.CompactBitArray
        mode_infos: _containers.RepeatedCompositeFieldContainer[ModeInfo]
        def __init__(self, bitarray: _Optional[_Union[_multisig_pb2.CompactBitArray, _Mapping]] = ..., mode_infos: _Optional[_Iterable[_Union[ModeInfo, _Mapping]]] = ...) -> None: ...
    SINGLE_FIELD_NUMBER: _ClassVar[int]
    MULTI_FIELD_NUMBER: _ClassVar[int]
    single: ModeInfo.Single
    multi: ModeInfo.Multi
    def __init__(self, single: _Optional[_Union[ModeInfo.Single, _Mapping]] = ..., multi: _Optional[_Union[ModeInfo.Multi, _Mapping]] = ...) -> None: ...

class Fee(_message.Message):
    __slots__ = ("amount", "gas_limit", "payer", "granter")
    AMOUNT_FIELD_NUMBER: _ClassVar[int]
    GAS_LIMIT_FIELD_NUMBER: _ClassVar[int]
    PAYER_FIELD_NUMBER: _ClassVar[int]
    GRANTER_FIELD_NUMBER: _ClassVar[int]
    amount: _containers.RepeatedCompositeFieldContainer[_coin_pb2.Coin]
    gas_limit: int
    payer: str
    granter: str
    def __init__(self, amount: _Optional[_Iterable[_Union[_coin_pb2.Coin, _Mapping]]] = ..., gas_limit: _Optional[int] = ..., payer: _Optional[str] = ..., granter: _Optional[str] = ...) -> None: ...

class Tip(_message.Message):
    __slots__ = ("amount", "tipper")
    AMOUNT_FIELD_NUMBER: _ClassVar[int]
    TIPPER_FIELD_NUMBER: _ClassVar[int]
    amount: _containers.RepeatedCompositeFieldContainer[_coin_pb2.Coin]
    tipper: str
    def __init__(self, amount: _Optional[_Iterable[_Union[_coin_pb2.Coin, _Mapping]]] = ..., tipper: _Optional[str] = ...) -> None: ...

class AuxSignerData(_message.Message):
    __slots__ = ("address", "sign_doc", "mode", "sig")
    ADDRESS_FIELD_NUMBER: _ClassVar[int]
    SIGN_DOC_FIELD_NUMBER: _ClassVar[int]
    MODE_FIELD_NUMBER: _ClassVar[int]
    SIG_FIELD_NUMBER: _ClassVar[int]
    address: str
    sign_doc: SignDocDirectAux
    mode: _signing_pb2.SignMode
    sig: bytes
    def __init__(self, address: _Optional[str] = ..., sign_doc: _Optional[_Union[SignDocDirectAux, _Mapping]] = ..., mode: _Optional[_Union[_signing_pb2.SignMode, str]] = ..., sig: _Optional[bytes] = ...) -> None: ...
