"""
@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 typing
import typing_extensions

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

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: typing.Text
    delegator_address: typing.Text
    validator_address: typing.Text
    @property
    def pubkey(self) -> google.protobuf.any_pb2.Any: ...
    @property
    def value(self) -> cosmos.base.v1beta1.coin_pb2.Coin: ...
    def __init__(self,
        *,
        description: typing.Optional[cosmos.staking.v1beta1.staking_pb2.Description] = ...,
        commission: typing.Optional[cosmos.staking.v1beta1.staking_pb2.CommissionRates] = ...,
        min_self_delegation: typing.Text = ...,
        delegator_address: typing.Text = ...,
        validator_address: typing.Text = ...,
        pubkey: typing.Optional[google.protobuf.any_pb2.Any] = ...,
        value: typing.Optional[cosmos.base.v1beta1.coin_pb2.Coin] = ...,
        ) -> 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

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

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: typing.Text
    commission_rate: typing.Text
    """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: typing.Text
    def __init__(self,
        *,
        description: typing.Optional[cosmos.staking.v1beta1.staking_pb2.Description] = ...,
        validator_address: typing.Text = ...,
        commission_rate: typing.Text = ...,
        min_self_delegation: typing.Text = ...,
        ) -> 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

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

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: typing.Text
    validator_address: typing.Text
    @property
    def amount(self) -> cosmos.base.v1beta1.coin_pb2.Coin: ...
    def __init__(self,
        *,
        delegator_address: typing.Text = ...,
        validator_address: typing.Text = ...,
        amount: typing.Optional[cosmos.base.v1beta1.coin_pb2.Coin] = ...,
        ) -> 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

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

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: typing.Text
    validator_src_address: typing.Text
    validator_dst_address: typing.Text
    @property
    def amount(self) -> cosmos.base.v1beta1.coin_pb2.Coin: ...
    def __init__(self,
        *,
        delegator_address: typing.Text = ...,
        validator_src_address: typing.Text = ...,
        validator_dst_address: typing.Text = ...,
        amount: typing.Optional[cosmos.base.v1beta1.coin_pb2.Coin] = ...,
        ) -> 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

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: typing.Optional[google.protobuf.timestamp_pb2.Timestamp] = ...,
        ) -> 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

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: typing.Text
    validator_address: typing.Text
    @property
    def amount(self) -> cosmos.base.v1beta1.coin_pb2.Coin: ...
    def __init__(self,
        *,
        delegator_address: typing.Text = ...,
        validator_address: typing.Text = ...,
        amount: typing.Optional[cosmos.base.v1beta1.coin_pb2.Coin] = ...,
        ) -> 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

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: typing.Optional[google.protobuf.timestamp_pb2.Timestamp] = ...,
        ) -> 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
