Trait orml_traits::currency::MultiLockableCurrency

source ·
pub trait MultiLockableCurrency<AccountId>: MultiCurrency<AccountId> {
    type Moment;

    // Required methods
    fn set_lock(
        lock_id: LockIdentifier,
        currency_id: Self::CurrencyId,
        who: &AccountId,
        amount: Self::Balance
    ) -> DispatchResult;
    fn extend_lock(
        lock_id: LockIdentifier,
        currency_id: Self::CurrencyId,
        who: &AccountId,
        amount: Self::Balance
    ) -> DispatchResult;
    fn remove_lock(
        lock_id: LockIdentifier,
        currency_id: Self::CurrencyId,
        who: &AccountId
    ) -> DispatchResult;
}
Expand description

A fungible multi-currency system whose accounts can have liquidity restrictions.

Required Associated Types§

source

type Moment

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

Required Methods§

source

fn set_lock( lock_id: LockIdentifier, currency_id: Self::CurrencyId, who: &AccountId, amount: Self::Balance ) -> DispatchResult

Create a new balance lock on account who.

If the new lock is valid (i.e. not already expired), it will push the struct to the Locks vec in storage. Note that you can lock more funds than a user has.

If the lock lock_id already exists, this will update it.

source

fn extend_lock( lock_id: LockIdentifier, currency_id: Self::CurrencyId, who: &AccountId, amount: Self::Balance ) -> DispatchResult

Changes a balance lock (selected by lock_id) so that it becomes less liquid in all parameters or creates a new one if it does not exist.

Calling extend_lock on an existing lock lock_id differs from set_lock in that it applies the most severe constraints of the two, while set_lock replaces the lock with the new parameters. As in, extend_lock will set:

  • maximum amount
source

fn remove_lock( lock_id: LockIdentifier, currency_id: Self::CurrencyId, who: &AccountId ) -> DispatchResult

Remove an existing lock.

Object Safety§

This trait is not object safe.

Implementors§