"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
"""
import builtins
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 typing
import typing_extensions

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

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
    @property
    def params(self) -> cosmos.bank.v1beta1.bank_pb2.Params:
        """params defines all the paramaters of the module."""
        pass
    @property
    def balances(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Balance]:
        """balances is an array containing the balances of all the accounts."""
        pass
    @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.
        """
        pass
    @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."""
        pass
    def __init__(self,
        *,
        params: typing.Optional[cosmos.bank.v1beta1.bank_pb2.Params] = ...,
        balances: typing.Optional[typing.Iterable[global___Balance]] = ...,
        supply: typing.Optional[typing.Iterable[cosmos.base.v1beta1.coin_pb2.Coin]] = ...,
        denom_metadata: typing.Optional[typing.Iterable[cosmos.bank.v1beta1.bank_pb2.Metadata]] = ...,
        ) -> 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"]) -> None: ...
global___GenesisState = GenesisState

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: typing.Text
    """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."""
        pass
    def __init__(self,
        *,
        address: typing.Text = ...,
        coins: typing.Optional[typing.Iterable[cosmos.base.v1beta1.coin_pb2.Coin]] = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["address",b"address","coins",b"coins"]) -> None: ...
global___Balance = Balance
