"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
"""
import builtins
import google.protobuf.descriptor
import google.protobuf.message
import google.protobuf.timestamp_pb2
import sys
import tendermint.types.evidence_pb2
import tendermint.types.types_pb2
import tendermint.version.types_pb2

if sys.version_info >= (3, 8):
    import typing as typing_extensions
else:
    import typing_extensions

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

@typing_extensions.final
class Block(google.protobuf.message.Message):
    """Block is tendermint type Block, with the Header proposer address
    field converted to bech32 string.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    HEADER_FIELD_NUMBER: builtins.int
    DATA_FIELD_NUMBER: builtins.int
    EVIDENCE_FIELD_NUMBER: builtins.int
    LAST_COMMIT_FIELD_NUMBER: builtins.int
    @property
    def header(self) -> global___Header: ...
    @property
    def data(self) -> tendermint.types.types_pb2.Data: ...
    @property
    def evidence(self) -> tendermint.types.evidence_pb2.EvidenceList: ...
    @property
    def last_commit(self) -> tendermint.types.types_pb2.Commit: ...
    def __init__(
        self,
        *,
        header: global___Header | None = ...,
        data: tendermint.types.types_pb2.Data | None = ...,
        evidence: tendermint.types.evidence_pb2.EvidenceList | None = ...,
        last_commit: tendermint.types.types_pb2.Commit | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["data", b"data", "evidence", b"evidence", "header", b"header", "last_commit", b"last_commit"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["data", b"data", "evidence", b"evidence", "header", b"header", "last_commit", b"last_commit"]) -> None: ...

global___Block = Block

@typing_extensions.final
class Header(google.protobuf.message.Message):
    """Header defines the structure of a Tendermint block header."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    VERSION_FIELD_NUMBER: builtins.int
    CHAIN_ID_FIELD_NUMBER: builtins.int
    HEIGHT_FIELD_NUMBER: builtins.int
    TIME_FIELD_NUMBER: builtins.int
    LAST_BLOCK_ID_FIELD_NUMBER: builtins.int
    LAST_COMMIT_HASH_FIELD_NUMBER: builtins.int
    DATA_HASH_FIELD_NUMBER: builtins.int
    VALIDATORS_HASH_FIELD_NUMBER: builtins.int
    NEXT_VALIDATORS_HASH_FIELD_NUMBER: builtins.int
    CONSENSUS_HASH_FIELD_NUMBER: builtins.int
    APP_HASH_FIELD_NUMBER: builtins.int
    LAST_RESULTS_HASH_FIELD_NUMBER: builtins.int
    EVIDENCE_HASH_FIELD_NUMBER: builtins.int
    PROPOSER_ADDRESS_FIELD_NUMBER: builtins.int
    @property
    def version(self) -> tendermint.version.types_pb2.Consensus:
        """basic block info"""
    chain_id: builtins.str
    height: builtins.int
    @property
    def time(self) -> google.protobuf.timestamp_pb2.Timestamp: ...
    @property
    def last_block_id(self) -> tendermint.types.types_pb2.BlockID:
        """prev block info"""
    last_commit_hash: builtins.bytes
    """hashes of block data
    commit from validators from the last block
    """
    data_hash: builtins.bytes
    """transactions"""
    validators_hash: builtins.bytes
    """hashes from the app output from the prev block
    validators for the current block
    """
    next_validators_hash: builtins.bytes
    """validators for the next block"""
    consensus_hash: builtins.bytes
    """consensus params for current block"""
    app_hash: builtins.bytes
    """state after txs from the previous block"""
    last_results_hash: builtins.bytes
    """root hash of all results from the txs from the previous block"""
    evidence_hash: builtins.bytes
    """consensus info
    evidence included in the block
    """
    proposer_address: builtins.str
    """proposer_address is the original block proposer address, formatted as a Bech32 string.
    In Tendermint, this type is `bytes`, but in the SDK, we convert it to a Bech32 string
    for better UX.
    original proposer of the block
    """
    def __init__(
        self,
        *,
        version: tendermint.version.types_pb2.Consensus | None = ...,
        chain_id: builtins.str = ...,
        height: builtins.int = ...,
        time: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        last_block_id: tendermint.types.types_pb2.BlockID | None = ...,
        last_commit_hash: builtins.bytes = ...,
        data_hash: builtins.bytes = ...,
        validators_hash: builtins.bytes = ...,
        next_validators_hash: builtins.bytes = ...,
        consensus_hash: builtins.bytes = ...,
        app_hash: builtins.bytes = ...,
        last_results_hash: builtins.bytes = ...,
        evidence_hash: builtins.bytes = ...,
        proposer_address: builtins.str = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["last_block_id", b"last_block_id", "time", b"time", "version", b"version"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["app_hash", b"app_hash", "chain_id", b"chain_id", "consensus_hash", b"consensus_hash", "data_hash", b"data_hash", "evidence_hash", b"evidence_hash", "height", b"height", "last_block_id", b"last_block_id", "last_commit_hash", b"last_commit_hash", "last_results_hash", b"last_results_hash", "next_validators_hash", b"next_validators_hash", "proposer_address", b"proposer_address", "time", b"time", "validators_hash", b"validators_hash", "version", b"version"]) -> None: ...

global___Header = Header
