Trait frame_support::traits::tokens::currency::VestingSchedule
source · 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,
) -> DispatchResult;
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,
) -> DispatchResult;
fn remove_vesting_schedule(
who: &AccountId,
schedule_index: u32,
) -> DispatchResult;
}
Expand description
A vesting schedule over a currency. This allows a particular currency to have vesting limits applied to it.
Required Associated Types§
Required Methods§
sourcefn 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.
sourcefn add_vesting_schedule(
who: &AccountId,
locked: <Self::Currency as Currency<AccountId>>::Balance,
per_block: <Self::Currency as Currency<AccountId>>::Balance,
starting_block: Self::Moment,
) -> DispatchResult
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, ) -> DispatchResult
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.
sourcefn 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,
) -> DispatchResult
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, ) -> DispatchResult
Checks if add_vesting_schedule
would work against who
.
sourcefn remove_vesting_schedule(
who: &AccountId,
schedule_index: u32,
) -> DispatchResult
fn remove_vesting_schedule( who: &AccountId, schedule_index: u32, ) -> DispatchResult
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.