Trait LockableCurrency
pub trait LockableCurrency<AccountId>: Currency<AccountId> {
    type Moment;
    type MaxLocks: Get<u32>;
    // Required methods
    fn set_lock(
        id: [u8; 8],
        who: &AccountId,
        amount: Self::Balance,
        reasons: WithdrawReasons,
    );
    fn extend_lock(
        id: [u8; 8],
        who: &AccountId,
        amount: Self::Balance,
        reasons: WithdrawReasons,
    );
    fn remove_lock(id: [u8; 8], who: &AccountId);
}Expand description
A currency whose accounts can have liquidity restrictions.
Note: Consider using crate::traits::fungible::MutateFreeze (and family) as it returns a
Result, and is therefore much safer to use.
Required Associated Types§
type Moment
type Moment
The quantity used to denote time; usually just a BlockNumber.
Required Methods§
fn set_lock(
    id: [u8; 8],
    who: &AccountId,
    amount: Self::Balance,
    reasons: WithdrawReasons,
)
fn set_lock( id: [u8; 8], 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.
fn extend_lock(
    id: [u8; 8],
    who: &AccountId,
    amount: Self::Balance,
    reasons: WithdrawReasons,
)
fn extend_lock( id: [u8; 8], 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 
fn remove_lock(id: [u8; 8], who: &AccountId)
fn remove_lock(id: [u8; 8], who: &AccountId)
Remove an existing lock.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.