pub trait MultiTokenLockableCurrency<AccountId>: MultiTokenCurrency<AccountId> {
type Moment;
type MaxLocks: Get<u32>;
// Required methods
fn set_lock(
currency_id: Self::CurrencyId,
id: LockIdentifier,
who: &AccountId,
amount: Self::Balance,
reasons: WithdrawReasons
);
fn extend_lock(
currency_id: Self::CurrencyId,
id: LockIdentifier,
who: &AccountId,
amount: Self::Balance,
reasons: WithdrawReasons
);
fn remove_lock(
currency_id: Self::CurrencyId,
id: LockIdentifier,
who: &AccountId
);
}Expand description
A currency whose accounts can have liquidity restrictions.
Required Associated Types§
Required Methods§
sourcefn set_lock(
currency_id: Self::CurrencyId,
id: LockIdentifier,
who: &AccountId,
amount: Self::Balance,
reasons: WithdrawReasons
)
fn set_lock( currency_id: Self::CurrencyId, id: LockIdentifier, who: &AccountId, amount: Self::Balance, reasons: WithdrawReasons )
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 id already exists, this will update it.
sourcefn extend_lock(
currency_id: Self::CurrencyId,
id: LockIdentifier,
who: &AccountId,
amount: Self::Balance,
reasons: WithdrawReasons
)
fn extend_lock( currency_id: Self::CurrencyId, id: LockIdentifier, who: &AccountId, amount: Self::Balance, reasons: WithdrawReasons )
Changes a balance lock (selected by 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 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 - bitwise mask of all
reasons
sourcefn remove_lock(
currency_id: Self::CurrencyId,
id: LockIdentifier,
who: &AccountId
)
fn remove_lock( currency_id: Self::CurrencyId, id: LockIdentifier, who: &AccountId )
Remove an existing lock.