pub trait MultiCurrency<AccountId> {
    type CurrencyId: FullCodec + Eq + PartialEq + Copy + MaybeSerializeDeserialize + Debug + TypeInfo + MaxEncodedLen;
    type Balance: AtLeast32BitUnsigned + FullCodec + Copy + MaybeSerializeDeserialize + Debug + Default + TypeInfo + MaxEncodedLen;

    fn minimum_balance(currency_id: Self::CurrencyId) -> Self::Balance;
    fn total_issuance(currency_id: Self::CurrencyId) -> Self::Balance;
    fn total_balance(
        currency_id: Self::CurrencyId,
        who: &AccountId
    ) -> Self::Balance; fn free_balance(
        currency_id: Self::CurrencyId,
        who: &AccountId
    ) -> Self::Balance; fn ensure_can_withdraw(
        currency_id: Self::CurrencyId,
        who: &AccountId,
        amount: Self::Balance
    ) -> DispatchResult; fn transfer(
        currency_id: Self::CurrencyId,
        from: &AccountId,
        to: &AccountId,
        amount: Self::Balance
    ) -> DispatchResult; fn deposit(
        currency_id: Self::CurrencyId,
        who: &AccountId,
        amount: Self::Balance
    ) -> DispatchResult; fn withdraw(
        currency_id: Self::CurrencyId,
        who: &AccountId,
        amount: Self::Balance
    ) -> DispatchResult; fn can_slash(
        currency_id: Self::CurrencyId,
        who: &AccountId,
        value: Self::Balance
    ) -> bool; fn slash(
        currency_id: Self::CurrencyId,
        who: &AccountId,
        amount: Self::Balance
    ) -> Self::Balance; }
Expand description

Abstraction over a fungible multi-currency system.

Required Associated Types§

Required Methods§

Existential deposit of currency_id.

The total amount of issuance of currency_id.

A dry-run of withdraw. Returns Ok iff the account is able to make a withdrawal of the given amount.

Transfer some amount from one account to another.

Add amount to the balance of who under currency_id and increase total issuance.

Remove amount from the balance of who under currency_id and reduce total issuance.

Same result as slash(currency_id, who, value) (but without the side-effects) assuming there are no balance changes in the meantime and only the reserved balance is not taken into account.

Deduct the balance of who by up to amount.

As much funds up to amount will be deducted as possible. If this is less than amount, then a non-zero excess value will be returned.

Implementors§