"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
"""
import builtins
import collections.abc
import cosmos.base.v1beta1.coin_pb2
import cosmos.vesting.v1beta1.vesting_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 MsgCreateVestingAccount(google.protobuf.message.Message):
    """MsgCreateVestingAccount defines a message that enables creating a vesting
    account.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    FROM_ADDRESS_FIELD_NUMBER: builtins.int
    TO_ADDRESS_FIELD_NUMBER: builtins.int
    AMOUNT_FIELD_NUMBER: builtins.int
    END_TIME_FIELD_NUMBER: builtins.int
    DELAYED_FIELD_NUMBER: builtins.int
    from_address: builtins.str
    to_address: builtins.str
    @property
    def amount(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[cosmos.base.v1beta1.coin_pb2.Coin]: ...
    end_time: builtins.int
    delayed: builtins.bool
    def __init__(
        self,
        *,
        from_address: builtins.str = ...,
        to_address: builtins.str = ...,
        amount: collections.abc.Iterable[cosmos.base.v1beta1.coin_pb2.Coin] | None = ...,
        end_time: builtins.int = ...,
        delayed: builtins.bool = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["amount", b"amount", "delayed", b"delayed", "end_time", b"end_time", "from_address", b"from_address", "to_address", b"to_address"]) -> None: ...

global___MsgCreateVestingAccount = MsgCreateVestingAccount

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

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

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

global___MsgCreateVestingAccountResponse = MsgCreateVestingAccountResponse

@typing_extensions.final
class MsgCreateClawbackVestingAccount(google.protobuf.message.Message):
    """MsgCreateClawbackVestingAccount defines a message that enables creating a ClawbackVestingAccount."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    FROM_ADDRESS_FIELD_NUMBER: builtins.int
    TO_ADDRESS_FIELD_NUMBER: builtins.int
    START_TIME_FIELD_NUMBER: builtins.int
    LOCKUP_PERIODS_FIELD_NUMBER: builtins.int
    VESTING_PERIODS_FIELD_NUMBER: builtins.int
    MERGE_FIELD_NUMBER: builtins.int
    from_address: builtins.str
    """from_address specifies the account to provide the funds and sign the
    clawback request
    """
    to_address: builtins.str
    """to_address specifies the account to receive the funds"""
    start_time: builtins.int
    """start_time defines the time at which the vesting period begins"""
    @property
    def lockup_periods(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[cosmos.vesting.v1beta1.vesting_pb2.Period]:
        """lockup_periods defines the unlocking schedule relative to the start_time"""
    @property
    def vesting_periods(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[cosmos.vesting.v1beta1.vesting_pb2.Period]:
        """vesting_periods defines the vesting schedule relative to the start_time"""
    merge: builtins.bool
    """merge specifies a creation mechanism for existing
    ClawbackVestingAccounts. If true, merge this new grant into an existing
    ClawbackVestingAccount, or create it if it does not exist. If false,
    creates a new account. New grants to an existing account must be from the
    same from_address.
    """
    def __init__(
        self,
        *,
        from_address: builtins.str = ...,
        to_address: builtins.str = ...,
        start_time: builtins.int = ...,
        lockup_periods: collections.abc.Iterable[cosmos.vesting.v1beta1.vesting_pb2.Period] | None = ...,
        vesting_periods: collections.abc.Iterable[cosmos.vesting.v1beta1.vesting_pb2.Period] | None = ...,
        merge: builtins.bool = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["from_address", b"from_address", "lockup_periods", b"lockup_periods", "merge", b"merge", "start_time", b"start_time", "to_address", b"to_address", "vesting_periods", b"vesting_periods"]) -> None: ...

global___MsgCreateClawbackVestingAccount = MsgCreateClawbackVestingAccount

@typing_extensions.final
class MsgCreateClawbackVestingAccountResponse(google.protobuf.message.Message):
    """MsgCreateClawbackVestingAccountResponse defines the
    MsgCreateClawbackVestingAccount response type.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

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

global___MsgCreateClawbackVestingAccountResponse = MsgCreateClawbackVestingAccountResponse

@typing_extensions.final
class MsgClawback(google.protobuf.message.Message):
    """MsgClawback defines a message that removes unvested tokens from a
    ClawbackVestingAccount.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    FUNDER_ADDRESS_FIELD_NUMBER: builtins.int
    ADDRESS_FIELD_NUMBER: builtins.int
    DEST_ADDRESS_FIELD_NUMBER: builtins.int
    funder_address: builtins.str
    """funder_address is the address which funded the account"""
    address: builtins.str
    """address is the address of the ClawbackVestingAccount to claw back from."""
    dest_address: builtins.str
    """dest_address specifies where the clawed-back tokens should be transferred
    to. If empty, the tokens will be transferred back to the original funder of
    the account.
    """
    def __init__(
        self,
        *,
        funder_address: builtins.str = ...,
        address: builtins.str = ...,
        dest_address: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["address", b"address", "dest_address", b"dest_address", "funder_address", b"funder_address"]) -> None: ...

global___MsgClawback = MsgClawback

@typing_extensions.final
class MsgClawbackResponse(google.protobuf.message.Message):
    """MsgClawbackResponse defines the MsgClawback response type."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

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

global___MsgClawbackResponse = MsgClawbackResponse
