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§

source

type Moment

The quantity used to denote time; usually just a BlockNumber.

source

type Currency: Currency<AccountId>

The currency that this schedule applies to.

Required Methods§

source

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.

source

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.

source

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.

source

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.

Implementors§