"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
"""
import builtins
import collections.abc
import cosmos.staking.v1beta1.staking_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 staking module's genesis state."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    PARAMS_FIELD_NUMBER: builtins.int
    LAST_TOTAL_POWER_FIELD_NUMBER: builtins.int
    LAST_VALIDATOR_POWERS_FIELD_NUMBER: builtins.int
    VALIDATORS_FIELD_NUMBER: builtins.int
    DELEGATIONS_FIELD_NUMBER: builtins.int
    UNBONDING_DELEGATIONS_FIELD_NUMBER: builtins.int
    REDELEGATIONS_FIELD_NUMBER: builtins.int
    EXPORTED_FIELD_NUMBER: builtins.int
    @property
    def params(self) -> cosmos.staking.v1beta1.staking_pb2.Params:
        """params defines all the paramaters of related to deposit."""
    last_total_power: builtins.bytes
    """last_total_power tracks the total amounts of bonded tokens recorded during
    the previous end block.
    """
    @property
    def last_validator_powers(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___LastValidatorPower]:
        """last_validator_powers is a special index that provides a historical list
        of the last-block's bonded validators.
        """
    @property
    def validators(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[cosmos.staking.v1beta1.staking_pb2.Validator]:
        """delegations defines the validator set at genesis."""
    @property
    def delegations(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[cosmos.staking.v1beta1.staking_pb2.Delegation]:
        """delegations defines the delegations active at genesis."""
    @property
    def unbonding_delegations(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[cosmos.staking.v1beta1.staking_pb2.UnbondingDelegation]:
        """unbonding_delegations defines the unbonding delegations active at genesis."""
    @property
    def redelegations(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[cosmos.staking.v1beta1.staking_pb2.Redelegation]:
        """redelegations defines the redelegations active at genesis."""
    exported: builtins.bool
    def __init__(
        self,
        *,
        params: cosmos.staking.v1beta1.staking_pb2.Params | None = ...,
        last_total_power: builtins.bytes = ...,
        last_validator_powers: collections.abc.Iterable[global___LastValidatorPower] | None = ...,
        validators: collections.abc.Iterable[cosmos.staking.v1beta1.staking_pb2.Validator] | None = ...,
        delegations: collections.abc.Iterable[cosmos.staking.v1beta1.staking_pb2.Delegation] | None = ...,
        unbonding_delegations: collections.abc.Iterable[cosmos.staking.v1beta1.staking_pb2.UnbondingDelegation] | None = ...,
        redelegations: collections.abc.Iterable[cosmos.staking.v1beta1.staking_pb2.Redelegation] | None = ...,
        exported: builtins.bool = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["params", b"params"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["delegations", b"delegations", "exported", b"exported", "last_total_power", b"last_total_power", "last_validator_powers", b"last_validator_powers", "params", b"params", "redelegations", b"redelegations", "unbonding_delegations", b"unbonding_delegations", "validators", b"validators"]) -> None: ...

global___GenesisState = GenesisState

@typing_extensions.final
class LastValidatorPower(google.protobuf.message.Message):
    """LastValidatorPower required for validator set update logic."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    ADDRESS_FIELD_NUMBER: builtins.int
    POWER_FIELD_NUMBER: builtins.int
    address: builtins.str
    """address is the address of the validator."""
    power: builtins.int
    """power defines the power of the validator."""
    def __init__(
        self,
        *,
        address: builtins.str = ...,
        power: builtins.int = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["address", b"address", "power", b"power"]) -> None: ...

global___LastValidatorPower = LastValidatorPower
