pub struct UnionOf<Left, Right, Criterion, AssetKind, AccountId>(/* private fields */);
Expand description
Type to combine some fungible::*
and fungibles::*
implementations into one union
fungibles::*
implementation.
§Parameters:
Left
isfungible::*
implementation that is incorporated into the resulting union.Right
isfungibles::*
implementation that is incorporated into the resulting union.Criterion
determines whether theAssetKind
belongs to theLeft
orRight
set.AssetKind
is a superset type encompassing asset kinds fromLeft
andRight
sets.AccountId
is an account identifier type.
Trait Implementations§
source§impl<Left: Inspect<AccountId> + AccountTouch<(), AccountId, Balance = <Left as Inspect<AccountId>>::Balance>, Right: Inspect<AccountId> + AccountTouch<Right::AssetId, AccountId, Balance = <Left as Inspect<AccountId>>::Balance>, Criterion: Convert<AssetKind, Either<(), Right::AssetId>>, AssetKind: AssetId, AccountId> AccountTouch<AssetKind, AccountId> for UnionOf<Left, Right, Criterion, AssetKind, AccountId>
impl<Left: Inspect<AccountId> + AccountTouch<(), AccountId, Balance = <Left as Inspect<AccountId>>::Balance>, Right: Inspect<AccountId> + AccountTouch<Right::AssetId, AccountId, Balance = <Left as Inspect<AccountId>>::Balance>, Criterion: Convert<AssetKind, Either<(), Right::AssetId>>, AssetKind: AssetId, AccountId> AccountTouch<AssetKind, AccountId> for UnionOf<Left, Right, Criterion, AssetKind, AccountId>
source§fn deposit_required(asset: AssetKind) -> Self::Balance
fn deposit_required(asset: AssetKind) -> Self::Balance
The deposit amount of a native currency required for touching an account of the
asset
.source§fn should_touch(asset: AssetKind, who: &AccountId) -> bool
fn should_touch(asset: AssetKind, who: &AccountId) -> bool
Check if an account for a given asset should be touched to meet the existence requirements.
source§fn touch(
asset: AssetKind,
who: &AccountId,
depositor: &AccountId,
) -> DispatchResult
fn touch( asset: AssetKind, who: &AccountId, depositor: &AccountId, ) -> DispatchResult
Create an account for
who
of the asset
with a deposit taken from the depositor
.source§impl<Left: Balanced<AccountId>, Right: Balanced<AccountId, Balance = Left::Balance>, Criterion: Convert<AssetKind, Either<(), Right::AssetId>>, AssetKind: AssetId, AccountId> Balanced<AccountId> for UnionOf<Left, Right, Criterion, AssetKind, AccountId>
impl<Left: Balanced<AccountId>, Right: Balanced<AccountId, Balance = Left::Balance>, Criterion: Convert<AssetKind, Either<(), Right::AssetId>>, AssetKind: AssetId, AccountId> Balanced<AccountId> for UnionOf<Left, Right, Criterion, AssetKind, AccountId>
§type OnDropDebt = ConvertImbalanceDropHandler<<Left as Balanced<AccountId>>::OnDropDebt, <Right as Balanced<AccountId>>::OnDropDebt, Criterion, AssetKind, <Left as Inspect<AccountId>>::Balance, <Right as Inspect<AccountId>>::AssetId, AccountId>
type OnDropDebt = ConvertImbalanceDropHandler<<Left as Balanced<AccountId>>::OnDropDebt, <Right as Balanced<AccountId>>::OnDropDebt, Criterion, AssetKind, <Left as Inspect<AccountId>>::Balance, <Right as Inspect<AccountId>>::AssetId, AccountId>
The type for managing what happens when an instance of
Debt
is dropped without being used.§type OnDropCredit = ConvertImbalanceDropHandler<<Left as Balanced<AccountId>>::OnDropCredit, <Right as Balanced<AccountId>>::OnDropCredit, Criterion, AssetKind, <Left as Inspect<AccountId>>::Balance, <Right as Inspect<AccountId>>::AssetId, AccountId>
type OnDropCredit = ConvertImbalanceDropHandler<<Left as Balanced<AccountId>>::OnDropCredit, <Right as Balanced<AccountId>>::OnDropCredit, Criterion, AssetKind, <Left as Inspect<AccountId>>::Balance, <Right as Inspect<AccountId>>::AssetId, AccountId>
The type for managing what happens when an instance of
Credit
is dropped without being
used.source§fn deposit(
asset: Self::AssetId,
who: &AccountId,
value: Self::Balance,
precision: Precision,
) -> Result<Debt<AccountId, Self>, DispatchError>
fn deposit( asset: Self::AssetId, who: &AccountId, value: Self::Balance, precision: Precision, ) -> Result<Debt<AccountId, Self>, DispatchError>
source§fn issue(asset: Self::AssetId, amount: Self::Balance) -> Credit<AccountId, Self>
fn issue(asset: Self::AssetId, amount: Self::Balance) -> Credit<AccountId, Self>
Increase the total issuance by
amount
and return the according imbalance. The imbalance
will typically be used to increase an account by the same amount with e.g.
resolve_into_existing
or resolve_creating
. Read moresource§fn pair(
asset: Self::AssetId,
amount: Self::Balance,
) -> Result<(Debt<AccountId, Self>, Credit<AccountId, Self>), DispatchError>
fn pair( asset: Self::AssetId, amount: Self::Balance, ) -> Result<(Debt<AccountId, Self>, Credit<AccountId, Self>), DispatchError>
Produce a pair of imbalances that cancel each other out exactly. Read more
source§fn rescind(asset: Self::AssetId, amount: Self::Balance) -> Debt<AccountId, Self>
fn rescind(asset: Self::AssetId, amount: Self::Balance) -> Debt<AccountId, Self>
Reduce the total issuance by
amount
and return the according imbalance. The imbalance will
typically be used to reduce an account by the same amount with e.g. settle
. Read moresource§fn resolve(
who: &AccountId,
credit: Credit<AccountId, Self>,
) -> Result<(), Credit<AccountId, Self>>
fn resolve( who: &AccountId, credit: Credit<AccountId, Self>, ) -> Result<(), Credit<AccountId, Self>>
The balance of
who
is increased in order to counter credit
. If the whole of credit
cannot be countered, then nothing is changed and the original credit
is returned in an
Err
. Read moresource§fn settle(
who: &AccountId,
debt: Debt<AccountId, Self>,
preservation: Preservation,
) -> Result<Credit<AccountId, Self>, Debt<AccountId, Self>>
fn settle( who: &AccountId, debt: Debt<AccountId, Self>, preservation: Preservation, ) -> Result<Credit<AccountId, Self>, Debt<AccountId, Self>>
The balance of
who
is decreased in order to counter debt
. If the whole of debt
cannot be countered, then nothing is changed and the original debt
is returned in an
Err
.source§fn withdraw(
asset: Self::AssetId,
who: &AccountId,
value: Self::Balance,
precision: Precision,
preservation: Preservation,
force: Fortitude,
) -> Result<Credit<AccountId, Self>, DispatchError>
fn withdraw( asset: Self::AssetId, who: &AccountId, value: Self::Balance, precision: Precision, preservation: Preservation, force: Fortitude, ) -> Result<Credit<AccountId, Self>, DispatchError>
fn done_rescind(_asset: Self::AssetId, _amount: Self::Balance)
fn done_issue(_asset: Self::AssetId, _amount: Self::Balance)
fn done_deposit(_asset: Self::AssetId, _who: &AccountId, _amount: Self::Balance)
fn done_withdraw( _asset: Self::AssetId, _who: &AccountId, _amount: Self::Balance, )
source§impl<Left: BalancedHold<AccountId> + DoneSlash<Self::Reason, AccountId, Self::Balance>, Right: BalancedHold<AccountId, Balance = Left::Balance, Reason = Left::Reason> + DoneSlash<AssetKind, Left::Reason, AccountId, Left::Balance>, Criterion: Convert<AssetKind, Either<(), Right::AssetId>>, AssetKind: AssetId, AccountId> Balanced<AccountId> for UnionOf<Left, Right, Criterion, AssetKind, AccountId>
impl<Left: BalancedHold<AccountId> + DoneSlash<Self::Reason, AccountId, Self::Balance>, Right: BalancedHold<AccountId, Balance = Left::Balance, Reason = Left::Reason> + DoneSlash<AssetKind, Left::Reason, AccountId, Left::Balance>, Criterion: Convert<AssetKind, Either<(), Right::AssetId>>, AssetKind: AssetId, AccountId> Balanced<AccountId> for UnionOf<Left, Right, Criterion, AssetKind, AccountId>
source§impl<Left: Inspect<AccountId>, Right: Inspect<AccountId, Balance = Left::Balance> + Create<AccountId>, Criterion: Convert<AssetKind, Either<(), Right::AssetId>>, AssetKind: AssetId, AccountId> Create<AccountId> for UnionOf<Left, Right, Criterion, AssetKind, AccountId>
impl<Left: Inspect<AccountId>, Right: Inspect<AccountId, Balance = Left::Balance> + Create<AccountId>, Criterion: Convert<AssetKind, Either<(), Right::AssetId>>, AssetKind: AssetId, AccountId> Create<AccountId> for UnionOf<Left, Right, Criterion, AssetKind, AccountId>
source§impl<Reason, Balance, Left: DoneSlash<Reason, AccountId, Balance>, Right: DoneSlash<Right::AssetId, Reason, AccountId, Balance> + Inspect<AccountId>, Criterion: Convert<AssetKind, Either<(), Right::AssetId>>, AssetKind: AssetId, AccountId> DoneSlash<AssetKind, Reason, AccountId, Balance> for UnionOf<Left, Right, Criterion, AssetKind, AccountId>
impl<Reason, Balance, Left: DoneSlash<Reason, AccountId, Balance>, Right: DoneSlash<Right::AssetId, Reason, AccountId, Balance> + Inspect<AccountId>, Criterion: Convert<AssetKind, Either<(), Right::AssetId>>, AssetKind: AssetId, AccountId> DoneSlash<AssetKind, Reason, AccountId, Balance> for UnionOf<Left, Right, Criterion, AssetKind, AccountId>
fn done_slash( asset: AssetKind, reason: &Reason, who: &AccountId, amount: Balance, )
source§impl<Left: InspectHold<AccountId>, Right: InspectHold<AccountId, Balance = Left::Balance, Reason = Left::Reason>, Criterion: Convert<AssetKind, Either<(), Right::AssetId>>, AssetKind: AssetId, AccountId> Inspect<AccountId> for UnionOf<Left, Right, Criterion, AssetKind, AccountId>
impl<Left: InspectHold<AccountId>, Right: InspectHold<AccountId, Balance = Left::Balance, Reason = Left::Reason>, Criterion: Convert<AssetKind, Either<(), Right::AssetId>>, AssetKind: AssetId, AccountId> Inspect<AccountId> for UnionOf<Left, Right, Criterion, AssetKind, AccountId>
§type Reason = <Left as Inspect<AccountId>>::Reason
type Reason = <Left as Inspect<AccountId>>::Reason
An identifier for a hold. Used for disambiguating different holds so that
they can be individually replaced or removed and funds from one hold don’t accidentally
become unreserved or slashed for another.
source§fn reducible_total_balance_on_hold(
asset: Self::AssetId,
who: &AccountId,
force: Fortitude,
) -> Self::Balance
fn reducible_total_balance_on_hold( asset: Self::AssetId, who: &AccountId, force: Fortitude, ) -> Self::Balance
Get the maximum amount that the
total_balance_on_hold
of who
can be reduced successfully
based on whether we are willing to force the reduction and potentially go below user-level
restrictions on the minimum amount of the account. Note: This cannot bring the account into
an inconsistent state with regards any required existential deposit. Read moresource§fn hold_available(
asset: Self::AssetId,
reason: &Self::Reason,
who: &AccountId,
) -> bool
fn hold_available( asset: Self::AssetId, reason: &Self::Reason, who: &AccountId, ) -> bool
Returns
true
if it’s possible to place (additional) funds under a hold of a given
reason
. This may fail if the account has exhausted a limited number of concurrent
holds or if it cannot be made to exist (e.g. there is no provider reference). Read moresource§fn total_balance_on_hold(asset: Self::AssetId, who: &AccountId) -> Self::Balance
fn total_balance_on_hold(asset: Self::AssetId, who: &AccountId) -> Self::Balance
Amount of funds on hold (for all hold reasons) of
who
.source§fn balance_on_hold(
asset: Self::AssetId,
reason: &Self::Reason,
who: &AccountId,
) -> Self::Balance
fn balance_on_hold( asset: Self::AssetId, reason: &Self::Reason, who: &AccountId, ) -> Self::Balance
Amount of funds on hold (for the given reason) of
who
.source§fn can_hold(
asset: Self::AssetId,
reason: &Self::Reason,
who: &AccountId,
amount: Self::Balance,
) -> bool
fn can_hold( asset: Self::AssetId, reason: &Self::Reason, who: &AccountId, amount: Self::Balance, ) -> bool
Check to see if some
amount
of funds of who
may be placed on hold for the given
reason
. Reasons why this may not be true: Read moresource§fn ensure_can_hold(
asset: Self::AssetId,
reason: &Self::Reason,
who: &AccountId,
amount: Self::Balance,
) -> DispatchResult
fn ensure_can_hold( asset: Self::AssetId, reason: &Self::Reason, who: &AccountId, amount: Self::Balance, ) -> DispatchResult
Check to see if some
amount
of funds of who
may be placed on hold with the given
reason
. Reasons why this may not be true: Read moresource§impl<Left: InspectFreeze<AccountId>, Right: InspectFreeze<AccountId, Balance = Left::Balance, Id = Left::Id>, Criterion: Convert<AssetKind, Either<(), Right::AssetId>>, AssetKind: AssetId, AccountId> Inspect<AccountId> for UnionOf<Left, Right, Criterion, AssetKind, AccountId>
impl<Left: InspectFreeze<AccountId>, Right: InspectFreeze<AccountId, Balance = Left::Balance, Id = Left::Id>, Criterion: Convert<AssetKind, Either<(), Right::AssetId>>, AssetKind: AssetId, AccountId> Inspect<AccountId> for UnionOf<Left, Right, Criterion, AssetKind, AccountId>
source§fn balance_frozen(
asset: Self::AssetId,
id: &Self::Id,
who: &AccountId,
) -> Self::Balance
fn balance_frozen( asset: Self::AssetId, id: &Self::Id, who: &AccountId, ) -> Self::Balance
Amount of funds held in reserve by
who
for the given id
.source§fn balance_freezable(asset: Self::AssetId, who: &AccountId) -> Self::Balance
fn balance_freezable(asset: Self::AssetId, who: &AccountId) -> Self::Balance
The amount of the balance which can become frozen. Defaults to
total_balance()
.source§fn can_freeze(asset: Self::AssetId, id: &Self::Id, who: &AccountId) -> bool
fn can_freeze(asset: Self::AssetId, id: &Self::Id, who: &AccountId) -> bool
Returns
true
if it’s possible to introduce a freeze for the given id
onto the
account of who
. This will be true as long as the implementor supports as many
concurrent freeze locks as there are possible values of id
.source§impl<Left: Inspect<AccountId>, Right: Inspect<AccountId, Balance = Left::Balance>, Criterion: Convert<AssetKind, Either<(), Right::AssetId>>, AssetKind: AssetId, AccountId> Inspect<AccountId> for UnionOf<Left, Right, Criterion, AssetKind, AccountId>
impl<Left: Inspect<AccountId>, Right: Inspect<AccountId, Balance = Left::Balance>, Criterion: Convert<AssetKind, Either<(), Right::AssetId>>, AssetKind: AssetId, AccountId> Inspect<AccountId> for UnionOf<Left, Right, Criterion, AssetKind, AccountId>
§type Balance = <Left as Inspect<AccountId>>::Balance
type Balance = <Left as Inspect<AccountId>>::Balance
Scalar type for representing balance of an account.
source§fn total_issuance(asset: Self::AssetId) -> Self::Balance
fn total_issuance(asset: Self::AssetId) -> Self::Balance
The total amount of issuance in the system.
source§fn active_issuance(asset: Self::AssetId) -> Self::Balance
fn active_issuance(asset: Self::AssetId) -> Self::Balance
The total amount of issuance in the system excluding those which are controlled by the
system.
source§fn minimum_balance(asset: Self::AssetId) -> Self::Balance
fn minimum_balance(asset: Self::AssetId) -> Self::Balance
The minimum balance any single account may have.
source§fn balance(asset: Self::AssetId, who: &AccountId) -> Self::Balance
fn balance(asset: Self::AssetId, who: &AccountId) -> Self::Balance
Get the balance of
who
which does not include funds which are exclusively allocated to
subsystems of the chain (“on hold” or “reserved”). Read moresource§fn total_balance(asset: Self::AssetId, who: &AccountId) -> Self::Balance
fn total_balance(asset: Self::AssetId, who: &AccountId) -> Self::Balance
Get the total amount of funds whose ultimate beneficial ownership can be determined as
who
. Read moresource§fn reducible_balance(
asset: Self::AssetId,
who: &AccountId,
preservation: Preservation,
force: Fortitude,
) -> Self::Balance
fn reducible_balance( asset: Self::AssetId, who: &AccountId, preservation: Preservation, force: Fortitude, ) -> Self::Balance
Get the maximum amount that
who
can withdraw/transfer successfully based on whether the
account should be kept alive (preservation
) or whether we are willing to force the
transfer and potentially go below user-level restrictions on the minimum amount of the
account. Read moresource§fn can_deposit(
asset: Self::AssetId,
who: &AccountId,
amount: Self::Balance,
provenance: Provenance,
) -> DepositConsequence
fn can_deposit( asset: Self::AssetId, who: &AccountId, amount: Self::Balance, provenance: Provenance, ) -> DepositConsequence
source§fn can_withdraw(
asset: Self::AssetId,
who: &AccountId,
amount: Self::Balance,
) -> WithdrawConsequence<Self::Balance>
fn can_withdraw( asset: Self::AssetId, who: &AccountId, amount: Self::Balance, ) -> WithdrawConsequence<Self::Balance>
Returns
Failed
if the asset
balance of who
may not be decreased by amount
, otherwise
the consequence.source§fn asset_exists(asset: Self::AssetId) -> bool
fn asset_exists(asset: Self::AssetId) -> bool
Returns
true
if an asset
exists.source§impl<Left: Mutate<AccountId>, Right: Mutate<AccountId, Balance = Left::Balance>, Criterion: Convert<AssetKind, Either<(), Right::AssetId>>, AssetKind: AssetId, AccountId: Eq> Mutate<AccountId> for UnionOf<Left, Right, Criterion, AssetKind, AccountId>
impl<Left: Mutate<AccountId>, Right: Mutate<AccountId, Balance = Left::Balance>, Criterion: Convert<AssetKind, Either<(), Right::AssetId>>, AssetKind: AssetId, AccountId: Eq> Mutate<AccountId> for UnionOf<Left, Right, Criterion, AssetKind, AccountId>
source§fn mint_into(
asset: Self::AssetId,
who: &AccountId,
amount: Self::Balance,
) -> Result<Self::Balance, DispatchError>
fn mint_into( asset: Self::AssetId, who: &AccountId, amount: Self::Balance, ) -> Result<Self::Balance, DispatchError>
Increase the balance of
who
by exactly amount
, minting new tokens. If that isn’t
possible then an Err
is returned and nothing is changed.source§fn burn_from(
asset: Self::AssetId,
who: &AccountId,
amount: Self::Balance,
preservation: Preservation,
precision: Precision,
force: Fortitude,
) -> Result<Self::Balance, DispatchError>
fn burn_from( asset: Self::AssetId, who: &AccountId, amount: Self::Balance, preservation: Preservation, precision: Precision, force: Fortitude, ) -> Result<Self::Balance, DispatchError>
Decrease the balance of
who
by at least amount
, possibly slightly more in the case of
minimum-balance requirements, burning the tokens. If that isn’t possible then an Err
is
returned and nothing is changed. If successful, the amount of tokens reduced is returned.source§fn shelve(
asset: Self::AssetId,
who: &AccountId,
amount: Self::Balance,
) -> Result<Self::Balance, DispatchError>
fn shelve( asset: Self::AssetId, who: &AccountId, amount: Self::Balance, ) -> Result<Self::Balance, DispatchError>
source§fn restore(
asset: Self::AssetId,
who: &AccountId,
amount: Self::Balance,
) -> Result<Self::Balance, DispatchError>
fn restore( asset: Self::AssetId, who: &AccountId, amount: Self::Balance, ) -> Result<Self::Balance, DispatchError>
source§fn transfer(
asset: Self::AssetId,
source: &AccountId,
dest: &AccountId,
amount: Self::Balance,
preservation: Preservation,
) -> Result<Self::Balance, DispatchError>
fn transfer( asset: Self::AssetId, source: &AccountId, dest: &AccountId, amount: Self::Balance, preservation: Preservation, ) -> Result<Self::Balance, DispatchError>
Transfer funds from one account into another. Read more
source§fn set_balance(
asset: Self::AssetId,
who: &AccountId,
amount: Self::Balance,
) -> Self::Balance
fn set_balance( asset: Self::AssetId, who: &AccountId, amount: Self::Balance, ) -> Self::Balance
Simple infallible function to force an account to have a particular balance, good for use
in tests and benchmarks but not recommended for production code owing to the lack of
error reporting. Read more
fn done_mint_into( _asset: Self::AssetId, _who: &AccountId, _amount: Self::Balance, )
fn done_burn_from( _asset: Self::AssetId, _who: &AccountId, _amount: Self::Balance, )
fn done_shelve(_asset: Self::AssetId, _who: &AccountId, _amount: Self::Balance)
fn done_restore(_asset: Self::AssetId, _who: &AccountId, _amount: Self::Balance)
fn done_transfer( _asset: Self::AssetId, _source: &AccountId, _dest: &AccountId, _amount: Self::Balance, )
source§impl<Left: MutateHold<AccountId>, Right: MutateHold<AccountId, Balance = Left::Balance, Reason = Left::Reason>, Criterion: Convert<AssetKind, Either<(), Right::AssetId>>, AssetKind: AssetId, AccountId> Mutate<AccountId> for UnionOf<Left, Right, Criterion, AssetKind, AccountId>
impl<Left: MutateHold<AccountId>, Right: MutateHold<AccountId, Balance = Left::Balance, Reason = Left::Reason>, Criterion: Convert<AssetKind, Either<(), Right::AssetId>>, AssetKind: AssetId, AccountId> Mutate<AccountId> for UnionOf<Left, Right, Criterion, AssetKind, AccountId>
source§fn hold(
asset: Self::AssetId,
reason: &Self::Reason,
who: &AccountId,
amount: Self::Balance,
) -> DispatchResult
fn hold( asset: Self::AssetId, reason: &Self::Reason, who: &AccountId, amount: Self::Balance, ) -> DispatchResult
Hold some funds in an account. If a hold for
reason
is already in place, then this
will increase it.source§fn release(
asset: Self::AssetId,
reason: &Self::Reason,
who: &AccountId,
amount: Self::Balance,
precision: Precision,
) -> Result<Self::Balance, DispatchError>
fn release( asset: Self::AssetId, reason: &Self::Reason, who: &AccountId, amount: Self::Balance, precision: Precision, ) -> Result<Self::Balance, DispatchError>
Release up to
amount
held funds in an account. Read moresource§fn burn_held(
asset: Self::AssetId,
reason: &Self::Reason,
who: &AccountId,
amount: Self::Balance,
precision: Precision,
force: Fortitude,
) -> Result<Self::Balance, DispatchError>
fn burn_held( asset: Self::AssetId, reason: &Self::Reason, who: &AccountId, amount: Self::Balance, precision: Precision, force: Fortitude, ) -> Result<Self::Balance, DispatchError>
Attempt to decrease the
asset
balance of who
which is held for the given reason
by
amount
. Read moresource§fn transfer_on_hold(
asset: Self::AssetId,
reason: &Self::Reason,
source: &AccountId,
dest: &AccountId,
amount: Self::Balance,
precision: Precision,
mode: Restriction,
force: Fortitude,
) -> Result<Self::Balance, DispatchError>
fn transfer_on_hold( asset: Self::AssetId, reason: &Self::Reason, source: &AccountId, dest: &AccountId, amount: Self::Balance, precision: Precision, mode: Restriction, force: Fortitude, ) -> Result<Self::Balance, DispatchError>
Transfer held funds into a destination account. Read more
source§fn transfer_and_hold(
asset: Self::AssetId,
reason: &Self::Reason,
source: &AccountId,
dest: &AccountId,
amount: Self::Balance,
precision: Precision,
preservation: Preservation,
force: Fortitude,
) -> Result<Self::Balance, DispatchError>
fn transfer_and_hold( asset: Self::AssetId, reason: &Self::Reason, source: &AccountId, dest: &AccountId, amount: Self::Balance, precision: Precision, preservation: Preservation, force: Fortitude, ) -> Result<Self::Balance, DispatchError>
Transfer some
amount
of free balance from source
to become owned by dest
but on hold
for reason
.
for reason
. Read moresource§fn burn_all_held(
asset: Self::AssetId,
reason: &Self::Reason,
who: &AccountId,
precision: Precision,
force: Fortitude,
) -> Result<Self::Balance, DispatchError>
fn burn_all_held( asset: Self::AssetId, reason: &Self::Reason, who: &AccountId, precision: Precision, force: Fortitude, ) -> Result<Self::Balance, DispatchError>
fn done_hold( _asset: Self::AssetId, _reason: &Self::Reason, _who: &AccountId, _amount: Self::Balance, )
fn done_release( _asset: Self::AssetId, _reason: &Self::Reason, _who: &AccountId, _amount: Self::Balance, )
fn done_burn_held( _asset: Self::AssetId, _reason: &Self::Reason, _who: &AccountId, _amount: Self::Balance, )
fn done_transfer_on_hold( _asset: Self::AssetId, _reason: &Self::Reason, _source: &AccountId, _dest: &AccountId, _amount: Self::Balance, )
fn done_transfer_and_hold( _asset: Self::AssetId, _reason: &Self::Reason, _source: &AccountId, _dest: &AccountId, _transferred: Self::Balance, )
source§impl<Left: MutateFreeze<AccountId>, Right: MutateFreeze<AccountId, Balance = Left::Balance, Id = Left::Id>, Criterion: Convert<AssetKind, Either<(), Right::AssetId>>, AssetKind: AssetId, AccountId> Mutate<AccountId> for UnionOf<Left, Right, Criterion, AssetKind, AccountId>
impl<Left: MutateFreeze<AccountId>, Right: MutateFreeze<AccountId, Balance = Left::Balance, Id = Left::Id>, Criterion: Convert<AssetKind, Either<(), Right::AssetId>>, AssetKind: AssetId, AccountId> Mutate<AccountId> for UnionOf<Left, Right, Criterion, AssetKind, AccountId>
source§fn set_freeze(
asset: Self::AssetId,
id: &Self::Id,
who: &AccountId,
amount: Self::Balance,
) -> DispatchResult
fn set_freeze( asset: Self::AssetId, id: &Self::Id, who: &AccountId, amount: Self::Balance, ) -> DispatchResult
Prevent actions which would reduce the balance of the account of
who
below the given
amount
and identify this restriction though the given id
. Unlike extend_freeze
, any
outstanding freeze in place for who
under the id
are dropped. Read moresource§fn extend_freeze(
asset: Self::AssetId,
id: &Self::Id,
who: &AccountId,
amount: Self::Balance,
) -> DispatchResult
fn extend_freeze( asset: Self::AssetId, id: &Self::Id, who: &AccountId, amount: Self::Balance, ) -> DispatchResult
Prevent the balance of the account of
who
from being reduced below the given amount
and
identify this restriction though the given id
. Unlike set_freeze
, this does not
counteract any pre-existing freezes in place for who
under the id
. Also unlike
set_freeze
, in the case that amount
is zero, this is no-op and never fails. Read moresource§fn thaw(asset: Self::AssetId, id: &Self::Id, who: &AccountId) -> DispatchResult
fn thaw(asset: Self::AssetId, id: &Self::Id, who: &AccountId) -> DispatchResult
Remove an existing lock.
source§fn set_frozen(
asset: Self::AssetId,
id: &Self::Id,
who: &AccountId,
amount: Self::Balance,
fortitude: Fortitude,
) -> DispatchResult
fn set_frozen( asset: Self::AssetId, id: &Self::Id, who: &AccountId, amount: Self::Balance, fortitude: Fortitude, ) -> DispatchResult
source§fn ensure_frozen(
asset: Self::AssetId,
id: &Self::Id,
who: &AccountId,
amount: Self::Balance,
fortitude: Fortitude,
) -> DispatchResult
fn ensure_frozen( asset: Self::AssetId, id: &Self::Id, who: &AccountId, amount: Self::Balance, fortitude: Fortitude, ) -> DispatchResult
Attempt to set the amount frozen under the given
id
to amount
, iff this would increase
the amount frozen under id
. Do nothing otherwise. Read moresource§fn decrease_frozen(
asset: Self::AssetId,
id: &Self::Id,
who: &AccountId,
amount: Self::Balance,
) -> DispatchResult
fn decrease_frozen( asset: Self::AssetId, id: &Self::Id, who: &AccountId, amount: Self::Balance, ) -> DispatchResult
Decrease the amount which is being frozen for a particular lock, failing in the case of
underflow.
source§fn increase_frozen(
asset: Self::AssetId,
id: &Self::Id,
who: &AccountId,
amount: Self::Balance,
) -> DispatchResult
fn increase_frozen( asset: Self::AssetId, id: &Self::Id, who: &AccountId, amount: Self::Balance, ) -> DispatchResult
Increase the amount which is being frozen for a particular lock, failing in the case that
too little balance is available for being frozen.
source§impl<Left: Inspect<AccountId>, Right: Inspect<AccountId> + Refund<AccountId>, Criterion: Convert<AssetKind, Either<(), <Right as Refund<AccountId>>::AssetId>>, AssetKind: AssetId, AccountId> Refund<AccountId> for UnionOf<Left, Right, Criterion, AssetKind, AccountId>
impl<Left: Inspect<AccountId>, Right: Inspect<AccountId> + Refund<AccountId>, Criterion: Convert<AssetKind, Either<(), <Right as Refund<AccountId>>::AssetId>>, AssetKind: AssetId, AccountId> Refund<AccountId> for UnionOf<Left, Right, Criterion, AssetKind, AccountId>
§type Balance = <Right as Refund<AccountId>>::Balance
type Balance = <Right as Refund<AccountId>>::Balance
Scalar type for representing deposit balance of an account.
source§fn deposit_held(
asset: AssetKind,
who: AccountId,
) -> Option<(AccountId, Self::Balance)>
fn deposit_held( asset: AssetKind, who: AccountId, ) -> Option<(AccountId, Self::Balance)>
Returns the amount of account deposit and depositor address, if any.
source§fn refund(asset: AssetKind, who: AccountId) -> DispatchResult
fn refund(asset: AssetKind, who: AccountId) -> DispatchResult
Return the deposit (if any) of a target asset account.
source§impl<Left: UnbalancedHold<AccountId>, Right: UnbalancedHold<AccountId, Balance = Left::Balance, Reason = Left::Reason>, Criterion: Convert<AssetKind, Either<(), Right::AssetId>>, AssetKind: AssetId, AccountId> Unbalanced<AccountId> for UnionOf<Left, Right, Criterion, AssetKind, AccountId>
impl<Left: UnbalancedHold<AccountId>, Right: UnbalancedHold<AccountId, Balance = Left::Balance, Reason = Left::Reason>, Criterion: Convert<AssetKind, Either<(), Right::AssetId>>, AssetKind: AssetId, AccountId> Unbalanced<AccountId> for UnionOf<Left, Right, Criterion, AssetKind, AccountId>
source§fn set_balance_on_hold(
asset: Self::AssetId,
reason: &Self::Reason,
who: &AccountId,
amount: Self::Balance,
) -> DispatchResult
fn set_balance_on_hold( asset: Self::AssetId, reason: &Self::Reason, who: &AccountId, amount: Self::Balance, ) -> DispatchResult
Forcefully set the balance on hold of
who
to amount
. This is independent of any other
balances on hold or the main (“free”) balance. Read moresource§fn decrease_balance_on_hold(
asset: Self::AssetId,
reason: &Self::Reason,
who: &AccountId,
amount: Self::Balance,
precision: Precision,
) -> Result<Self::Balance, DispatchError>
fn decrease_balance_on_hold( asset: Self::AssetId, reason: &Self::Reason, who: &AccountId, amount: Self::Balance, precision: Precision, ) -> Result<Self::Balance, DispatchError>
source§fn increase_balance_on_hold(
asset: Self::AssetId,
reason: &Self::Reason,
who: &AccountId,
amount: Self::Balance,
precision: Precision,
) -> Result<Self::Balance, DispatchError>
fn increase_balance_on_hold( asset: Self::AssetId, reason: &Self::Reason, who: &AccountId, amount: Self::Balance, precision: Precision, ) -> Result<Self::Balance, DispatchError>
source§impl<Left: Unbalanced<AccountId>, Right: Unbalanced<AccountId, Balance = Left::Balance>, Criterion: Convert<AssetKind, Either<(), Right::AssetId>>, AssetKind: AssetId, AccountId> Unbalanced<AccountId> for UnionOf<Left, Right, Criterion, AssetKind, AccountId>
impl<Left: Unbalanced<AccountId>, Right: Unbalanced<AccountId, Balance = Left::Balance>, Criterion: Convert<AssetKind, Either<(), Right::AssetId>>, AssetKind: AssetId, AccountId> Unbalanced<AccountId> for UnionOf<Left, Right, Criterion, AssetKind, AccountId>
source§fn handle_dust(dust: Dust<AccountId, Self>)where
Self: Sized,
fn handle_dust(dust: Dust<AccountId, Self>)where
Self: Sized,
Do something with the dust which has been destroyed from the system.
Dust
can be converted
into a Credit
with the Balanced
trait impl.source§fn write_balance(
asset: Self::AssetId,
who: &AccountId,
amount: Self::Balance,
) -> Result<Option<Self::Balance>, DispatchError>
fn write_balance( asset: Self::AssetId, who: &AccountId, amount: Self::Balance, ) -> Result<Option<Self::Balance>, DispatchError>
source§fn set_total_issuance(asset: Self::AssetId, amount: Self::Balance)
fn set_total_issuance(asset: Self::AssetId, amount: Self::Balance)
Set the total issuance to
amount
.source§fn decrease_balance(
asset: Self::AssetId,
who: &AccountId,
amount: Self::Balance,
precision: Precision,
preservation: Preservation,
force: Fortitude,
) -> Result<Self::Balance, DispatchError>
fn decrease_balance( asset: Self::AssetId, who: &AccountId, amount: Self::Balance, precision: Precision, preservation: Preservation, force: Fortitude, ) -> Result<Self::Balance, DispatchError>
source§fn increase_balance(
asset: Self::AssetId,
who: &AccountId,
amount: Self::Balance,
precision: Precision,
) -> Result<Self::Balance, DispatchError>
fn increase_balance( asset: Self::AssetId, who: &AccountId, amount: Self::Balance, precision: Precision, ) -> Result<Self::Balance, DispatchError>
source§fn handle_raw_dust(asset: Self::AssetId, amount: Self::Balance)
fn handle_raw_dust(asset: Self::AssetId, amount: Self::Balance)
Create some dust and handle it with
Self::handle_dust
. This is an unbalanced operation
and it must only be used when an account is modified in a raw fashion, outside of the entire
fungibles API. The amount
is capped at Self::minimum_balance() - 1
. Read moresource§fn deactivate(_asset: Self::AssetId, _: Self::Balance)
fn deactivate(_asset: Self::AssetId, _: Self::Balance)
Reduce the active issuance by some amount.
source§fn reactivate(_asset: Self::AssetId, _: Self::Balance)
fn reactivate(_asset: Self::AssetId, _: Self::Balance)
Increase the active issuance by some amount, up to the outstanding amount reduced.
Auto Trait Implementations§
impl<Left, Right, Criterion, AssetKind, AccountId> Freeze for UnionOf<Left, Right, Criterion, AssetKind, AccountId>
impl<Left, Right, Criterion, AssetKind, AccountId> RefUnwindSafe for UnionOf<Left, Right, Criterion, AssetKind, AccountId>where
Left: RefUnwindSafe,
Right: RefUnwindSafe,
Criterion: RefUnwindSafe,
AssetKind: RefUnwindSafe,
AccountId: RefUnwindSafe,
impl<Left, Right, Criterion, AssetKind, AccountId> Send for UnionOf<Left, Right, Criterion, AssetKind, AccountId>
impl<Left, Right, Criterion, AssetKind, AccountId> Sync for UnionOf<Left, Right, Criterion, AssetKind, AccountId>
impl<Left, Right, Criterion, AssetKind, AccountId> Unpin for UnionOf<Left, Right, Criterion, AssetKind, AccountId>
impl<Left, Right, Criterion, AssetKind, AccountId> UnwindSafe for UnionOf<Left, Right, Criterion, AssetKind, AccountId>where
Left: UnwindSafe,
Right: UnwindSafe,
Criterion: UnwindSafe,
AssetKind: UnwindSafe,
AccountId: UnwindSafe,
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<T> CheckedConversion for T
impl<T> CheckedConversion for T
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes
self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes
self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
Causes
self
to use its LowerExp
implementation when
Debug
-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
Causes
self
to use its LowerHex
implementation when
Debug
-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
Causes
self
to use its Octal
implementation when Debug
-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
Causes
self
to use its Pointer
implementation when
Debug
-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
Causes
self
to use its UpperExp
implementation when
Debug
-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
Causes
self
to use its UpperHex
implementation when
Debug
-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
Formats each item in a sequence. Read more
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more§impl<Src, Dest> IntoTuple<Dest> for Srcwhere
Dest: FromTuple<Src>,
impl<Src, Dest> IntoTuple<Dest> for Srcwhere
Dest: FromTuple<Src>,
fn into_tuple(self) -> Dest
source§impl<T, Outer> IsWrappedBy<Outer> for T
impl<T, Outer> IsWrappedBy<Outer> for T
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Pipes by value. This is generally the method you want to use. Read more
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
Borrows
self
and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
Mutably borrows
self
and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
Borrows
self
, then passes self.as_ref()
into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
Mutably borrows
self
, then passes self.as_mut()
into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
Borrows
self
, then passes self.deref()
into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<T> SaturatedConversion for T
impl<T> SaturatedConversion for T
source§fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
source§fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
Consume self to return an equivalent value of
T
. Read more§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Immutable access to the
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
Mutable access to the
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
Immutable access to the
AsRef<R>
view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
Mutable access to the
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Immutable access to the
Deref::Target
of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Mutable access to the
Deref::Target
of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
Calls
.tap()
only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
Calls
.tap_mut()
only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
Calls
.tap_borrow()
only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
Calls
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
Calls
.tap_ref()
only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
Calls
.tap_ref_mut()
only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
Calls
.tap_deref()
only in debug builds, and is erased in release
builds.§impl<T> TryConv for T
impl<T> TryConv for T
source§impl<T, U> TryIntoKey<U> for Twhere
U: TryFromKey<T>,
impl<T, U> TryIntoKey<U> for Twhere
U: TryFromKey<T>,
type Error = <U as TryFromKey<T>>::Error
fn try_into_key(self) -> Result<U, <U as TryFromKey<T>>::Error>
source§impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
source§fn unchecked_into(self) -> T
fn unchecked_into(self) -> T
The counterpart to
unchecked_from
.source§impl<T, S> UniqueSaturatedInto<T> for S
impl<T, S> UniqueSaturatedInto<T> for S
source§fn unique_saturated_into(self) -> T
fn unique_saturated_into(self) -> T
Consume self to return an equivalent value of
T
.