"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
"""
import builtins
import collections.abc
import cosmos.bank.v1beta1.bank_pb2
import cosmos.base.v1beta1.coin_pb2
import google.protobuf.descriptor
import google.protobuf.internal.containers
import google.protobuf.message
import sys

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

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

@typing_extensions.final
class GenesisState(google.protobuf.message.Message):
    """GenesisState defines the bank module's genesis state."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    PARAMS_FIELD_NUMBER: builtins.int
    BALANCES_FIELD_NUMBER: builtins.int
    SUPPLY_FIELD_NUMBER: builtins.int
    DENOM_METADATA_FIELD_NUMBER: builtins.int
    SUPPLY_OFFSETS_FIELD_NUMBER: builtins.int
    @property
    def params(self) -> cosmos.bank.v1beta1.bank_pb2.Params:
        """params defines all the paramaters of the module."""
    @property
    def balances(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Balance]:
        """balances is an array containing the balances of all the accounts."""
    @property
    def supply(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[cosmos.base.v1beta1.coin_pb2.Coin]:
        """supply represents the total supply. If it is left empty, then supply will be calculated based on the provided
        balances. Otherwise, it will be used to validate that the sum of the balances equals this amount.
        """
    @property
    def denom_metadata(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[cosmos.bank.v1beta1.bank_pb2.Metadata]:
        """denom_metadata defines the metadata of the differents coins."""
    @property
    def supply_offsets(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___GenesisSupplyOffset]:
        """supply_offsets defines the amount of supply offset."""
    def __init__(
        self,
        *,
        params: cosmos.bank.v1beta1.bank_pb2.Params | None = ...,
        balances: collections.abc.Iterable[global___Balance] | None = ...,
        supply: collections.abc.Iterable[cosmos.base.v1beta1.coin_pb2.Coin] | None = ...,
        denom_metadata: collections.abc.Iterable[cosmos.bank.v1beta1.bank_pb2.Metadata] | None = ...,
        supply_offsets: collections.abc.Iterable[global___GenesisSupplyOffset] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["params", b"params"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["balances", b"balances", "denom_metadata", b"denom_metadata", "params", b"params", "supply", b"supply", "supply_offsets", b"supply_offsets"]) -> None: ...

global___GenesisState = GenesisState

@typing_extensions.final
class Balance(google.protobuf.message.Message):
    """Balance defines an account address and balance pair used in the bank module's
    genesis state.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    ADDRESS_FIELD_NUMBER: builtins.int
    COINS_FIELD_NUMBER: builtins.int
    address: builtins.str
    """address is the address of the balance holder."""
    @property
    def coins(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[cosmos.base.v1beta1.coin_pb2.Coin]:
        """coins defines the different coins this balance holds."""
    def __init__(
        self,
        *,
        address: builtins.str = ...,
        coins: collections.abc.Iterable[cosmos.base.v1beta1.coin_pb2.Coin] | None = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["address", b"address", "coins", b"coins"]) -> None: ...

global___Balance = Balance

@typing_extensions.final
class GenesisSupplyOffset(google.protobuf.message.Message):
    """GenesisSupplyOffset encodes the supply offsets, just for genesis.
    The offsets are serialized directly by denom in state.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    DENOM_FIELD_NUMBER: builtins.int
    OFFSET_FIELD_NUMBER: builtins.int
    denom: builtins.str
    """Denom"""
    offset: builtins.str
    """SupplyOffset"""
    def __init__(
        self,
        *,
        denom: builtins.str = ...,
        offset: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["denom", b"denom", "offset", b"offset"]) -> None: ...

global___GenesisSupplyOffset = GenesisSupplyOffset
