
from gogoproto import gogo_pb2 as _gogo_pb2
from cosmos.crypto.multisig.v1beta1 import multisig_pb2 as _multisig_pb2
from cosmos.base.v1beta1 import coin_pb2 as _coin_pb2
from cosmos.tx.signing.v1beta1 import signing_pb2 as _signing_pb2
from google.protobuf import any_pb2 as _any_pb2
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 AuthInfo(_message.Message):
    __slots__ = ['fee', 'signer_infos']
    FEE_FIELD_NUMBER: _ClassVar[int]
    SIGNER_INFOS_FIELD_NUMBER: _ClassVar[int]
    fee: Fee
    signer_infos: _containers.RepeatedCompositeFieldContainer[SignerInfo]

    def __init__(self, signer_infos: _Optional[_Iterable[_Union[(SignerInfo, _Mapping)]]]=..., fee: _Optional[_Union[(Fee, _Mapping)]]=...) -> None:
        ...

class Fee(_message.Message):
    __slots__ = ['amount', 'gas_limit', 'granter', 'payer']
    AMOUNT_FIELD_NUMBER: _ClassVar[int]
    GAS_LIMIT_FIELD_NUMBER: _ClassVar[int]
    GRANTER_FIELD_NUMBER: _ClassVar[int]
    PAYER_FIELD_NUMBER: _ClassVar[int]
    amount: _containers.RepeatedCompositeFieldContainer[_coin_pb2.Coin]
    gas_limit: int
    granter: str
    payer: str

    def __init__(self, amount: _Optional[_Iterable[_Union[(_coin_pb2.Coin, _Mapping)]]]=..., gas_limit: _Optional[int]=..., payer: _Optional[str]=..., granter: _Optional[str]=...) -> None:
        ...

class ModeInfo(_message.Message):
    __slots__ = ['multi', 'single']

    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:
            ...

    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:
            ...
    MULTI_FIELD_NUMBER: _ClassVar[int]
    SINGLE_FIELD_NUMBER: _ClassVar[int]
    multi: ModeInfo.Multi
    single: ModeInfo.Single

    def __init__(self, single: _Optional[_Union[(ModeInfo.Single, _Mapping)]]=..., multi: _Optional[_Union[(ModeInfo.Multi, _Mapping)]]=...) -> None:
        ...

class SignDoc(_message.Message):
    __slots__ = ['account_number', 'auth_info_bytes', 'body_bytes', 'chain_id']
    ACCOUNT_NUMBER_FIELD_NUMBER: _ClassVar[int]
    AUTH_INFO_BYTES_FIELD_NUMBER: _ClassVar[int]
    BODY_BYTES_FIELD_NUMBER: _ClassVar[int]
    CHAIN_ID_FIELD_NUMBER: _ClassVar[int]
    account_number: int
    auth_info_bytes: bytes
    body_bytes: bytes
    chain_id: str

    def __init__(self, body_bytes: _Optional[bytes]=..., auth_info_bytes: _Optional[bytes]=..., chain_id: _Optional[str]=..., account_number: _Optional[int]=...) -> None:
        ...

class SignerInfo(_message.Message):
    __slots__ = ['mode_info', 'public_key', 'sequence']
    MODE_INFO_FIELD_NUMBER: _ClassVar[int]
    PUBLIC_KEY_FIELD_NUMBER: _ClassVar[int]
    SEQUENCE_FIELD_NUMBER: _ClassVar[int]
    mode_info: ModeInfo
    public_key: _any_pb2.Any
    sequence: int

    def __init__(self, public_key: _Optional[_Union[(_any_pb2.Any, _Mapping)]]=..., mode_info: _Optional[_Union[(ModeInfo, _Mapping)]]=..., sequence: _Optional[int]=...) -> None:
        ...

class Tx(_message.Message):
    __slots__ = ['auth_info', 'body', 'signatures']
    AUTH_INFO_FIELD_NUMBER: _ClassVar[int]
    BODY_FIELD_NUMBER: _ClassVar[int]
    SIGNATURES_FIELD_NUMBER: _ClassVar[int]
    auth_info: AuthInfo
    body: TxBody
    signatures: _containers.RepeatedScalarFieldContainer[bytes]

    def __init__(self, body: _Optional[_Union[(TxBody, _Mapping)]]=..., auth_info: _Optional[_Union[(AuthInfo, _Mapping)]]=..., signatures: _Optional[_Iterable[bytes]]=...) -> None:
        ...

class TxBody(_message.Message):
    __slots__ = ['extension_options', 'memo', 'messages', 'non_critical_extension_options', 'timeout_height']
    EXTENSION_OPTIONS_FIELD_NUMBER: _ClassVar[int]
    MEMO_FIELD_NUMBER: _ClassVar[int]
    MESSAGES_FIELD_NUMBER: _ClassVar[int]
    NON_CRITICAL_EXTENSION_OPTIONS_FIELD_NUMBER: _ClassVar[int]
    TIMEOUT_HEIGHT_FIELD_NUMBER: _ClassVar[int]
    extension_options: _containers.RepeatedCompositeFieldContainer[_any_pb2.Any]
    memo: str
    messages: _containers.RepeatedCompositeFieldContainer[_any_pb2.Any]
    non_critical_extension_options: _containers.RepeatedCompositeFieldContainer[_any_pb2.Any]
    timeout_height: int

    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 TxRaw(_message.Message):
    __slots__ = ['auth_info_bytes', 'body_bytes', 'signatures']
    AUTH_INFO_BYTES_FIELD_NUMBER: _ClassVar[int]
    BODY_BYTES_FIELD_NUMBER: _ClassVar[int]
    SIGNATURES_FIELD_NUMBER: _ClassVar[int]
    auth_info_bytes: bytes
    body_bytes: bytes
    signatures: _containers.RepeatedScalarFieldContainer[bytes]

    def __init__(self, body_bytes: _Optional[bytes]=..., auth_info_bytes: _Optional[bytes]=..., signatures: _Optional[_Iterable[bytes]]=...) -> None:
        ...
