2022-01-08 00:39:27 +00:00
|
|
|
syntax = "proto3";
|
|
|
|
package cosmos.vesting.v1beta1;
|
|
|
|
|
2024-02-06 22:54:10 +00:00
|
|
|
import "amino/amino.proto";
|
2022-01-08 00:39:27 +00:00
|
|
|
import "gogoproto/gogo.proto";
|
|
|
|
import "cosmos/base/v1beta1/coin.proto";
|
|
|
|
import "cosmos/auth/v1beta1/auth.proto";
|
|
|
|
|
|
|
|
option go_package = "github.com/cosmos/cosmos-sdk/x/auth/vesting/types";
|
|
|
|
|
|
|
|
// BaseVestingAccount implements the VestingAccount interface. It contains all
|
|
|
|
// the necessary fields needed for any vesting account implementation.
|
|
|
|
message BaseVestingAccount {
|
2024-02-06 22:54:10 +00:00
|
|
|
option (amino.name) = "cosmos-sdk/BaseVestingAccount";
|
2022-01-08 00:39:27 +00:00
|
|
|
option (gogoproto.goproto_getters) = false;
|
|
|
|
option (gogoproto.goproto_stringer) = false;
|
|
|
|
|
|
|
|
cosmos.auth.v1beta1.BaseAccount base_account = 1 [(gogoproto.embed) = true];
|
2024-02-06 22:54:10 +00:00
|
|
|
repeated cosmos.base.v1beta1.Coin original_vesting = 2 [
|
|
|
|
(gogoproto.nullable) = false,
|
|
|
|
(amino.dont_omitempty) = true,
|
|
|
|
(gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"
|
|
|
|
];
|
|
|
|
repeated cosmos.base.v1beta1.Coin delegated_free = 3 [
|
|
|
|
(gogoproto.nullable) = false,
|
|
|
|
(amino.dont_omitempty) = true,
|
|
|
|
(gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"
|
|
|
|
];
|
|
|
|
repeated cosmos.base.v1beta1.Coin delegated_vesting = 4 [
|
|
|
|
(gogoproto.nullable) = false,
|
|
|
|
(amino.dont_omitempty) = true,
|
|
|
|
(gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"
|
|
|
|
];
|
|
|
|
// Vesting end time, as unix timestamp (in seconds).
|
2023-04-04 00:08:45 +00:00
|
|
|
int64 end_time = 5;
|
2022-01-08 00:39:27 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// ContinuousVestingAccount implements the VestingAccount interface. It
|
|
|
|
// continuously vests by unlocking coins linearly with respect to time.
|
|
|
|
message ContinuousVestingAccount {
|
2024-02-06 22:54:10 +00:00
|
|
|
option (amino.name) = "cosmos-sdk/ContinuousVestingAccount";
|
2022-01-08 00:39:27 +00:00
|
|
|
option (gogoproto.goproto_getters) = false;
|
|
|
|
option (gogoproto.goproto_stringer) = false;
|
|
|
|
|
|
|
|
BaseVestingAccount base_vesting_account = 1 [(gogoproto.embed) = true];
|
2024-02-06 22:54:10 +00:00
|
|
|
// Vesting start time, as unix timestamp (in seconds).
|
2023-04-04 00:08:45 +00:00
|
|
|
int64 start_time = 2;
|
2022-01-08 00:39:27 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// 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.
|
|
|
|
message DelayedVestingAccount {
|
2024-02-06 22:54:10 +00:00
|
|
|
option (amino.name) = "cosmos-sdk/DelayedVestingAccount";
|
2022-01-08 00:39:27 +00:00
|
|
|
option (gogoproto.goproto_getters) = false;
|
|
|
|
option (gogoproto.goproto_stringer) = false;
|
|
|
|
|
|
|
|
BaseVestingAccount base_vesting_account = 1 [(gogoproto.embed) = true];
|
|
|
|
}
|
|
|
|
|
|
|
|
// Period defines a length of time and amount of coins that will vest.
|
|
|
|
message Period {
|
|
|
|
option (gogoproto.goproto_stringer) = false;
|
|
|
|
|
2024-02-06 22:54:10 +00:00
|
|
|
// Period duration in seconds.
|
2022-01-08 00:39:27 +00:00
|
|
|
int64 length = 1;
|
2024-02-06 22:54:10 +00:00
|
|
|
repeated cosmos.base.v1beta1.Coin amount = 2 [
|
|
|
|
(gogoproto.nullable) = false,
|
|
|
|
(amino.dont_omitempty) = true,
|
|
|
|
(gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"
|
|
|
|
];
|
2022-01-08 00:39:27 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// PeriodicVestingAccount implements the VestingAccount interface. It
|
|
|
|
// periodically vests by unlocking coins during each specified period.
|
|
|
|
message PeriodicVestingAccount {
|
2024-02-06 22:54:10 +00:00
|
|
|
option (amino.name) = "cosmos-sdk/PeriodicVestingAccount";
|
2022-01-08 00:39:27 +00:00
|
|
|
option (gogoproto.goproto_getters) = false;
|
|
|
|
option (gogoproto.goproto_stringer) = false;
|
|
|
|
|
|
|
|
BaseVestingAccount base_vesting_account = 1 [(gogoproto.embed) = true];
|
2023-04-04 00:08:45 +00:00
|
|
|
int64 start_time = 2;
|
2024-02-06 22:54:10 +00:00
|
|
|
repeated Period vesting_periods = 3 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true];
|
2022-01-08 00:39:27 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// 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.
|
2022-01-08 01:59:34 +00:00
|
|
|
//
|
|
|
|
// Since: cosmos-sdk 0.43
|
2022-01-08 00:39:27 +00:00
|
|
|
message PermanentLockedAccount {
|
2024-02-06 22:54:10 +00:00
|
|
|
option (amino.name) = "cosmos-sdk/PermanentLockedAccount";
|
2022-01-08 00:39:27 +00:00
|
|
|
option (gogoproto.goproto_getters) = false;
|
|
|
|
option (gogoproto.goproto_stringer) = false;
|
|
|
|
|
|
|
|
BaseVestingAccount base_vesting_account = 1 [(gogoproto.embed) = true];
|
|
|
|
}
|