"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
"""
import builtins
import cosmos.auth.v1beta1.auth_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 BaseVestingAccount(google.protobuf.message.Message):
    """BaseVestingAccount implements the VestingAccount interface. It contains all
    the necessary fields needed for any vesting account implementation.
    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    BASE_ACCOUNT_FIELD_NUMBER: builtins.int
    ORIGINAL_VESTING_FIELD_NUMBER: builtins.int
    DELEGATED_FREE_FIELD_NUMBER: builtins.int
    DELEGATED_VESTING_FIELD_NUMBER: builtins.int
    END_TIME_FIELD_NUMBER: builtins.int
    @property
    def base_account(self) -> cosmos.auth.v1beta1.auth_pb2.BaseAccount: ...
    @property
    def original_vesting(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[cosmos.base.v1beta1.coin_pb2.Coin]: ...
    @property
    def delegated_free(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[cosmos.base.v1beta1.coin_pb2.Coin]: ...
    @property
    def delegated_vesting(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[cosmos.base.v1beta1.coin_pb2.Coin]: ...
    end_time: builtins.int
    def __init__(self,
        *,
        base_account: typing.Optional[cosmos.auth.v1beta1.auth_pb2.BaseAccount] = ...,
        original_vesting: typing.Optional[typing.Iterable[cosmos.base.v1beta1.coin_pb2.Coin]] = ...,
        delegated_free: typing.Optional[typing.Iterable[cosmos.base.v1beta1.coin_pb2.Coin]] = ...,
        delegated_vesting: typing.Optional[typing.Iterable[cosmos.base.v1beta1.coin_pb2.Coin]] = ...,
        end_time: builtins.int = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["base_account",b"base_account"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["base_account",b"base_account","delegated_free",b"delegated_free","delegated_vesting",b"delegated_vesting","end_time",b"end_time","original_vesting",b"original_vesting"]) -> None: ...
global___BaseVestingAccount = BaseVestingAccount

class ContinuousVestingAccount(google.protobuf.message.Message):
    """ContinuousVestingAccount implements the VestingAccount interface. It
    continuously vests by unlocking coins linearly with respect to time.
    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    BASE_VESTING_ACCOUNT_FIELD_NUMBER: builtins.int
    START_TIME_FIELD_NUMBER: builtins.int
    @property
    def base_vesting_account(self) -> global___BaseVestingAccount: ...
    start_time: builtins.int
    def __init__(self,
        *,
        base_vesting_account: typing.Optional[global___BaseVestingAccount] = ...,
        start_time: builtins.int = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["base_vesting_account",b"base_vesting_account"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["base_vesting_account",b"base_vesting_account","start_time",b"start_time"]) -> None: ...
global___ContinuousVestingAccount = ContinuousVestingAccount

class DelayedVestingAccount(google.protobuf.message.Message):
    """DelayedVestingAccount implements the VestingAccount interface. It vests all
    coins after a specific time, but non prior. In other words, it keeps them
    locked until a specified time.
    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    BASE_VESTING_ACCOUNT_FIELD_NUMBER: builtins.int
    @property
    def base_vesting_account(self) -> global___BaseVestingAccount: ...
    def __init__(self,
        *,
        base_vesting_account: typing.Optional[global___BaseVestingAccount] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["base_vesting_account",b"base_vesting_account"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["base_vesting_account",b"base_vesting_account"]) -> None: ...
global___DelayedVestingAccount = DelayedVestingAccount

class Period(google.protobuf.message.Message):
    """Period defines a length of time and amount of coins that will vest."""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    LENGTH_FIELD_NUMBER: builtins.int
    AMOUNT_FIELD_NUMBER: builtins.int
    length: builtins.int
    @property
    def amount(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[cosmos.base.v1beta1.coin_pb2.Coin]: ...
    def __init__(self,
        *,
        length: builtins.int = ...,
        amount: typing.Optional[typing.Iterable[cosmos.base.v1beta1.coin_pb2.Coin]] = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["amount",b"amount","length",b"length"]) -> None: ...
global___Period = Period

class PeriodicVestingAccount(google.protobuf.message.Message):
    """PeriodicVestingAccount implements the VestingAccount interface. It
    periodically vests by unlocking coins during each specified period.
    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    BASE_VESTING_ACCOUNT_FIELD_NUMBER: builtins.int
    START_TIME_FIELD_NUMBER: builtins.int
    VESTING_PERIODS_FIELD_NUMBER: builtins.int
    @property
    def base_vesting_account(self) -> global___BaseVestingAccount: ...
    start_time: builtins.int
    @property
    def vesting_periods(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Period]: ...
    def __init__(self,
        *,
        base_vesting_account: typing.Optional[global___BaseVestingAccount] = ...,
        start_time: builtins.int = ...,
        vesting_periods: typing.Optional[typing.Iterable[global___Period]] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["base_vesting_account",b"base_vesting_account"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["base_vesting_account",b"base_vesting_account","start_time",b"start_time","vesting_periods",b"vesting_periods"]) -> None: ...
global___PeriodicVestingAccount = PeriodicVestingAccount

class PermanentLockedAccount(google.protobuf.message.Message):
    """PermanentLockedAccount implements the VestingAccount interface. It does
    not ever release coins, locking them indefinitely. Coins in this account can
    still be used for delegating and for governance votes even while locked.

    Since: cosmos-sdk 0.43
    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor
    BASE_VESTING_ACCOUNT_FIELD_NUMBER: builtins.int
    @property
    def base_vesting_account(self) -> global___BaseVestingAccount: ...
    def __init__(self,
        *,
        base_vesting_account: typing.Optional[global___BaseVestingAccount] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["base_vesting_account",b"base_vesting_account"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["base_vesting_account",b"base_vesting_account"]) -> None: ...
global___PermanentLockedAccount = PermanentLockedAccount
