# Generated by the protocol buffer compiler.  DO NOT EDIT!
# sources: cosmos/store/v1beta1/commit_info.proto, cosmos/store/v1beta1/listening.proto
# plugin: python-betterproto
# This file has been @generated

from dataclasses import dataclass
from datetime import datetime
from typing import List

import betterproto

from ....tendermint import abci as __tendermint_abci__


@dataclass(eq=False, repr=False)
class StoreKvPair(betterproto.Message):
    """
    StoreKVPair is a KVStore KVPair used for listening to state changes (Sets and Deletes)
     It optionally includes the StoreKey for the originating KVStore and a Boolean flag to distinguish between Sets and
     Deletes

     Since: cosmos-sdk 0.43
    """

    store_key: str = betterproto.string_field(1)
    delete: bool = betterproto.bool_field(2)
    key: bytes = betterproto.bytes_field(3)
    value: bytes = betterproto.bytes_field(4)


@dataclass(eq=False, repr=False)
class BlockMetadata(betterproto.Message):
    """
    BlockMetadata contains all the abci event data of a block
     the file streamer dump them into files together with the state changes.
    """

    response_commit: "__tendermint_abci__.ResponseCommit" = betterproto.message_field(6)
    request_finalize_block: "__tendermint_abci__.RequestFinalizeBlock" = (
        betterproto.message_field(7)
    )
    response_finalize_block: "__tendermint_abci__.ResponseFinalizeBlock" = (
        betterproto.message_field(8)
    )


@dataclass(eq=False, repr=False)
class CommitInfo(betterproto.Message):
    """
    CommitInfo defines commit information used by the multi-store when committing
     a version/height.
    """

    version: int = betterproto.int64_field(1)
    store_infos: List["StoreInfo"] = betterproto.message_field(2)
    timestamp: datetime = betterproto.message_field(3)


@dataclass(eq=False, repr=False)
class StoreInfo(betterproto.Message):
    """
    StoreInfo defines store-specific commit information. It contains a reference
     between a store name and the commit ID.
    """

    name: str = betterproto.string_field(1)
    commit_id: "CommitId" = betterproto.message_field(2)


@dataclass(eq=False, repr=False)
class CommitId(betterproto.Message):
    """
    CommitID defines the commitment information when a specific store is
     committed.
    """

    version: int = betterproto.int64_field(1)
    hash: bytes = betterproto.bytes_field(2)
