Trait polkadot_sdk_frame::traits::tokens::currency::VestingSchedule
pub trait VestingSchedule<AccountId> {
type Moment;
type Currency: Currency<AccountId>;
// Required methods
fn vesting_balance(
who: &AccountId,
) -> Option<<Self::Currency as Currency<AccountId>>::Balance>;
fn add_vesting_schedule(
who: &AccountId,
locked: <Self::Currency as Currency<AccountId>>::Balance,
per_block: <Self::Currency as Currency<AccountId>>::Balance,
starting_block: Self::Moment,
) -> Result<(), DispatchError>;
fn can_add_vesting_schedule(
who: &AccountId,
locked: <Self::Currency as Currency<AccountId>>::Balance,
per_block: <Self::Currency as Currency<AccountId>>::Balance,
starting_block: Self::Moment,
) -> Result<(), DispatchError>;
fn remove_vesting_schedule(
who: &AccountId,
schedule_index: u32,
) -> Result<(), DispatchError>;
}
Expand description
A vesting schedule over a currency. This allows a particular currency to have vesting limits applied to it.
Required Associated Types§
type Moment
type Moment
The quantity used to denote time; usually just a BlockNumber
.
Required Methods§
fn vesting_balance(
who: &AccountId,
) -> Option<<Self::Currency as Currency<AccountId>>::Balance>
fn vesting_balance( who: &AccountId, ) -> Option<<Self::Currency as Currency<AccountId>>::Balance>
Get the amount that is currently being vested and cannot be transferred out of this account.
Returns None
if the account has no vesting schedule.
fn add_vesting_schedule(
who: &AccountId,
locked: <Self::Currency as Currency<AccountId>>::Balance,
per_block: <Self::Currency as Currency<AccountId>>::Balance,
starting_block: Self::Moment,
) -> Result<(), DispatchError>
fn add_vesting_schedule( who: &AccountId, locked: <Self::Currency as Currency<AccountId>>::Balance, per_block: <Self::Currency as Currency<AccountId>>::Balance, starting_block: Self::Moment, ) -> Result<(), DispatchError>
Adds a vesting schedule to a given account.
If the account has MaxVestingSchedules
, an Error is returned and nothing
is updated.
Is a no-op if the amount to be vested is zero.
NOTE: This doesn’t alter the free balance of the account.
fn can_add_vesting_schedule(
who: &AccountId,
locked: <Self::Currency as Currency<AccountId>>::Balance,
per_block: <Self::Currency as Currency<AccountId>>::Balance,
starting_block: Self::Moment,
) -> Result<(), DispatchError>
fn can_add_vesting_schedule( who: &AccountId, locked: <Self::Currency as Currency<AccountId>>::Balance, per_block: <Self::Currency as Currency<AccountId>>::Balance, starting_block: Self::Moment, ) -> Result<(), DispatchError>
Checks if add_vesting_schedule
would work against who
.
fn remove_vesting_schedule(
who: &AccountId,
schedule_index: u32,
) -> Result<(), DispatchError>
fn remove_vesting_schedule( who: &AccountId, schedule_index: u32, ) -> Result<(), DispatchError>
Remove a vesting schedule for a given account.
NOTE: This doesn’t alter the free balance of the account.
Object Safety§
This trait is not object safe.