@galacticcouncil/descriptors
Version:
Hydration papi (polkadot-api) descriptors
978 lines (977 loc) • 196 kB
TypeScript
import { StorageDescriptor, PlainDescriptor, TxDescriptor, RuntimeDescriptor, Enum, ApisFromDef, QueryFromPalletsDef, TxFromPalletsDef, EventsFromPalletsDef, ErrorsFromPalletsDef, ConstFromPalletsDef, ViewFnsFromPalletsDef, SS58String, SizedHex, FixedSizeArray } from "polkadot-api";
import type { I5sesotjlssv2d, Iffmde3ekjedi9, I4mddgoa69c0a2, Ie49tr2lbm93o0, I95g6i7ilua7lq, Ieniouoqkq4icf, Phase, Ibgl04rn6nbfm6, I4q39t5hn830vp, I3qklfjubrljqh, Iag3f1hum3p4c8, I7svnfko10tq2e, I4s6jkha20aoh0, I2brm5b9jij1st, I78s05f59eoi8b, I35l6p7kq19mr0, If9iqq7i64mur8, I4v5g6i7bmt06o, I84bhscllvv07n, If2801grpltbp8, In7a38730s6qs, If15el53dd76v9, I9s0ave7t0vnrk, I4fo08joqmcqnm, Ia5cotcvi888ln, I21jsa919m88fd, Iegif7m3upfe1k, I9kt8c221c83ln, Ic76kfh5ebqkpl, Icscpmubum33bq, I21d2olof7eb60, Ibgm4rnf22lal1, Ie68np0vpihith, I9bnv6lu0crf1q, Iauhjqifrdklq7, Ie1uso9m8rt5cf, Ic357tcepuvo5c, I2rnoam876ruhj, Ic5b47dj4coa3r, Ib3qnc19gu633c, Ifira6u9hi7cu1, I72tqocvdoqfff, I2i27f3sfmvc05, I1nlrtd1epki2d, I3abtumcmempjs, Id81m8flopt8ha, I8hff7chabggkd, I49i39mtj1ivbs, Ifkr2kcak2vto1, I1ju6r8q0cs9jt, I4kpeq6j7cd5bu, I5na1ka76k6811, I59mhdb9omdqfa, I9vl5kpk0fpakt, I717jt61hu19b4, I7f7v8192r1lmq, Idjrs24gh0qv5l, I5r8t4iaend96p, Ie2db4l6126rkt, Ictkqqlhdjt761, Iftvbctbo05fu4, XcmVersionedXcm, Ic0c3req3mlc1l, XcmVersionedAssetId, I7ocn4njqde3v5, XcmVersionedLocation, Iek7ha36da9mf5, I7qpv90droestd, I6td1q1lcrslkk, I44njbaraj4c6j, I3o763oas6kue, I35p85j063s0il, I5vv5n03oo8gas } from "./common-types";
type AnonymousEnum<T extends {}> = T & {
__anonymous: true;
};
type MyTuple<T> = [T, ...T[]];
type SeparateUndefined<T> = undefined extends T ? undefined | Exclude<T, undefined> : T;
type Anonymize<T> = SeparateUndefined<T extends string | number | bigint | boolean | void | undefined | null | symbol | Uint8Array | Enum<any> ? T : T extends AnonymousEnum<infer V> ? Enum<V> : T extends MyTuple<any> ? {
[K in keyof T]: T[K];
} : T extends [] ? [] : T extends FixedSizeArray<infer L, infer T> ? number extends L ? Array<T> : FixedSizeArray<L, T> : {
[K in keyof T & string]: T[K];
}>;
type IStorage = {
System: {
/**
* The full account information for a particular account ID.
*/
Account: StorageDescriptor<[Key: SS58String], Anonymize<I5sesotjlssv2d>, false, never>;
/**
* Total extrinsics count for the current block.
*/
ExtrinsicCount: StorageDescriptor<[], number, true, never>;
/**
* Whether all inherents have been applied.
*/
InherentsApplied: StorageDescriptor<[], boolean, false, never>;
/**
* The current weight for the block.
*/
BlockWeight: StorageDescriptor<[], Anonymize<Iffmde3ekjedi9>, false, never>;
/**
* Total length (in bytes) for all extrinsics put together, for the current block.
*/
AllExtrinsicsLen: StorageDescriptor<[], number, true, never>;
/**
* Map of block numbers to block hashes.
*/
BlockHash: StorageDescriptor<[Key: number], SizedHex<32>, false, never>;
/**
* Extrinsics data for the current block (maps an extrinsic's index to its data).
*/
ExtrinsicData: StorageDescriptor<[Key: number], Uint8Array, false, never>;
/**
* The current block number being processed. Set by `execute_block`.
*/
Number: StorageDescriptor<[], number, false, never>;
/**
* Hash of the previous block.
*/
ParentHash: StorageDescriptor<[], SizedHex<32>, false, never>;
/**
* Digest of the current block, also part of the block header.
*/
Digest: StorageDescriptor<[], Anonymize<I4mddgoa69c0a2>, false, never>;
/**
* Events deposited for the current block.
*
* NOTE: The item is unbound and should therefore never be read on chain.
* It could otherwise inflate the PoV size of a block.
*
* Events have a large in-memory size. Box the events to not go out-of-memory
* just in case someone still reads them from within the runtime.
*/
Events: StorageDescriptor<[], Anonymize<Ie49tr2lbm93o0>, false, never>;
/**
* The number of events in the `Events<T>` list.
*/
EventCount: StorageDescriptor<[], number, false, never>;
/**
* Mapping between a topic (represented by T::Hash) and a vector of indexes
* of events in the `<Events<T>>` list.
*
* All topic vectors have deterministic storage locations depending on the topic. This
* allows light-clients to leverage the changes trie storage tracking mechanism and
* in case of changes fetch the list of events of interest.
*
* The value has the type `(BlockNumberFor<T>, EventIndex)` because if we used only just
* the `EventIndex` then in case if the topic has the same contents on the next block
* no notification will be triggered thus the event might be lost.
*/
EventTopics: StorageDescriptor<[Key: SizedHex<32>], Anonymize<I95g6i7ilua7lq>, false, never>;
/**
* Stores the `spec_version` and `spec_name` of when the last runtime upgrade happened.
*/
LastRuntimeUpgrade: StorageDescriptor<[], Anonymize<Ieniouoqkq4icf>, true, never>;
/**
* True if we have upgraded so that `type RefCount` is `u32`. False (default) if not.
*/
UpgradedToU32RefCount: StorageDescriptor<[], boolean, false, never>;
/**
* True if we have upgraded so that AccountInfo contains three types of `RefCount`. False
* (default) if not.
*/
UpgradedToTripleRefCount: StorageDescriptor<[], boolean, false, never>;
/**
* The execution phase of the block.
*/
ExecutionPhase: StorageDescriptor<[], Phase, true, never>;
/**
* `Some` if a code upgrade has been authorized.
*/
AuthorizedUpgrade: StorageDescriptor<[], Anonymize<Ibgl04rn6nbfm6>, true, never>;
/**
* The weight reclaimed for the extrinsic.
*
* This information is available until the end of the extrinsic execution.
* More precisely this information is removed in `note_applied_extrinsic`.
*
* Logic doing some post dispatch weight reduction must update this storage to avoid duplicate
* reduction.
*/
ExtrinsicWeightReclaimed: StorageDescriptor<[], Anonymize<I4q39t5hn830vp>, false, never>;
};
Assets: {
/**
* Details of an asset.
*/
Asset: StorageDescriptor<[Key: number], Anonymize<I3qklfjubrljqh>, true, never>;
/**
* The holdings of a specific account for a specific asset.
*/
Account: StorageDescriptor<Anonymize<I7svnfko10tq2e>, Anonymize<Iag3f1hum3p4c8>, true, never>;
/**
* Approved balance transfers. First balance is the amount approved for transfer. Second
* is the amount of `T::Currency` reserved for storing this.
* First key is the asset ID, second key is the owner and third key is the delegate.
*/
Approvals: StorageDescriptor<Anonymize<I2brm5b9jij1st>, Anonymize<I4s6jkha20aoh0>, true, never>;
/**
* Metadata of an asset.
*/
Metadata: StorageDescriptor<[Key: number], Anonymize<I78s05f59eoi8b>, false, never>;
/**
* Maps an asset to a list of its configured reserve information.
*/
Reserves: StorageDescriptor<[Key: number], Anonymize<I35l6p7kq19mr0>, false, never>;
/**
* The asset ID enforced for the next asset creation, if any present. Otherwise, this storage
* item has no effect.
*
* This can be useful for setting up constraints for IDs of the new assets. For example, by
* providing an initial [`NextAssetId`] and using the [`crate::AutoIncAssetId`] callback, an
* auto-increment model can be applied to all new asset IDs.
*
* The initial next asset ID can be set using the [`GenesisConfig`] or the
* [SetNextAssetId](`migration::next_asset_id::SetNextAssetId`) migration.
*/
NextAssetId: StorageDescriptor<[], number, true, never>;
};
ForeignAssets: {
/**
* Details of an asset.
*/
Asset: StorageDescriptor<[Key: Anonymize<If9iqq7i64mur8>], Anonymize<I3qklfjubrljqh>, true, never>;
/**
* The holdings of a specific account for a specific asset.
*/
Account: StorageDescriptor<Anonymize<I4v5g6i7bmt06o>, Anonymize<Iag3f1hum3p4c8>, true, never>;
/**
* Approved balance transfers. First balance is the amount approved for transfer. Second
* is the amount of `T::Currency` reserved for storing this.
* First key is the asset ID, second key is the owner and third key is the delegate.
*/
Approvals: StorageDescriptor<Anonymize<I84bhscllvv07n>, Anonymize<I4s6jkha20aoh0>, true, never>;
/**
* Metadata of an asset.
*/
Metadata: StorageDescriptor<[Key: Anonymize<If9iqq7i64mur8>], Anonymize<I78s05f59eoi8b>, false, never>;
/**
* Maps an asset to a list of its configured reserve information.
*/
Reserves: StorageDescriptor<[Key: Anonymize<If9iqq7i64mur8>], Anonymize<If2801grpltbp8>, false, never>;
/**
* The asset ID enforced for the next asset creation, if any present. Otherwise, this storage
* item has no effect.
*
* This can be useful for setting up constraints for IDs of the new assets. For example, by
* providing an initial [`NextAssetId`] and using the [`crate::AutoIncAssetId`] callback, an
* auto-increment model can be applied to all new asset IDs.
*
* The initial next asset ID can be set using the [`GenesisConfig`] or the
* [SetNextAssetId](`migration::next_asset_id::SetNextAssetId`) migration.
*/
NextAssetId: StorageDescriptor<[], Anonymize<If9iqq7i64mur8>, true, never>;
};
};
type ICalls = {
PolkadotXcm: {
/**
*/
send: TxDescriptor<Anonymize<Ia5cotcvi888ln>>;
/**
* Teleport some assets from the local chain to some destination chain.
*
* **This function is deprecated: Use `limited_teleport_assets` instead.**
*
* Fee payment on the destination side is made from the asset in the `assets` vector of
* index `fee_asset_item`. The weight limit for fees is not provided and thus is unlimited,
* with all fees taken as needed from the asset.
*
* - `origin`: Must be capable of withdrawing the `assets` and executing XCM.
* - `dest`: Destination context for the assets. Will typically be `[Parent,
* Parachain(..)]` to send from parachain to parachain, or `[Parachain(..)]` to send from
* relay to parachain.
* - `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will
* generally be an `AccountId32` value.
* - `assets`: The assets to be withdrawn. This should include the assets used to pay the
* fee on the `dest` chain.
* - `fee_asset_item`: The index into `assets` of the item which should be used to pay
* fees.
*/
teleport_assets: TxDescriptor<Anonymize<I21jsa919m88fd>>;
/**
* Transfer some assets from the local chain to the destination chain through their local,
* destination or remote reserve.
*
* `assets` must have same reserve location and may not be teleportable to `dest`.
* - `assets` have local reserve: transfer assets to sovereign account of destination
* chain and forward a notification XCM to `dest` to mint and deposit reserve-based
* assets to `beneficiary`.
* - `assets` have destination reserve: burn local assets and forward a notification to
* `dest` chain to withdraw the reserve assets from this chain's sovereign account and
* deposit them to `beneficiary`.
* - `assets` have remote reserve: burn local assets, forward XCM to reserve chain to move
* reserves from this chain's SA to `dest` chain's SA, and forward another XCM to `dest`
* to mint and deposit reserve-based assets to `beneficiary`.
*
* **This function is deprecated: Use `limited_reserve_transfer_assets` instead.**
*
* Fee payment on the destination side is made from the asset in the `assets` vector of
* index `fee_asset_item`. The weight limit for fees is not provided and thus is unlimited,
* with all fees taken as needed from the asset.
*
* - `origin`: Must be capable of withdrawing the `assets` and executing XCM.
* - `dest`: Destination context for the assets. Will typically be `[Parent,
* Parachain(..)]` to send from parachain to parachain, or `[Parachain(..)]` to send from
* relay to parachain.
* - `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will
* generally be an `AccountId32` value.
* - `assets`: The assets to be withdrawn. This should include the assets used to pay the
* fee on the `dest` (and possibly reserve) chains.
* - `fee_asset_item`: The index into `assets` of the item which should be used to pay
* fees.
*/
reserve_transfer_assets: TxDescriptor<Anonymize<I21jsa919m88fd>>;
/**
* Execute an XCM message from a local, signed, origin.
*
* An event is deposited indicating whether `msg` could be executed completely or only
* partially.
*
* No more than `max_weight` will be used in its attempted execution. If this is less than
* the maximum amount of weight that the message could take to be executed, then no
* execution attempt will be made.
*/
execute: TxDescriptor<Anonymize<Iegif7m3upfe1k>>;
/**
* Extoll that a particular destination can be communicated with through a particular
* version of XCM.
*
* - `origin`: Must be an origin specified by AdminOrigin.
* - `location`: The destination that is being described.
* - `xcm_version`: The latest version of XCM that `location` supports.
*/
force_xcm_version: TxDescriptor<Anonymize<I9kt8c221c83ln>>;
/**
* Set a safe XCM version (the version that XCM should be encoded with if the most recent
* version a destination can accept is unknown).
*
* - `origin`: Must be an origin specified by AdminOrigin.
* - `maybe_xcm_version`: The default XCM encoding version, or `None` to disable.
*/
force_default_xcm_version: TxDescriptor<Anonymize<Ic76kfh5ebqkpl>>;
/**
* Ask a location to notify us regarding their XCM version and any changes to it.
*
* - `origin`: Must be an origin specified by AdminOrigin.
* - `location`: The location to which we should subscribe for XCM version notifications.
*/
force_subscribe_version_notify: TxDescriptor<Anonymize<Icscpmubum33bq>>;
/**
* Require that a particular destination should no longer notify us regarding any XCM
* version changes.
*
* - `origin`: Must be an origin specified by AdminOrigin.
* - `location`: The location to which we are currently subscribed for XCM version
* notifications which we no longer desire.
*/
force_unsubscribe_version_notify: TxDescriptor<Anonymize<Icscpmubum33bq>>;
/**
* Transfer some assets from the local chain to the destination chain through their local,
* destination or remote reserve.
*
* `assets` must have same reserve location and may not be teleportable to `dest`.
* - `assets` have local reserve: transfer assets to sovereign account of destination
* chain and forward a notification XCM to `dest` to mint and deposit reserve-based
* assets to `beneficiary`.
* - `assets` have destination reserve: burn local assets and forward a notification to
* `dest` chain to withdraw the reserve assets from this chain's sovereign account and
* deposit them to `beneficiary`.
* - `assets` have remote reserve: burn local assets, forward XCM to reserve chain to move
* reserves from this chain's SA to `dest` chain's SA, and forward another XCM to `dest`
* to mint and deposit reserve-based assets to `beneficiary`.
*
* Fee payment on the destination side is made from the asset in the `assets` vector of
* index `fee_asset_item`, up to enough to pay for `weight_limit` of weight. If more weight
* is needed than `weight_limit`, then the operation will fail and the sent assets may be
* at risk.
*
* - `origin`: Must be capable of withdrawing the `assets` and executing XCM.
* - `dest`: Destination context for the assets. Will typically be `[Parent,
* Parachain(..)]` to send from parachain to parachain, or `[Parachain(..)]` to send from
* relay to parachain.
* - `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will
* generally be an `AccountId32` value.
* - `assets`: The assets to be withdrawn. This should include the assets used to pay the
* fee on the `dest` (and possibly reserve) chains.
* - `fee_asset_item`: The index into `assets` of the item which should be used to pay
* fees.
* - `weight_limit`: The remote-side weight limit, if any, for the XCM fee purchase.
*/
limited_reserve_transfer_assets: TxDescriptor<Anonymize<I21d2olof7eb60>>;
/**
* Teleport some assets from the local chain to some destination chain.
*
* Fee payment on the destination side is made from the asset in the `assets` vector of
* index `fee_asset_item`, up to enough to pay for `weight_limit` of weight. If more weight
* is needed than `weight_limit`, then the operation will fail and the sent assets may be
* at risk.
*
* - `origin`: Must be capable of withdrawing the `assets` and executing XCM.
* - `dest`: Destination context for the assets. Will typically be `[Parent,
* Parachain(..)]` to send from parachain to parachain, or `[Parachain(..)]` to send from
* relay to parachain.
* - `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will
* generally be an `AccountId32` value.
* - `assets`: The assets to be withdrawn. This should include the assets used to pay the
* fee on the `dest` chain.
* - `fee_asset_item`: The index into `assets` of the item which should be used to pay
* fees.
* - `weight_limit`: The remote-side weight limit, if any, for the XCM fee purchase.
*/
limited_teleport_assets: TxDescriptor<Anonymize<I21d2olof7eb60>>;
/**
* Set or unset the global suspension state of the XCM executor.
*
* - `origin`: Must be an origin specified by AdminOrigin.
* - `suspended`: `true` to suspend, `false` to resume.
*/
force_suspension: TxDescriptor<Anonymize<Ibgm4rnf22lal1>>;
/**
* Transfer some assets from the local chain to the destination chain through their local,
* destination or remote reserve, or through teleports.
*
* Fee payment on the destination side is made from the asset in the `assets` vector of
* index `fee_asset_item` (hence referred to as `fees`), up to enough to pay for
* `weight_limit` of weight. If more weight is needed than `weight_limit`, then the
* operation will fail and the sent assets may be at risk.
*
* `assets` (excluding `fees`) must have same reserve location or otherwise be teleportable
* to `dest`, no limitations imposed on `fees`.
* - for local reserve: transfer assets to sovereign account of destination chain and
* forward a notification XCM to `dest` to mint and deposit reserve-based assets to
* `beneficiary`.
* - for destination reserve: burn local assets and forward a notification to `dest` chain
* to withdraw the reserve assets from this chain's sovereign account and deposit them
* to `beneficiary`.
* - for remote reserve: burn local assets, forward XCM to reserve chain to move reserves
* from this chain's SA to `dest` chain's SA, and forward another XCM to `dest` to mint
* and deposit reserve-based assets to `beneficiary`.
* - for teleports: burn local assets and forward XCM to `dest` chain to mint/teleport
* assets and deposit them to `beneficiary`.
*
* - `origin`: Must be capable of withdrawing the `assets` and executing XCM.
* - `dest`: Destination context for the assets. Will typically be `X2(Parent,
* Parachain(..))` to send from parachain to parachain, or `X1(Parachain(..))` to send
* from relay to parachain.
* - `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will
* generally be an `AccountId32` value.
* - `assets`: The assets to be withdrawn. This should include the assets used to pay the
* fee on the `dest` (and possibly reserve) chains.
* - `fee_asset_item`: The index into `assets` of the item which should be used to pay
* fees.
* - `weight_limit`: The remote-side weight limit, if any, for the XCM fee purchase.
*/
transfer_assets: TxDescriptor<Anonymize<I21d2olof7eb60>>;
/**
* Claims assets trapped on this pallet because of leftover assets during XCM execution.
*
* - `origin`: Anyone can call this extrinsic.
* - `assets`: The exact assets that were trapped. Use the version to specify what version
* was the latest when they were trapped.
* - `beneficiary`: The location/account where the claimed assets will be deposited.
*/
claim_assets: TxDescriptor<Anonymize<Ie68np0vpihith>>;
/**
* Transfer assets from the local chain to the destination chain using explicit transfer
* types for assets and fees.
*
* `assets` must have same reserve location or may be teleportable to `dest`. Caller must
* provide the `assets_transfer_type` to be used for `assets`:
* - `TransferType::LocalReserve`: transfer assets to sovereign account of destination
* chain and forward a notification XCM to `dest` to mint and deposit reserve-based
* assets to `beneficiary`.
* - `TransferType::DestinationReserve`: burn local assets and forward a notification to
* `dest` chain to withdraw the reserve assets from this chain's sovereign account and
* deposit them to `beneficiary`.
* - `TransferType::RemoteReserve(reserve)`: burn local assets, forward XCM to `reserve`
* chain to move reserves from this chain's SA to `dest` chain's SA, and forward another
* XCM to `dest` to mint and deposit reserve-based assets to `beneficiary`. Typically
* the remote `reserve` is Asset Hub.
* - `TransferType::Teleport`: burn local assets and forward XCM to `dest` chain to
* mint/teleport assets and deposit them to `beneficiary`.
*
* On the destination chain, as well as any intermediary hops, `BuyExecution` is used to
* buy execution using transferred `assets` identified by `remote_fees_id`.
* Make sure enough of the specified `remote_fees_id` asset is included in the given list
* of `assets`. `remote_fees_id` should be enough to pay for `weight_limit`. If more weight
* is needed than `weight_limit`, then the operation will fail and the sent assets may be
* at risk.
*
* `remote_fees_id` may use different transfer type than rest of `assets` and can be
* specified through `fees_transfer_type`.
*
* The caller needs to specify what should happen to the transferred assets once they reach
* the `dest` chain. This is done through the `custom_xcm_on_dest` parameter, which
* contains the instructions to execute on `dest` as a final step.
* This is usually as simple as:
* `Xcm(vec![DepositAsset { assets: Wild(AllCounted(assets.len())), beneficiary }])`,
* but could be something more exotic like sending the `assets` even further.
*
* - `origin`: Must be capable of withdrawing the `assets` and executing XCM.
* - `dest`: Destination context for the assets. Will typically be `[Parent,
* Parachain(..)]` to send from parachain to parachain, or `[Parachain(..)]` to send from
* relay to parachain, or `(parents: 2, (GlobalConsensus(..), ..))` to send from
* parachain across a bridge to another ecosystem destination.
* - `assets`: The assets to be withdrawn. This should include the assets used to pay the
* fee on the `dest` (and possibly reserve) chains.
* - `assets_transfer_type`: The XCM `TransferType` used to transfer the `assets`.
* - `remote_fees_id`: One of the included `assets` to be used to pay fees.
* - `fees_transfer_type`: The XCM `TransferType` used to transfer the `fees` assets.
* - `custom_xcm_on_dest`: The XCM to be executed on `dest` chain as the last step of the
* transfer, which also determines what happens to the assets on the destination chain.
* - `weight_limit`: The remote-side weight limit, if any, for the XCM fee purchase.
*/
transfer_assets_using_type_and_then: TxDescriptor<Anonymize<I9bnv6lu0crf1q>>;
/**
* Authorize another `aliaser` location to alias into the local `origin` making this call.
* The `aliaser` is only authorized until the provided `expiry` block number.
* The call can also be used for a previously authorized alias in order to update its
* `expiry` block number.
*
* Usually useful to allow your local account to be aliased into from a remote location
* also under your control (like your account on another chain).
*
* WARNING: make sure the caller `origin` (you) trusts the `aliaser` location to act in
* their/your name. Once authorized using this call, the `aliaser` can freely impersonate
* `origin` in XCM programs executed on the local chain.
*/
add_authorized_alias: TxDescriptor<Anonymize<Iauhjqifrdklq7>>;
/**
* Remove a previously authorized `aliaser` from the list of locations that can alias into
* the local `origin` making this call.
*/
remove_authorized_alias: TxDescriptor<Anonymize<Ie1uso9m8rt5cf>>;
/**
* Remove all previously authorized `aliaser`s that can alias into the local `origin`
* making this call.
*/
remove_all_authorized_aliases: TxDescriptor<undefined>;
};
Assets: {
/**
* Issue a new class of fungible assets from a public origin.
*
* This new asset class has no assets initially and its owner is the origin.
*
* The origin must conform to the configured `CreateOrigin` and have sufficient funds free.
*
* Funds of sender are reserved by `AssetDeposit`.
*
* Parameters:
* - `id`: The identifier of the new asset. This must not be currently in use to identify
* an existing asset. If [`NextAssetId`] is set, then this must be equal to it.
* - `admin`: The admin of this class of assets. The admin is the initial address of each
* member of the asset class's admin team.
* - `min_balance`: The minimum balance of this new asset that any single account must
* have. If an account's balance is reduced below this, then it collapses to zero.
*
* Emits `Created` event when successful.
*
* Weight: `O(1)`
*/
create: TxDescriptor<Anonymize<Ic357tcepuvo5c>>;
/**
* Issue a new class of fungible assets from a privileged origin.
*
* This new asset class has no assets initially.
*
* The origin must conform to `ForceOrigin`.
*
* Unlike `create`, no funds are reserved.
*
* - `id`: The identifier of the new asset. This must not be currently in use to identify
* an existing asset. If [`NextAssetId`] is set, then this must be equal to it.
* - `owner`: The owner of this class of assets. The owner has full superuser permissions
* over this asset, but may later change and configure the permissions using
* `transfer_ownership` and `set_team`.
* - `min_balance`: The minimum balance of this new asset that any single account must
* have. If an account's balance is reduced below this, then it collapses to zero.
*
* Emits `ForceCreated` event when successful.
*
* Weight: `O(1)`
*/
force_create: TxDescriptor<Anonymize<I2rnoam876ruhj>>;
/**
* Start the process of destroying a fungible asset class.
*
* `start_destroy` is the first in a series of extrinsics that should be called, to allow
* destruction of an asset class.
*
* The origin must conform to `ForceOrigin` or must be `Signed` by the asset's `owner`.
*
* - `id`: The identifier of the asset to be destroyed. This must identify an existing
* asset.
*
* It will fail with either [`Error::ContainsHolds`] or [`Error::ContainsFreezes`] if
* an account contains holds or freezes in place.
*/
start_destroy: TxDescriptor<Anonymize<Ic5b47dj4coa3r>>;
/**
* Destroy all accounts associated with a given asset.
*
* `destroy_accounts` should only be called after `start_destroy` has been called, and the
* asset is in a `Destroying` state.
*
* Due to weight restrictions, this function may need to be called multiple times to fully
* destroy all accounts. It will destroy `RemoveItemsLimit` accounts at a time.
*
* - `id`: The identifier of the asset to be destroyed. This must identify an existing
* asset.
*
* Each call emits the `Event::DestroyedAccounts` event.
*/
destroy_accounts: TxDescriptor<Anonymize<Ic5b47dj4coa3r>>;
/**
* Destroy all approvals associated with a given asset up to the max (T::RemoveItemsLimit).
*
* `destroy_approvals` should only be called after `start_destroy` has been called, and the
* asset is in a `Destroying` state.
*
* Due to weight restrictions, this function may need to be called multiple times to fully
* destroy all approvals. It will destroy `RemoveItemsLimit` approvals at a time.
*
* - `id`: The identifier of the asset to be destroyed. This must identify an existing
* asset.
*
* Each call emits the `Event::DestroyedApprovals` event.
*/
destroy_approvals: TxDescriptor<Anonymize<Ic5b47dj4coa3r>>;
/**
* Complete destroying asset and unreserve currency.
*
* `finish_destroy` should only be called after `start_destroy` has been called, and the
* asset is in a `Destroying` state. All accounts or approvals should be destroyed before
* hand.
*
* - `id`: The identifier of the asset to be destroyed. This must identify an existing
* asset.
*
* Each successful call emits the `Event::Destroyed` event.
*/
finish_destroy: TxDescriptor<Anonymize<Ic5b47dj4coa3r>>;
/**
* Mint assets of a particular class.
*
* The origin must be Signed and the sender must be the Issuer of the asset `id`.
*
* - `id`: The identifier of the asset to have some amount minted.
* - `beneficiary`: The account to be credited with the minted assets.
* - `amount`: The amount of the asset to be minted.
*
* Emits `Issued` event when successful.
*
* Weight: `O(1)`
* Modes: Pre-existing balance of `beneficiary`; Account pre-existence of `beneficiary`.
*/
mint: TxDescriptor<Anonymize<Ib3qnc19gu633c>>;
/**
* Reduce the balance of `who` by as much as possible up to `amount` assets of `id`.
*
* Origin must be Signed and the sender should be the Manager of the asset `id`.
*
* Bails with `NoAccount` if the `who` is already dead.
*
* - `id`: The identifier of the asset to have some amount burned.
* - `who`: The account to be debited from.
* - `amount`: The maximum amount by which `who`'s balance should be reduced.
*
* Emits `Burned` with the actual amount burned. If this takes the balance to below the
* minimum for the asset, then the amount burned is increased to take it to zero.
*
* Weight: `O(1)`
* Modes: Post-existence of `who`; Pre & post Zombie-status of `who`.
*/
burn: TxDescriptor<Anonymize<Ifira6u9hi7cu1>>;
/**
* Move some assets from the sender account to another.
*
* Origin must be Signed.
*
* - `id`: The identifier of the asset to have some amount transferred.
* - `target`: The account to be credited.
* - `amount`: The amount by which the sender's balance of assets should be reduced and
* `target`'s balance increased. The amount actually transferred may be slightly greater in
* the case that the transfer would otherwise take the sender balance above zero but below
* the minimum balance. Must be greater than zero.
*
* Emits `Transferred` with the actual amount transferred. If this takes the source balance
* to below the minimum for the asset, then the amount transferred is increased to take it
* to zero.
*
* Weight: `O(1)`
* Modes: Pre-existence of `target`; Post-existence of sender; Account pre-existence of
* `target`.
*/
transfer: TxDescriptor<Anonymize<I72tqocvdoqfff>>;
/**
* Move some assets from the sender account to another, keeping the sender account alive.
*
* Origin must be Signed.
*
* - `id`: The identifier of the asset to have some amount transferred.
* - `target`: The account to be credited.
* - `amount`: The amount by which the sender's balance of assets should be reduced and
* `target`'s balance increased. The amount actually transferred may be slightly greater in
* the case that the transfer would otherwise take the sender balance above zero but below
* the minimum balance. Must be greater than zero.
*
* Emits `Transferred` with the actual amount transferred. If this takes the source balance
* to below the minimum for the asset, then the amount transferred is increased to take it
* to zero.
*
* Weight: `O(1)`
* Modes: Pre-existence of `target`; Post-existence of sender; Account pre-existence of
* `target`.
*/
transfer_keep_alive: TxDescriptor<Anonymize<I72tqocvdoqfff>>;
/**
* Move some assets from one account to another.
*
* Origin must be Signed and the sender should be the Admin of the asset `id`.
*
* - `id`: The identifier of the asset to have some amount transferred.
* - `source`: The account to be debited.
* - `dest`: The account to be credited.
* - `amount`: The amount by which the `source`'s balance of assets should be reduced and
* `dest`'s balance increased. The amount actually transferred may be slightly greater in
* the case that the transfer would otherwise take the `source` balance above zero but
* below the minimum balance. Must be greater than zero.
*
* Emits `Transferred` with the actual amount transferred. If this takes the source balance
* to below the minimum for the asset, then the amount transferred is increased to take it
* to zero.
*
* Weight: `O(1)`
* Modes: Pre-existence of `dest`; Post-existence of `source`; Account pre-existence of
* `dest`.
*/
force_transfer: TxDescriptor<Anonymize<I2i27f3sfmvc05>>;
/**
* Disallow further unprivileged transfers of an asset `id` from an account `who`. `who`
* must already exist as an entry in `Account`s of the asset. If you want to freeze an
* account that does not have an entry, use `touch_other` first.
*
* Origin must be Signed and the sender should be the Freezer of the asset `id`.
*
* - `id`: The identifier of the asset to be frozen.
* - `who`: The account to be frozen.
*
* Emits `Frozen`.
*
* Weight: `O(1)`
*/
freeze: TxDescriptor<Anonymize<I1nlrtd1epki2d>>;
/**
* Allow unprivileged transfers to and from an account again.
*
* Origin must be Signed and the sender should be the Admin of the asset `id`.
*
* - `id`: The identifier of the asset to be frozen.
* - `who`: The account to be unfrozen.
*
* Emits `Thawed`.
*
* Weight: `O(1)`
*/
thaw: TxDescriptor<Anonymize<I1nlrtd1epki2d>>;
/**
* Disallow further unprivileged transfers for the asset class.
*
* Origin must be Signed and the sender should be the Freezer of the asset `id`.
*
* - `id`: The identifier of the asset to be frozen.
*
* Emits `Frozen`.
*
* Weight: `O(1)`
*/
freeze_asset: TxDescriptor<Anonymize<Ic5b47dj4coa3r>>;
/**
* Allow unprivileged transfers for the asset again.
*
* Origin must be Signed and the sender should be the Admin of the asset `id`.
*
* - `id`: The identifier of the asset to be thawed.
*
* Emits `Thawed`.
*
* Weight: `O(1)`
*/
thaw_asset: TxDescriptor<Anonymize<Ic5b47dj4coa3r>>;
/**
* Change the Owner of an asset.
*
* Origin must be Signed and the sender should be the Owner of the asset `id`.
*
* - `id`: The identifier of the asset.
* - `owner`: The new Owner of this asset.
*
* Emits `OwnerChanged`.
*
* Weight: `O(1)`
*/
transfer_ownership: TxDescriptor<Anonymize<I3abtumcmempjs>>;
/**
* Change the Issuer, Admin and Freezer of an asset.
*
* Origin must be Signed and the sender should be the Owner of the asset `id`.
*
* - `id`: The identifier of the asset to be frozen.
* - `issuer`: The new Issuer of this asset.
* - `admin`: The new Admin of this asset.
* - `freezer`: The new Freezer of this asset.
*
* Emits `TeamChanged`.
*
* Weight: `O(1)`
*/
set_team: TxDescriptor<Anonymize<Id81m8flopt8ha>>;
/**
* Set the metadata for an asset.
*
* Origin must be Signed and the sender should be the Owner of the asset `id`.
*
* Funds of sender are reserved according to the formula:
* `MetadataDepositBase + MetadataDepositPerByte * (name.len + symbol.len)` taking into
* account any already reserved funds.
*
* - `id`: The identifier of the asset to update.
* - `name`: The user friendly name of this asset. Limited in length by `StringLimit`.
* - `symbol`: The exchange symbol for this asset. Limited in length by `StringLimit`.
* - `decimals`: The number of decimals this asset uses to represent one unit.
*
* Emits `MetadataSet`.
*
* Weight: `O(1)`
*/
set_metadata: TxDescriptor<Anonymize<I8hff7chabggkd>>;
/**
* Clear the metadata for an asset.
*
* Origin must be Signed and the sender should be the Owner of the asset `id`.
*
* Any deposit is freed for the asset owner.
*
* - `id`: The identifier of the asset to clear.
*
* Emits `MetadataCleared`.
*
* Weight: `O(1)`
*/
clear_metadata: TxDescriptor<Anonymize<Ic5b47dj4coa3r>>;
/**
* Force the metadata for an asset to some value.
*
* Origin must be ForceOrigin.
*
* Any deposit is left alone.
*
* - `id`: The identifier of the asset to update.
* - `name`: The user friendly name of this asset. Limited in length by `StringLimit`.
* - `symbol`: The exchange symbol for this asset. Limited in length by `StringLimit`.
* - `decimals`: The number of decimals this asset uses to represent one unit.
*
* Emits `MetadataSet`.
*
* Weight: `O(N + S)` where N and S are the length of the name and symbol respectively.
*/
force_set_metadata: TxDescriptor<Anonymize<I49i39mtj1ivbs>>;
/**
* Clear the metadata for an asset.
*
* Origin must be ForceOrigin.
*
* Any deposit is returned.
*
* - `id`: The identifier of the asset to clear.
*
* Emits `MetadataCleared`.
*
* Weight: `O(1)`
*/
force_clear_metadata: TxDescriptor<Anonymize<Ic5b47dj4coa3r>>;
/**
* Alter the attributes of a given asset.
*
* Origin must be `ForceOrigin`.
*
* - `id`: The identifier of the asset.
* - `owner`: The new Owner of this asset.
* - `issuer`: The new Issuer of this asset.
* - `admin`: The new Admin of this asset.
* - `freezer`: The new Freezer of this asset.
* - `min_balance`: The minimum balance of this new asset that any single account must
* have. If an account's balance is reduced below this, then it collapses to zero.
* - `is_sufficient`: Whether a non-zero balance of this asset is deposit of sufficient
* value to account for the state bloat associated with its balance storage. If set to
* `true`, then non-zero balances may be stored without a `consumer` reference (and thus
* an ED in the Balances pallet or whatever else is used to control user-account state
* growth).
* - `is_frozen`: Whether this asset class is frozen except for permissioned/admin
* instructions.
*
* Emits `AssetStatusChanged` with the identity of the asset.
*
* Weight: `O(1)`
*/
force_asset_status: TxDescriptor<Anonymize<Ifkr2kcak2vto1>>;
/**
* Approve an amount of asset for transfer by a delegated third-party account.
*
* Origin must be Signed.
*
* Ensures that `ApprovalDeposit` worth of `Currency` is reserved from signing account
* for the purpose of holding the approval. If some non-zero amount of assets is already
* approved from signing account to `delegate`, then it is topped up or unreserved to
* meet the right value.
*
* NOTE: The signing account does not need to own `amount` of assets at the point of
* making this call.
*
* - `id`: The identifier of the asset.
* - `delegate`: The account to delegate permission to transfer asset.
* - `amount`: The amount of asset that may be transferred by `delegate`. If there is
* already an approval in place, then this acts additively.
*
* Emits `ApprovedTransfer` on success.
*
* Weight: `O(1)`
*/
approve_transfer: TxDescriptor<Anonymize<I1ju6r8q0cs9jt>>;
/**
* Cancel all of some asset approved for delegated transfer by a third-party account.
*
* Origin must be Signed and there must be an approval in place between signer and
* `delegate`.
*
* Unreserves any deposit previously reserved by `approve_transfer` for the approval.
*
* - `id`: The identifier of the asset.
* - `delegate`: The account delegated permission to transfer asset.
*
* Emits `ApprovalCancelled` on success.
*
* Weight: `O(1)`
*/
cancel_approval: TxDescriptor<Anonymize<I4kpeq6j7cd5bu>>;
/**
* Cancel all of some asset approved for delegated transfer by a third-party account.
*
* Origin must be either ForceOrigin or Signed origin with the signer being the Admin
* account of the asset `id`.
*
* Unreserves any deposit previously reserved by `approve_transfer` for the approval.
*
* - `id`: The identifier of the asset.
* - `delegate`: The account delegated permission to transfer asset.
*
* Emits `ApprovalCancelled` on success.
*
* Weight: `O(1)`
*/
force_cancel_approval: TxDescriptor<Anonymize<I5na1ka76k6811>>;
/**
* Transfer some asset balance from a previously delegated account to some third-party
* account.
*
* Origin must be Signed and there must be an approval in place by the `owner` to the
* signer.
*
* If the entire amount approved for transfer is transferred, then any deposit previously
* reserved by `approve_transfer` is unreserved.
*
* - `id`: The identifier of the asset.
* - `owner`: The account which previously approved for a transfer of at least `amount` and
* from which the asset balance will be withdrawn.
* - `destination`: The account to which the asset balance of `amount` will be transferred.
* - `amount`: The amount of assets to transfer.
*
* Emits `TransferredApproved` on success.
*
* Weight: `O(1)`
*/
transfer_approved: TxDescriptor<Anonymize<I59mhdb9omdqfa>>;
/**
* Create an asset account for non-provider assets.
*
* A deposit will be taken from the signer account.
*
* - `origin`: Must be Signed; the signer account must have sufficient funds for a deposit
* to be taken.
* - `id`: The identifier of the asset for the account to be created.
*
* Emits `Touched` event when successful.
*/
touch: TxDescriptor<Anonymize<Ic5b47dj4coa3r>>;
/**
* Return the deposit (if any) of an asset account or a consumer reference (if any) of an
* account.
*
* The origin must be Signed.
*
* - `id`: The identifier of the asset for which the caller would like the deposit
* refunded.
* - `allow_burn`: If `true` then assets may be destroyed in order to complete the refund.
*
* It will fail with either [`Error::ContainsHolds`] or [`Error::ContainsFreezes`] if
* the asset account contains holds or freezes in place.
*
* Emits `Refunded` event when successful.
*/
refund: TxDescriptor<Anonymize<I9vl5kpk0fpakt>>;
/**
* Sets the minimum balance of an asset.
*
* Only works if there aren't any accounts that are holding the asset or if
* the new value of `min_balance` is less than the old one.
*
* Origin must be Signed and the sender has to be the Owner of the
* asset `id`.
*
* - `id`: The identifier of the asset.
* - `min_balance`: The new value of `min_balance`.
*
* Emits `AssetMinBalanceChanged` event when successful.
*/
set_min_balance: TxDescriptor<Anonymize<I717jt61hu19b4>>;
/**
* Create an asset account for `who`.
*
* A deposit will be taken from the signer account.
*
* - `origin`: Must be Signed; the signer account must have sufficient funds for a deposit
* to be taken.
* - `id`: The identifier of the asset for the account to be created, the asset status must
* be live.
* - `who`: The account to be created.
*
* Emits `Touched` event when successful.
*/
touch_other: TxDescriptor<Anonymize<I1nlrtd1epki2d>>;
/**
* Return the deposit (if any) of a target asset account. Useful if you are the depositor.
*
* The origin must be Signed and