"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
"""
import builtins
import cosmos.base.v1beta1.coin_pb2
import cosmos.staking.v1beta1.staking_pb2
import google.protobuf.any_pb2
import google.protobuf.descriptor
import google.protobuf.message
import google.protobuf.timestamp_pb2
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 MsgCreateValidator(google.protobuf.message.Message):
    """MsgCreateValidator defines a SDK message for creating a new validator."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    DESCRIPTION_FIELD_NUMBER: builtins.int
    COMMISSION_FIELD_NUMBER: builtins.int
    MIN_SELF_DELEGATION_FIELD_NUMBER: builtins.int
    DELEGATOR_ADDRESS_FIELD_NUMBER: builtins.int
    VALIDATOR_ADDRESS_FIELD_NUMBER: builtins.int
    PUBKEY_FIELD_NUMBER: builtins.int
    VALUE_FIELD_NUMBER: builtins.int
    @property
    def description(self) -> cosmos.staking.v1beta1.staking_pb2.Description: ...
    @property
    def commission(self) -> cosmos.staking.v1beta1.staking_pb2.CommissionRates: ...
    min_self_delegation: builtins.str
    delegator_address: builtins.str
    validator_address: builtins.str
    @property
    def pubkey(self) -> google.protobuf.any_pb2.Any: ...
    @property
    def value(self) -> cosmos.base.v1beta1.coin_pb2.Coin: ...
    def __init__(
        self,
        *,
        description: cosmos.staking.v1beta1.staking_pb2.Description | None = ...,
        commission: cosmos.staking.v1beta1.staking_pb2.CommissionRates | None = ...,
        min_self_delegation: builtins.str = ...,
        delegator_address: builtins.str = ...,
        validator_address: builtins.str = ...,
        pubkey: google.protobuf.any_pb2.Any | None = ...,
        value: cosmos.base.v1beta1.coin_pb2.Coin | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["commission", b"commission", "description", b"description", "pubkey", b"pubkey", "value", b"value"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["commission", b"commission", "delegator_address", b"delegator_address", "description", b"description", "min_self_delegation", b"min_self_delegation", "pubkey", b"pubkey", "validator_address", b"validator_address", "value", b"value"]) -> None: ...

global___MsgCreateValidator = MsgCreateValidator

@typing_extensions.final
class MsgCreateValidatorResponse(google.protobuf.message.Message):
    """MsgCreateValidatorResponse defines the Msg/CreateValidator response type."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    def __init__(
        self,
    ) -> None: ...

global___MsgCreateValidatorResponse = MsgCreateValidatorResponse

@typing_extensions.final
class MsgEditValidator(google.protobuf.message.Message):
    """MsgEditValidator defines a SDK message for editing an existing validator."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    DESCRIPTION_FIELD_NUMBER: builtins.int
    VALIDATOR_ADDRESS_FIELD_NUMBER: builtins.int
    COMMISSION_RATE_FIELD_NUMBER: builtins.int
    MIN_SELF_DELEGATION_FIELD_NUMBER: builtins.int
    @property
    def description(self) -> cosmos.staking.v1beta1.staking_pb2.Description: ...
    validator_address: builtins.str
    commission_rate: builtins.str
    """We pass a reference to the new commission rate and min self delegation as
    it's not mandatory to update. If not updated, the deserialized rate will be
    zero with no way to distinguish if an update was intended.
    REF: #2373
    """
    min_self_delegation: builtins.str
    def __init__(
        self,
        *,
        description: cosmos.staking.v1beta1.staking_pb2.Description | None = ...,
        validator_address: builtins.str = ...,
        commission_rate: builtins.str = ...,
        min_self_delegation: builtins.str = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["description", b"description"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["commission_rate", b"commission_rate", "description", b"description", "min_self_delegation", b"min_self_delegation", "validator_address", b"validator_address"]) -> None: ...

global___MsgEditValidator = MsgEditValidator

@typing_extensions.final
class MsgEditValidatorResponse(google.protobuf.message.Message):
    """MsgEditValidatorResponse defines the Msg/EditValidator response type."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    def __init__(
        self,
    ) -> None: ...

global___MsgEditValidatorResponse = MsgEditValidatorResponse

@typing_extensions.final
class MsgDelegate(google.protobuf.message.Message):
    """MsgDelegate defines a SDK message for performing a delegation of coins
    from a delegator to a validator.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    DELEGATOR_ADDRESS_FIELD_NUMBER: builtins.int
    VALIDATOR_ADDRESS_FIELD_NUMBER: builtins.int
    AMOUNT_FIELD_NUMBER: builtins.int
    delegator_address: builtins.str
    validator_address: builtins.str
    @property
    def amount(self) -> cosmos.base.v1beta1.coin_pb2.Coin: ...
    def __init__(
        self,
        *,
        delegator_address: builtins.str = ...,
        validator_address: builtins.str = ...,
        amount: cosmos.base.v1beta1.coin_pb2.Coin | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["amount", b"amount"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["amount", b"amount", "delegator_address", b"delegator_address", "validator_address", b"validator_address"]) -> None: ...

global___MsgDelegate = MsgDelegate

@typing_extensions.final
class MsgDelegateResponse(google.protobuf.message.Message):
    """MsgDelegateResponse defines the Msg/Delegate response type."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    def __init__(
        self,
    ) -> None: ...

global___MsgDelegateResponse = MsgDelegateResponse

@typing_extensions.final
class MsgBeginRedelegate(google.protobuf.message.Message):
    """MsgBeginRedelegate defines a SDK message for performing a redelegation
    of coins from a delegator and source validator to a destination validator.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    DELEGATOR_ADDRESS_FIELD_NUMBER: builtins.int
    VALIDATOR_SRC_ADDRESS_FIELD_NUMBER: builtins.int
    VALIDATOR_DST_ADDRESS_FIELD_NUMBER: builtins.int
    AMOUNT_FIELD_NUMBER: builtins.int
    delegator_address: builtins.str
    validator_src_address: builtins.str
    validator_dst_address: builtins.str
    @property
    def amount(self) -> cosmos.base.v1beta1.coin_pb2.Coin: ...
    def __init__(
        self,
        *,
        delegator_address: builtins.str = ...,
        validator_src_address: builtins.str = ...,
        validator_dst_address: builtins.str = ...,
        amount: cosmos.base.v1beta1.coin_pb2.Coin | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["amount", b"amount"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["amount", b"amount", "delegator_address", b"delegator_address", "validator_dst_address", b"validator_dst_address", "validator_src_address", b"validator_src_address"]) -> None: ...

global___MsgBeginRedelegate = MsgBeginRedelegate

@typing_extensions.final
class MsgBeginRedelegateResponse(google.protobuf.message.Message):
    """MsgBeginRedelegateResponse defines the Msg/BeginRedelegate response type."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    COMPLETION_TIME_FIELD_NUMBER: builtins.int
    @property
    def completion_time(self) -> google.protobuf.timestamp_pb2.Timestamp: ...
    def __init__(
        self,
        *,
        completion_time: google.protobuf.timestamp_pb2.Timestamp | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["completion_time", b"completion_time"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["completion_time", b"completion_time"]) -> None: ...

global___MsgBeginRedelegateResponse = MsgBeginRedelegateResponse

@typing_extensions.final
class MsgUndelegate(google.protobuf.message.Message):
    """MsgUndelegate defines a SDK message for performing an undelegation from a
    delegate and a validator.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    DELEGATOR_ADDRESS_FIELD_NUMBER: builtins.int
    VALIDATOR_ADDRESS_FIELD_NUMBER: builtins.int
    AMOUNT_FIELD_NUMBER: builtins.int
    delegator_address: builtins.str
    validator_address: builtins.str
    @property
    def amount(self) -> cosmos.base.v1beta1.coin_pb2.Coin: ...
    def __init__(
        self,
        *,
        delegator_address: builtins.str = ...,
        validator_address: builtins.str = ...,
        amount: cosmos.base.v1beta1.coin_pb2.Coin | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["amount", b"amount"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["amount", b"amount", "delegator_address", b"delegator_address", "validator_address", b"validator_address"]) -> None: ...

global___MsgUndelegate = MsgUndelegate

@typing_extensions.final
class MsgUndelegateResponse(google.protobuf.message.Message):
    """MsgUndelegateResponse defines the Msg/Undelegate response type."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    COMPLETION_TIME_FIELD_NUMBER: builtins.int
    @property
    def completion_time(self) -> google.protobuf.timestamp_pb2.Timestamp: ...
    def __init__(
        self,
        *,
        completion_time: google.protobuf.timestamp_pb2.Timestamp | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["completion_time", b"completion_time"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["completion_time", b"completion_time"]) -> None: ...

global___MsgUndelegateResponse = MsgUndelegateResponse
