difftreelog
feat add ApproveForAll to Eth and Sub
in: master
39 files changed
client/rpc/src/lib.rsdiffbeforeafterboth--- a/client/rpc/src/lib.rs
+++ b/client/rpc/src/lib.rs
@@ -246,6 +246,16 @@
token_id: TokenId,
at: Option<BlockHash>,
) -> Result<Option<String>>;
+
+ /// Get whether an operator is approved by a given owner.
+ #[method(name = "unique_isApprovedForAll")]
+ fn is_approved_for_all(
+ &self,
+ collection: CollectionId,
+ owner: CrossAccountId,
+ operator: CrossAccountId,
+ at: Option<BlockHash>,
+ ) -> Result<bool>;
}
mod app_promotion_unique_rpc {
@@ -569,6 +579,7 @@
pass_method!(effective_collection_limits(collection_id: CollectionId) -> Option<CollectionLimits>, unique_api);
pass_method!(total_pieces(collection_id: CollectionId, token_id: TokenId) -> Option<String> => |o| o.map(|number| number.to_string()) , unique_api);
pass_method!(token_owners(collection: CollectionId, token: TokenId) -> Vec<CrossAccountId>, unique_api);
+ pass_method!(is_approved_for_all(collection: CollectionId, owner: CrossAccountId, operator: CrossAccountId) -> bool, unique_api);
}
impl<C, Block, BlockNumber, CrossAccountId, AccountId>
pallets/common/src/lib.rsdiffbeforeafterboth--- a/pallets/common/src/lib.rs
+++ b/pallets/common/src/lib.rs
@@ -472,6 +472,18 @@
u128,
),
+ /// Amount pieces of token owned by `sender` was approved for `spender`.
+ ApprovedForAll(
+ /// Id of collection to which item is belong.
+ CollectionId,
+ /// Owner of a wallet.
+ T::CrossAccountId,
+ /// Id for which operator status was granted or rewoked.
+ T::CrossAccountId,
+ /// Is operator status was granted or rewoked.
+ bool,
+ ),
+
/// The colletion property has been added or edited.
CollectionPropertySet(
/// Id of collection to which property has been set.
@@ -1521,6 +1533,9 @@
/// The price of retrieving token owner
fn token_owner() -> Weight;
+
+ /// The price of setting approval for all
+ fn set_approval_for_all() -> Weight;
}
/// Weight info extension trait for refungible pallet.
@@ -1828,6 +1843,20 @@
/// Get extension for RFT collection.
fn refungible_extensions(&self) -> Option<&dyn RefungibleExtensions<T>>;
+
+ /// An operator is allowed to transfer all tokens of the sender on their behalf.
+ /// * `owner` - Token owner
+ /// * `operator` - Operator
+ /// * `approve` - Is operator enabled or disabled
+ fn set_approval_for_all(
+ &self,
+ owner: T::CrossAccountId,
+ operator: T::CrossAccountId,
+ approve: bool,
+ ) -> DispatchResultWithPostInfo;
+
+ /// Tells whether an operator is approved by a given owner.
+ fn is_approved_for_all(&self, owner: T::CrossAccountId, operator: T::CrossAccountId) -> bool;
}
/// Extension for RFT collection.
pallets/fungible/src/common.rsdiffbeforeafterboth--- a/pallets/fungible/src/common.rs
+++ b/pallets/fungible/src/common.rs
@@ -107,6 +107,10 @@
fn token_owner() -> Weight {
Weight::zero()
}
+
+ fn set_approval_for_all() -> Weight {
+ Weight::zero()
+ }
}
/// Implementation of `CommonCollectionOperations` for `FungibleHandle`. It wraps FungibleHandle Pallete
@@ -424,4 +428,17 @@
}
<TotalSupply<T>>::try_get(self.id).ok()
}
+
+ fn set_approval_for_all(
+ &self,
+ _owner: T::CrossAccountId,
+ _operator: T::CrossAccountId,
+ _approve: bool,
+ ) -> DispatchResultWithPostInfo {
+ fail!(<Error<T>>::SettingApprovalForAllNotAllowed)
+ }
+
+ fn is_approved_for_all(&self, _owner: T::CrossAccountId, _operator: T::CrossAccountId) -> bool {
+ false
+ }
}
pallets/fungible/src/lib.rsdiffbeforeafterboth--- a/pallets/fungible/src/lib.rs
+++ b/pallets/fungible/src/lib.rs
@@ -127,6 +127,8 @@
FungibleDisallowsNesting,
/// Setting item properties is not allowed.
SettingPropertiesNotAllowed,
+ /// Setting approval for all is not allowed.
+ SettingApprovalForAllNotAllowed,
}
#[pallet::config]
pallets/nonfungible/src/benchmarking.rsdiffbeforeafterboth--- a/pallets/nonfungible/src/benchmarking.rs
+++ b/pallets/nonfungible/src/benchmarking.rs
@@ -222,4 +222,18 @@
let item = create_max_item(&collection, &owner, owner.clone())?;
}: {collection.token_owner(item)}
+
+ set_approval_for_all {
+ bench_init!{
+ owner: sub; collection: collection(owner);
+ operator: cross_from_sub(owner); owner: cross_sub;
+ };
+ }: {<Pallet<T>>::set_approval_for_all(&collection, &owner, &operator, true)}
+
+ is_approved_for_all {
+ bench_init!{
+ owner: sub; collection: collection(owner);
+ operator: cross_from_sub(owner); owner: cross_sub;
+ };
+ }: {<Pallet<T>>::is_approved_for_all(&collection, &owner, &operator)}
}
pallets/nonfungible/src/common.rsdiffbeforeafterboth--- a/pallets/nonfungible/src/common.rs
+++ b/pallets/nonfungible/src/common.rs
@@ -122,6 +122,10 @@
fn token_owner() -> Weight {
<SelfWeightOf<T>>::token_owner()
}
+
+ fn set_approval_for_all() -> Weight {
+ <SelfWeightOf<T>>::set_approval_for_all()
+ }
}
fn map_create_data<T: Config>(
@@ -512,4 +516,20 @@
None
}
}
+
+ fn set_approval_for_all(
+ &self,
+ owner: T::CrossAccountId,
+ operator: T::CrossAccountId,
+ approve: bool,
+ ) -> DispatchResultWithPostInfo {
+ with_weight(
+ <Pallet<T>>::set_approval_for_all(self, &owner, &operator, approve),
+ <CommonWeights<T>>::set_approval_for_all(),
+ )
+ }
+
+ fn is_approved_for_all(&self, owner: T::CrossAccountId, operator: T::CrossAccountId) -> bool {
+ <Pallet<T>>::is_approved_for_all(self, &owner, &operator)
+ }
}
pallets/nonfungible/src/erc.rsdiffbeforeafterboth--- a/pallets/nonfungible/src/erc.rs
+++ b/pallets/nonfungible/src/erc.rs
@@ -469,15 +469,23 @@
Ok(())
}
- /// @dev Not implemented
+ /// @notice Sets or unsets the approval of a given operator.
+ /// An operator is allowed to transfer all tokens of the sender on their behalf.
+ /// @param operator Operator
+ /// @param approved Is operator enabled or disabled
+ #[weight(<SelfWeightOf<T>>::set_approval_for_all())]
fn set_approval_for_all(
&mut self,
- _caller: caller,
- _operator: address,
- _approved: bool,
+ caller: caller,
+ operator: address,
+ approved: bool,
) -> Result<void> {
- // TODO: Not implemetable
- Err("not implemented".into())
+ let caller = T::CrossAccountId::from_eth(caller);
+ let operator = T::CrossAccountId::from_eth(operator);
+
+ <Pallet<T>>::set_approval_for_all(self, &caller, &operator, approved)
+ .map_err(dispatch_to_evm::<T>)?;
+ Ok(())
}
/// @dev Not implemented
@@ -486,10 +494,13 @@
Err("not implemented".into())
}
- /// @dev Not implemented
- fn is_approved_for_all(&self, _owner: address, _operator: address) -> Result<address> {
- // TODO: Not implemetable
- Err("not implemented".into())
+ /// @notice Tells whether an operator is approved by a given owner.
+ #[weight(<SelfWeightOf<T>>::is_approved_for_all())]
+ fn is_approved_for_all(&self, owner: address, operator: address) -> Result<bool> {
+ let owner = T::CrossAccountId::from_eth(owner);
+ let operator = T::CrossAccountId::from_eth(operator);
+
+ Ok(<Pallet<T>>::is_approved_for_all(self, &owner, &operator))
}
/// @notice Returns collection helper contract address
pallets/nonfungible/src/lib.rsdiffbeforeafterboth--- a/pallets/nonfungible/src/lib.rs
+++ b/pallets/nonfungible/src/lib.rs
@@ -272,6 +272,18 @@
QueryKind = OptionQuery,
>;
+ /// Operator set by a wallet owner that could perform certain transactions on all tokens in the wallet.
+ #[pallet::storage]
+ pub type WalletOperator<T: Config> = StorageNMap<
+ Key = (
+ Key<Twox64Concat, CollectionId>,
+ Key<Blake2_128Concat, T::CrossAccountId>,
+ Key<Blake2_128Concat, T::CrossAccountId>,
+ ),
+ Value = bool,
+ QueryKind = OptionQuery,
+ >;
+
/// Upgrade from the old schema to properties.
#[pallet::hooks]
impl<T: Config> Hooks<BlockNumberFor<T>> for Pallet<T> {
@@ -438,6 +450,7 @@
<TokensBurnt<T>>::remove(id);
let _ = <Allowance<T>>::clear_prefix((id,), u32::MAX, None);
let _ = <AccountBalance<T>>::clear_prefix((id,), u32::MAX, None);
+ let _ = <WalletOperator<T>>::clear_prefix((id,), u32::MAX, None);
Ok(())
}
@@ -1193,6 +1206,9 @@
if <Allowance<T>>::get((collection.id, token)).as_ref() == Some(spender) {
return Ok(());
}
+ if <WalletOperator<T>>::get((collection.id, from, spender)) == Some(true) {
+ return Ok(());
+ }
ensure!(
collection.ignores_allowance(spender),
<CommonError<T>>::ApprovedValueTooLow
@@ -1326,4 +1342,52 @@
) -> DispatchResult {
Self::create_multiple_items(collection, sender, vec![data], nesting_budget)
}
+
+ /// Sets or unsets the approval of a given operator.
+ ///
+ /// An operator is allowed to transfer all token pieces of the sender on their behalf.
+ /// - `owner`: Token owner
+ /// - `operator`: Operator
+ /// - `approve`: Is operator enabled or disabled
+ pub fn set_approval_for_all(
+ collection: &NonfungibleHandle<T>,
+ owner: &T::CrossAccountId,
+ operator: &T::CrossAccountId,
+ approve: bool,
+ ) -> DispatchResult {
+ if collection.permissions.access() == AccessMode::AllowList {
+ collection.check_allowlist(owner)?;
+ collection.check_allowlist(operator)?;
+ }
+
+ <PalletCommon<T>>::ensure_correct_receiver(operator)?;
+
+ // =========
+
+ <WalletOperator<T>>::insert((collection.id, owner, operator), approve);
+ <PalletEvm<T>>::deposit_log(
+ ERC721Events::ApprovalForAll {
+ owner: *owner.as_eth(),
+ operator: *operator.as_eth(),
+ approved: approve,
+ }
+ .to_log(collection_id_to_address(collection.id)),
+ );
+ <PalletCommon<T>>::deposit_event(CommonEvent::ApprovedForAll(
+ collection.id,
+ owner.clone(),
+ operator.clone(),
+ approve,
+ ));
+ Ok(())
+ }
+
+ /// Tells whether an operator is approved by a given owner.
+ pub fn is_approved_for_all(
+ collection: &NonfungibleHandle<T>,
+ owner: &T::CrossAccountId,
+ operator: &T::CrossAccountId,
+ ) -> bool {
+ <WalletOperator<T>>::get((collection.id, owner, operator)).unwrap_or(false)
+ }
}
pallets/nonfungible/src/stubs/UniqueNFT.rawdiffbeforeafterbothbinary blob — no preview
pallets/nonfungible/src/stubs/UniqueNFT.soldiffbeforeafterboth--- a/pallets/nonfungible/src/stubs/UniqueNFT.sol
+++ b/pallets/nonfungible/src/stubs/UniqueNFT.sol
@@ -1020,7 +1020,10 @@
dummy = 0;
}
- /// @dev Not implemented
+ /// @notice Sets or unsets the approval of a given operator.
+ /// An operator is allowed to transfer all tokens of the sender on their behalf.
+ /// @param operator Operator
+ /// @param approved Is operator enabled or disabled
/// @dev EVM selector for this function is: 0xa22cb465,
/// or in textual repr: setApprovalForAll(address,bool)
function setApprovalForAll(address operator, bool approved) public {
@@ -1040,15 +1043,15 @@
return 0x0000000000000000000000000000000000000000;
}
- /// @dev Not implemented
+ /// @notice Tells whether an operator is approved by a given owner.
/// @dev EVM selector for this function is: 0xe985e9c5,
/// or in textual repr: isApprovedForAll(address,address)
- function isApprovedForAll(address owner, address operator) public view returns (address) {
+ function isApprovedForAll(address owner, address operator) public view returns (bool) {
require(false, stub_error);
owner;
operator;
dummy;
- return 0x0000000000000000000000000000000000000000;
+ return false;
}
/// @notice Returns collection helper contract address
pallets/nonfungible/src/weights.rsdiffbeforeafterboth--- a/pallets/nonfungible/src/weights.rs
+++ b/pallets/nonfungible/src/weights.rs
@@ -26,6 +26,7 @@
#![cfg_attr(rustfmt, rustfmt_skip)]
#![allow(unused_parens)]
#![allow(unused_imports)]
+#![allow(missing_docs)]
#![allow(clippy::unnecessary_cast)]
use frame_support::{traits::Get, weights::{Weight, constants::RocksDbWeight}};
@@ -47,6 +48,8 @@
fn set_token_properties(b: u32, ) -> Weight;
fn delete_token_properties(b: u32, ) -> Weight;
fn token_owner() -> Weight;
+ fn set_approval_for_all() -> Weight;
+ fn is_approved_for_all() -> Weight;
}
/// Weights for pallet_nonfungible using the Substrate node and recommended hardware.
@@ -195,6 +198,16 @@
Weight::from_ref_time(4_366_000)
.saturating_add(T::DbWeight::get().reads(1 as u64))
}
+ // Storage: Nonfungible WalletOperator (r:0 w:1)
+ fn set_approval_for_all() -> Weight {
+ Weight::from_ref_time(16_231_000 as u64)
+ .saturating_add(T::DbWeight::get().writes(1 as u64))
+ }
+ // Storage: Nonfungible WalletOperator (r:1 w:0)
+ fn is_approved_for_all() -> Weight {
+ Weight::from_ref_time(6_161_000 as u64)
+ .saturating_add(T::DbWeight::get().reads(1 as u64))
+ }
}
// For backwards compatibility and tests
@@ -342,4 +355,14 @@
Weight::from_ref_time(4_366_000)
.saturating_add(RocksDbWeight::get().reads(1 as u64))
}
+ // Storage: Nonfungible WalletOperator (r:0 w:1)
+ fn set_approval_for_all() -> Weight {
+ Weight::from_ref_time(16_231_000 as u64)
+ .saturating_add(RocksDbWeight::get().writes(1 as u64))
+ }
+ // Storage: Nonfungible WalletOperator (r:1 w:0)
+ fn is_approved_for_all() -> Weight {
+ Weight::from_ref_time(6_161_000 as u64)
+ .saturating_add(RocksDbWeight::get().reads(1 as u64))
+ }
}
pallets/refungible/src/benchmarking.rsdiffbeforeafterboth--- a/pallets/refungible/src/benchmarking.rs
+++ b/pallets/refungible/src/benchmarking.rs
@@ -290,4 +290,18 @@
};
let item = create_max_item(&collection, &sender, [(owner.clone(), 100)])?;
}: {<Pallet<T>>::token_owner(collection.id, item)}
+
+ set_approval_for_all {
+ bench_init!{
+ owner: sub; collection: collection(owner);
+ operator: cross_from_sub(owner); owner: cross_sub;
+ };
+ }: {<Pallet<T>>::set_approval_for_all(&collection, &owner, &operator, true)}
+
+ is_approved_for_all {
+ bench_init!{
+ owner: sub; collection: collection(owner);
+ operator: cross_from_sub(owner); owner: cross_sub;
+ };
+ }: {<Pallet<T>>::is_approved_for_all(&collection, &owner, &operator)}
}
pallets/refungible/src/common.rsdiffbeforeafterboth--- a/pallets/refungible/src/common.rs
+++ b/pallets/refungible/src/common.rs
@@ -152,6 +152,10 @@
fn token_owner() -> Weight {
<SelfWeightOf<T>>::token_owner()
}
+
+ fn set_approval_for_all() -> Weight {
+ <SelfWeightOf<T>>::set_approval_for_all()
+ }
}
fn map_create_data<T: Config>(
@@ -516,6 +520,22 @@
fn total_pieces(&self, token: TokenId) -> Option<u128> {
<Pallet<T>>::total_pieces(self.id, token)
}
+
+ fn set_approval_for_all(
+ &self,
+ owner: T::CrossAccountId,
+ operator: T::CrossAccountId,
+ approve: bool,
+ ) -> DispatchResultWithPostInfo {
+ with_weight(
+ <Pallet<T>>::set_approval_for_all(self, &owner, &operator, approve),
+ <CommonWeights<T>>::set_approval_for_all(),
+ )
+ }
+
+ fn is_approved_for_all(&self, owner: T::CrossAccountId, operator: T::CrossAccountId) -> bool {
+ <Pallet<T>>::is_approved_for_all(self, &owner, &operator)
+ }
}
impl<T: Config> RefungibleExtensions<T> for RefungibleHandle<T> {
pallets/refungible/src/erc.rsdiffbeforeafterboth--- a/pallets/refungible/src/erc.rs
+++ b/pallets/refungible/src/erc.rs
@@ -461,15 +461,23 @@
Err("not implemented".into())
}
- /// @dev Not implemented
+ /// @notice Sets or unsets the approval of a given operator.
+ /// An operator is allowed to transfer all tokens of the sender on their behalf.
+ /// @param operator Operator
+ /// @param approved Is operator enabled or disabled
+ #[weight(<SelfWeightOf<T>>::set_approval_for_all())]
fn set_approval_for_all(
&mut self,
- _caller: caller,
- _operator: address,
- _approved: bool,
+ caller: caller,
+ operator: address,
+ approved: bool,
) -> Result<void> {
- // TODO: Not implemetable
- Err("not implemented".into())
+ let caller = T::CrossAccountId::from_eth(caller);
+ let operator = T::CrossAccountId::from_eth(operator);
+
+ <Pallet<T>>::set_approval_for_all(self, &caller, &operator, approved)
+ .map_err(dispatch_to_evm::<T>)?;
+ Ok(())
}
/// @dev Not implemented
@@ -478,10 +486,13 @@
Err("not implemented".into())
}
- /// @dev Not implemented
- fn is_approved_for_all(&self, _owner: address, _operator: address) -> Result<address> {
- // TODO: Not implemetable
- Err("not implemented".into())
+ /// @notice Tells whether an operator is approved by a given owner.
+ #[weight(<SelfWeightOf<T>>::is_approved_for_all())]
+ fn is_approved_for_all(&self, owner: address, operator: address) -> Result<bool> {
+ let owner = T::CrossAccountId::from_eth(owner);
+ let operator = T::CrossAccountId::from_eth(operator);
+
+ Ok(<Pallet<T>>::is_approved_for_all(self, &owner, &operator))
}
/// @notice Returns collection helper contract address
pallets/refungible/src/lib.rsdiffbeforeafterboth--- a/pallets/refungible/src/lib.rs
+++ b/pallets/refungible/src/lib.rs
@@ -273,6 +273,18 @@
QueryKind = ValueQuery,
>;
+ /// Operator set by a wallet owner that could perform certain transactions on all tokens in the wallet.
+ #[pallet::storage]
+ pub type WalletOperator<T: Config> = StorageNMap<
+ Key = (
+ Key<Twox64Concat, CollectionId>,
+ Key<Blake2_128Concat, T::CrossAccountId>,
+ Key<Blake2_128Concat, T::CrossAccountId>,
+ ),
+ Value = bool,
+ QueryKind = OptionQuery,
+ >;
+
#[pallet::hooks]
impl<T: Config> Hooks<BlockNumberFor<T>> for Pallet<T> {
fn on_runtime_upgrade() -> Weight {
@@ -1161,6 +1173,12 @@
}
let allowance =
<Allowance<T>>::get((collection.id, token, from, &spender)).checked_sub(amount);
+
+ // Allowance if any would be reduced if spender is also wallet operator
+ if <WalletOperator<T>>::get((collection.id, from, spender)) == Some(true) {
+ return Ok(allowance);
+ }
+
if allowance.is_none() {
ensure!(
collection.ignores_allowance(spender),
@@ -1387,4 +1405,52 @@
Some(res)
}
}
+
+ /// Sets or unsets the approval of a given operator.
+ ///
+ /// An operator is allowed to transfer all tokens of the sender on their behalf.
+ /// - `owner`: Token owner
+ /// - `operator`: Operator
+ /// - `approve`: Is operator enabled or disabled
+ pub fn set_approval_for_all(
+ collection: &RefungibleHandle<T>,
+ owner: &T::CrossAccountId,
+ operator: &T::CrossAccountId,
+ approve: bool,
+ ) -> DispatchResult {
+ if collection.permissions.access() == AccessMode::AllowList {
+ collection.check_allowlist(owner)?;
+ collection.check_allowlist(operator)?;
+ }
+
+ <PalletCommon<T>>::ensure_correct_receiver(operator)?;
+
+ // =========
+
+ <WalletOperator<T>>::insert((collection.id, owner, operator), approve);
+ <PalletEvm<T>>::deposit_log(
+ ERC721Events::ApprovalForAll {
+ owner: *owner.as_eth(),
+ operator: *operator.as_eth(),
+ approved: approve,
+ }
+ .to_log(collection_id_to_address(collection.id)),
+ );
+ <PalletCommon<T>>::deposit_event(CommonEvent::ApprovedForAll(
+ collection.id,
+ owner.clone(),
+ operator.clone(),
+ approve,
+ ));
+ Ok(())
+ }
+
+ /// Tells whether an operator is approved by a given owner.
+ pub fn is_approved_for_all(
+ collection: &RefungibleHandle<T>,
+ owner: &T::CrossAccountId,
+ operator: &T::CrossAccountId,
+ ) -> bool {
+ <WalletOperator<T>>::get((collection.id, owner, operator)).unwrap_or(false)
+ }
}
pallets/refungible/src/stubs/UniqueRefungible.rawdiffbeforeafterbothbinary blob — no preview
pallets/refungible/src/stubs/UniqueRefungible.soldiffbeforeafterboth--- a/pallets/refungible/src/stubs/UniqueRefungible.sol
+++ b/pallets/refungible/src/stubs/UniqueRefungible.sol
@@ -1017,7 +1017,10 @@
dummy = 0;
}
- /// @dev Not implemented
+ /// @notice Sets or unsets the approval of a given operator.
+ /// An operator is allowed to transfer all tokens of the sender on their behalf.
+ /// @param operator Operator
+ /// @param approved Is operator enabled or disabled
/// @dev EVM selector for this function is: 0xa22cb465,
/// or in textual repr: setApprovalForAll(address,bool)
function setApprovalForAll(address operator, bool approved) public {
@@ -1037,15 +1040,15 @@
return 0x0000000000000000000000000000000000000000;
}
- /// @dev Not implemented
+ /// @notice Tells whether an operator is approved by a given owner.
/// @dev EVM selector for this function is: 0xe985e9c5,
/// or in textual repr: isApprovedForAll(address,address)
- function isApprovedForAll(address owner, address operator) public view returns (address) {
+ function isApprovedForAll(address owner, address operator) public view returns (bool) {
require(false, stub_error);
owner;
operator;
dummy;
- return 0x0000000000000000000000000000000000000000;
+ return false;
}
/// @notice Returns collection helper contract address
pallets/refungible/src/weights.rsdiffbeforeafterboth--- a/pallets/refungible/src/weights.rs
+++ b/pallets/refungible/src/weights.rs
@@ -3,7 +3,7 @@
//! Autogenerated weights for pallet_refungible
//!
//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
-//! DATE: 2022-08-15, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2022-11-25, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]`
//! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024
// Executed Command:
@@ -26,6 +26,7 @@
#![cfg_attr(rustfmt, rustfmt_skip)]
#![allow(unused_parens)]
#![allow(unused_imports)]
+#![allow(missing_docs)]
#![allow(clippy::unnecessary_cast)]
use frame_support::{traits::Get, weights::{Weight, constants::RocksDbWeight}};
@@ -54,6 +55,8 @@
fn delete_token_properties(b: u32, ) -> Weight;
fn repartition_item() -> Weight;
fn token_owner() -> Weight;
+ fn set_approval_for_all() -> Weight;
+ fn is_approved_for_all() -> Weight;
}
/// Weights for pallet_refungible using the Substrate node and recommended hardware.
@@ -259,6 +262,16 @@
Weight::from_ref_time(9_431_000)
.saturating_add(T::DbWeight::get().reads(2 as u64))
}
+ // Storage: Refungible WalletOperator (r:0 w:1)
+ fn set_approval_for_all() -> Weight {
+ Weight::from_ref_time(16_150_000 as u64)
+ .saturating_add(T::DbWeight::get().writes(1 as u64))
+ }
+ // Storage: Refungible WalletOperator (r:1 w:0)
+ fn is_approved_for_all() -> Weight {
+ Weight::from_ref_time(5_901_000 as u64)
+ .saturating_add(T::DbWeight::get().reads(1 as u64))
+ }
}
// For backwards compatibility and tests
@@ -463,4 +476,14 @@
Weight::from_ref_time(9_431_000)
.saturating_add(RocksDbWeight::get().reads(2 as u64))
}
+ // Storage: Refungible WalletOperator (r:0 w:1)
+ fn set_approval_for_all() -> Weight {
+ Weight::from_ref_time(16_150_000 as u64)
+ .saturating_add(RocksDbWeight::get().writes(1 as u64))
+ }
+ // Storage: Refungible WalletOperator (r:1 w:0)
+ fn is_approved_for_all() -> Weight {
+ Weight::from_ref_time(5_901_000 as u64)
+ .saturating_add(RocksDbWeight::get().reads(1 as u64))
+ }
}
pallets/unique/src/lib.rsdiffbeforeafterboth--- a/pallets/unique/src/lib.rs
+++ b/pallets/unique/src/lib.rs
@@ -1126,6 +1126,28 @@
}
})
}
+
+ /// Sets or unsets the approval of a given operator.
+ ///
+ /// An operator is allowed to transfer all tokens of the sender on their behalf.
+ ///
+ /// # Arguments
+ ///
+ /// * `owner`: Token owner
+ /// * `operator`: Operator
+ /// * `approve`: Is operator enabled or disabled
+ #[weight = T::CommonWeightInfo::set_approval_for_all()]
+ pub fn set_approval_for_all(
+ origin,
+ collection_id: CollectionId,
+ operator: T::CrossAccountId,
+ approve: bool,
+ ) -> DispatchResultWithPostInfo {
+ let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
+ dispatch_tx::<T, _>(collection_id, |d| {
+ d.set_approval_for_all(sender, operator, approve)
+ })
+ }
}
}
primitives/rpc/src/lib.rsdiffbeforeafterboth--- a/primitives/rpc/src/lib.rs
+++ b/primitives/rpc/src/lib.rs
@@ -132,5 +132,8 @@
fn total_pieces(collection_id: CollectionId, token_id: TokenId) -> Result<Option<u128>>;
fn token_owners(collection: CollectionId, token: TokenId) -> Result<Vec<CrossAccountId>>;
+
+ /// Get whether an operator is approved by a given owner.
+ fn is_approved_for_all(collection: CollectionId, owner: CrossAccountId, operator: CrossAccountId) -> Result<bool>;
}
}
runtime/common/runtime_apis.rsdiffbeforeafterboth--- a/runtime/common/runtime_apis.rs
+++ b/runtime/common/runtime_apis.rs
@@ -187,6 +187,10 @@
fn total_pieces(collection: CollectionId, token_id: TokenId) -> Result<Option<u128>, DispatchError> {
dispatch_unique_runtime!(collection.total_pieces(token_id))
}
+
+ fn is_approved_for_all(collection: CollectionId, owner: CrossAccountId, operator: CrossAccountId) -> Result<bool, DispatchError> {
+ dispatch_unique_runtime!(collection.is_approved_for_all(owner, operator))
+ }
}
impl app_promotion_rpc::AppPromotionApi<Block, BlockNumber, CrossAccountId, AccountId> for Runtime {
runtime/common/weights.rsdiffbeforeafterboth--- a/runtime/common/weights.rs
+++ b/runtime/common/weights.rs
@@ -120,6 +120,10 @@
fn token_owner() -> Weight {
max_weight_of!(token_owner())
}
+
+ fn set_approval_for_all() -> Weight {
+ max_weight_of!(set_approval_for_all())
+ }
}
#[cfg(feature = "refungible")]
tests/src/approve.test.tsdiffbeforeafterboth--- a/tests/src/approve.test.ts
+++ b/tests/src/approve.test.ts
@@ -603,3 +603,40 @@
await expect(approveTx()).to.be.rejected;
});
});
+
+describe('Normal user can approve other users to be wallet operator:', () => {
+ let alice: IKeyringPair;
+ let bob: IKeyringPair;
+
+ before(async () => {
+ await usingPlaygrounds(async (helper, privateKey) => {
+ const donor = await privateKey({filename: __filename});
+ [alice, bob] = await helper.arrange.createAccounts([100n, 100n], donor);
+ });
+ });
+
+ itSub('[nft] Enable and disable approval', async ({helper}) => {
+ const {collectionId} = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});
+ await helper.nft.mintToken(alice, {collectionId: collectionId, owner: alice.address});
+ const checkBeforeApprovalTx = () => helper.nft.isApprovedForAll(collectionId, {Substrate: alice.address}, {Substrate: bob.address});
+ expect(await checkBeforeApprovalTx()).to.be.false;
+ await helper.nft.setApprovalForAll(alice, collectionId, {Substrate: bob.address}, true);
+ const checkAfterApprovalTx = () => helper.nft.isApprovedForAll(collectionId, {Substrate: alice.address}, {Substrate: bob.address});
+ expect(await checkAfterApprovalTx()).to.be.true;
+ await helper.nft.setApprovalForAll(alice, collectionId, {Substrate: bob.address}, false);
+ const checkAfterDisapprovalTx = () => helper.nft.isApprovedForAll(collectionId, {Substrate: alice.address}, {Substrate: bob.address});
+ expect(await checkAfterDisapprovalTx()).to.be.false;
+ });
+
+ itSub.ifWithPallets('[rft] Enable and disable approval', [Pallets.ReFungible], async ({helper}) => {
+ const {collectionId} = await helper.rft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'});
+ const checkBeforeApprovalTx = () => helper.rft.isApprovedForAll(collectionId, {Substrate: alice.address}, {Substrate: bob.address});
+ expect(await checkBeforeApprovalTx()).to.be.false;
+ await helper.rft.setApprovalForAll(alice, collectionId, {Substrate: bob.address}, true);
+ const checkAfterApprovalTx = () => helper.rft.isApprovedForAll(collectionId, {Substrate: alice.address}, {Substrate: bob.address});
+ expect(await checkAfterApprovalTx()).to.be.true;
+ await helper.rft.setApprovalForAll(alice, collectionId, {Substrate: bob.address}, false);
+ const checkAfterDisapprovalTx = () => helper.rft.isApprovedForAll(collectionId, {Substrate: alice.address}, {Substrate: bob.address});
+ expect(await checkAfterDisapprovalTx()).to.be.false;
+ });
+});
tests/src/eth/abi/nonFungible.jsondiffbeforeafterboth--- a/tests/src/eth/abi/nonFungible.json
+++ b/tests/src/eth/abi/nonFungible.json
@@ -384,7 +384,7 @@
{ "internalType": "address", "name": "operator", "type": "address" }
],
"name": "isApprovedForAll",
- "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
"stateMutability": "view",
"type": "function"
},
tests/src/eth/abi/reFungible.jsondiffbeforeafterboth--- a/tests/src/eth/abi/reFungible.json
+++ b/tests/src/eth/abi/reFungible.json
@@ -366,7 +366,7 @@
{ "internalType": "address", "name": "operator", "type": "address" }
],
"name": "isApprovedForAll",
- "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
"stateMutability": "view",
"type": "function"
},
tests/src/eth/api/UniqueNFT.soldiffbeforeafterboth--- a/tests/src/eth/api/UniqueNFT.sol
+++ b/tests/src/eth/api/UniqueNFT.sol
@@ -671,7 +671,10 @@
/// or in textual repr: approve(address,uint256)
function approve(address approved, uint256 tokenId) external;
- /// @dev Not implemented
+ /// @notice Sets or unsets the approval of a given operator.
+ /// An operator is allowed to transfer all tokens of the sender on their behalf.
+ /// @param operator Operator
+ /// @param approved Is operator enabled or disabled
/// @dev EVM selector for this function is: 0xa22cb465,
/// or in textual repr: setApprovalForAll(address,bool)
function setApprovalForAll(address operator, bool approved) external;
@@ -681,10 +684,10 @@
/// or in textual repr: getApproved(uint256)
function getApproved(uint256 tokenId) external view returns (address);
- /// @dev Not implemented
+ /// @notice Tells whether an operator is approved by a given owner.
/// @dev EVM selector for this function is: 0xe985e9c5,
/// or in textual repr: isApprovedForAll(address,address)
- function isApprovedForAll(address owner, address operator) external view returns (address);
+ function isApprovedForAll(address owner, address operator) external view returns (bool);
/// @notice Returns collection helper contract address
/// @dev EVM selector for this function is: 0x1896cce6,
tests/src/eth/api/UniqueRefungible.soldiffbeforeafterboth--- a/tests/src/eth/api/UniqueRefungible.sol
+++ b/tests/src/eth/api/UniqueRefungible.sol
@@ -668,7 +668,10 @@
/// or in textual repr: approve(address,uint256)
function approve(address approved, uint256 tokenId) external;
- /// @dev Not implemented
+ /// @notice Sets or unsets the approval of a given operator.
+ /// An operator is allowed to transfer all tokens of the sender on their behalf.
+ /// @param operator Operator
+ /// @param approved Is operator enabled or disabled
/// @dev EVM selector for this function is: 0xa22cb465,
/// or in textual repr: setApprovalForAll(address,bool)
function setApprovalForAll(address operator, bool approved) external;
@@ -678,10 +681,10 @@
/// or in textual repr: getApproved(uint256)
function getApproved(uint256 tokenId) external view returns (address);
- /// @dev Not implemented
+ /// @notice Tells whether an operator is approved by a given owner.
/// @dev EVM selector for this function is: 0xe985e9c5,
/// or in textual repr: isApprovedForAll(address,address)
- function isApprovedForAll(address owner, address operator) external view returns (address);
+ function isApprovedForAll(address owner, address operator) external view returns (bool);
/// @notice Returns collection helper contract address
/// @dev EVM selector for this function is: 0x1896cce6,
tests/src/eth/nonFungible.test.tsdiffbeforeafterboth--- a/tests/src/eth/nonFungible.test.ts
+++ b/tests/src/eth/nonFungible.test.ts
@@ -249,6 +249,114 @@
}
});
+ itEth('Can perform setApprovalForAll()', async ({helper}) => {
+ const owner = await helper.eth.createAccountWithBalance(donor);
+ const operator = helper.eth.createAccount();
+
+ const collection = await helper.nft.mintCollection(minter, {});
+
+ const collectionAddress = helper.ethAddress.fromCollectionId(collection.collectionId);
+ const contract = helper.ethNativeContract.collection(collectionAddress, 'nft', owner);
+
+ const approvedBefore = await contract.methods.isApprovedForAll(owner, operator).call();
+ expect(approvedBefore).to.be.equal(false);
+
+ {
+ const result = await contract.methods.setApprovalForAll(operator, true).send({from: owner});
+
+ expect(result.events.ApprovalForAll).to.be.like({
+ address: collectionAddress,
+ event: 'ApprovalForAll',
+ returnValues: {
+ owner,
+ operator,
+ approved: true,
+ },
+ });
+
+ const approvedAfter = await contract.methods.isApprovedForAll(owner, operator).call();
+ expect(approvedAfter).to.be.equal(true);
+ }
+
+ {
+ const result = await contract.methods.setApprovalForAll(operator, false).send({from: owner});
+
+ expect(result.events.ApprovalForAll).to.be.like({
+ address: collectionAddress,
+ event: 'ApprovalForAll',
+ returnValues: {
+ owner,
+ operator,
+ approved: false,
+ },
+ });
+
+ const approvedAfter = await contract.methods.isApprovedForAll(owner, operator).call();
+ expect(approvedAfter).to.be.equal(false);
+ }
+ });
+
+ itEth('Can perform burn with ApprovalForAll', async ({helper}) => {
+ const collection = await helper.nft.mintCollection(minter, {name: 'A', description: 'B', tokenPrefix: 'C'});
+
+ const owner = await helper.eth.createAccountWithBalance(donor);
+ const operator = await helper.eth.createAccountWithBalance(donor, 100n);
+
+ const token = await collection.mintToken(minter, {Ethereum: owner});
+
+ const address = helper.ethAddress.fromCollectionId(collection.collectionId);
+ const contract = helper.ethNativeContract.collection(address, 'nft');
+
+ {
+ await contract.methods.setApprovalForAll(operator, true).send({from: owner});
+ const ownerCross = helper.ethCrossAccount.fromAddress(owner);
+ const result = await contract.methods.burnFromCross(ownerCross, token.tokenId).send({from: operator});
+ const events = result.events.Transfer;
+
+ expect(events).to.be.like({
+ address,
+ event: 'Transfer',
+ returnValues: {
+ from: owner,
+ to: '0x0000000000000000000000000000000000000000',
+ tokenId: token.tokenId.toString(),
+ },
+ });
+ }
+ });
+
+ itEth('Can perform transfer with ApprovalForAll', async ({helper}) => {
+ const collection = await helper.nft.mintCollection(minter, {name: 'A', description: 'B', tokenPrefix: 'C'});
+
+ const owner = await helper.eth.createAccountWithBalance(donor);
+ const operator = await helper.eth.createAccountWithBalance(donor);
+ const receiver = charlie;
+
+ const token = await collection.mintToken(minter, {Ethereum: owner});
+
+ const address = helper.ethAddress.fromCollectionId(collection.collectionId);
+ const contract = helper.ethNativeContract.collection(address, 'nft');
+
+ {
+ await contract.methods.setApprovalForAll(operator, true).send({from: owner});
+ const ownerCross = helper.ethCrossAccount.fromAddress(owner);
+ const recieverCross = helper.ethCrossAccount.fromKeyringPair(receiver);
+ const result = await contract.methods.transferFromCross(ownerCross, recieverCross, token.tokenId).send({from: operator});
+ const event = result.events.Transfer;
+ expect(event).to.be.like({
+ address: helper.ethAddress.fromCollectionId(collection.collectionId),
+ event: 'Transfer',
+ returnValues: {
+ from: owner,
+ to: helper.address.substrateToEth(receiver.address),
+ tokenId: token.tokenId.toString(),
+ },
+ });
+ }
+
+ expect(await token.getOwner()).to.be.like({Substrate: receiver.address});
+ });
+
itEth('Can perform burnFromCross()', async ({helper}) => {
const collection = await helper.nft.mintCollection(minter, {name: 'A', description: 'B', tokenPrefix: 'C'});
const ownerSub = bob;
@@ -822,3 +930,53 @@
expect(symbol).to.equal('CHANGE');
});
});
+
+describe('Negative tests', () => {
+ let donor: IKeyringPair;
+ let minter: IKeyringPair;
+ let alice: IKeyringPair;
+ let bob: IKeyringPair;
+
+ before(async function() {
+ await usingEthPlaygrounds(async (helper, privateKey) => {
+ donor = await privateKey({filename: __filename});
+ [minter, alice, bob] = await helper.arrange.createAccounts([100n, 100n, 100n], donor);
+ });
+ });
+
+ itEth('[negative] Cant perform burn without approval', async ({helper}) => {
+ const collection = await helper.nft.mintCollection(minter, {name: 'A', description: 'B', tokenPrefix: 'C'});
+
+ const owner = bob;
+ const spender = await helper.eth.createAccountWithBalance(donor, 100n);
+
+ const token = await collection.mintToken(minter, {Substrate: owner.address});
+
+ const address = helper.ethAddress.fromCollectionId(collection.collectionId);
+ const contract = helper.ethNativeContract.collection(address, 'nft');
+
+ {
+ const ownerCross = helper.ethCrossAccount.fromKeyringPair(owner);
+ await expect(contract.methods.burnFromCross(ownerCross, token.tokenId).send({from: spender})).to.be.rejected;
+ }
+ });
+
+ itEth('[negative] Cant perform transfer without approval', async ({helper}) => {
+ const collection = await helper.nft.mintCollection(minter, {name: 'A', description: 'B', tokenPrefix: 'C'});
+ const owner = bob;
+ const receiver = alice;
+
+ const spender = await helper.eth.createAccountWithBalance(donor, 100n);
+
+ const token = await collection.mintToken(minter, {Substrate: owner.address});
+
+ const address = helper.ethAddress.fromCollectionId(collection.collectionId);
+ const contract = helper.ethNativeContract.collection(address, 'nft');
+
+ {
+ const ownerCross = helper.ethCrossAccount.fromKeyringPair(owner);
+ const recieverCross = helper.ethCrossAccount.fromKeyringPair(receiver);
+ await expect(contract.methods.transferFromCross(ownerCross, recieverCross, token.tokenId).send({from: spender})).to.be.rejected;
+ }
+ });
+});
tests/src/eth/reFungible.test.tsdiffbeforeafterboth--- a/tests/src/eth/reFungible.test.ts
+++ b/tests/src/eth/reFungible.test.ts
@@ -169,6 +169,136 @@
}
});
+ itEth('Can perform setApprovalForAll()', async ({helper}) => {
+ const owner = await helper.eth.createAccountWithBalance(donor);
+ const operator = helper.eth.createAccount();
+
+ const collection = await helper.rft.mintCollection(minter, {});
+
+ const collectionAddress = helper.ethAddress.fromCollectionId(collection.collectionId);
+ const contract = helper.ethNativeContract.collection(collectionAddress, 'rft', owner);
+
+ const approvedBefore = await contract.methods.isApprovedForAll(owner, operator).call();
+ expect(approvedBefore).to.be.equal(false);
+
+ {
+ const result = await contract.methods.setApprovalForAll(operator, true).send({from: owner});
+
+ expect(result.events.ApprovalForAll).to.be.like({
+ address: collectionAddress,
+ event: 'ApprovalForAll',
+ returnValues: {
+ owner,
+ operator,
+ approved: true,
+ },
+ });
+
+ const approvedAfter = await contract.methods.isApprovedForAll(owner, operator).call();
+ expect(approvedAfter).to.be.equal(true);
+ }
+
+ {
+ const result = await contract.methods.setApprovalForAll(operator, false).send({from: owner});
+
+ expect(result.events.ApprovalForAll).to.be.like({
+ address: collectionAddress,
+ event: 'ApprovalForAll',
+ returnValues: {
+ owner,
+ operator,
+ approved: false,
+ },
+ });
+
+ const approvedAfter = await contract.methods.isApprovedForAll(owner, operator).call();
+ expect(approvedAfter).to.be.equal(false);
+ }
+ });
+
+ itEth('Can perform burn with ApprovalForAll', async ({helper}) => {
+ const collection = await helper.rft.mintCollection(minter, {name: 'A', description: 'B', tokenPrefix: 'C'});
+
+ const owner = await helper.eth.createAccountWithBalance(donor);
+ const operator = await helper.eth.createAccountWithBalance(donor, 100n);
+
+ const token = await collection.mintToken(minter, 100n, {Ethereum: owner});
+
+ const address = helper.ethAddress.fromCollectionId(collection.collectionId);
+ const contract = helper.ethNativeContract.collection(address, 'rft');
+
+ {
+ await contract.methods.setApprovalForAll(operator, true).send({from: owner});
+ const ownerCross = helper.ethCrossAccount.fromAddress(owner);
+ const result = await contract.methods.burnFromCross(ownerCross, token.tokenId).send({from: operator});
+ const events = result.events.Transfer;
+
+ expect(events).to.be.like({
+ address,
+ event: 'Transfer',
+ returnValues: {
+ from: owner,
+ to: '0x0000000000000000000000000000000000000000',
+ tokenId: token.tokenId.toString(),
+ },
+ });
+ }
+ });
+
+ itEth('Can perform burn with approve and approvalForAll', async ({helper}) => {
+ const collection = await helper.rft.mintCollection(minter, {name: 'A', description: 'B', tokenPrefix: 'C'});
+
+ const owner = await helper.eth.createAccountWithBalance(donor);
+ const operator = await helper.eth.createAccountWithBalance(donor, 100n);
+
+ const token = await collection.mintToken(minter, 100n, {Ethereum: owner});
+
+ const address = helper.ethAddress.fromCollectionId(collection.collectionId);
+ const contract = helper.ethNativeContract.collection(address, 'rft');
+
+ const rftToken = helper.ethNativeContract.rftTokenById(token.collectionId, token.tokenId, owner);
+
+ {
+ await rftToken.methods.approve(operator, 15n).send({from: owner});
+ await contract.methods.setApprovalForAll(operator, true).send({from: owner});
+ await rftToken.methods.burnFrom(owner, 10n).send({from: operator});
+ const allowance = await rftToken.methods.allowance(owner, operator).call();
+ expect(allowance).to.be.equal('5');
+ }
+ });
+
+ itEth('Can perform transfer with ApprovalForAll', async ({helper}) => {
+ const collection = await helper.rft.mintCollection(minter, {name: 'A', description: 'B', tokenPrefix: 'C'});
+
+ const owner = await helper.eth.createAccountWithBalance(donor);
+ const operator = await helper.eth.createAccountWithBalance(donor);
+ const receiver = charlie;
+
+ const token = await collection.mintToken(minter, 100n, {Ethereum: owner});
+
+ const address = helper.ethAddress.fromCollectionId(collection.collectionId);
+ const contract = helper.ethNativeContract.collection(address, 'rft');
+
+ {
+ await contract.methods.setApprovalForAll(operator, true).send({from: owner});
+ const ownerCross = helper.ethCrossAccount.fromAddress(owner);
+ const recieverCross = helper.ethCrossAccount.fromKeyringPair(receiver);
+ const result = await contract.methods.transferFromCross(ownerCross, recieverCross, token.tokenId).send({from: operator});
+ const event = result.events.Transfer;
+ expect(event).to.be.like({
+ address: helper.ethAddress.fromCollectionId(collection.collectionId),
+ event: 'Transfer',
+ returnValues: {
+ from: owner,
+ to: helper.address.substrateToEth(receiver.address),
+ tokenId: token.tokenId.toString(),
+ },
+ });
+ }
+
+ expect(await token.getTop10Owners()).to.be.like([{Substrate: receiver.address}]);
+ });
+
itEth('Can perform burn()', async ({helper}) => {
const caller = await helper.eth.createAccountWithBalance(donor);
const {collectionAddress} = await helper.eth.createRFTCollection(caller, 'Burny', '6', '6');
@@ -594,3 +724,52 @@
expect(symbol).to.equal('12');
});
});
+
+describe('Negative tests', () => {
+ let donor: IKeyringPair;
+ let minter: IKeyringPair;
+ let alice: IKeyringPair;
+
+ before(async function() {
+ await usingEthPlaygrounds(async (helper, privateKey) => {
+ donor = await privateKey({filename: __filename});
+ [minter, alice] = await helper.arrange.createAccounts([100n, 100n], donor);
+ });
+ });
+
+ itEth('[negative] Cant perform burn without approval', async ({helper}) => {
+ const collection = await helper.rft.mintCollection(minter, {name: 'A', description: 'B', tokenPrefix: 'C'});
+
+ const owner = await helper.eth.createAccountWithBalance(donor, 100n);
+ const spender = await helper.eth.createAccountWithBalance(donor, 100n);
+
+ const token = await collection.mintToken(minter, 100n, {Ethereum: owner});
+
+ const address = helper.ethAddress.fromCollectionId(collection.collectionId);
+ const contract = helper.ethNativeContract.collection(address, 'rft');
+
+ {
+ const ownerCross = helper.ethCrossAccount.fromAddress(owner);
+ await expect(contract.methods.burnFromCross(ownerCross, token.tokenId).send({from: spender})).to.be.rejected;
+ }
+ });
+
+ itEth('[negative] Cant perform transfer without approval', async ({helper}) => {
+ const collection = await helper.rft.mintCollection(minter, {name: 'A', description: 'B', tokenPrefix: 'C'});
+ const owner = await helper.eth.createAccountWithBalance(donor, 100n);
+ const receiver = alice;
+
+ const spender = await helper.eth.createAccountWithBalance(donor, 100n);
+
+ const token = await collection.mintToken(minter, 100n, {Ethereum: owner});
+
+ const address = helper.ethAddress.fromCollectionId(collection.collectionId);
+ const contract = helper.ethNativeContract.collection(address, 'rft');
+
+ {
+ const ownerCross = helper.ethCrossAccount.fromAddress(owner);
+ const recieverCross = helper.ethCrossAccount.fromKeyringPair(receiver);
+ await expect(contract.methods.transferFromCross(ownerCross, recieverCross, token.tokenId).send({from: spender})).to.be.rejected;
+ }
+ });
+});
tests/src/interfaces/augment-api-errors.tsdiffbeforeafterboth--- a/tests/src/interfaces/augment-api-errors.ts
+++ b/tests/src/interfaces/augment-api-errors.ts
@@ -386,6 +386,10 @@
**/
NotFungibleDataUsedToMintFungibleCollectionToken: AugmentedError<ApiType>;
/**
+ * Setting approval for all is not allowed.
+ **/
+ SettingApprovalForAllNotAllowed: AugmentedError<ApiType>;
+ /**
* Setting item properties is not allowed.
**/
SettingPropertiesNotAllowed: AugmentedError<ApiType>;
tests/src/interfaces/augment-api-events.tsdiffbeforeafterboth--- a/tests/src/interfaces/augment-api-events.ts
+++ b/tests/src/interfaces/augment-api-events.ts
@@ -107,6 +107,10 @@
**/
Approved: AugmentedEvent<ApiType, [u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr, u128]>;
/**
+ * Amount pieces of token owned by `sender` was approved for `spender`.
+ **/
+ ApprovedForAll: AugmentedEvent<ApiType, [u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr, bool]>;
+ /**
* New collection was created
**/
CollectionCreated: AugmentedEvent<ApiType, [u32, u8, AccountId32]>;
tests/src/interfaces/augment-api-query.tsdiffbeforeafterboth--- a/tests/src/interfaces/augment-api-query.ts
+++ b/tests/src/interfaces/augment-api-query.ts
@@ -442,6 +442,10 @@
**/
tokensMinted: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<u32>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;
/**
+ * Operator set by a wallet owner that could perform certain transactions on all tokens in the wallet.
+ **/
+ walletOperator: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, arg3: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => Observable<Option<bool>>, [u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr]> & QueryableStorageEntry<ApiType, [u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr]>;
+ /**
* Generic query
**/
[key: string]: QueryableStorageEntry<ApiType>;
@@ -645,6 +649,10 @@
**/
totalSupply: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array) => Observable<u128>, [u32, u32]> & QueryableStorageEntry<ApiType, [u32, u32]>;
/**
+ * Operator set by a wallet owner that could perform certain transactions on all tokens in the wallet.
+ **/
+ walletOperator: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, arg3: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array) => Observable<Option<bool>>, [u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr]> & QueryableStorageEntry<ApiType, [u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr]>;
+ /**
* Generic query
**/
[key: string]: QueryableStorageEntry<ApiType>;
tests/src/interfaces/augment-api-rpc.tsdiffbeforeafterboth--- a/tests/src/interfaces/augment-api-rpc.ts
+++ b/tests/src/interfaces/augment-api-rpc.ts
@@ -720,6 +720,10 @@
**/
effectiveCollectionLimits: AugmentedRpc<(collection: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Option<UpDataStructsCollectionLimits>>>;
/**
+ * Tells whether an operator is approved by a given owner.
+ **/
+ isApprovedForAll: AugmentedRpc<(collection: u32 | AnyNumber | Uint8Array, owner: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, operator: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Option<bool>>>;
+ /**
* Get the last token ID created in a collection
**/
lastTokenId: AugmentedRpc<(collection: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<u32>>;
tests/src/interfaces/augment-api-tx.tsdiffbeforeafterboth--- a/tests/src/interfaces/augment-api-tx.ts
+++ b/tests/src/interfaces/augment-api-tx.ts
@@ -1545,6 +1545,18 @@
**/
repartition: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, tokenId: u32 | AnyNumber | Uint8Array, amount: u128 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, u32, u128]>;
/**
+ * Sets or unsets the approval of a given operator.
+ *
+ * An operator is allowed to transfer all tokens of the sender on their behalf.
+ *
+ * # Arguments
+ *
+ * * `owner`: Token owner
+ * * `operator`: Operator
+ * * `approve`: Is operator enabled or disabled
+ **/
+ setApprovalForAll: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, operator: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, approve: bool | boolean | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, PalletEvmAccountBasicCrossAccountIdRepr, bool]>;
+ /**
* Set specific limits of a collection. Empty, or None fields mean chain default.
*
* # Permissions
tests/src/interfaces/default/types.tsdiffbeforeafterboth1// Auto-generated via `yarn polkadot-types-from-defs`, do not edit2/* eslint-disable */34import type { BTreeMap, BTreeSet, Bytes, Compact, Enum, Null, Option, Result, Struct, Text, U256, U8aFixed, Vec, bool, u128, u16, u32, u64, u8 } from '@polkadot/types-codec';5import type { ITuple } from '@polkadot/types-codec/types';6import type { AccountId32, Call, H160, H256, MultiAddress, Perbill, Permill, Weight } from '@polkadot/types/interfaces/runtime';7import type { Event } from '@polkadot/types/interfaces/system';89/** @name CumulusPalletDmpQueueCall */10export interface CumulusPalletDmpQueueCall extends Enum {11 readonly isServiceOverweight: boolean;12 readonly asServiceOverweight: {13 readonly index: u64;14 readonly weightLimit: Weight;15 } & Struct;16 readonly type: 'ServiceOverweight';17}1819/** @name CumulusPalletDmpQueueConfigData */20export interface CumulusPalletDmpQueueConfigData extends Struct {21 readonly maxIndividual: Weight;22}2324/** @name CumulusPalletDmpQueueError */25export interface CumulusPalletDmpQueueError extends Enum {26 readonly isUnknown: boolean;27 readonly isOverLimit: boolean;28 readonly type: 'Unknown' | 'OverLimit';29}3031/** @name CumulusPalletDmpQueueEvent */32export interface CumulusPalletDmpQueueEvent extends Enum {33 readonly isInvalidFormat: boolean;34 readonly asInvalidFormat: {35 readonly messageId: U8aFixed;36 } & Struct;37 readonly isUnsupportedVersion: boolean;38 readonly asUnsupportedVersion: {39 readonly messageId: U8aFixed;40 } & Struct;41 readonly isExecutedDownward: boolean;42 readonly asExecutedDownward: {43 readonly messageId: U8aFixed;44 readonly outcome: XcmV2TraitsOutcome;45 } & Struct;46 readonly isWeightExhausted: boolean;47 readonly asWeightExhausted: {48 readonly messageId: U8aFixed;49 readonly remainingWeight: Weight;50 readonly requiredWeight: Weight;51 } & Struct;52 readonly isOverweightEnqueued: boolean;53 readonly asOverweightEnqueued: {54 readonly messageId: U8aFixed;55 readonly overweightIndex: u64;56 readonly requiredWeight: Weight;57 } & Struct;58 readonly isOverweightServiced: boolean;59 readonly asOverweightServiced: {60 readonly overweightIndex: u64;61 readonly weightUsed: Weight;62 } & Struct;63 readonly type: 'InvalidFormat' | 'UnsupportedVersion' | 'ExecutedDownward' | 'WeightExhausted' | 'OverweightEnqueued' | 'OverweightServiced';64}6566/** @name CumulusPalletDmpQueuePageIndexData */67export interface CumulusPalletDmpQueuePageIndexData extends Struct {68 readonly beginUsed: u32;69 readonly endUsed: u32;70 readonly overweightCount: u64;71}7273/** @name CumulusPalletParachainSystemCall */74export interface CumulusPalletParachainSystemCall extends Enum {75 readonly isSetValidationData: boolean;76 readonly asSetValidationData: {77 readonly data: CumulusPrimitivesParachainInherentParachainInherentData;78 } & Struct;79 readonly isSudoSendUpwardMessage: boolean;80 readonly asSudoSendUpwardMessage: {81 readonly message: Bytes;82 } & Struct;83 readonly isAuthorizeUpgrade: boolean;84 readonly asAuthorizeUpgrade: {85 readonly codeHash: H256;86 } & Struct;87 readonly isEnactAuthorizedUpgrade: boolean;88 readonly asEnactAuthorizedUpgrade: {89 readonly code: Bytes;90 } & Struct;91 readonly type: 'SetValidationData' | 'SudoSendUpwardMessage' | 'AuthorizeUpgrade' | 'EnactAuthorizedUpgrade';92}9394/** @name CumulusPalletParachainSystemError */95export interface CumulusPalletParachainSystemError extends Enum {96 readonly isOverlappingUpgrades: boolean;97 readonly isProhibitedByPolkadot: boolean;98 readonly isTooBig: boolean;99 readonly isValidationDataNotAvailable: boolean;100 readonly isHostConfigurationNotAvailable: boolean;101 readonly isNotScheduled: boolean;102 readonly isNothingAuthorized: boolean;103 readonly isUnauthorized: boolean;104 readonly type: 'OverlappingUpgrades' | 'ProhibitedByPolkadot' | 'TooBig' | 'ValidationDataNotAvailable' | 'HostConfigurationNotAvailable' | 'NotScheduled' | 'NothingAuthorized' | 'Unauthorized';105}106107/** @name CumulusPalletParachainSystemEvent */108export interface CumulusPalletParachainSystemEvent extends Enum {109 readonly isValidationFunctionStored: boolean;110 readonly isValidationFunctionApplied: boolean;111 readonly asValidationFunctionApplied: {112 readonly relayChainBlockNum: u32;113 } & Struct;114 readonly isValidationFunctionDiscarded: boolean;115 readonly isUpgradeAuthorized: boolean;116 readonly asUpgradeAuthorized: {117 readonly codeHash: H256;118 } & Struct;119 readonly isDownwardMessagesReceived: boolean;120 readonly asDownwardMessagesReceived: {121 readonly count: u32;122 } & Struct;123 readonly isDownwardMessagesProcessed: boolean;124 readonly asDownwardMessagesProcessed: {125 readonly weightUsed: Weight;126 readonly dmqHead: H256;127 } & Struct;128 readonly type: 'ValidationFunctionStored' | 'ValidationFunctionApplied' | 'ValidationFunctionDiscarded' | 'UpgradeAuthorized' | 'DownwardMessagesReceived' | 'DownwardMessagesProcessed';129}130131/** @name CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot */132export interface CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot extends Struct {133 readonly dmqMqcHead: H256;134 readonly relayDispatchQueueSize: ITuple<[u32, u32]>;135 readonly ingressChannels: Vec<ITuple<[u32, PolkadotPrimitivesV2AbridgedHrmpChannel]>>;136 readonly egressChannels: Vec<ITuple<[u32, PolkadotPrimitivesV2AbridgedHrmpChannel]>>;137}138139/** @name CumulusPalletXcmCall */140export interface CumulusPalletXcmCall extends Null {}141142/** @name CumulusPalletXcmError */143export interface CumulusPalletXcmError extends Null {}144145/** @name CumulusPalletXcmEvent */146export interface CumulusPalletXcmEvent extends Enum {147 readonly isInvalidFormat: boolean;148 readonly asInvalidFormat: U8aFixed;149 readonly isUnsupportedVersion: boolean;150 readonly asUnsupportedVersion: U8aFixed;151 readonly isExecutedDownward: boolean;152 readonly asExecutedDownward: ITuple<[U8aFixed, XcmV2TraitsOutcome]>;153 readonly type: 'InvalidFormat' | 'UnsupportedVersion' | 'ExecutedDownward';154}155156/** @name CumulusPalletXcmOrigin */157export interface CumulusPalletXcmOrigin extends Enum {158 readonly isRelay: boolean;159 readonly isSiblingParachain: boolean;160 readonly asSiblingParachain: u32;161 readonly type: 'Relay' | 'SiblingParachain';162}163164/** @name CumulusPalletXcmpQueueCall */165export interface CumulusPalletXcmpQueueCall extends Enum {166 readonly isServiceOverweight: boolean;167 readonly asServiceOverweight: {168 readonly index: u64;169 readonly weightLimit: Weight;170 } & Struct;171 readonly isSuspendXcmExecution: boolean;172 readonly isResumeXcmExecution: boolean;173 readonly isUpdateSuspendThreshold: boolean;174 readonly asUpdateSuspendThreshold: {175 readonly new_: u32;176 } & Struct;177 readonly isUpdateDropThreshold: boolean;178 readonly asUpdateDropThreshold: {179 readonly new_: u32;180 } & Struct;181 readonly isUpdateResumeThreshold: boolean;182 readonly asUpdateResumeThreshold: {183 readonly new_: u32;184 } & Struct;185 readonly isUpdateThresholdWeight: boolean;186 readonly asUpdateThresholdWeight: {187 readonly new_: Weight;188 } & Struct;189 readonly isUpdateWeightRestrictDecay: boolean;190 readonly asUpdateWeightRestrictDecay: {191 readonly new_: Weight;192 } & Struct;193 readonly isUpdateXcmpMaxIndividualWeight: boolean;194 readonly asUpdateXcmpMaxIndividualWeight: {195 readonly new_: Weight;196 } & Struct;197 readonly type: 'ServiceOverweight' | 'SuspendXcmExecution' | 'ResumeXcmExecution' | 'UpdateSuspendThreshold' | 'UpdateDropThreshold' | 'UpdateResumeThreshold' | 'UpdateThresholdWeight' | 'UpdateWeightRestrictDecay' | 'UpdateXcmpMaxIndividualWeight';198}199200/** @name CumulusPalletXcmpQueueError */201export interface CumulusPalletXcmpQueueError extends Enum {202 readonly isFailedToSend: boolean;203 readonly isBadXcmOrigin: boolean;204 readonly isBadXcm: boolean;205 readonly isBadOverweightIndex: boolean;206 readonly isWeightOverLimit: boolean;207 readonly type: 'FailedToSend' | 'BadXcmOrigin' | 'BadXcm' | 'BadOverweightIndex' | 'WeightOverLimit';208}209210/** @name CumulusPalletXcmpQueueEvent */211export interface CumulusPalletXcmpQueueEvent extends Enum {212 readonly isSuccess: boolean;213 readonly asSuccess: {214 readonly messageHash: Option<H256>;215 readonly weight: Weight;216 } & Struct;217 readonly isFail: boolean;218 readonly asFail: {219 readonly messageHash: Option<H256>;220 readonly error: XcmV2TraitsError;221 readonly weight: Weight;222 } & Struct;223 readonly isBadVersion: boolean;224 readonly asBadVersion: {225 readonly messageHash: Option<H256>;226 } & Struct;227 readonly isBadFormat: boolean;228 readonly asBadFormat: {229 readonly messageHash: Option<H256>;230 } & Struct;231 readonly isUpwardMessageSent: boolean;232 readonly asUpwardMessageSent: {233 readonly messageHash: Option<H256>;234 } & Struct;235 readonly isXcmpMessageSent: boolean;236 readonly asXcmpMessageSent: {237 readonly messageHash: Option<H256>;238 } & Struct;239 readonly isOverweightEnqueued: boolean;240 readonly asOverweightEnqueued: {241 readonly sender: u32;242 readonly sentAt: u32;243 readonly index: u64;244 readonly required: Weight;245 } & Struct;246 readonly isOverweightServiced: boolean;247 readonly asOverweightServiced: {248 readonly index: u64;249 readonly used: Weight;250 } & Struct;251 readonly type: 'Success' | 'Fail' | 'BadVersion' | 'BadFormat' | 'UpwardMessageSent' | 'XcmpMessageSent' | 'OverweightEnqueued' | 'OverweightServiced';252}253254/** @name CumulusPalletXcmpQueueInboundChannelDetails */255export interface CumulusPalletXcmpQueueInboundChannelDetails extends Struct {256 readonly sender: u32;257 readonly state: CumulusPalletXcmpQueueInboundState;258 readonly messageMetadata: Vec<ITuple<[u32, PolkadotParachainPrimitivesXcmpMessageFormat]>>;259}260261/** @name CumulusPalletXcmpQueueInboundState */262export interface CumulusPalletXcmpQueueInboundState extends Enum {263 readonly isOk: boolean;264 readonly isSuspended: boolean;265 readonly type: 'Ok' | 'Suspended';266}267268/** @name CumulusPalletXcmpQueueOutboundChannelDetails */269export interface CumulusPalletXcmpQueueOutboundChannelDetails extends Struct {270 readonly recipient: u32;271 readonly state: CumulusPalletXcmpQueueOutboundState;272 readonly signalsExist: bool;273 readonly firstIndex: u16;274 readonly lastIndex: u16;275}276277/** @name CumulusPalletXcmpQueueOutboundState */278export interface CumulusPalletXcmpQueueOutboundState extends Enum {279 readonly isOk: boolean;280 readonly isSuspended: boolean;281 readonly type: 'Ok' | 'Suspended';282}283284/** @name CumulusPalletXcmpQueueQueueConfigData */285export interface CumulusPalletXcmpQueueQueueConfigData extends Struct {286 readonly suspendThreshold: u32;287 readonly dropThreshold: u32;288 readonly resumeThreshold: u32;289 readonly thresholdWeight: Weight;290 readonly weightRestrictDecay: Weight;291 readonly xcmpMaxIndividualWeight: Weight;292}293294/** @name CumulusPrimitivesParachainInherentParachainInherentData */295export interface CumulusPrimitivesParachainInherentParachainInherentData extends Struct {296 readonly validationData: PolkadotPrimitivesV2PersistedValidationData;297 readonly relayChainState: SpTrieStorageProof;298 readonly downwardMessages: Vec<PolkadotCorePrimitivesInboundDownwardMessage>;299 readonly horizontalMessages: BTreeMap<u32, Vec<PolkadotCorePrimitivesInboundHrmpMessage>>;300}301302/** @name EthbloomBloom */303export interface EthbloomBloom extends U8aFixed {}304305/** @name EthereumBlock */306export interface EthereumBlock extends Struct {307 readonly header: EthereumHeader;308 readonly transactions: Vec<EthereumTransactionTransactionV2>;309 readonly ommers: Vec<EthereumHeader>;310}311312/** @name EthereumHeader */313export interface EthereumHeader extends Struct {314 readonly parentHash: H256;315 readonly ommersHash: H256;316 readonly beneficiary: H160;317 readonly stateRoot: H256;318 readonly transactionsRoot: H256;319 readonly receiptsRoot: H256;320 readonly logsBloom: EthbloomBloom;321 readonly difficulty: U256;322 readonly number: U256;323 readonly gasLimit: U256;324 readonly gasUsed: U256;325 readonly timestamp: u64;326 readonly extraData: Bytes;327 readonly mixHash: H256;328 readonly nonce: EthereumTypesHashH64;329}330331/** @name EthereumLog */332export interface EthereumLog extends Struct {333 readonly address: H160;334 readonly topics: Vec<H256>;335 readonly data: Bytes;336}337338/** @name EthereumReceiptEip658ReceiptData */339export interface EthereumReceiptEip658ReceiptData extends Struct {340 readonly statusCode: u8;341 readonly usedGas: U256;342 readonly logsBloom: EthbloomBloom;343 readonly logs: Vec<EthereumLog>;344}345346/** @name EthereumReceiptReceiptV3 */347export interface EthereumReceiptReceiptV3 extends Enum {348 readonly isLegacy: boolean;349 readonly asLegacy: EthereumReceiptEip658ReceiptData;350 readonly isEip2930: boolean;351 readonly asEip2930: EthereumReceiptEip658ReceiptData;352 readonly isEip1559: boolean;353 readonly asEip1559: EthereumReceiptEip658ReceiptData;354 readonly type: 'Legacy' | 'Eip2930' | 'Eip1559';355}356357/** @name EthereumTransactionAccessListItem */358export interface EthereumTransactionAccessListItem extends Struct {359 readonly address: H160;360 readonly storageKeys: Vec<H256>;361}362363/** @name EthereumTransactionEip1559Transaction */364export interface EthereumTransactionEip1559Transaction extends Struct {365 readonly chainId: u64;366 readonly nonce: U256;367 readonly maxPriorityFeePerGas: U256;368 readonly maxFeePerGas: U256;369 readonly gasLimit: U256;370 readonly action: EthereumTransactionTransactionAction;371 readonly value: U256;372 readonly input: Bytes;373 readonly accessList: Vec<EthereumTransactionAccessListItem>;374 readonly oddYParity: bool;375 readonly r: H256;376 readonly s: H256;377}378379/** @name EthereumTransactionEip2930Transaction */380export interface EthereumTransactionEip2930Transaction extends Struct {381 readonly chainId: u64;382 readonly nonce: U256;383 readonly gasPrice: U256;384 readonly gasLimit: U256;385 readonly action: EthereumTransactionTransactionAction;386 readonly value: U256;387 readonly input: Bytes;388 readonly accessList: Vec<EthereumTransactionAccessListItem>;389 readonly oddYParity: bool;390 readonly r: H256;391 readonly s: H256;392}393394/** @name EthereumTransactionLegacyTransaction */395export interface EthereumTransactionLegacyTransaction extends Struct {396 readonly nonce: U256;397 readonly gasPrice: U256;398 readonly gasLimit: U256;399 readonly action: EthereumTransactionTransactionAction;400 readonly value: U256;401 readonly input: Bytes;402 readonly signature: EthereumTransactionTransactionSignature;403}404405/** @name EthereumTransactionTransactionAction */406export interface EthereumTransactionTransactionAction extends Enum {407 readonly isCall: boolean;408 readonly asCall: H160;409 readonly isCreate: boolean;410 readonly type: 'Call' | 'Create';411}412413/** @name EthereumTransactionTransactionSignature */414export interface EthereumTransactionTransactionSignature extends Struct {415 readonly v: u64;416 readonly r: H256;417 readonly s: H256;418}419420/** @name EthereumTransactionTransactionV2 */421export interface EthereumTransactionTransactionV2 extends Enum {422 readonly isLegacy: boolean;423 readonly asLegacy: EthereumTransactionLegacyTransaction;424 readonly isEip2930: boolean;425 readonly asEip2930: EthereumTransactionEip2930Transaction;426 readonly isEip1559: boolean;427 readonly asEip1559: EthereumTransactionEip1559Transaction;428 readonly type: 'Legacy' | 'Eip2930' | 'Eip1559';429}430431/** @name EthereumTypesHashH64 */432export interface EthereumTypesHashH64 extends U8aFixed {}433434/** @name EvmCoreErrorExitError */435export interface EvmCoreErrorExitError extends Enum {436 readonly isStackUnderflow: boolean;437 readonly isStackOverflow: boolean;438 readonly isInvalidJump: boolean;439 readonly isInvalidRange: boolean;440 readonly isDesignatedInvalid: boolean;441 readonly isCallTooDeep: boolean;442 readonly isCreateCollision: boolean;443 readonly isCreateContractLimit: boolean;444 readonly isOutOfOffset: boolean;445 readonly isOutOfGas: boolean;446 readonly isOutOfFund: boolean;447 readonly isPcUnderflow: boolean;448 readonly isCreateEmpty: boolean;449 readonly isOther: boolean;450 readonly asOther: Text;451 readonly isInvalidCode: boolean;452 readonly type: 'StackUnderflow' | 'StackOverflow' | 'InvalidJump' | 'InvalidRange' | 'DesignatedInvalid' | 'CallTooDeep' | 'CreateCollision' | 'CreateContractLimit' | 'OutOfOffset' | 'OutOfGas' | 'OutOfFund' | 'PcUnderflow' | 'CreateEmpty' | 'Other' | 'InvalidCode';453}454455/** @name EvmCoreErrorExitFatal */456export interface EvmCoreErrorExitFatal extends Enum {457 readonly isNotSupported: boolean;458 readonly isUnhandledInterrupt: boolean;459 readonly isCallErrorAsFatal: boolean;460 readonly asCallErrorAsFatal: EvmCoreErrorExitError;461 readonly isOther: boolean;462 readonly asOther: Text;463 readonly type: 'NotSupported' | 'UnhandledInterrupt' | 'CallErrorAsFatal' | 'Other';464}465466/** @name EvmCoreErrorExitReason */467export interface EvmCoreErrorExitReason extends Enum {468 readonly isSucceed: boolean;469 readonly asSucceed: EvmCoreErrorExitSucceed;470 readonly isError: boolean;471 readonly asError: EvmCoreErrorExitError;472 readonly isRevert: boolean;473 readonly asRevert: EvmCoreErrorExitRevert;474 readonly isFatal: boolean;475 readonly asFatal: EvmCoreErrorExitFatal;476 readonly type: 'Succeed' | 'Error' | 'Revert' | 'Fatal';477}478479/** @name EvmCoreErrorExitRevert */480export interface EvmCoreErrorExitRevert extends Enum {481 readonly isReverted: boolean;482 readonly type: 'Reverted';483}484485/** @name EvmCoreErrorExitSucceed */486export interface EvmCoreErrorExitSucceed extends Enum {487 readonly isStopped: boolean;488 readonly isReturned: boolean;489 readonly isSuicided: boolean;490 readonly type: 'Stopped' | 'Returned' | 'Suicided';491}492493/** @name FpRpcTransactionStatus */494export interface FpRpcTransactionStatus extends Struct {495 readonly transactionHash: H256;496 readonly transactionIndex: u32;497 readonly from: H160;498 readonly to: Option<H160>;499 readonly contractAddress: Option<H160>;500 readonly logs: Vec<EthereumLog>;501 readonly logsBloom: EthbloomBloom;502}503504/** @name FrameSupportDispatchDispatchClass */505export interface FrameSupportDispatchDispatchClass extends Enum {506 readonly isNormal: boolean;507 readonly isOperational: boolean;508 readonly isMandatory: boolean;509 readonly type: 'Normal' | 'Operational' | 'Mandatory';510}511512/** @name FrameSupportDispatchDispatchInfo */513export interface FrameSupportDispatchDispatchInfo extends Struct {514 readonly weight: Weight;515 readonly class: FrameSupportDispatchDispatchClass;516 readonly paysFee: FrameSupportDispatchPays;517}518519/** @name FrameSupportDispatchPays */520export interface FrameSupportDispatchPays extends Enum {521 readonly isYes: boolean;522 readonly isNo: boolean;523 readonly type: 'Yes' | 'No';524}525526/** @name FrameSupportDispatchPerDispatchClassU32 */527export interface FrameSupportDispatchPerDispatchClassU32 extends Struct {528 readonly normal: u32;529 readonly operational: u32;530 readonly mandatory: u32;531}532533/** @name FrameSupportDispatchPerDispatchClassWeight */534export interface FrameSupportDispatchPerDispatchClassWeight extends Struct {535 readonly normal: Weight;536 readonly operational: Weight;537 readonly mandatory: Weight;538}539540/** @name FrameSupportDispatchPerDispatchClassWeightsPerClass */541export interface FrameSupportDispatchPerDispatchClassWeightsPerClass extends Struct {542 readonly normal: FrameSystemLimitsWeightsPerClass;543 readonly operational: FrameSystemLimitsWeightsPerClass;544 readonly mandatory: FrameSystemLimitsWeightsPerClass;545}546547/** @name FrameSupportDispatchRawOrigin */548export interface FrameSupportDispatchRawOrigin extends Enum {549 readonly isRoot: boolean;550 readonly isSigned: boolean;551 readonly asSigned: AccountId32;552 readonly isNone: boolean;553 readonly type: 'Root' | 'Signed' | 'None';554}555556/** @name FrameSupportPalletId */557export interface FrameSupportPalletId extends U8aFixed {}558559/** @name FrameSupportTokensMiscBalanceStatus */560export interface FrameSupportTokensMiscBalanceStatus extends Enum {561 readonly isFree: boolean;562 readonly isReserved: boolean;563 readonly type: 'Free' | 'Reserved';564}565566/** @name FrameSystemAccountInfo */567export interface FrameSystemAccountInfo extends Struct {568 readonly nonce: u32;569 readonly consumers: u32;570 readonly providers: u32;571 readonly sufficients: u32;572 readonly data: PalletBalancesAccountData;573}574575/** @name FrameSystemCall */576export interface FrameSystemCall extends Enum {577 readonly isFillBlock: boolean;578 readonly asFillBlock: {579 readonly ratio: Perbill;580 } & Struct;581 readonly isRemark: boolean;582 readonly asRemark: {583 readonly remark: Bytes;584 } & Struct;585 readonly isSetHeapPages: boolean;586 readonly asSetHeapPages: {587 readonly pages: u64;588 } & Struct;589 readonly isSetCode: boolean;590 readonly asSetCode: {591 readonly code: Bytes;592 } & Struct;593 readonly isSetCodeWithoutChecks: boolean;594 readonly asSetCodeWithoutChecks: {595 readonly code: Bytes;596 } & Struct;597 readonly isSetStorage: boolean;598 readonly asSetStorage: {599 readonly items: Vec<ITuple<[Bytes, Bytes]>>;600 } & Struct;601 readonly isKillStorage: boolean;602 readonly asKillStorage: {603 readonly keys_: Vec<Bytes>;604 } & Struct;605 readonly isKillPrefix: boolean;606 readonly asKillPrefix: {607 readonly prefix: Bytes;608 readonly subkeys: u32;609 } & Struct;610 readonly isRemarkWithEvent: boolean;611 readonly asRemarkWithEvent: {612 readonly remark: Bytes;613 } & Struct;614 readonly type: 'FillBlock' | 'Remark' | 'SetHeapPages' | 'SetCode' | 'SetCodeWithoutChecks' | 'SetStorage' | 'KillStorage' | 'KillPrefix' | 'RemarkWithEvent';615}616617/** @name FrameSystemError */618export interface FrameSystemError extends Enum {619 readonly isInvalidSpecName: boolean;620 readonly isSpecVersionNeedsToIncrease: boolean;621 readonly isFailedToExtractRuntimeVersion: boolean;622 readonly isNonDefaultComposite: boolean;623 readonly isNonZeroRefCount: boolean;624 readonly isCallFiltered: boolean;625 readonly type: 'InvalidSpecName' | 'SpecVersionNeedsToIncrease' | 'FailedToExtractRuntimeVersion' | 'NonDefaultComposite' | 'NonZeroRefCount' | 'CallFiltered';626}627628/** @name FrameSystemEvent */629export interface FrameSystemEvent extends Enum {630 readonly isExtrinsicSuccess: boolean;631 readonly asExtrinsicSuccess: {632 readonly dispatchInfo: FrameSupportDispatchDispatchInfo;633 } & Struct;634 readonly isExtrinsicFailed: boolean;635 readonly asExtrinsicFailed: {636 readonly dispatchError: SpRuntimeDispatchError;637 readonly dispatchInfo: FrameSupportDispatchDispatchInfo;638 } & Struct;639 readonly isCodeUpdated: boolean;640 readonly isNewAccount: boolean;641 readonly asNewAccount: {642 readonly account: AccountId32;643 } & Struct;644 readonly isKilledAccount: boolean;645 readonly asKilledAccount: {646 readonly account: AccountId32;647 } & Struct;648 readonly isRemarked: boolean;649 readonly asRemarked: {650 readonly sender: AccountId32;651 readonly hash_: H256;652 } & Struct;653 readonly type: 'ExtrinsicSuccess' | 'ExtrinsicFailed' | 'CodeUpdated' | 'NewAccount' | 'KilledAccount' | 'Remarked';654}655656/** @name FrameSystemEventRecord */657export interface FrameSystemEventRecord extends Struct {658 readonly phase: FrameSystemPhase;659 readonly event: Event;660 readonly topics: Vec<H256>;661}662663/** @name FrameSystemExtensionsCheckGenesis */664export interface FrameSystemExtensionsCheckGenesis extends Null {}665666/** @name FrameSystemExtensionsCheckNonce */667export interface FrameSystemExtensionsCheckNonce extends Compact<u32> {}668669/** @name FrameSystemExtensionsCheckSpecVersion */670export interface FrameSystemExtensionsCheckSpecVersion extends Null {}671672/** @name FrameSystemExtensionsCheckTxVersion */673export interface FrameSystemExtensionsCheckTxVersion extends Null {}674675/** @name FrameSystemExtensionsCheckWeight */676export interface FrameSystemExtensionsCheckWeight extends Null {}677678/** @name FrameSystemLastRuntimeUpgradeInfo */679export interface FrameSystemLastRuntimeUpgradeInfo extends Struct {680 readonly specVersion: Compact<u32>;681 readonly specName: Text;682}683684/** @name FrameSystemLimitsBlockLength */685export interface FrameSystemLimitsBlockLength extends Struct {686 readonly max: FrameSupportDispatchPerDispatchClassU32;687}688689/** @name FrameSystemLimitsBlockWeights */690export interface FrameSystemLimitsBlockWeights extends Struct {691 readonly baseBlock: Weight;692 readonly maxBlock: Weight;693 readonly perClass: FrameSupportDispatchPerDispatchClassWeightsPerClass;694}695696/** @name FrameSystemLimitsWeightsPerClass */697export interface FrameSystemLimitsWeightsPerClass extends Struct {698 readonly baseExtrinsic: Weight;699 readonly maxExtrinsic: Option<Weight>;700 readonly maxTotal: Option<Weight>;701 readonly reserved: Option<Weight>;702}703704/** @name FrameSystemPhase */705export interface FrameSystemPhase extends Enum {706 readonly isApplyExtrinsic: boolean;707 readonly asApplyExtrinsic: u32;708 readonly isFinalization: boolean;709 readonly isInitialization: boolean;710 readonly type: 'ApplyExtrinsic' | 'Finalization' | 'Initialization';711}712713/** @name OpalRuntimeOriginCaller */714export interface OpalRuntimeOriginCaller extends Enum {715 readonly isSystem: boolean;716 readonly asSystem: FrameSupportDispatchRawOrigin;717 readonly isVoid: boolean;718 readonly asVoid: SpCoreVoid;719 readonly isPolkadotXcm: boolean;720 readonly asPolkadotXcm: PalletXcmOrigin;721 readonly isCumulusXcm: boolean;722 readonly asCumulusXcm: CumulusPalletXcmOrigin;723 readonly isEthereum: boolean;724 readonly asEthereum: PalletEthereumRawOrigin;725 readonly type: 'System' | 'Void' | 'PolkadotXcm' | 'CumulusXcm' | 'Ethereum';726}727728/** @name OpalRuntimeRuntime */729export interface OpalRuntimeRuntime extends Null {}730731/** @name OpalRuntimeRuntimeCommonMaintenanceCheckMaintenance */732export interface OpalRuntimeRuntimeCommonMaintenanceCheckMaintenance extends Null {}733734/** @name OrmlTokensAccountData */735export interface OrmlTokensAccountData extends Struct {736 readonly free: u128;737 readonly reserved: u128;738 readonly frozen: u128;739}740741/** @name OrmlTokensBalanceLock */742export interface OrmlTokensBalanceLock extends Struct {743 readonly id: U8aFixed;744 readonly amount: u128;745}746747/** @name OrmlTokensModuleCall */748export interface OrmlTokensModuleCall extends Enum {749 readonly isTransfer: boolean;750 readonly asTransfer: {751 readonly dest: MultiAddress;752 readonly currencyId: PalletForeignAssetsAssetIds;753 readonly amount: Compact<u128>;754 } & Struct;755 readonly isTransferAll: boolean;756 readonly asTransferAll: {757 readonly dest: MultiAddress;758 readonly currencyId: PalletForeignAssetsAssetIds;759 readonly keepAlive: bool;760 } & Struct;761 readonly isTransferKeepAlive: boolean;762 readonly asTransferKeepAlive: {763 readonly dest: MultiAddress;764 readonly currencyId: PalletForeignAssetsAssetIds;765 readonly amount: Compact<u128>;766 } & Struct;767 readonly isForceTransfer: boolean;768 readonly asForceTransfer: {769 readonly source: MultiAddress;770 readonly dest: MultiAddress;771 readonly currencyId: PalletForeignAssetsAssetIds;772 readonly amount: Compact<u128>;773 } & Struct;774 readonly isSetBalance: boolean;775 readonly asSetBalance: {776 readonly who: MultiAddress;777 readonly currencyId: PalletForeignAssetsAssetIds;778 readonly newFree: Compact<u128>;779 readonly newReserved: Compact<u128>;780 } & Struct;781 readonly type: 'Transfer' | 'TransferAll' | 'TransferKeepAlive' | 'ForceTransfer' | 'SetBalance';782}783784/** @name OrmlTokensModuleError */785export interface OrmlTokensModuleError extends Enum {786 readonly isBalanceTooLow: boolean;787 readonly isAmountIntoBalanceFailed: boolean;788 readonly isLiquidityRestrictions: boolean;789 readonly isMaxLocksExceeded: boolean;790 readonly isKeepAlive: boolean;791 readonly isExistentialDeposit: boolean;792 readonly isDeadAccount: boolean;793 readonly isTooManyReserves: boolean;794 readonly type: 'BalanceTooLow' | 'AmountIntoBalanceFailed' | 'LiquidityRestrictions' | 'MaxLocksExceeded' | 'KeepAlive' | 'ExistentialDeposit' | 'DeadAccount' | 'TooManyReserves';795}796797/** @name OrmlTokensModuleEvent */798export interface OrmlTokensModuleEvent extends Enum {799 readonly isEndowed: boolean;800 readonly asEndowed: {801 readonly currencyId: PalletForeignAssetsAssetIds;802 readonly who: AccountId32;803 readonly amount: u128;804 } & Struct;805 readonly isDustLost: boolean;806 readonly asDustLost: {807 readonly currencyId: PalletForeignAssetsAssetIds;808 readonly who: AccountId32;809 readonly amount: u128;810 } & Struct;811 readonly isTransfer: boolean;812 readonly asTransfer: {813 readonly currencyId: PalletForeignAssetsAssetIds;814 readonly from: AccountId32;815 readonly to: AccountId32;816 readonly amount: u128;817 } & Struct;818 readonly isReserved: boolean;819 readonly asReserved: {820 readonly currencyId: PalletForeignAssetsAssetIds;821 readonly who: AccountId32;822 readonly amount: u128;823 } & Struct;824 readonly isUnreserved: boolean;825 readonly asUnreserved: {826 readonly currencyId: PalletForeignAssetsAssetIds;827 readonly who: AccountId32;828 readonly amount: u128;829 } & Struct;830 readonly isReserveRepatriated: boolean;831 readonly asReserveRepatriated: {832 readonly currencyId: PalletForeignAssetsAssetIds;833 readonly from: AccountId32;834 readonly to: AccountId32;835 readonly amount: u128;836 readonly status: FrameSupportTokensMiscBalanceStatus;837 } & Struct;838 readonly isBalanceSet: boolean;839 readonly asBalanceSet: {840 readonly currencyId: PalletForeignAssetsAssetIds;841 readonly who: AccountId32;842 readonly free: u128;843 readonly reserved: u128;844 } & Struct;845 readonly isTotalIssuanceSet: boolean;846 readonly asTotalIssuanceSet: {847 readonly currencyId: PalletForeignAssetsAssetIds;848 readonly amount: u128;849 } & Struct;850 readonly isWithdrawn: boolean;851 readonly asWithdrawn: {852 readonly currencyId: PalletForeignAssetsAssetIds;853 readonly who: AccountId32;854 readonly amount: u128;855 } & Struct;856 readonly isSlashed: boolean;857 readonly asSlashed: {858 readonly currencyId: PalletForeignAssetsAssetIds;859 readonly who: AccountId32;860 readonly freeAmount: u128;861 readonly reservedAmount: u128;862 } & Struct;863 readonly isDeposited: boolean;864 readonly asDeposited: {865 readonly currencyId: PalletForeignAssetsAssetIds;866 readonly who: AccountId32;867 readonly amount: u128;868 } & Struct;869 readonly isLockSet: boolean;870 readonly asLockSet: {871 readonly lockId: U8aFixed;872 readonly currencyId: PalletForeignAssetsAssetIds;873 readonly who: AccountId32;874 readonly amount: u128;875 } & Struct;876 readonly isLockRemoved: boolean;877 readonly asLockRemoved: {878 readonly lockId: U8aFixed;879 readonly currencyId: PalletForeignAssetsAssetIds;880 readonly who: AccountId32;881 } & Struct;882 readonly type: 'Endowed' | 'DustLost' | 'Transfer' | 'Reserved' | 'Unreserved' | 'ReserveRepatriated' | 'BalanceSet' | 'TotalIssuanceSet' | 'Withdrawn' | 'Slashed' | 'Deposited' | 'LockSet' | 'LockRemoved';883}884885/** @name OrmlTokensReserveData */886export interface OrmlTokensReserveData extends Struct {887 readonly id: Null;888 readonly amount: u128;889}890891/** @name OrmlVestingModuleCall */892export interface OrmlVestingModuleCall extends Enum {893 readonly isClaim: boolean;894 readonly isVestedTransfer: boolean;895 readonly asVestedTransfer: {896 readonly dest: MultiAddress;897 readonly schedule: OrmlVestingVestingSchedule;898 } & Struct;899 readonly isUpdateVestingSchedules: boolean;900 readonly asUpdateVestingSchedules: {901 readonly who: MultiAddress;902 readonly vestingSchedules: Vec<OrmlVestingVestingSchedule>;903 } & Struct;904 readonly isClaimFor: boolean;905 readonly asClaimFor: {906 readonly dest: MultiAddress;907 } & Struct;908 readonly type: 'Claim' | 'VestedTransfer' | 'UpdateVestingSchedules' | 'ClaimFor';909}910911/** @name OrmlVestingModuleError */912export interface OrmlVestingModuleError extends Enum {913 readonly isZeroVestingPeriod: boolean;914 readonly isZeroVestingPeriodCount: boolean;915 readonly isInsufficientBalanceToLock: boolean;916 readonly isTooManyVestingSchedules: boolean;917 readonly isAmountLow: boolean;918 readonly isMaxVestingSchedulesExceeded: boolean;919 readonly type: 'ZeroVestingPeriod' | 'ZeroVestingPeriodCount' | 'InsufficientBalanceToLock' | 'TooManyVestingSchedules' | 'AmountLow' | 'MaxVestingSchedulesExceeded';920}921922/** @name OrmlVestingModuleEvent */923export interface OrmlVestingModuleEvent extends Enum {924 readonly isVestingScheduleAdded: boolean;925 readonly asVestingScheduleAdded: {926 readonly from: AccountId32;927 readonly to: AccountId32;928 readonly vestingSchedule: OrmlVestingVestingSchedule;929 } & Struct;930 readonly isClaimed: boolean;931 readonly asClaimed: {932 readonly who: AccountId32;933 readonly amount: u128;934 } & Struct;935 readonly isVestingSchedulesUpdated: boolean;936 readonly asVestingSchedulesUpdated: {937 readonly who: AccountId32;938 } & Struct;939 readonly type: 'VestingScheduleAdded' | 'Claimed' | 'VestingSchedulesUpdated';940}941942/** @name OrmlVestingVestingSchedule */943export interface OrmlVestingVestingSchedule extends Struct {944 readonly start: u32;945 readonly period: u32;946 readonly periodCount: u32;947 readonly perPeriod: Compact<u128>;948}949950/** @name OrmlXtokensModuleCall */951export interface OrmlXtokensModuleCall extends Enum {952 readonly isTransfer: boolean;953 readonly asTransfer: {954 readonly currencyId: PalletForeignAssetsAssetIds;955 readonly amount: u128;956 readonly dest: XcmVersionedMultiLocation;957 readonly destWeight: u64;958 } & Struct;959 readonly isTransferMultiasset: boolean;960 readonly asTransferMultiasset: {961 readonly asset: XcmVersionedMultiAsset;962 readonly dest: XcmVersionedMultiLocation;963 readonly destWeight: u64;964 } & Struct;965 readonly isTransferWithFee: boolean;966 readonly asTransferWithFee: {967 readonly currencyId: PalletForeignAssetsAssetIds;968 readonly amount: u128;969 readonly fee: u128;970 readonly dest: XcmVersionedMultiLocation;971 readonly destWeight: u64;972 } & Struct;973 readonly isTransferMultiassetWithFee: boolean;974 readonly asTransferMultiassetWithFee: {975 readonly asset: XcmVersionedMultiAsset;976 readonly fee: XcmVersionedMultiAsset;977 readonly dest: XcmVersionedMultiLocation;978 readonly destWeight: u64;979 } & Struct;980 readonly isTransferMulticurrencies: boolean;981 readonly asTransferMulticurrencies: {982 readonly currencies: Vec<ITuple<[PalletForeignAssetsAssetIds, u128]>>;983 readonly feeItem: u32;984 readonly dest: XcmVersionedMultiLocation;985 readonly destWeight: u64;986 } & Struct;987 readonly isTransferMultiassets: boolean;988 readonly asTransferMultiassets: {989 readonly assets: XcmVersionedMultiAssets;990 readonly feeItem: u32;991 readonly dest: XcmVersionedMultiLocation;992 readonly destWeight: u64;993 } & Struct;994 readonly type: 'Transfer' | 'TransferMultiasset' | 'TransferWithFee' | 'TransferMultiassetWithFee' | 'TransferMulticurrencies' | 'TransferMultiassets';995}996997/** @name OrmlXtokensModuleError */998export interface OrmlXtokensModuleError extends Enum {999 readonly isAssetHasNoReserve: boolean;1000 readonly isNotCrossChainTransfer: boolean;1001 readonly isInvalidDest: boolean;1002 readonly isNotCrossChainTransferableCurrency: boolean;1003 readonly isUnweighableMessage: boolean;1004 readonly isXcmExecutionFailed: boolean;1005 readonly isCannotReanchor: boolean;1006 readonly isInvalidAncestry: boolean;1007 readonly isInvalidAsset: boolean;1008 readonly isDestinationNotInvertible: boolean;1009 readonly isBadVersion: boolean;1010 readonly isDistinctReserveForAssetAndFee: boolean;1011 readonly isZeroFee: boolean;1012 readonly isZeroAmount: boolean;1013 readonly isTooManyAssetsBeingSent: boolean;1014 readonly isAssetIndexNonExistent: boolean;1015 readonly isFeeNotEnough: boolean;1016 readonly isNotSupportedMultiLocation: boolean;1017 readonly isMinXcmFeeNotDefined: boolean;1018 readonly type: 'AssetHasNoReserve' | 'NotCrossChainTransfer' | 'InvalidDest' | 'NotCrossChainTransferableCurrency' | 'UnweighableMessage' | 'XcmExecutionFailed' | 'CannotReanchor' | 'InvalidAncestry' | 'InvalidAsset' | 'DestinationNotInvertible' | 'BadVersion' | 'DistinctReserveForAssetAndFee' | 'ZeroFee' | 'ZeroAmount' | 'TooManyAssetsBeingSent' | 'AssetIndexNonExistent' | 'FeeNotEnough' | 'NotSupportedMultiLocation' | 'MinXcmFeeNotDefined';1019}10201021/** @name OrmlXtokensModuleEvent */1022export interface OrmlXtokensModuleEvent extends Enum {1023 readonly isTransferredMultiAssets: boolean;1024 readonly asTransferredMultiAssets: {1025 readonly sender: AccountId32;1026 readonly assets: XcmV1MultiassetMultiAssets;1027 readonly fee: XcmV1MultiAsset;1028 readonly dest: XcmV1MultiLocation;1029 } & Struct;1030 readonly type: 'TransferredMultiAssets';1031}10321033/** @name PalletAppPromotionCall */1034export interface PalletAppPromotionCall extends Enum {1035 readonly isSetAdminAddress: boolean;1036 readonly asSetAdminAddress: {1037 readonly admin: PalletEvmAccountBasicCrossAccountIdRepr;1038 } & Struct;1039 readonly isStake: boolean;1040 readonly asStake: {1041 readonly amount: u128;1042 } & Struct;1043 readonly isUnstake: boolean;1044 readonly isSponsorCollection: boolean;1045 readonly asSponsorCollection: {1046 readonly collectionId: u32;1047 } & Struct;1048 readonly isStopSponsoringCollection: boolean;1049 readonly asStopSponsoringCollection: {1050 readonly collectionId: u32;1051 } & Struct;1052 readonly isSponsorContract: boolean;1053 readonly asSponsorContract: {1054 readonly contractId: H160;1055 } & Struct;1056 readonly isStopSponsoringContract: boolean;1057 readonly asStopSponsoringContract: {1058 readonly contractId: H160;1059 } & Struct;1060 readonly isPayoutStakers: boolean;1061 readonly asPayoutStakers: {1062 readonly stakersNumber: Option<u8>;1063 } & Struct;1064 readonly type: 'SetAdminAddress' | 'Stake' | 'Unstake' | 'SponsorCollection' | 'StopSponsoringCollection' | 'SponsorContract' | 'StopSponsoringContract' | 'PayoutStakers';1065}10661067/** @name PalletAppPromotionError */1068export interface PalletAppPromotionError extends Enum {1069 readonly isAdminNotSet: boolean;1070 readonly isNoPermission: boolean;1071 readonly isNotSufficientFunds: boolean;1072 readonly isPendingForBlockOverflow: boolean;1073 readonly isSponsorNotSet: boolean;1074 readonly isIncorrectLockedBalanceOperation: boolean;1075 readonly type: 'AdminNotSet' | 'NoPermission' | 'NotSufficientFunds' | 'PendingForBlockOverflow' | 'SponsorNotSet' | 'IncorrectLockedBalanceOperation';1076}10771078/** @name PalletAppPromotionEvent */1079export interface PalletAppPromotionEvent extends Enum {1080 readonly isStakingRecalculation: boolean;1081 readonly asStakingRecalculation: ITuple<[AccountId32, u128, u128]>;1082 readonly isStake: boolean;1083 readonly asStake: ITuple<[AccountId32, u128]>;1084 readonly isUnstake: boolean;1085 readonly asUnstake: ITuple<[AccountId32, u128]>;1086 readonly isSetAdmin: boolean;1087 readonly asSetAdmin: AccountId32;1088 readonly type: 'StakingRecalculation' | 'Stake' | 'Unstake' | 'SetAdmin';1089}10901091/** @name PalletBalancesAccountData */1092export interface PalletBalancesAccountData extends Struct {1093 readonly free: u128;1094 readonly reserved: u128;1095 readonly miscFrozen: u128;1096 readonly feeFrozen: u128;1097}10981099/** @name PalletBalancesBalanceLock */1100export interface PalletBalancesBalanceLock extends Struct {1101 readonly id: U8aFixed;1102 readonly amount: u128;1103 readonly reasons: PalletBalancesReasons;1104}11051106/** @name PalletBalancesCall */1107export interface PalletBalancesCall extends Enum {1108 readonly isTransfer: boolean;1109 readonly asTransfer: {1110 readonly dest: MultiAddress;1111 readonly value: Compact<u128>;1112 } & Struct;1113 readonly isSetBalance: boolean;1114 readonly asSetBalance: {1115 readonly who: MultiAddress;1116 readonly newFree: Compact<u128>;1117 readonly newReserved: Compact<u128>;1118 } & Struct;1119 readonly isForceTransfer: boolean;1120 readonly asForceTransfer: {1121 readonly source: MultiAddress;1122 readonly dest: MultiAddress;1123 readonly value: Compact<u128>;1124 } & Struct;1125 readonly isTransferKeepAlive: boolean;1126 readonly asTransferKeepAlive: {1127 readonly dest: MultiAddress;1128 readonly value: Compact<u128>;1129 } & Struct;1130 readonly isTransferAll: boolean;1131 readonly asTransferAll: {1132 readonly dest: MultiAddress;1133 readonly keepAlive: bool;1134 } & Struct;1135 readonly isForceUnreserve: boolean;1136 readonly asForceUnreserve: {1137 readonly who: MultiAddress;1138 readonly amount: u128;1139 } & Struct;1140 readonly type: 'Transfer' | 'SetBalance' | 'ForceTransfer' | 'TransferKeepAlive' | 'TransferAll' | 'ForceUnreserve';1141}11421143/** @name PalletBalancesError */1144export interface PalletBalancesError extends Enum {1145 readonly isVestingBalance: boolean;1146 readonly isLiquidityRestrictions: boolean;1147 readonly isInsufficientBalance: boolean;1148 readonly isExistentialDeposit: boolean;1149 readonly isKeepAlive: boolean;1150 readonly isExistingVestingSchedule: boolean;1151 readonly isDeadAccount: boolean;1152 readonly isTooManyReserves: boolean;1153 readonly type: 'VestingBalance' | 'LiquidityRestrictions' | 'InsufficientBalance' | 'ExistentialDeposit' | 'KeepAlive' | 'ExistingVestingSchedule' | 'DeadAccount' | 'TooManyReserves';1154}11551156/** @name PalletBalancesEvent */1157export interface PalletBalancesEvent extends Enum {1158 readonly isEndowed: boolean;1159 readonly asEndowed: {1160 readonly account: AccountId32;1161 readonly freeBalance: u128;1162 } & Struct;1163 readonly isDustLost: boolean;1164 readonly asDustLost: {1165 readonly account: AccountId32;1166 readonly amount: u128;1167 } & Struct;1168 readonly isTransfer: boolean;1169 readonly asTransfer: {1170 readonly from: AccountId32;1171 readonly to: AccountId32;1172 readonly amount: u128;1173 } & Struct;1174 readonly isBalanceSet: boolean;1175 readonly asBalanceSet: {1176 readonly who: AccountId32;1177 readonly free: u128;1178 readonly reserved: u128;1179 } & Struct;1180 readonly isReserved: boolean;1181 readonly asReserved: {1182 readonly who: AccountId32;1183 readonly amount: u128;1184 } & Struct;1185 readonly isUnreserved: boolean;1186 readonly asUnreserved: {1187 readonly who: AccountId32;1188 readonly amount: u128;1189 } & Struct;1190 readonly isReserveRepatriated: boolean;1191 readonly asReserveRepatriated: {1192 readonly from: AccountId32;1193 readonly to: AccountId32;1194 readonly amount: u128;1195 readonly destinationStatus: FrameSupportTokensMiscBalanceStatus;1196 } & Struct;1197 readonly isDeposit: boolean;1198 readonly asDeposit: {1199 readonly who: AccountId32;1200 readonly amount: u128;1201 } & Struct;1202 readonly isWithdraw: boolean;1203 readonly asWithdraw: {1204 readonly who: AccountId32;1205 readonly amount: u128;1206 } & Struct;1207 readonly isSlashed: boolean;1208 readonly asSlashed: {1209 readonly who: AccountId32;1210 readonly amount: u128;1211 } & Struct;1212 readonly type: 'Endowed' | 'DustLost' | 'Transfer' | 'BalanceSet' | 'Reserved' | 'Unreserved' | 'ReserveRepatriated' | 'Deposit' | 'Withdraw' | 'Slashed';1213}12141215/** @name PalletBalancesReasons */1216export interface PalletBalancesReasons extends Enum {1217 readonly isFee: boolean;1218 readonly isMisc: boolean;1219 readonly isAll: boolean;1220 readonly type: 'Fee' | 'Misc' | 'All';1221}12221223/** @name PalletBalancesReleases */1224export interface PalletBalancesReleases extends Enum {1225 readonly isV100: boolean;1226 readonly isV200: boolean;1227 readonly type: 'V100' | 'V200';1228}12291230/** @name PalletBalancesReserveData */1231export interface PalletBalancesReserveData extends Struct {1232 readonly id: U8aFixed;1233 readonly amount: u128;1234}12351236/** @name PalletCommonError */1237export interface PalletCommonError extends Enum {1238 readonly isCollectionNotFound: boolean;1239 readonly isMustBeTokenOwner: boolean;1240 readonly isNoPermission: boolean;1241 readonly isCantDestroyNotEmptyCollection: boolean;1242 readonly isPublicMintingNotAllowed: boolean;1243 readonly isAddressNotInAllowlist: boolean;1244 readonly isCollectionNameLimitExceeded: boolean;1245 readonly isCollectionDescriptionLimitExceeded: boolean;1246 readonly isCollectionTokenPrefixLimitExceeded: boolean;1247 readonly isTotalCollectionsLimitExceeded: boolean;1248 readonly isCollectionAdminCountExceeded: boolean;1249 readonly isCollectionLimitBoundsExceeded: boolean;1250 readonly isOwnerPermissionsCantBeReverted: boolean;1251 readonly isTransferNotAllowed: boolean;1252 readonly isAccountTokenLimitExceeded: boolean;1253 readonly isCollectionTokenLimitExceeded: boolean;1254 readonly isMetadataFlagFrozen: boolean;1255 readonly isTokenNotFound: boolean;1256 readonly isTokenValueTooLow: boolean;1257 readonly isApprovedValueTooLow: boolean;1258 readonly isCantApproveMoreThanOwned: boolean;1259 readonly isAddressIsZero: boolean;1260 readonly isUnsupportedOperation: boolean;1261 readonly isNotSufficientFounds: boolean;1262 readonly isUserIsNotAllowedToNest: boolean;1263 readonly isSourceCollectionIsNotAllowedToNest: boolean;1264 readonly isCollectionFieldSizeExceeded: boolean;1265 readonly isNoSpaceForProperty: boolean;1266 readonly isPropertyLimitReached: boolean;1267 readonly isPropertyKeyIsTooLong: boolean;1268 readonly isInvalidCharacterInPropertyKey: boolean;1269 readonly isEmptyPropertyKey: boolean;1270 readonly isCollectionIsExternal: boolean;1271 readonly isCollectionIsInternal: boolean;1272 readonly type: 'CollectionNotFound' | 'MustBeTokenOwner' | 'NoPermission' | 'CantDestroyNotEmptyCollection' | 'PublicMintingNotAllowed' | 'AddressNotInAllowlist' | 'CollectionNameLimitExceeded' | 'CollectionDescriptionLimitExceeded' | 'CollectionTokenPrefixLimitExceeded' | 'TotalCollectionsLimitExceeded' | 'CollectionAdminCountExceeded' | 'CollectionLimitBoundsExceeded' | 'OwnerPermissionsCantBeReverted' | 'TransferNotAllowed' | 'AccountTokenLimitExceeded' | 'CollectionTokenLimitExceeded' | 'MetadataFlagFrozen' | 'TokenNotFound' | 'TokenValueTooLow' | 'ApprovedValueTooLow' | 'CantApproveMoreThanOwned' | 'AddressIsZero' | 'UnsupportedOperation' | 'NotSufficientFounds' | 'UserIsNotAllowedToNest' | 'SourceCollectionIsNotAllowedToNest' | 'CollectionFieldSizeExceeded' | 'NoSpaceForProperty' | 'PropertyLimitReached' | 'PropertyKeyIsTooLong' | 'InvalidCharacterInPropertyKey' | 'EmptyPropertyKey' | 'CollectionIsExternal' | 'CollectionIsInternal';1273}12741275/** @name PalletCommonEvent */1276export interface PalletCommonEvent extends Enum {1277 readonly isCollectionCreated: boolean;1278 readonly asCollectionCreated: ITuple<[u32, u8, AccountId32]>;1279 readonly isCollectionDestroyed: boolean;1280 readonly asCollectionDestroyed: u32;1281 readonly isItemCreated: boolean;1282 readonly asItemCreated: ITuple<[u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, u128]>;1283 readonly isItemDestroyed: boolean;1284 readonly asItemDestroyed: ITuple<[u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, u128]>;1285 readonly isTransfer: boolean;1286 readonly asTransfer: ITuple<[u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr, u128]>;1287 readonly isApproved: boolean;1288 readonly asApproved: ITuple<[u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr, u128]>;1289 readonly isCollectionPropertySet: boolean;1290 readonly asCollectionPropertySet: ITuple<[u32, Bytes]>;1291 readonly isCollectionPropertyDeleted: boolean;1292 readonly asCollectionPropertyDeleted: ITuple<[u32, Bytes]>;1293 readonly isTokenPropertySet: boolean;1294 readonly asTokenPropertySet: ITuple<[u32, u32, Bytes]>;1295 readonly isTokenPropertyDeleted: boolean;1296 readonly asTokenPropertyDeleted: ITuple<[u32, u32, Bytes]>;1297 readonly isPropertyPermissionSet: boolean;1298 readonly asPropertyPermissionSet: ITuple<[u32, Bytes]>;1299 readonly type: 'CollectionCreated' | 'CollectionDestroyed' | 'ItemCreated' | 'ItemDestroyed' | 'Transfer' | 'Approved' | 'CollectionPropertySet' | 'CollectionPropertyDeleted' | 'TokenPropertySet' | 'TokenPropertyDeleted' | 'PropertyPermissionSet';1300}13011302/** @name PalletConfigurationCall */1303export interface PalletConfigurationCall extends Enum {1304 readonly isSetWeightToFeeCoefficientOverride: boolean;1305 readonly asSetWeightToFeeCoefficientOverride: {1306 readonly coeff: Option<u32>;1307 } & Struct;1308 readonly isSetMinGasPriceOverride: boolean;1309 readonly asSetMinGasPriceOverride: {1310 readonly coeff: Option<u64>;1311 } & Struct;1312 readonly type: 'SetWeightToFeeCoefficientOverride' | 'SetMinGasPriceOverride';1313}13141315/** @name PalletEthereumCall */1316export interface PalletEthereumCall extends Enum {1317 readonly isTransact: boolean;1318 readonly asTransact: {1319 readonly transaction: EthereumTransactionTransactionV2;1320 } & Struct;1321 readonly type: 'Transact';1322}13231324/** @name PalletEthereumError */1325export interface PalletEthereumError extends Enum {1326 readonly isInvalidSignature: boolean;1327 readonly isPreLogExists: boolean;1328 readonly type: 'InvalidSignature' | 'PreLogExists';1329}13301331/** @name PalletEthereumEvent */1332export interface PalletEthereumEvent extends Enum {1333 readonly isExecuted: boolean;1334 readonly asExecuted: {1335 readonly from: H160;1336 readonly to: H160;1337 readonly transactionHash: H256;1338 readonly exitReason: EvmCoreErrorExitReason;1339 } & Struct;1340 readonly type: 'Executed';1341}13421343/** @name PalletEthereumFakeTransactionFinalizer */1344export interface PalletEthereumFakeTransactionFinalizer extends Null {}13451346/** @name PalletEthereumRawOrigin */1347export interface PalletEthereumRawOrigin extends Enum {1348 readonly isEthereumTransaction: boolean;1349 readonly asEthereumTransaction: H160;1350 readonly type: 'EthereumTransaction';1351}13521353/** @name PalletEvmAccountBasicCrossAccountIdRepr */1354export interface PalletEvmAccountBasicCrossAccountIdRepr extends Enum {1355 readonly isSubstrate: boolean;1356 readonly asSubstrate: AccountId32;1357 readonly isEthereum: boolean;1358 readonly asEthereum: H160;1359 readonly type: 'Substrate' | 'Ethereum';1360}13611362/** @name PalletEvmCall */1363export interface PalletEvmCall extends Enum {1364 readonly isWithdraw: boolean;1365 readonly asWithdraw: {1366 readonly address: H160;1367 readonly value: u128;1368 } & Struct;1369 readonly isCall: boolean;1370 readonly asCall: {1371 readonly source: H160;1372 readonly target: H160;1373 readonly input: Bytes;1374 readonly value: U256;1375 readonly gasLimit: u64;1376 readonly maxFeePerGas: U256;1377 readonly maxPriorityFeePerGas: Option<U256>;1378 readonly nonce: Option<U256>;1379 readonly accessList: Vec<ITuple<[H160, Vec<H256>]>>;1380 } & Struct;1381 readonly isCreate: boolean;1382 readonly asCreate: {1383 readonly source: H160;1384 readonly init: Bytes;1385 readonly value: U256;1386 readonly gasLimit: u64;1387 readonly maxFeePerGas: U256;1388 readonly maxPriorityFeePerGas: Option<U256>;1389 readonly nonce: Option<U256>;1390 readonly accessList: Vec<ITuple<[H160, Vec<H256>]>>;1391 } & Struct;1392 readonly isCreate2: boolean;1393 readonly asCreate2: {1394 readonly source: H160;1395 readonly init: Bytes;1396 readonly salt: H256;1397 readonly value: U256;1398 readonly gasLimit: u64;1399 readonly maxFeePerGas: U256;1400 readonly maxPriorityFeePerGas: Option<U256>;1401 readonly nonce: Option<U256>;1402 readonly accessList: Vec<ITuple<[H160, Vec<H256>]>>;1403 } & Struct;1404 readonly type: 'Withdraw' | 'Call' | 'Create' | 'Create2';1405}14061407/** @name PalletEvmCoderSubstrateError */1408export interface PalletEvmCoderSubstrateError extends Enum {1409 readonly isOutOfGas: boolean;1410 readonly isOutOfFund: boolean;1411 readonly type: 'OutOfGas' | 'OutOfFund';1412}14131414/** @name PalletEvmContractHelpersError */1415export interface PalletEvmContractHelpersError extends Enum {1416 readonly isNoPermission: boolean;1417 readonly isNoPendingSponsor: boolean;1418 readonly isTooManyMethodsHaveSponsoredLimit: boolean;1419 readonly type: 'NoPermission' | 'NoPendingSponsor' | 'TooManyMethodsHaveSponsoredLimit';1420}14211422/** @name PalletEvmContractHelpersEvent */1423export interface PalletEvmContractHelpersEvent extends Enum {1424 readonly isContractSponsorSet: boolean;1425 readonly asContractSponsorSet: ITuple<[H160, AccountId32]>;1426 readonly isContractSponsorshipConfirmed: boolean;1427 readonly asContractSponsorshipConfirmed: ITuple<[H160, AccountId32]>;1428 readonly isContractSponsorRemoved: boolean;1429 readonly asContractSponsorRemoved: H160;1430 readonly type: 'ContractSponsorSet' | 'ContractSponsorshipConfirmed' | 'ContractSponsorRemoved';1431}14321433/** @name PalletEvmContractHelpersSponsoringModeT */1434export interface PalletEvmContractHelpersSponsoringModeT extends Enum {1435 readonly isDisabled: boolean;1436 readonly isAllowlisted: boolean;1437 readonly isGenerous: boolean;1438 readonly type: 'Disabled' | 'Allowlisted' | 'Generous';1439}14401441/** @name PalletEvmError */1442export interface PalletEvmError extends Enum {1443 readonly isBalanceLow: boolean;1444 readonly isFeeOverflow: boolean;1445 readonly isPaymentOverflow: boolean;1446 readonly isWithdrawFailed: boolean;1447 readonly isGasPriceTooLow: boolean;1448 readonly isInvalidNonce: boolean;1449 readonly isGasLimitTooLow: boolean;1450 readonly isGasLimitTooHigh: boolean;1451 readonly isUndefined: boolean;1452 readonly isReentrancy: boolean;1453 readonly type: 'BalanceLow' | 'FeeOverflow' | 'PaymentOverflow' | 'WithdrawFailed' | 'GasPriceTooLow' | 'InvalidNonce' | 'GasLimitTooLow' | 'GasLimitTooHigh' | 'Undefined' | 'Reentrancy';1454}14551456/** @name PalletEvmEvent */1457export interface PalletEvmEvent extends Enum {1458 readonly isLog: boolean;1459 readonly asLog: {1460 readonly log: EthereumLog;1461 } & Struct;1462 readonly isCreated: boolean;1463 readonly asCreated: {1464 readonly address: H160;1465 } & Struct;1466 readonly isCreatedFailed: boolean;1467 readonly asCreatedFailed: {1468 readonly address: H160;1469 } & Struct;1470 readonly isExecuted: boolean;1471 readonly asExecuted: {1472 readonly address: H160;1473 } & Struct;1474 readonly isExecutedFailed: boolean;1475 readonly asExecutedFailed: {1476 readonly address: H160;1477 } & Struct;1478 readonly type: 'Log' | 'Created' | 'CreatedFailed' | 'Executed' | 'ExecutedFailed';1479}14801481/** @name PalletEvmMigrationCall */1482export interface PalletEvmMigrationCall extends Enum {1483 readonly isBegin: boolean;1484 readonly asBegin: {1485 readonly address: H160;1486 } & Struct;1487 readonly isSetData: boolean;1488 readonly asSetData: {1489 readonly address: H160;1490 readonly data: Vec<ITuple<[H256, H256]>>;1491 } & Struct;1492 readonly isFinish: boolean;1493 readonly asFinish: {1494 readonly address: H160;1495 readonly code: Bytes;1496 } & Struct;1497 readonly isInsertEthLogs: boolean;1498 readonly asInsertEthLogs: {1499 readonly logs: Vec<EthereumLog>;1500 } & Struct;1501 readonly isInsertEvents: boolean;1502 readonly asInsertEvents: {1503 readonly events: Vec<Bytes>;1504 } & Struct;1505 readonly type: 'Begin' | 'SetData' | 'Finish' | 'InsertEthLogs' | 'InsertEvents';1506}15071508/** @name PalletEvmMigrationError */1509export interface PalletEvmMigrationError extends Enum {1510 readonly isAccountNotEmpty: boolean;1511 readonly isAccountIsNotMigrating: boolean;1512 readonly isBadEvent: boolean;1513 readonly type: 'AccountNotEmpty' | 'AccountIsNotMigrating' | 'BadEvent';1514}15151516/** @name PalletEvmMigrationEvent */1517export interface PalletEvmMigrationEvent extends Enum {1518 readonly isTestEvent: boolean;1519 readonly type: 'TestEvent';1520}15211522/** @name PalletForeignAssetsAssetIds */1523export interface PalletForeignAssetsAssetIds extends Enum {1524 readonly isForeignAssetId: boolean;1525 readonly asForeignAssetId: u32;1526 readonly isNativeAssetId: boolean;1527 readonly asNativeAssetId: PalletForeignAssetsNativeCurrency;1528 readonly type: 'ForeignAssetId' | 'NativeAssetId';1529}15301531/** @name PalletForeignAssetsModuleAssetMetadata */1532export interface PalletForeignAssetsModuleAssetMetadata extends Struct {1533 readonly name: Bytes;1534 readonly symbol: Bytes;1535 readonly decimals: u8;1536 readonly minimalBalance: u128;1537}15381539/** @name PalletForeignAssetsModuleCall */1540export interface PalletForeignAssetsModuleCall extends Enum {1541 readonly isRegisterForeignAsset: boolean;1542 readonly asRegisterForeignAsset: {1543 readonly owner: AccountId32;1544 readonly location: XcmVersionedMultiLocation;1545 readonly metadata: PalletForeignAssetsModuleAssetMetadata;1546 } & Struct;1547 readonly isUpdateForeignAsset: boolean;1548 readonly asUpdateForeignAsset: {1549 readonly foreignAssetId: u32;1550 readonly location: XcmVersionedMultiLocation;1551 readonly metadata: PalletForeignAssetsModuleAssetMetadata;1552 } & Struct;1553 readonly type: 'RegisterForeignAsset' | 'UpdateForeignAsset';1554}15551556/** @name PalletForeignAssetsModuleError */1557export interface PalletForeignAssetsModuleError extends Enum {1558 readonly isBadLocation: boolean;1559 readonly isMultiLocationExisted: boolean;1560 readonly isAssetIdNotExists: boolean;1561 readonly isAssetIdExisted: boolean;1562 readonly type: 'BadLocation' | 'MultiLocationExisted' | 'AssetIdNotExists' | 'AssetIdExisted';1563}15641565/** @name PalletForeignAssetsModuleEvent */1566export interface PalletForeignAssetsModuleEvent extends Enum {1567 readonly isForeignAssetRegistered: boolean;1568 readonly asForeignAssetRegistered: {1569 readonly assetId: u32;1570 readonly assetAddress: XcmV1MultiLocation;1571 readonly metadata: PalletForeignAssetsModuleAssetMetadata;1572 } & Struct;1573 readonly isForeignAssetUpdated: boolean;1574 readonly asForeignAssetUpdated: {1575 readonly assetId: u32;1576 readonly assetAddress: XcmV1MultiLocation;1577 readonly metadata: PalletForeignAssetsModuleAssetMetadata;1578 } & Struct;1579 readonly isAssetRegistered: boolean;1580 readonly asAssetRegistered: {1581 readonly assetId: PalletForeignAssetsAssetIds;1582 readonly metadata: PalletForeignAssetsModuleAssetMetadata;1583 } & Struct;1584 readonly isAssetUpdated: boolean;1585 readonly asAssetUpdated: {1586 readonly assetId: PalletForeignAssetsAssetIds;1587 readonly metadata: PalletForeignAssetsModuleAssetMetadata;1588 } & Struct;1589 readonly type: 'ForeignAssetRegistered' | 'ForeignAssetUpdated' | 'AssetRegistered' | 'AssetUpdated';1590}15911592/** @name PalletForeignAssetsNativeCurrency */1593export interface PalletForeignAssetsNativeCurrency extends Enum {1594 readonly isHere: boolean;1595 readonly isParent: boolean;1596 readonly type: 'Here' | 'Parent';1597}15981599/** @name PalletFungibleError */1600export interface PalletFungibleError extends Enum {1601 readonly isNotFungibleDataUsedToMintFungibleCollectionToken: boolean;1602 readonly isFungibleItemsHaveNoId: boolean;1603 readonly isFungibleItemsDontHaveData: boolean;1604 readonly isFungibleDisallowsNesting: boolean;1605 readonly isSettingPropertiesNotAllowed: boolean;1606 readonly type: 'NotFungibleDataUsedToMintFungibleCollectionToken' | 'FungibleItemsHaveNoId' | 'FungibleItemsDontHaveData' | 'FungibleDisallowsNesting' | 'SettingPropertiesNotAllowed';1607}16081609/** @name PalletInflationCall */1610export interface PalletInflationCall extends Enum {1611 readonly isStartInflation: boolean;1612 readonly asStartInflation: {1613 readonly inflationStartRelayBlock: u32;1614 } & Struct;1615 readonly type: 'StartInflation';1616}16171618/** @name PalletMaintenanceCall */1619export interface PalletMaintenanceCall extends Enum {1620 readonly isEnable: boolean;1621 readonly isDisable: boolean;1622 readonly type: 'Enable' | 'Disable';1623}16241625/** @name PalletMaintenanceError */1626export interface PalletMaintenanceError extends Null {}16271628/** @name PalletMaintenanceEvent */1629export interface PalletMaintenanceEvent extends Enum {1630 readonly isMaintenanceEnabled: boolean;1631 readonly isMaintenanceDisabled: boolean;1632 readonly type: 'MaintenanceEnabled' | 'MaintenanceDisabled';1633}16341635/** @name PalletNonfungibleError */1636export interface PalletNonfungibleError extends Enum {1637 readonly isNotNonfungibleDataUsedToMintFungibleCollectionToken: boolean;1638 readonly isNonfungibleItemsHaveNoAmount: boolean;1639 readonly isCantBurnNftWithChildren: boolean;1640 readonly type: 'NotNonfungibleDataUsedToMintFungibleCollectionToken' | 'NonfungibleItemsHaveNoAmount' | 'CantBurnNftWithChildren';1641}16421643/** @name PalletNonfungibleItemData */1644export interface PalletNonfungibleItemData extends Struct {1645 readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;1646}16471648/** @name PalletRefungibleError */1649export interface PalletRefungibleError extends Enum {1650 readonly isNotRefungibleDataUsedToMintFungibleCollectionToken: boolean;1651 readonly isWrongRefungiblePieces: boolean;1652 readonly isRepartitionWhileNotOwningAllPieces: boolean;1653 readonly isRefungibleDisallowsNesting: boolean;1654 readonly isSettingPropertiesNotAllowed: boolean;1655 readonly type: 'NotRefungibleDataUsedToMintFungibleCollectionToken' | 'WrongRefungiblePieces' | 'RepartitionWhileNotOwningAllPieces' | 'RefungibleDisallowsNesting' | 'SettingPropertiesNotAllowed';1656}16571658/** @name PalletRefungibleItemData */1659export interface PalletRefungibleItemData extends Struct {1660 readonly constData: Bytes;1661}16621663/** @name PalletRmrkCoreCall */1664export interface PalletRmrkCoreCall extends Enum {1665 readonly isCreateCollection: boolean;1666 readonly asCreateCollection: {1667 readonly metadata: Bytes;1668 readonly max: Option<u32>;1669 readonly symbol: Bytes;1670 } & Struct;1671 readonly isDestroyCollection: boolean;1672 readonly asDestroyCollection: {1673 readonly collectionId: u32;1674 } & Struct;1675 readonly isChangeCollectionIssuer: boolean;1676 readonly asChangeCollectionIssuer: {1677 readonly collectionId: u32;1678 readonly newIssuer: MultiAddress;1679 } & Struct;1680 readonly isLockCollection: boolean;1681 readonly asLockCollection: {1682 readonly collectionId: u32;1683 } & Struct;1684 readonly isMintNft: boolean;1685 readonly asMintNft: {1686 readonly owner: Option<AccountId32>;1687 readonly collectionId: u32;1688 readonly recipient: Option<AccountId32>;1689 readonly royaltyAmount: Option<Permill>;1690 readonly metadata: Bytes;1691 readonly transferable: bool;1692 readonly resources: Option<Vec<RmrkTraitsResourceResourceTypes>>;1693 } & Struct;1694 readonly isBurnNft: boolean;1695 readonly asBurnNft: {1696 readonly collectionId: u32;1697 readonly nftId: u32;1698 readonly maxBurns: u32;1699 } & Struct;1700 readonly isSend: boolean;1701 readonly asSend: {1702 readonly rmrkCollectionId: u32;1703 readonly rmrkNftId: u32;1704 readonly newOwner: RmrkTraitsNftAccountIdOrCollectionNftTuple;1705 } & Struct;1706 readonly isAcceptNft: boolean;1707 readonly asAcceptNft: {1708 readonly rmrkCollectionId: u32;1709 readonly rmrkNftId: u32;1710 readonly newOwner: RmrkTraitsNftAccountIdOrCollectionNftTuple;1711 } & Struct;1712 readonly isRejectNft: boolean;1713 readonly asRejectNft: {1714 readonly rmrkCollectionId: u32;1715 readonly rmrkNftId: u32;1716 } & Struct;1717 readonly isAcceptResource: boolean;1718 readonly asAcceptResource: {1719 readonly rmrkCollectionId: u32;1720 readonly rmrkNftId: u32;1721 readonly resourceId: u32;1722 } & Struct;1723 readonly isAcceptResourceRemoval: boolean;1724 readonly asAcceptResourceRemoval: {1725 readonly rmrkCollectionId: u32;1726 readonly rmrkNftId: u32;1727 readonly resourceId: u32;1728 } & Struct;1729 readonly isSetProperty: boolean;1730 readonly asSetProperty: {1731 readonly rmrkCollectionId: Compact<u32>;1732 readonly maybeNftId: Option<u32>;1733 readonly key: Bytes;1734 readonly value: Bytes;1735 } & Struct;1736 readonly isSetPriority: boolean;1737 readonly asSetPriority: {1738 readonly rmrkCollectionId: u32;1739 readonly rmrkNftId: u32;1740 readonly priorities: Vec<u32>;1741 } & Struct;1742 readonly isAddBasicResource: boolean;1743 readonly asAddBasicResource: {1744 readonly rmrkCollectionId: u32;1745 readonly nftId: u32;1746 readonly resource: RmrkTraitsResourceBasicResource;1747 } & Struct;1748 readonly isAddComposableResource: boolean;1749 readonly asAddComposableResource: {1750 readonly rmrkCollectionId: u32;1751 readonly nftId: u32;1752 readonly resource: RmrkTraitsResourceComposableResource;1753 } & Struct;1754 readonly isAddSlotResource: boolean;1755 readonly asAddSlotResource: {1756 readonly rmrkCollectionId: u32;1757 readonly nftId: u32;1758 readonly resource: RmrkTraitsResourceSlotResource;1759 } & Struct;1760 readonly isRemoveResource: boolean;1761 readonly asRemoveResource: {1762 readonly rmrkCollectionId: u32;1763 readonly nftId: u32;1764 readonly resourceId: u32;1765 } & Struct;1766 readonly type: 'CreateCollection' | 'DestroyCollection' | 'ChangeCollectionIssuer' | 'LockCollection' | 'MintNft' | 'BurnNft' | 'Send' | 'AcceptNft' | 'RejectNft' | 'AcceptResource' | 'AcceptResourceRemoval' | 'SetProperty' | 'SetPriority' | 'AddBasicResource' | 'AddComposableResource' | 'AddSlotResource' | 'RemoveResource';1767}17681769/** @name PalletRmrkCoreError */1770export interface PalletRmrkCoreError extends Enum {1771 readonly isCorruptedCollectionType: boolean;1772 readonly isRmrkPropertyKeyIsTooLong: boolean;1773 readonly isRmrkPropertyValueIsTooLong: boolean;1774 readonly isRmrkPropertyIsNotFound: boolean;1775 readonly isUnableToDecodeRmrkData: boolean;1776 readonly isCollectionNotEmpty: boolean;1777 readonly isNoAvailableCollectionId: boolean;1778 readonly isNoAvailableNftId: boolean;1779 readonly isCollectionUnknown: boolean;1780 readonly isNoPermission: boolean;1781 readonly isNonTransferable: boolean;1782 readonly isCollectionFullOrLocked: boolean;1783 readonly isResourceDoesntExist: boolean;1784 readonly isCannotSendToDescendentOrSelf: boolean;1785 readonly isCannotAcceptNonOwnedNft: boolean;1786 readonly isCannotRejectNonOwnedNft: boolean;1787 readonly isCannotRejectNonPendingNft: boolean;1788 readonly isResourceNotPending: boolean;1789 readonly isNoAvailableResourceId: boolean;1790 readonly type: 'CorruptedCollectionType' | 'RmrkPropertyKeyIsTooLong' | 'RmrkPropertyValueIsTooLong' | 'RmrkPropertyIsNotFound' | 'UnableToDecodeRmrkData' | 'CollectionNotEmpty' | 'NoAvailableCollectionId' | 'NoAvailableNftId' | 'CollectionUnknown' | 'NoPermission' | 'NonTransferable' | 'CollectionFullOrLocked' | 'ResourceDoesntExist' | 'CannotSendToDescendentOrSelf' | 'CannotAcceptNonOwnedNft' | 'CannotRejectNonOwnedNft' | 'CannotRejectNonPendingNft' | 'ResourceNotPending' | 'NoAvailableResourceId';1791}17921793/** @name PalletRmrkCoreEvent */1794export interface PalletRmrkCoreEvent extends Enum {1795 readonly isCollectionCreated: boolean;1796 readonly asCollectionCreated: {1797 readonly issuer: AccountId32;1798 readonly collectionId: u32;1799 } & Struct;1800 readonly isCollectionDestroyed: boolean;1801 readonly asCollectionDestroyed: {1802 readonly issuer: AccountId32;1803 readonly collectionId: u32;1804 } & Struct;1805 readonly isIssuerChanged: boolean;1806 readonly asIssuerChanged: {1807 readonly oldIssuer: AccountId32;1808 readonly newIssuer: AccountId32;1809 readonly collectionId: u32;1810 } & Struct;1811 readonly isCollectionLocked: boolean;1812 readonly asCollectionLocked: {1813 readonly issuer: AccountId32;1814 readonly collectionId: u32;1815 } & Struct;1816 readonly isNftMinted: boolean;1817 readonly asNftMinted: {1818 readonly owner: AccountId32;1819 readonly collectionId: u32;1820 readonly nftId: u32;1821 } & Struct;1822 readonly isNftBurned: boolean;1823 readonly asNftBurned: {1824 readonly owner: AccountId32;1825 readonly nftId: u32;1826 } & Struct;1827 readonly isNftSent: boolean;1828 readonly asNftSent: {1829 readonly sender: AccountId32;1830 readonly recipient: RmrkTraitsNftAccountIdOrCollectionNftTuple;1831 readonly collectionId: u32;1832 readonly nftId: u32;1833 readonly approvalRequired: bool;1834 } & Struct;1835 readonly isNftAccepted: boolean;1836 readonly asNftAccepted: {1837 readonly sender: AccountId32;1838 readonly recipient: RmrkTraitsNftAccountIdOrCollectionNftTuple;1839 readonly collectionId: u32;1840 readonly nftId: u32;1841 } & Struct;1842 readonly isNftRejected: boolean;1843 readonly asNftRejected: {1844 readonly sender: AccountId32;1845 readonly collectionId: u32;1846 readonly nftId: u32;1847 } & Struct;1848 readonly isPropertySet: boolean;1849 readonly asPropertySet: {1850 readonly collectionId: u32;1851 readonly maybeNftId: Option<u32>;1852 readonly key: Bytes;1853 readonly value: Bytes;1854 } & Struct;1855 readonly isResourceAdded: boolean;1856 readonly asResourceAdded: {1857 readonly nftId: u32;1858 readonly resourceId: u32;1859 } & Struct;1860 readonly isResourceRemoval: boolean;1861 readonly asResourceRemoval: {1862 readonly nftId: u32;1863 readonly resourceId: u32;1864 } & Struct;1865 readonly isResourceAccepted: boolean;1866 readonly asResourceAccepted: {1867 readonly nftId: u32;1868 readonly resourceId: u32;1869 } & Struct;1870 readonly isResourceRemovalAccepted: boolean;1871 readonly asResourceRemovalAccepted: {1872 readonly nftId: u32;1873 readonly resourceId: u32;1874 } & Struct;1875 readonly isPrioritySet: boolean;1876 readonly asPrioritySet: {1877 readonly collectionId: u32;1878 readonly nftId: u32;1879 } & Struct;1880 readonly type: 'CollectionCreated' | 'CollectionDestroyed' | 'IssuerChanged' | 'CollectionLocked' | 'NftMinted' | 'NftBurned' | 'NftSent' | 'NftAccepted' | 'NftRejected' | 'PropertySet' | 'ResourceAdded' | 'ResourceRemoval' | 'ResourceAccepted' | 'ResourceRemovalAccepted' | 'PrioritySet';1881}18821883/** @name PalletRmrkEquipCall */1884export interface PalletRmrkEquipCall extends Enum {1885 readonly isCreateBase: boolean;1886 readonly asCreateBase: {1887 readonly baseType: Bytes;1888 readonly symbol: Bytes;1889 readonly parts: Vec<RmrkTraitsPartPartType>;1890 } & Struct;1891 readonly isThemeAdd: boolean;1892 readonly asThemeAdd: {1893 readonly baseId: u32;1894 readonly theme: RmrkTraitsTheme;1895 } & Struct;1896 readonly isEquippable: boolean;1897 readonly asEquippable: {1898 readonly baseId: u32;1899 readonly slotId: u32;1900 readonly equippables: RmrkTraitsPartEquippableList;1901 } & Struct;1902 readonly type: 'CreateBase' | 'ThemeAdd' | 'Equippable';1903}19041905/** @name PalletRmrkEquipError */1906export interface PalletRmrkEquipError extends Enum {1907 readonly isPermissionError: boolean;1908 readonly isNoAvailableBaseId: boolean;1909 readonly isNoAvailablePartId: boolean;1910 readonly isBaseDoesntExist: boolean;1911 readonly isNeedsDefaultThemeFirst: boolean;1912 readonly isPartDoesntExist: boolean;1913 readonly isNoEquippableOnFixedPart: boolean;1914 readonly type: 'PermissionError' | 'NoAvailableBaseId' | 'NoAvailablePartId' | 'BaseDoesntExist' | 'NeedsDefaultThemeFirst' | 'PartDoesntExist' | 'NoEquippableOnFixedPart';1915}19161917/** @name PalletRmrkEquipEvent */1918export interface PalletRmrkEquipEvent extends Enum {1919 readonly isBaseCreated: boolean;1920 readonly asBaseCreated: {1921 readonly issuer: AccountId32;1922 readonly baseId: u32;1923 } & Struct;1924 readonly isEquippablesUpdated: boolean;1925 readonly asEquippablesUpdated: {1926 readonly baseId: u32;1927 readonly slotId: u32;1928 } & Struct;1929 readonly type: 'BaseCreated' | 'EquippablesUpdated';1930}19311932/** @name PalletStructureCall */1933export interface PalletStructureCall extends Null {}19341935/** @name PalletStructureError */1936export interface PalletStructureError extends Enum {1937 readonly isOuroborosDetected: boolean;1938 readonly isDepthLimit: boolean;1939 readonly isBreadthLimit: boolean;1940 readonly isTokenNotFound: boolean;1941 readonly type: 'OuroborosDetected' | 'DepthLimit' | 'BreadthLimit' | 'TokenNotFound';1942}19431944/** @name PalletStructureEvent */1945export interface PalletStructureEvent extends Enum {1946 readonly isExecuted: boolean;1947 readonly asExecuted: Result<Null, SpRuntimeDispatchError>;1948 readonly type: 'Executed';1949}19501951/** @name PalletSudoCall */1952export interface PalletSudoCall extends Enum {1953 readonly isSudo: boolean;1954 readonly asSudo: {1955 readonly call: Call;1956 } & Struct;1957 readonly isSudoUncheckedWeight: boolean;1958 readonly asSudoUncheckedWeight: {1959 readonly call: Call;1960 readonly weight: Weight;1961 } & Struct;1962 readonly isSetKey: boolean;1963 readonly asSetKey: {1964 readonly new_: MultiAddress;1965 } & Struct;1966 readonly isSudoAs: boolean;1967 readonly asSudoAs: {1968 readonly who: MultiAddress;1969 readonly call: Call;1970 } & Struct;1971 readonly type: 'Sudo' | 'SudoUncheckedWeight' | 'SetKey' | 'SudoAs';1972}19731974/** @name PalletSudoError */1975export interface PalletSudoError extends Enum {1976 readonly isRequireSudo: boolean;1977 readonly type: 'RequireSudo';1978}19791980/** @name PalletSudoEvent */1981export interface PalletSudoEvent extends Enum {1982 readonly isSudid: boolean;1983 readonly asSudid: {1984 readonly sudoResult: Result<Null, SpRuntimeDispatchError>;1985 } & Struct;1986 readonly isKeyChanged: boolean;1987 readonly asKeyChanged: {1988 readonly oldSudoer: Option<AccountId32>;1989 } & Struct;1990 readonly isSudoAsDone: boolean;1991 readonly asSudoAsDone: {1992 readonly sudoResult: Result<Null, SpRuntimeDispatchError>;1993 } & Struct;1994 readonly type: 'Sudid' | 'KeyChanged' | 'SudoAsDone';1995}19961997/** @name PalletTemplateTransactionPaymentCall */1998export interface PalletTemplateTransactionPaymentCall extends Null {}19992000/** @name PalletTemplateTransactionPaymentChargeTransactionPayment */2001export interface PalletTemplateTransactionPaymentChargeTransactionPayment extends Compact<u128> {}20022003/** @name PalletTestUtilsCall */2004export interface PalletTestUtilsCall extends Enum {2005 readonly isEnable: boolean;2006 readonly isSetTestValue: boolean;2007 readonly asSetTestValue: {2008 readonly value: u32;2009 } & Struct;2010 readonly isSetTestValueAndRollback: boolean;2011 readonly asSetTestValueAndRollback: {2012 readonly value: u32;2013 } & Struct;2014 readonly isIncTestValue: boolean;2015 readonly isSelfCancelingInc: boolean;2016 readonly asSelfCancelingInc: {2017 readonly id: U8aFixed;2018 readonly maxTestValue: u32;2019 } & Struct;2020 readonly isJustTakeFee: boolean;2021 readonly isBatchAll: boolean;2022 readonly asBatchAll: {2023 readonly calls: Vec<Call>;2024 } & Struct;2025 readonly type: 'Enable' | 'SetTestValue' | 'SetTestValueAndRollback' | 'IncTestValue' | 'SelfCancelingInc' | 'JustTakeFee' | 'BatchAll';2026}20272028/** @name PalletTestUtilsError */2029export interface PalletTestUtilsError extends Enum {2030 readonly isTestPalletDisabled: boolean;2031 readonly isTriggerRollback: boolean;2032 readonly type: 'TestPalletDisabled' | 'TriggerRollback';2033}20342035/** @name PalletTestUtilsEvent */2036export interface PalletTestUtilsEvent extends Enum {2037 readonly isValueIsSet: boolean;2038 readonly isShouldRollback: boolean;2039 readonly isBatchCompleted: boolean;2040 readonly type: 'ValueIsSet' | 'ShouldRollback' | 'BatchCompleted';2041}20422043/** @name PalletTimestampCall */2044export interface PalletTimestampCall extends Enum {2045 readonly isSet: boolean;2046 readonly asSet: {2047 readonly now: Compact<u64>;2048 } & Struct;2049 readonly type: 'Set';2050}20512052/** @name PalletTransactionPaymentEvent */2053export interface PalletTransactionPaymentEvent extends Enum {2054 readonly isTransactionFeePaid: boolean;2055 readonly asTransactionFeePaid: {2056 readonly who: AccountId32;2057 readonly actualFee: u128;2058 readonly tip: u128;2059 } & Struct;2060 readonly type: 'TransactionFeePaid';2061}20622063/** @name PalletTransactionPaymentReleases */2064export interface PalletTransactionPaymentReleases extends Enum {2065 readonly isV1Ancient: boolean;2066 readonly isV2: boolean;2067 readonly type: 'V1Ancient' | 'V2';2068}20692070/** @name PalletTreasuryCall */2071export interface PalletTreasuryCall extends Enum {2072 readonly isProposeSpend: boolean;2073 readonly asProposeSpend: {2074 readonly value: Compact<u128>;2075 readonly beneficiary: MultiAddress;2076 } & Struct;2077 readonly isRejectProposal: boolean;2078 readonly asRejectProposal: {2079 readonly proposalId: Compact<u32>;2080 } & Struct;2081 readonly isApproveProposal: boolean;2082 readonly asApproveProposal: {2083 readonly proposalId: Compact<u32>;2084 } & Struct;2085 readonly isSpend: boolean;2086 readonly asSpend: {2087 readonly amount: Compact<u128>;2088 readonly beneficiary: MultiAddress;2089 } & Struct;2090 readonly isRemoveApproval: boolean;2091 readonly asRemoveApproval: {2092 readonly proposalId: Compact<u32>;2093 } & Struct;2094 readonly type: 'ProposeSpend' | 'RejectProposal' | 'ApproveProposal' | 'Spend' | 'RemoveApproval';2095}20962097/** @name PalletTreasuryError */2098export interface PalletTreasuryError extends Enum {2099 readonly isInsufficientProposersBalance: boolean;2100 readonly isInvalidIndex: boolean;2101 readonly isTooManyApprovals: boolean;2102 readonly isInsufficientPermission: boolean;2103 readonly isProposalNotApproved: boolean;2104 readonly type: 'InsufficientProposersBalance' | 'InvalidIndex' | 'TooManyApprovals' | 'InsufficientPermission' | 'ProposalNotApproved';2105}21062107/** @name PalletTreasuryEvent */2108export interface PalletTreasuryEvent extends Enum {2109 readonly isProposed: boolean;2110 readonly asProposed: {2111 readonly proposalIndex: u32;2112 } & Struct;2113 readonly isSpending: boolean;2114 readonly asSpending: {2115 readonly budgetRemaining: u128;2116 } & Struct;2117 readonly isAwarded: boolean;2118 readonly asAwarded: {2119 readonly proposalIndex: u32;2120 readonly award: u128;2121 readonly account: AccountId32;2122 } & Struct;2123 readonly isRejected: boolean;2124 readonly asRejected: {2125 readonly proposalIndex: u32;2126 readonly slashed: u128;2127 } & Struct;2128 readonly isBurnt: boolean;2129 readonly asBurnt: {2130 readonly burntFunds: u128;2131 } & Struct;2132 readonly isRollover: boolean;2133 readonly asRollover: {2134 readonly rolloverBalance: u128;2135 } & Struct;2136 readonly isDeposit: boolean;2137 readonly asDeposit: {2138 readonly value: u128;2139 } & Struct;2140 readonly isSpendApproved: boolean;2141 readonly asSpendApproved: {2142 readonly proposalIndex: u32;2143 readonly amount: u128;2144 readonly beneficiary: AccountId32;2145 } & Struct;2146 readonly type: 'Proposed' | 'Spending' | 'Awarded' | 'Rejected' | 'Burnt' | 'Rollover' | 'Deposit' | 'SpendApproved';2147}21482149/** @name PalletTreasuryProposal */2150export interface PalletTreasuryProposal extends Struct {2151 readonly proposer: AccountId32;2152 readonly value: u128;2153 readonly beneficiary: AccountId32;2154 readonly bond: u128;2155}21562157/** @name PalletUniqueCall */2158export interface PalletUniqueCall extends Enum {2159 readonly isCreateCollection: boolean;2160 readonly asCreateCollection: {2161 readonly collectionName: Vec<u16>;2162 readonly collectionDescription: Vec<u16>;2163 readonly tokenPrefix: Bytes;2164 readonly mode: UpDataStructsCollectionMode;2165 } & Struct;2166 readonly isCreateCollectionEx: boolean;2167 readonly asCreateCollectionEx: {2168 readonly data: UpDataStructsCreateCollectionData;2169 } & Struct;2170 readonly isDestroyCollection: boolean;2171 readonly asDestroyCollection: {2172 readonly collectionId: u32;2173 } & Struct;2174 readonly isAddToAllowList: boolean;2175 readonly asAddToAllowList: {2176 readonly collectionId: u32;2177 readonly address: PalletEvmAccountBasicCrossAccountIdRepr;2178 } & Struct;2179 readonly isRemoveFromAllowList: boolean;2180 readonly asRemoveFromAllowList: {2181 readonly collectionId: u32;2182 readonly address: PalletEvmAccountBasicCrossAccountIdRepr;2183 } & Struct;2184 readonly isChangeCollectionOwner: boolean;2185 readonly asChangeCollectionOwner: {2186 readonly collectionId: u32;2187 readonly newOwner: AccountId32;2188 } & Struct;2189 readonly isAddCollectionAdmin: boolean;2190 readonly asAddCollectionAdmin: {2191 readonly collectionId: u32;2192 readonly newAdminId: PalletEvmAccountBasicCrossAccountIdRepr;2193 } & Struct;2194 readonly isRemoveCollectionAdmin: boolean;2195 readonly asRemoveCollectionAdmin: {2196 readonly collectionId: u32;2197 readonly accountId: PalletEvmAccountBasicCrossAccountIdRepr;2198 } & Struct;2199 readonly isSetCollectionSponsor: boolean;2200 readonly asSetCollectionSponsor: {2201 readonly collectionId: u32;2202 readonly newSponsor: AccountId32;2203 } & Struct;2204 readonly isConfirmSponsorship: boolean;2205 readonly asConfirmSponsorship: {2206 readonly collectionId: u32;2207 } & Struct;2208 readonly isRemoveCollectionSponsor: boolean;2209 readonly asRemoveCollectionSponsor: {2210 readonly collectionId: u32;2211 } & Struct;2212 readonly isCreateItem: boolean;2213 readonly asCreateItem: {2214 readonly collectionId: u32;2215 readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;2216 readonly data: UpDataStructsCreateItemData;2217 } & Struct;2218 readonly isCreateMultipleItems: boolean;2219 readonly asCreateMultipleItems: {2220 readonly collectionId: u32;2221 readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;2222 readonly itemsData: Vec<UpDataStructsCreateItemData>;2223 } & Struct;2224 readonly isSetCollectionProperties: boolean;2225 readonly asSetCollectionProperties: {2226 readonly collectionId: u32;2227 readonly properties: Vec<UpDataStructsProperty>;2228 } & Struct;2229 readonly isDeleteCollectionProperties: boolean;2230 readonly asDeleteCollectionProperties: {2231 readonly collectionId: u32;2232 readonly propertyKeys: Vec<Bytes>;2233 } & Struct;2234 readonly isSetTokenProperties: boolean;2235 readonly asSetTokenProperties: {2236 readonly collectionId: u32;2237 readonly tokenId: u32;2238 readonly properties: Vec<UpDataStructsProperty>;2239 } & Struct;2240 readonly isDeleteTokenProperties: boolean;2241 readonly asDeleteTokenProperties: {2242 readonly collectionId: u32;2243 readonly tokenId: u32;2244 readonly propertyKeys: Vec<Bytes>;2245 } & Struct;2246 readonly isSetTokenPropertyPermissions: boolean;2247 readonly asSetTokenPropertyPermissions: {2248 readonly collectionId: u32;2249 readonly propertyPermissions: Vec<UpDataStructsPropertyKeyPermission>;2250 } & Struct;2251 readonly isCreateMultipleItemsEx: boolean;2252 readonly asCreateMultipleItemsEx: {2253 readonly collectionId: u32;2254 readonly data: UpDataStructsCreateItemExData;2255 } & Struct;2256 readonly isSetTransfersEnabledFlag: boolean;2257 readonly asSetTransfersEnabledFlag: {2258 readonly collectionId: u32;2259 readonly value: bool;2260 } & Struct;2261 readonly isBurnItem: boolean;2262 readonly asBurnItem: {2263 readonly collectionId: u32;2264 readonly itemId: u32;2265 readonly value: u128;2266 } & Struct;2267 readonly isBurnFrom: boolean;2268 readonly asBurnFrom: {2269 readonly collectionId: u32;2270 readonly from: PalletEvmAccountBasicCrossAccountIdRepr;2271 readonly itemId: u32;2272 readonly value: u128;2273 } & Struct;2274 readonly isTransfer: boolean;2275 readonly asTransfer: {2276 readonly recipient: PalletEvmAccountBasicCrossAccountIdRepr;2277 readonly collectionId: u32;2278 readonly itemId: u32;2279 readonly value: u128;2280 } & Struct;2281 readonly isApprove: boolean;2282 readonly asApprove: {2283 readonly spender: PalletEvmAccountBasicCrossAccountIdRepr;2284 readonly collectionId: u32;2285 readonly itemId: u32;2286 readonly amount: u128;2287 } & Struct;2288 readonly isTransferFrom: boolean;2289 readonly asTransferFrom: {2290 readonly from: PalletEvmAccountBasicCrossAccountIdRepr;2291 readonly recipient: PalletEvmAccountBasicCrossAccountIdRepr;2292 readonly collectionId: u32;2293 readonly itemId: u32;2294 readonly value: u128;2295 } & Struct;2296 readonly isSetCollectionLimits: boolean;2297 readonly asSetCollectionLimits: {2298 readonly collectionId: u32;2299 readonly newLimit: UpDataStructsCollectionLimits;2300 } & Struct;2301 readonly isSetCollectionPermissions: boolean;2302 readonly asSetCollectionPermissions: {2303 readonly collectionId: u32;2304 readonly newPermission: UpDataStructsCollectionPermissions;2305 } & Struct;2306 readonly isRepartition: boolean;2307 readonly asRepartition: {2308 readonly collectionId: u32;2309 readonly tokenId: u32;2310 readonly amount: u128;2311 } & Struct;2312 readonly type: 'CreateCollection' | 'CreateCollectionEx' | 'DestroyCollection' | 'AddToAllowList' | 'RemoveFromAllowList' | 'ChangeCollectionOwner' | 'AddCollectionAdmin' | 'RemoveCollectionAdmin' | 'SetCollectionSponsor' | 'ConfirmSponsorship' | 'RemoveCollectionSponsor' | 'CreateItem' | 'CreateMultipleItems' | 'SetCollectionProperties' | 'DeleteCollectionProperties' | 'SetTokenProperties' | 'DeleteTokenProperties' | 'SetTokenPropertyPermissions' | 'CreateMultipleItemsEx' | 'SetTransfersEnabledFlag' | 'BurnItem' | 'BurnFrom' | 'Transfer' | 'Approve' | 'TransferFrom' | 'SetCollectionLimits' | 'SetCollectionPermissions' | 'Repartition';2313}23142315/** @name PalletUniqueError */2316export interface PalletUniqueError extends Enum {2317 readonly isCollectionDecimalPointLimitExceeded: boolean;2318 readonly isConfirmUnsetSponsorFail: boolean;2319 readonly isEmptyArgument: boolean;2320 readonly isRepartitionCalledOnNonRefungibleCollection: boolean;2321 readonly type: 'CollectionDecimalPointLimitExceeded' | 'ConfirmUnsetSponsorFail' | 'EmptyArgument' | 'RepartitionCalledOnNonRefungibleCollection';2322}23232324/** @name PalletUniqueRawEvent */2325export interface PalletUniqueRawEvent extends Enum {2326 readonly isCollectionSponsorRemoved: boolean;2327 readonly asCollectionSponsorRemoved: u32;2328 readonly isCollectionAdminAdded: boolean;2329 readonly asCollectionAdminAdded: ITuple<[u32, PalletEvmAccountBasicCrossAccountIdRepr]>;2330 readonly isCollectionOwnedChanged: boolean;2331 readonly asCollectionOwnedChanged: ITuple<[u32, AccountId32]>;2332 readonly isCollectionSponsorSet: boolean;2333 readonly asCollectionSponsorSet: ITuple<[u32, AccountId32]>;2334 readonly isSponsorshipConfirmed: boolean;2335 readonly asSponsorshipConfirmed: ITuple<[u32, AccountId32]>;2336 readonly isCollectionAdminRemoved: boolean;2337 readonly asCollectionAdminRemoved: ITuple<[u32, PalletEvmAccountBasicCrossAccountIdRepr]>;2338 readonly isAllowListAddressRemoved: boolean;2339 readonly asAllowListAddressRemoved: ITuple<[u32, PalletEvmAccountBasicCrossAccountIdRepr]>;2340 readonly isAllowListAddressAdded: boolean;2341 readonly asAllowListAddressAdded: ITuple<[u32, PalletEvmAccountBasicCrossAccountIdRepr]>;2342 readonly isCollectionLimitSet: boolean;2343 readonly asCollectionLimitSet: u32;2344 readonly isCollectionPermissionSet: boolean;2345 readonly asCollectionPermissionSet: u32;2346 readonly type: 'CollectionSponsorRemoved' | 'CollectionAdminAdded' | 'CollectionOwnedChanged' | 'CollectionSponsorSet' | 'SponsorshipConfirmed' | 'CollectionAdminRemoved' | 'AllowListAddressRemoved' | 'AllowListAddressAdded' | 'CollectionLimitSet' | 'CollectionPermissionSet';2347}23482349/** @name PalletUniqueSchedulerV2BlockAgenda */2350export interface PalletUniqueSchedulerV2BlockAgenda extends Struct {2351 readonly agenda: Vec<Option<PalletUniqueSchedulerV2Scheduled>>;2352 readonly freePlaces: u32;2353}23542355/** @name PalletUniqueSchedulerV2Call */2356export interface PalletUniqueSchedulerV2Call extends Enum {2357 readonly isSchedule: boolean;2358 readonly asSchedule: {2359 readonly when: u32;2360 readonly maybePeriodic: Option<ITuple<[u32, u32]>>;2361 readonly priority: Option<u8>;2362 readonly call: Call;2363 } & Struct;2364 readonly isCancel: boolean;2365 readonly asCancel: {2366 readonly when: u32;2367 readonly index: u32;2368 } & Struct;2369 readonly isScheduleNamed: boolean;2370 readonly asScheduleNamed: {2371 readonly id: U8aFixed;2372 readonly when: u32;2373 readonly maybePeriodic: Option<ITuple<[u32, u32]>>;2374 readonly priority: Option<u8>;2375 readonly call: Call;2376 } & Struct;2377 readonly isCancelNamed: boolean;2378 readonly asCancelNamed: {2379 readonly id: U8aFixed;2380 } & Struct;2381 readonly isScheduleAfter: boolean;2382 readonly asScheduleAfter: {2383 readonly after: u32;2384 readonly maybePeriodic: Option<ITuple<[u32, u32]>>;2385 readonly priority: Option<u8>;2386 readonly call: Call;2387 } & Struct;2388 readonly isScheduleNamedAfter: boolean;2389 readonly asScheduleNamedAfter: {2390 readonly id: U8aFixed;2391 readonly after: u32;2392 readonly maybePeriodic: Option<ITuple<[u32, u32]>>;2393 readonly priority: Option<u8>;2394 readonly call: Call;2395 } & Struct;2396 readonly isChangeNamedPriority: boolean;2397 readonly asChangeNamedPriority: {2398 readonly id: U8aFixed;2399 readonly priority: u8;2400 } & Struct;2401 readonly type: 'Schedule' | 'Cancel' | 'ScheduleNamed' | 'CancelNamed' | 'ScheduleAfter' | 'ScheduleNamedAfter' | 'ChangeNamedPriority';2402}24032404/** @name PalletUniqueSchedulerV2Error */2405export interface PalletUniqueSchedulerV2Error extends Enum {2406 readonly isFailedToSchedule: boolean;2407 readonly isAgendaIsExhausted: boolean;2408 readonly isScheduledCallCorrupted: boolean;2409 readonly isPreimageNotFound: boolean;2410 readonly isTooBigScheduledCall: boolean;2411 readonly isNotFound: boolean;2412 readonly isTargetBlockNumberInPast: boolean;2413 readonly isNamed: boolean;2414 readonly type: 'FailedToSchedule' | 'AgendaIsExhausted' | 'ScheduledCallCorrupted' | 'PreimageNotFound' | 'TooBigScheduledCall' | 'NotFound' | 'TargetBlockNumberInPast' | 'Named';2415}24162417/** @name PalletUniqueSchedulerV2Event */2418export interface PalletUniqueSchedulerV2Event extends Enum {2419 readonly isScheduled: boolean;2420 readonly asScheduled: {2421 readonly when: u32;2422 readonly index: u32;2423 } & Struct;2424 readonly isCanceled: boolean;2425 readonly asCanceled: {2426 readonly when: u32;2427 readonly index: u32;2428 } & Struct;2429 readonly isDispatched: boolean;2430 readonly asDispatched: {2431 readonly task: ITuple<[u32, u32]>;2432 readonly id: Option<U8aFixed>;2433 readonly result: Result<Null, SpRuntimeDispatchError>;2434 } & Struct;2435 readonly isPriorityChanged: boolean;2436 readonly asPriorityChanged: {2437 readonly task: ITuple<[u32, u32]>;2438 readonly priority: u8;2439 } & Struct;2440 readonly isCallUnavailable: boolean;2441 readonly asCallUnavailable: {2442 readonly task: ITuple<[u32, u32]>;2443 readonly id: Option<U8aFixed>;2444 } & Struct;2445 readonly isPermanentlyOverweight: boolean;2446 readonly asPermanentlyOverweight: {2447 readonly task: ITuple<[u32, u32]>;2448 readonly id: Option<U8aFixed>;2449 } & Struct;2450 readonly type: 'Scheduled' | 'Canceled' | 'Dispatched' | 'PriorityChanged' | 'CallUnavailable' | 'PermanentlyOverweight';2451}24522453/** @name PalletUniqueSchedulerV2Scheduled */2454export interface PalletUniqueSchedulerV2Scheduled extends Struct {2455 readonly maybeId: Option<U8aFixed>;2456 readonly priority: u8;2457 readonly call: PalletUniqueSchedulerV2ScheduledCall;2458 readonly maybePeriodic: Option<ITuple<[u32, u32]>>;2459 readonly origin: OpalRuntimeOriginCaller;2460}24612462/** @name PalletUniqueSchedulerV2ScheduledCall */2463export interface PalletUniqueSchedulerV2ScheduledCall extends Enum {2464 readonly isInline: boolean;2465 readonly asInline: Bytes;2466 readonly isPreimageLookup: boolean;2467 readonly asPreimageLookup: {2468 readonly hash_: H256;2469 readonly unboundedLen: u32;2470 } & Struct;2471 readonly type: 'Inline' | 'PreimageLookup';2472}24732474/** @name PalletXcmCall */2475export interface PalletXcmCall extends Enum {2476 readonly isSend: boolean;2477 readonly asSend: {2478 readonly dest: XcmVersionedMultiLocation;2479 readonly message: XcmVersionedXcm;2480 } & Struct;2481 readonly isTeleportAssets: boolean;2482 readonly asTeleportAssets: {2483 readonly dest: XcmVersionedMultiLocation;2484 readonly beneficiary: XcmVersionedMultiLocation;2485 readonly assets: XcmVersionedMultiAssets;2486 readonly feeAssetItem: u32;2487 } & Struct;2488 readonly isReserveTransferAssets: boolean;2489 readonly asReserveTransferAssets: {2490 readonly dest: XcmVersionedMultiLocation;2491 readonly beneficiary: XcmVersionedMultiLocation;2492 readonly assets: XcmVersionedMultiAssets;2493 readonly feeAssetItem: u32;2494 } & Struct;2495 readonly isExecute: boolean;2496 readonly asExecute: {2497 readonly message: XcmVersionedXcm;2498 readonly maxWeight: Weight;2499 } & Struct;2500 readonly isForceXcmVersion: boolean;2501 readonly asForceXcmVersion: {2502 readonly location: XcmV1MultiLocation;2503 readonly xcmVersion: u32;2504 } & Struct;2505 readonly isForceDefaultXcmVersion: boolean;2506 readonly asForceDefaultXcmVersion: {2507 readonly maybeXcmVersion: Option<u32>;2508 } & Struct;2509 readonly isForceSubscribeVersionNotify: boolean;2510 readonly asForceSubscribeVersionNotify: {2511 readonly location: XcmVersionedMultiLocation;2512 } & Struct;2513 readonly isForceUnsubscribeVersionNotify: boolean;2514 readonly asForceUnsubscribeVersionNotify: {2515 readonly location: XcmVersionedMultiLocation;2516 } & Struct;2517 readonly isLimitedReserveTransferAssets: boolean;2518 readonly asLimitedReserveTransferAssets: {2519 readonly dest: XcmVersionedMultiLocation;2520 readonly beneficiary: XcmVersionedMultiLocation;2521 readonly assets: XcmVersionedMultiAssets;2522 readonly feeAssetItem: u32;2523 readonly weightLimit: XcmV2WeightLimit;2524 } & Struct;2525 readonly isLimitedTeleportAssets: boolean;2526 readonly asLimitedTeleportAssets: {2527 readonly dest: XcmVersionedMultiLocation;2528 readonly beneficiary: XcmVersionedMultiLocation;2529 readonly assets: XcmVersionedMultiAssets;2530 readonly feeAssetItem: u32;2531 readonly weightLimit: XcmV2WeightLimit;2532 } & Struct;2533 readonly type: 'Send' | 'TeleportAssets' | 'ReserveTransferAssets' | 'Execute' | 'ForceXcmVersion' | 'ForceDefaultXcmVersion' | 'ForceSubscribeVersionNotify' | 'ForceUnsubscribeVersionNotify' | 'LimitedReserveTransferAssets' | 'LimitedTeleportAssets';2534}25352536/** @name PalletXcmError */2537export interface PalletXcmError extends Enum {2538 readonly isUnreachable: boolean;2539 readonly isSendFailure: boolean;2540 readonly isFiltered: boolean;2541 readonly isUnweighableMessage: boolean;2542 readonly isDestinationNotInvertible: boolean;2543 readonly isEmpty: boolean;2544 readonly isCannotReanchor: boolean;2545 readonly isTooManyAssets: boolean;2546 readonly isInvalidOrigin: boolean;2547 readonly isBadVersion: boolean;2548 readonly isBadLocation: boolean;2549 readonly isNoSubscription: boolean;2550 readonly isAlreadySubscribed: boolean;2551 readonly type: 'Unreachable' | 'SendFailure' | 'Filtered' | 'UnweighableMessage' | 'DestinationNotInvertible' | 'Empty' | 'CannotReanchor' | 'TooManyAssets' | 'InvalidOrigin' | 'BadVersion' | 'BadLocation' | 'NoSubscription' | 'AlreadySubscribed';2552}25532554/** @name PalletXcmEvent */2555export interface PalletXcmEvent extends Enum {2556 readonly isAttempted: boolean;2557 readonly asAttempted: XcmV2TraitsOutcome;2558 readonly isSent: boolean;2559 readonly asSent: ITuple<[XcmV1MultiLocation, XcmV1MultiLocation, XcmV2Xcm]>;2560 readonly isUnexpectedResponse: boolean;2561 readonly asUnexpectedResponse: ITuple<[XcmV1MultiLocation, u64]>;2562 readonly isResponseReady: boolean;2563 readonly asResponseReady: ITuple<[u64, XcmV2Response]>;2564 readonly isNotified: boolean;2565 readonly asNotified: ITuple<[u64, u8, u8]>;2566 readonly isNotifyOverweight: boolean;2567 readonly asNotifyOverweight: ITuple<[u64, u8, u8, Weight, Weight]>;2568 readonly isNotifyDispatchError: boolean;2569 readonly asNotifyDispatchError: ITuple<[u64, u8, u8]>;2570 readonly isNotifyDecodeFailed: boolean;2571 readonly asNotifyDecodeFailed: ITuple<[u64, u8, u8]>;2572 readonly isInvalidResponder: boolean;2573 readonly asInvalidResponder: ITuple<[XcmV1MultiLocation, u64, Option<XcmV1MultiLocation>]>;2574 readonly isInvalidResponderVersion: boolean;2575 readonly asInvalidResponderVersion: ITuple<[XcmV1MultiLocation, u64]>;2576 readonly isResponseTaken: boolean;2577 readonly asResponseTaken: u64;2578 readonly isAssetsTrapped: boolean;2579 readonly asAssetsTrapped: ITuple<[H256, XcmV1MultiLocation, XcmVersionedMultiAssets]>;2580 readonly isVersionChangeNotified: boolean;2581 readonly asVersionChangeNotified: ITuple<[XcmV1MultiLocation, u32]>;2582 readonly isSupportedVersionChanged: boolean;2583 readonly asSupportedVersionChanged: ITuple<[XcmV1MultiLocation, u32]>;2584 readonly isNotifyTargetSendFail: boolean;2585 readonly asNotifyTargetSendFail: ITuple<[XcmV1MultiLocation, u64, XcmV2TraitsError]>;2586 readonly isNotifyTargetMigrationFail: boolean;2587 readonly asNotifyTargetMigrationFail: ITuple<[XcmVersionedMultiLocation, u64]>;2588 readonly type: 'Attempted' | 'Sent' | 'UnexpectedResponse' | 'ResponseReady' | 'Notified' | 'NotifyOverweight' | 'NotifyDispatchError' | 'NotifyDecodeFailed' | 'InvalidResponder' | 'InvalidResponderVersion' | 'ResponseTaken' | 'AssetsTrapped' | 'VersionChangeNotified' | 'SupportedVersionChanged' | 'NotifyTargetSendFail' | 'NotifyTargetMigrationFail';2589}25902591/** @name PalletXcmOrigin */2592export interface PalletXcmOrigin extends Enum {2593 readonly isXcm: boolean;2594 readonly asXcm: XcmV1MultiLocation;2595 readonly isResponse: boolean;2596 readonly asResponse: XcmV1MultiLocation;2597 readonly type: 'Xcm' | 'Response';2598}25992600/** @name PhantomTypeUpDataStructs */2601export interface PhantomTypeUpDataStructs extends Vec<ITuple<[UpDataStructsTokenData, UpDataStructsRpcCollection, RmrkTraitsCollectionCollectionInfo, RmrkTraitsNftNftInfo, RmrkTraitsResourceResourceInfo, RmrkTraitsPropertyPropertyInfo, RmrkTraitsBaseBaseInfo, RmrkTraitsPartPartType, RmrkTraitsTheme, RmrkTraitsNftNftChild]>> {}26022603/** @name PolkadotCorePrimitivesInboundDownwardMessage */2604export interface PolkadotCorePrimitivesInboundDownwardMessage extends Struct {2605 readonly sentAt: u32;2606 readonly msg: Bytes;2607}26082609/** @name PolkadotCorePrimitivesInboundHrmpMessage */2610export interface PolkadotCorePrimitivesInboundHrmpMessage extends Struct {2611 readonly sentAt: u32;2612 readonly data: Bytes;2613}26142615/** @name PolkadotCorePrimitivesOutboundHrmpMessage */2616export interface PolkadotCorePrimitivesOutboundHrmpMessage extends Struct {2617 readonly recipient: u32;2618 readonly data: Bytes;2619}26202621/** @name PolkadotParachainPrimitivesXcmpMessageFormat */2622export interface PolkadotParachainPrimitivesXcmpMessageFormat extends Enum {2623 readonly isConcatenatedVersionedXcm: boolean;2624 readonly isConcatenatedEncodedBlob: boolean;2625 readonly isSignals: boolean;2626 readonly type: 'ConcatenatedVersionedXcm' | 'ConcatenatedEncodedBlob' | 'Signals';2627}26282629/** @name PolkadotPrimitivesV2AbridgedHostConfiguration */2630export interface PolkadotPrimitivesV2AbridgedHostConfiguration extends Struct {2631 readonly maxCodeSize: u32;2632 readonly maxHeadDataSize: u32;2633 readonly maxUpwardQueueCount: u32;2634 readonly maxUpwardQueueSize: u32;2635 readonly maxUpwardMessageSize: u32;2636 readonly maxUpwardMessageNumPerCandidate: u32;2637 readonly hrmpMaxMessageNumPerCandidate: u32;2638 readonly validationUpgradeCooldown: u32;2639 readonly validationUpgradeDelay: u32;2640}26412642/** @name PolkadotPrimitivesV2AbridgedHrmpChannel */2643export interface PolkadotPrimitivesV2AbridgedHrmpChannel extends Struct {2644 readonly maxCapacity: u32;2645 readonly maxTotalSize: u32;2646 readonly maxMessageSize: u32;2647 readonly msgCount: u32;2648 readonly totalSize: u32;2649 readonly mqcHead: Option<H256>;2650}26512652/** @name PolkadotPrimitivesV2PersistedValidationData */2653export interface PolkadotPrimitivesV2PersistedValidationData extends Struct {2654 readonly parentHead: Bytes;2655 readonly relayParentNumber: u32;2656 readonly relayParentStorageRoot: H256;2657 readonly maxPovSize: u32;2658}26592660/** @name PolkadotPrimitivesV2UpgradeRestriction */2661export interface PolkadotPrimitivesV2UpgradeRestriction extends Enum {2662 readonly isPresent: boolean;2663 readonly type: 'Present';2664}26652666/** @name RmrkTraitsBaseBaseInfo */2667export interface RmrkTraitsBaseBaseInfo extends Struct {2668 readonly issuer: AccountId32;2669 readonly baseType: Bytes;2670 readonly symbol: Bytes;2671}26722673/** @name RmrkTraitsCollectionCollectionInfo */2674export interface RmrkTraitsCollectionCollectionInfo extends Struct {2675 readonly issuer: AccountId32;2676 readonly metadata: Bytes;2677 readonly max: Option<u32>;2678 readonly symbol: Bytes;2679 readonly nftsCount: u32;2680}26812682/** @name RmrkTraitsNftAccountIdOrCollectionNftTuple */2683export interface RmrkTraitsNftAccountIdOrCollectionNftTuple extends Enum {2684 readonly isAccountId: boolean;2685 readonly asAccountId: AccountId32;2686 readonly isCollectionAndNftTuple: boolean;2687 readonly asCollectionAndNftTuple: ITuple<[u32, u32]>;2688 readonly type: 'AccountId' | 'CollectionAndNftTuple';2689}26902691/** @name RmrkTraitsNftNftChild */2692export interface RmrkTraitsNftNftChild extends Struct {2693 readonly collectionId: u32;2694 readonly nftId: u32;2695}26962697/** @name RmrkTraitsNftNftInfo */2698export interface RmrkTraitsNftNftInfo extends Struct {2699 readonly owner: RmrkTraitsNftAccountIdOrCollectionNftTuple;2700 readonly royalty: Option<RmrkTraitsNftRoyaltyInfo>;2701 readonly metadata: Bytes;2702 readonly equipped: bool;2703 readonly pending: bool;2704}27052706/** @name RmrkTraitsNftRoyaltyInfo */2707export interface RmrkTraitsNftRoyaltyInfo extends Struct {2708 readonly recipient: AccountId32;2709 readonly amount: Permill;2710}27112712/** @name RmrkTraitsPartEquippableList */2713export interface RmrkTraitsPartEquippableList extends Enum {2714 readonly isAll: boolean;2715 readonly isEmpty: boolean;2716 readonly isCustom: boolean;2717 readonly asCustom: Vec<u32>;2718 readonly type: 'All' | 'Empty' | 'Custom';2719}27202721/** @name RmrkTraitsPartFixedPart */2722export interface RmrkTraitsPartFixedPart extends Struct {2723 readonly id: u32;2724 readonly z: u32;2725 readonly src: Bytes;2726}27272728/** @name RmrkTraitsPartPartType */2729export interface RmrkTraitsPartPartType extends Enum {2730 readonly isFixedPart: boolean;2731 readonly asFixedPart: RmrkTraitsPartFixedPart;2732 readonly isSlotPart: boolean;2733 readonly asSlotPart: RmrkTraitsPartSlotPart;2734 readonly type: 'FixedPart' | 'SlotPart';2735}27362737/** @name RmrkTraitsPartSlotPart */2738export interface RmrkTraitsPartSlotPart extends Struct {2739 readonly id: u32;2740 readonly equippable: RmrkTraitsPartEquippableList;2741 readonly src: Bytes;2742 readonly z: u32;2743}27442745/** @name RmrkTraitsPropertyPropertyInfo */2746export interface RmrkTraitsPropertyPropertyInfo extends Struct {2747 readonly key: Bytes;2748 readonly value: Bytes;2749}27502751/** @name RmrkTraitsResourceBasicResource */2752export interface RmrkTraitsResourceBasicResource extends Struct {2753 readonly src: Option<Bytes>;2754 readonly metadata: Option<Bytes>;2755 readonly license: Option<Bytes>;2756 readonly thumb: Option<Bytes>;2757}27582759/** @name RmrkTraitsResourceComposableResource */2760export interface RmrkTraitsResourceComposableResource extends Struct {2761 readonly parts: Vec<u32>;2762 readonly base: u32;2763 readonly src: Option<Bytes>;2764 readonly metadata: Option<Bytes>;2765 readonly license: Option<Bytes>;2766 readonly thumb: Option<Bytes>;2767}27682769/** @name RmrkTraitsResourceResourceInfo */2770export interface RmrkTraitsResourceResourceInfo extends Struct {2771 readonly id: u32;2772 readonly resource: RmrkTraitsResourceResourceTypes;2773 readonly pending: bool;2774 readonly pendingRemoval: bool;2775}27762777/** @name RmrkTraitsResourceResourceTypes */2778export interface RmrkTraitsResourceResourceTypes extends Enum {2779 readonly isBasic: boolean;2780 readonly asBasic: RmrkTraitsResourceBasicResource;2781 readonly isComposable: boolean;2782 readonly asComposable: RmrkTraitsResourceComposableResource;2783 readonly isSlot: boolean;2784 readonly asSlot: RmrkTraitsResourceSlotResource;2785 readonly type: 'Basic' | 'Composable' | 'Slot';2786}27872788/** @name RmrkTraitsResourceSlotResource */2789export interface RmrkTraitsResourceSlotResource extends Struct {2790 readonly base: u32;2791 readonly src: Option<Bytes>;2792 readonly metadata: Option<Bytes>;2793 readonly slot: u32;2794 readonly license: Option<Bytes>;2795 readonly thumb: Option<Bytes>;2796}27972798/** @name RmrkTraitsTheme */2799export interface RmrkTraitsTheme extends Struct {2800 readonly name: Bytes;2801 readonly properties: Vec<RmrkTraitsThemeThemeProperty>;2802 readonly inherit: bool;2803}28042805/** @name RmrkTraitsThemeThemeProperty */2806export interface RmrkTraitsThemeThemeProperty extends Struct {2807 readonly key: Bytes;2808 readonly value: Bytes;2809}28102811/** @name SpCoreEcdsaSignature */2812export interface SpCoreEcdsaSignature extends U8aFixed {}28132814/** @name SpCoreEd25519Signature */2815export interface SpCoreEd25519Signature extends U8aFixed {}28162817/** @name SpCoreSr25519Signature */2818export interface SpCoreSr25519Signature extends U8aFixed {}28192820/** @name SpCoreVoid */2821export interface SpCoreVoid extends Null {}28222823/** @name SpRuntimeArithmeticError */2824export interface SpRuntimeArithmeticError extends Enum {2825 readonly isUnderflow: boolean;2826 readonly isOverflow: boolean;2827 readonly isDivisionByZero: boolean;2828 readonly type: 'Underflow' | 'Overflow' | 'DivisionByZero';2829}28302831/** @name SpRuntimeDigest */2832export interface SpRuntimeDigest extends Struct {2833 readonly logs: Vec<SpRuntimeDigestDigestItem>;2834}28352836/** @name SpRuntimeDigestDigestItem */2837export interface SpRuntimeDigestDigestItem extends Enum {2838 readonly isOther: boolean;2839 readonly asOther: Bytes;2840 readonly isConsensus: boolean;2841 readonly asConsensus: ITuple<[U8aFixed, Bytes]>;2842 readonly isSeal: boolean;2843 readonly asSeal: ITuple<[U8aFixed, Bytes]>;2844 readonly isPreRuntime: boolean;2845 readonly asPreRuntime: ITuple<[U8aFixed, Bytes]>;2846 readonly isRuntimeEnvironmentUpdated: boolean;2847 readonly type: 'Other' | 'Consensus' | 'Seal' | 'PreRuntime' | 'RuntimeEnvironmentUpdated';2848}28492850/** @name SpRuntimeDispatchError */2851export interface SpRuntimeDispatchError extends Enum {2852 readonly isOther: boolean;2853 readonly isCannotLookup: boolean;2854 readonly isBadOrigin: boolean;2855 readonly isModule: boolean;2856 readonly asModule: SpRuntimeModuleError;2857 readonly isConsumerRemaining: boolean;2858 readonly isNoProviders: boolean;2859 readonly isTooManyConsumers: boolean;2860 readonly isToken: boolean;2861 readonly asToken: SpRuntimeTokenError;2862 readonly isArithmetic: boolean;2863 readonly asArithmetic: SpRuntimeArithmeticError;2864 readonly isTransactional: boolean;2865 readonly asTransactional: SpRuntimeTransactionalError;2866 readonly type: 'Other' | 'CannotLookup' | 'BadOrigin' | 'Module' | 'ConsumerRemaining' | 'NoProviders' | 'TooManyConsumers' | 'Token' | 'Arithmetic' | 'Transactional';2867}28682869/** @name SpRuntimeModuleError */2870export interface SpRuntimeModuleError extends Struct {2871 readonly index: u8;2872 readonly error: U8aFixed;2873}28742875/** @name SpRuntimeMultiSignature */2876export interface SpRuntimeMultiSignature extends Enum {2877 readonly isEd25519: boolean;2878 readonly asEd25519: SpCoreEd25519Signature;2879 readonly isSr25519: boolean;2880 readonly asSr25519: SpCoreSr25519Signature;2881 readonly isEcdsa: boolean;2882 readonly asEcdsa: SpCoreEcdsaSignature;2883 readonly type: 'Ed25519' | 'Sr25519' | 'Ecdsa';2884}28852886/** @name SpRuntimeTokenError */2887export interface SpRuntimeTokenError extends Enum {2888 readonly isNoFunds: boolean;2889 readonly isWouldDie: boolean;2890 readonly isBelowMinimum: boolean;2891 readonly isCannotCreate: boolean;2892 readonly isUnknownAsset: boolean;2893 readonly isFrozen: boolean;2894 readonly isUnsupported: boolean;2895 readonly type: 'NoFunds' | 'WouldDie' | 'BelowMinimum' | 'CannotCreate' | 'UnknownAsset' | 'Frozen' | 'Unsupported';2896}28972898/** @name SpRuntimeTransactionalError */2899export interface SpRuntimeTransactionalError extends Enum {2900 readonly isLimitReached: boolean;2901 readonly isNoLayer: boolean;2902 readonly type: 'LimitReached' | 'NoLayer';2903}29042905/** @name SpTrieStorageProof */2906export interface SpTrieStorageProof extends Struct {2907 readonly trieNodes: BTreeSet<Bytes>;2908}29092910/** @name SpVersionRuntimeVersion */2911export interface SpVersionRuntimeVersion extends Struct {2912 readonly specName: Text;2913 readonly implName: Text;2914 readonly authoringVersion: u32;2915 readonly specVersion: u32;2916 readonly implVersion: u32;2917 readonly apis: Vec<ITuple<[U8aFixed, u32]>>;2918 readonly transactionVersion: u32;2919 readonly stateVersion: u8;2920}29212922/** @name SpWeightsRuntimeDbWeight */2923export interface SpWeightsRuntimeDbWeight extends Struct {2924 readonly read: u64;2925 readonly write: u64;2926}29272928/** @name UpDataStructsAccessMode */2929export interface UpDataStructsAccessMode extends Enum {2930 readonly isNormal: boolean;2931 readonly isAllowList: boolean;2932 readonly type: 'Normal' | 'AllowList';2933}29342935/** @name UpDataStructsCollection */2936export interface UpDataStructsCollection extends Struct {2937 readonly owner: AccountId32;2938 readonly mode: UpDataStructsCollectionMode;2939 readonly name: Vec<u16>;2940 readonly description: Vec<u16>;2941 readonly tokenPrefix: Bytes;2942 readonly sponsorship: UpDataStructsSponsorshipStateAccountId32;2943 readonly limits: UpDataStructsCollectionLimits;2944 readonly permissions: UpDataStructsCollectionPermissions;2945 readonly flags: U8aFixed;2946}29472948/** @name UpDataStructsCollectionLimits */2949export interface UpDataStructsCollectionLimits extends Struct {2950 readonly accountTokenOwnershipLimit: Option<u32>;2951 readonly sponsoredDataSize: Option<u32>;2952 readonly sponsoredDataRateLimit: Option<UpDataStructsSponsoringRateLimit>;2953 readonly tokenLimit: Option<u32>;2954 readonly sponsorTransferTimeout: Option<u32>;2955 readonly sponsorApproveTimeout: Option<u32>;2956 readonly ownerCanTransfer: Option<bool>;2957 readonly ownerCanDestroy: Option<bool>;2958 readonly transfersEnabled: Option<bool>;2959}29602961/** @name UpDataStructsCollectionMode */2962export interface UpDataStructsCollectionMode extends Enum {2963 readonly isNft: boolean;2964 readonly isFungible: boolean;2965 readonly asFungible: u8;2966 readonly isReFungible: boolean;2967 readonly type: 'Nft' | 'Fungible' | 'ReFungible';2968}29692970/** @name UpDataStructsCollectionPermissions */2971export interface UpDataStructsCollectionPermissions extends Struct {2972 readonly access: Option<UpDataStructsAccessMode>;2973 readonly mintMode: Option<bool>;2974 readonly nesting: Option<UpDataStructsNestingPermissions>;2975}29762977/** @name UpDataStructsCollectionStats */2978export interface UpDataStructsCollectionStats extends Struct {2979 readonly created: u32;2980 readonly destroyed: u32;2981 readonly alive: u32;2982}29832984/** @name UpDataStructsCreateCollectionData */2985export interface UpDataStructsCreateCollectionData extends Struct {2986 readonly mode: UpDataStructsCollectionMode;2987 readonly access: Option<UpDataStructsAccessMode>;2988 readonly name: Vec<u16>;2989 readonly description: Vec<u16>;2990 readonly tokenPrefix: Bytes;2991 readonly pendingSponsor: Option<AccountId32>;2992 readonly limits: Option<UpDataStructsCollectionLimits>;2993 readonly permissions: Option<UpDataStructsCollectionPermissions>;2994 readonly tokenPropertyPermissions: Vec<UpDataStructsPropertyKeyPermission>;2995 readonly properties: Vec<UpDataStructsProperty>;2996}29972998/** @name UpDataStructsCreateFungibleData */2999export interface UpDataStructsCreateFungibleData extends Struct {3000 readonly value: u128;3001}30023003/** @name UpDataStructsCreateItemData */3004export interface UpDataStructsCreateItemData extends Enum {3005 readonly isNft: boolean;3006 readonly asNft: UpDataStructsCreateNftData;3007 readonly isFungible: boolean;3008 readonly asFungible: UpDataStructsCreateFungibleData;3009 readonly isReFungible: boolean;3010 readonly asReFungible: UpDataStructsCreateReFungibleData;3011 readonly type: 'Nft' | 'Fungible' | 'ReFungible';3012}30133014/** @name UpDataStructsCreateItemExData */3015export interface UpDataStructsCreateItemExData extends Enum {3016 readonly isNft: boolean;3017 readonly asNft: Vec<UpDataStructsCreateNftExData>;3018 readonly isFungible: boolean;3019 readonly asFungible: BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr,u128>;3020 readonly isRefungibleMultipleItems: boolean;3021 readonly asRefungibleMultipleItems: Vec<UpDataStructsCreateRefungibleExSingleOwner>;3022 readonly isRefungibleMultipleOwners: boolean;3023 readonly asRefungibleMultipleOwners: UpDataStructsCreateRefungibleExMultipleOwners;3024 readonly type: 'Nft' | 'Fungible' | 'RefungibleMultipleItems' | 'RefungibleMultipleOwners';3025}30263027/** @name UpDataStructsCreateNftData */3028export interface UpDataStructsCreateNftData extends Struct {3029 readonly properties: Vec<UpDataStructsProperty>;3030}30313032/** @name UpDataStructsCreateNftExData */3033export interface UpDataStructsCreateNftExData extends Struct {3034 readonly properties: Vec<UpDataStructsProperty>;3035 readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;3036}30373038/** @name UpDataStructsCreateReFungibleData */3039export interface UpDataStructsCreateReFungibleData extends Struct {3040 readonly pieces: u128;3041 readonly properties: Vec<UpDataStructsProperty>;3042}30433044/** @name UpDataStructsCreateRefungibleExMultipleOwners */3045export interface UpDataStructsCreateRefungibleExMultipleOwners extends Struct {3046 readonly users: BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr, u128>;3047 readonly properties: Vec<UpDataStructsProperty>;3048}30493050/** @name UpDataStructsCreateRefungibleExSingleOwner */3051export interface UpDataStructsCreateRefungibleExSingleOwner extends Struct {3052 readonly user: PalletEvmAccountBasicCrossAccountIdRepr;3053 readonly pieces: u128;3054 readonly properties: Vec<UpDataStructsProperty>;3055}30563057/** @name UpDataStructsNestingPermissions */3058export interface UpDataStructsNestingPermissions extends Struct {3059 readonly tokenOwner: bool;3060 readonly collectionAdmin: bool;3061 readonly restricted: Option<UpDataStructsOwnerRestrictedSet>;3062}30633064/** @name UpDataStructsOwnerRestrictedSet */3065export interface UpDataStructsOwnerRestrictedSet extends BTreeSet<u32> {}30663067/** @name UpDataStructsProperties */3068export interface UpDataStructsProperties extends Struct {3069 readonly map: UpDataStructsPropertiesMapBoundedVec;3070 readonly consumedSpace: u32;3071 readonly spaceLimit: u32;3072}30733074/** @name UpDataStructsPropertiesMapBoundedVec */3075export interface UpDataStructsPropertiesMapBoundedVec extends BTreeMap<Bytes, Bytes> {}30763077/** @name UpDataStructsPropertiesMapPropertyPermission */3078export interface UpDataStructsPropertiesMapPropertyPermission extends BTreeMap<Bytes, UpDataStructsPropertyPermission> {}30793080/** @name UpDataStructsProperty */3081export interface UpDataStructsProperty extends Struct {3082 readonly key: Bytes;3083 readonly value: Bytes;3084}30853086/** @name UpDataStructsPropertyKeyPermission */3087export interface UpDataStructsPropertyKeyPermission extends Struct {3088 readonly key: Bytes;3089 readonly permission: UpDataStructsPropertyPermission;3090}30913092/** @name UpDataStructsPropertyPermission */3093export interface UpDataStructsPropertyPermission extends Struct {3094 readonly mutable: bool;3095 readonly collectionAdmin: bool;3096 readonly tokenOwner: bool;3097}30983099/** @name UpDataStructsPropertyScope */3100export interface UpDataStructsPropertyScope extends Enum {3101 readonly isNone: boolean;3102 readonly isRmrk: boolean;3103 readonly type: 'None' | 'Rmrk';3104}31053106/** @name UpDataStructsRpcCollection */3107export interface UpDataStructsRpcCollection extends Struct {3108 readonly owner: AccountId32;3109 readonly mode: UpDataStructsCollectionMode;3110 readonly name: Vec<u16>;3111 readonly description: Vec<u16>;3112 readonly tokenPrefix: Bytes;3113 readonly sponsorship: UpDataStructsSponsorshipStateAccountId32;3114 readonly limits: UpDataStructsCollectionLimits;3115 readonly permissions: UpDataStructsCollectionPermissions;3116 readonly tokenPropertyPermissions: Vec<UpDataStructsPropertyKeyPermission>;3117 readonly properties: Vec<UpDataStructsProperty>;3118 readonly readOnly: bool;3119 readonly flags: UpDataStructsRpcCollectionFlags;3120}31213122/** @name UpDataStructsRpcCollectionFlags */3123export interface UpDataStructsRpcCollectionFlags extends Struct {3124 readonly foreign: bool;3125 readonly erc721metadata: bool;3126}31273128/** @name UpDataStructsSponsoringRateLimit */3129export interface UpDataStructsSponsoringRateLimit extends Enum {3130 readonly isSponsoringDisabled: boolean;3131 readonly isBlocks: boolean;3132 readonly asBlocks: u32;3133 readonly type: 'SponsoringDisabled' | 'Blocks';3134}31353136/** @name UpDataStructsSponsorshipStateAccountId32 */3137export interface UpDataStructsSponsorshipStateAccountId32 extends Enum {3138 readonly isDisabled: boolean;3139 readonly isUnconfirmed: boolean;3140 readonly asUnconfirmed: AccountId32;3141 readonly isConfirmed: boolean;3142 readonly asConfirmed: AccountId32;3143 readonly type: 'Disabled' | 'Unconfirmed' | 'Confirmed';3144}31453146/** @name UpDataStructsSponsorshipStateBasicCrossAccountIdRepr */3147export interface UpDataStructsSponsorshipStateBasicCrossAccountIdRepr extends Enum {3148 readonly isDisabled: boolean;3149 readonly isUnconfirmed: boolean;3150 readonly asUnconfirmed: PalletEvmAccountBasicCrossAccountIdRepr;3151 readonly isConfirmed: boolean;3152 readonly asConfirmed: PalletEvmAccountBasicCrossAccountIdRepr;3153 readonly type: 'Disabled' | 'Unconfirmed' | 'Confirmed';3154}31553156/** @name UpDataStructsTokenChild */3157export interface UpDataStructsTokenChild extends Struct {3158 readonly token: u32;3159 readonly collection: u32;3160}31613162/** @name UpDataStructsTokenData */3163export interface UpDataStructsTokenData extends Struct {3164 readonly properties: Vec<UpDataStructsProperty>;3165 readonly owner: Option<PalletEvmAccountBasicCrossAccountIdRepr>;3166 readonly pieces: u128;3167}31683169/** @name XcmDoubleEncoded */3170export interface XcmDoubleEncoded extends Struct {3171 readonly encoded: Bytes;3172}31733174/** @name XcmV0Junction */3175export interface XcmV0Junction extends Enum {3176 readonly isParent: boolean;3177 readonly isParachain: boolean;3178 readonly asParachain: Compact<u32>;3179 readonly isAccountId32: boolean;3180 readonly asAccountId32: {3181 readonly network: XcmV0JunctionNetworkId;3182 readonly id: U8aFixed;3183 } & Struct;3184 readonly isAccountIndex64: boolean;3185 readonly asAccountIndex64: {3186 readonly network: XcmV0JunctionNetworkId;3187 readonly index: Compact<u64>;3188 } & Struct;3189 readonly isAccountKey20: boolean;3190 readonly asAccountKey20: {3191 readonly network: XcmV0JunctionNetworkId;3192 readonly key: U8aFixed;3193 } & Struct;3194 readonly isPalletInstance: boolean;3195 readonly asPalletInstance: u8;3196 readonly isGeneralIndex: boolean;3197 readonly asGeneralIndex: Compact<u128>;3198 readonly isGeneralKey: boolean;3199 readonly asGeneralKey: Bytes;3200 readonly isOnlyChild: boolean;3201 readonly isPlurality: boolean;3202 readonly asPlurality: {3203 readonly id: XcmV0JunctionBodyId;3204 readonly part: XcmV0JunctionBodyPart;3205 } & Struct;3206 readonly type: 'Parent' | 'Parachain' | 'AccountId32' | 'AccountIndex64' | 'AccountKey20' | 'PalletInstance' | 'GeneralIndex' | 'GeneralKey' | 'OnlyChild' | 'Plurality';3207}32083209/** @name XcmV0JunctionBodyId */3210export interface XcmV0JunctionBodyId extends Enum {3211 readonly isUnit: boolean;3212 readonly isNamed: boolean;3213 readonly asNamed: Bytes;3214 readonly isIndex: boolean;3215 readonly asIndex: Compact<u32>;3216 readonly isExecutive: boolean;3217 readonly isTechnical: boolean;3218 readonly isLegislative: boolean;3219 readonly isJudicial: boolean;3220 readonly type: 'Unit' | 'Named' | 'Index' | 'Executive' | 'Technical' | 'Legislative' | 'Judicial';3221}32223223/** @name XcmV0JunctionBodyPart */3224export interface XcmV0JunctionBodyPart extends Enum {3225 readonly isVoice: boolean;3226 readonly isMembers: boolean;3227 readonly asMembers: {3228 readonly count: Compact<u32>;3229 } & Struct;3230 readonly isFraction: boolean;3231 readonly asFraction: {3232 readonly nom: Compact<u32>;3233 readonly denom: Compact<u32>;3234 } & Struct;3235 readonly isAtLeastProportion: boolean;3236 readonly asAtLeastProportion: {3237 readonly nom: Compact<u32>;3238 readonly denom: Compact<u32>;3239 } & Struct;3240 readonly isMoreThanProportion: boolean;3241 readonly asMoreThanProportion: {3242 readonly nom: Compact<u32>;3243 readonly denom: Compact<u32>;3244 } & Struct;3245 readonly type: 'Voice' | 'Members' | 'Fraction' | 'AtLeastProportion' | 'MoreThanProportion';3246}32473248/** @name XcmV0JunctionNetworkId */3249export interface XcmV0JunctionNetworkId extends Enum {3250 readonly isAny: boolean;3251 readonly isNamed: boolean;3252 readonly asNamed: Bytes;3253 readonly isPolkadot: boolean;3254 readonly isKusama: boolean;3255 readonly type: 'Any' | 'Named' | 'Polkadot' | 'Kusama';3256}32573258/** @name XcmV0MultiAsset */3259export interface XcmV0MultiAsset extends Enum {3260 readonly isNone: boolean;3261 readonly isAll: boolean;3262 readonly isAllFungible: boolean;3263 readonly isAllNonFungible: boolean;3264 readonly isAllAbstractFungible: boolean;3265 readonly asAllAbstractFungible: {3266 readonly id: Bytes;3267 } & Struct;3268 readonly isAllAbstractNonFungible: boolean;3269 readonly asAllAbstractNonFungible: {3270 readonly class: Bytes;3271 } & Struct;3272 readonly isAllConcreteFungible: boolean;3273 readonly asAllConcreteFungible: {3274 readonly id: XcmV0MultiLocation;3275 } & Struct;3276 readonly isAllConcreteNonFungible: boolean;3277 readonly asAllConcreteNonFungible: {3278 readonly class: XcmV0MultiLocation;3279 } & Struct;3280 readonly isAbstractFungible: boolean;3281 readonly asAbstractFungible: {3282 readonly id: Bytes;3283 readonly amount: Compact<u128>;3284 } & Struct;3285 readonly isAbstractNonFungible: boolean;3286 readonly asAbstractNonFungible: {3287 readonly class: Bytes;3288 readonly instance: XcmV1MultiassetAssetInstance;3289 } & Struct;3290 readonly isConcreteFungible: boolean;3291 readonly asConcreteFungible: {3292 readonly id: XcmV0MultiLocation;3293 readonly amount: Compact<u128>;3294 } & Struct;3295 readonly isConcreteNonFungible: boolean;3296 readonly asConcreteNonFungible: {3297 readonly class: XcmV0MultiLocation;3298 readonly instance: XcmV1MultiassetAssetInstance;3299 } & Struct;3300 readonly type: 'None' | 'All' | 'AllFungible' | 'AllNonFungible' | 'AllAbstractFungible' | 'AllAbstractNonFungible' | 'AllConcreteFungible' | 'AllConcreteNonFungible' | 'AbstractFungible' | 'AbstractNonFungible' | 'ConcreteFungible' | 'ConcreteNonFungible';3301}33023303/** @name XcmV0MultiLocation */3304export interface XcmV0MultiLocation extends Enum {3305 readonly isNull: boolean;3306 readonly isX1: boolean;3307 readonly asX1: XcmV0Junction;3308 readonly isX2: boolean;3309 readonly asX2: ITuple<[XcmV0Junction, XcmV0Junction]>;3310 readonly isX3: boolean;3311 readonly asX3: ITuple<[XcmV0Junction, XcmV0Junction, XcmV0Junction]>;3312 readonly isX4: boolean;3313 readonly asX4: ITuple<[XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction]>;3314 readonly isX5: boolean;3315 readonly asX5: ITuple<[XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction]>;3316 readonly isX6: boolean;3317 readonly asX6: ITuple<[XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction]>;3318 readonly isX7: boolean;3319 readonly asX7: ITuple<[XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction]>;3320 readonly isX8: boolean;3321 readonly asX8: ITuple<[XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction]>;3322 readonly type: 'Null' | 'X1' | 'X2' | 'X3' | 'X4' | 'X5' | 'X6' | 'X7' | 'X8';3323}33243325/** @name XcmV0Order */3326export interface XcmV0Order extends Enum {3327 readonly isNull: boolean;3328 readonly isDepositAsset: boolean;3329 readonly asDepositAsset: {3330 readonly assets: Vec<XcmV0MultiAsset>;3331 readonly dest: XcmV0MultiLocation;3332 } & Struct;3333 readonly isDepositReserveAsset: boolean;3334 readonly asDepositReserveAsset: {3335 readonly assets: Vec<XcmV0MultiAsset>;3336 readonly dest: XcmV0MultiLocation;3337 readonly effects: Vec<XcmV0Order>;3338 } & Struct;3339 readonly isExchangeAsset: boolean;3340 readonly asExchangeAsset: {3341 readonly give: Vec<XcmV0MultiAsset>;3342 readonly receive: Vec<XcmV0MultiAsset>;3343 } & Struct;3344 readonly isInitiateReserveWithdraw: boolean;3345 readonly asInitiateReserveWithdraw: {3346 readonly assets: Vec<XcmV0MultiAsset>;3347 readonly reserve: XcmV0MultiLocation;3348 readonly effects: Vec<XcmV0Order>;3349 } & Struct;3350 readonly isInitiateTeleport: boolean;3351 readonly asInitiateTeleport: {3352 readonly assets: Vec<XcmV0MultiAsset>;3353 readonly dest: XcmV0MultiLocation;3354 readonly effects: Vec<XcmV0Order>;3355 } & Struct;3356 readonly isQueryHolding: boolean;3357 readonly asQueryHolding: {3358 readonly queryId: Compact<u64>;3359 readonly dest: XcmV0MultiLocation;3360 readonly assets: Vec<XcmV0MultiAsset>;3361 } & Struct;3362 readonly isBuyExecution: boolean;3363 readonly asBuyExecution: {3364 readonly fees: XcmV0MultiAsset;3365 readonly weight: u64;3366 readonly debt: u64;3367 readonly haltOnError: bool;3368 readonly xcm: Vec<XcmV0Xcm>;3369 } & Struct;3370 readonly type: 'Null' | 'DepositAsset' | 'DepositReserveAsset' | 'ExchangeAsset' | 'InitiateReserveWithdraw' | 'InitiateTeleport' | 'QueryHolding' | 'BuyExecution';3371}33723373/** @name XcmV0OriginKind */3374export interface XcmV0OriginKind extends Enum {3375 readonly isNative: boolean;3376 readonly isSovereignAccount: boolean;3377 readonly isSuperuser: boolean;3378 readonly isXcm: boolean;3379 readonly type: 'Native' | 'SovereignAccount' | 'Superuser' | 'Xcm';3380}33813382/** @name XcmV0Response */3383export interface XcmV0Response extends Enum {3384 readonly isAssets: boolean;3385 readonly asAssets: Vec<XcmV0MultiAsset>;3386 readonly type: 'Assets';3387}33883389/** @name XcmV0Xcm */3390export interface XcmV0Xcm extends Enum {3391 readonly isWithdrawAsset: boolean;3392 readonly asWithdrawAsset: {3393 readonly assets: Vec<XcmV0MultiAsset>;3394 readonly effects: Vec<XcmV0Order>;3395 } & Struct;3396 readonly isReserveAssetDeposit: boolean;3397 readonly asReserveAssetDeposit: {3398 readonly assets: Vec<XcmV0MultiAsset>;3399 readonly effects: Vec<XcmV0Order>;3400 } & Struct;3401 readonly isTeleportAsset: boolean;3402 readonly asTeleportAsset: {3403 readonly assets: Vec<XcmV0MultiAsset>;3404 readonly effects: Vec<XcmV0Order>;3405 } & Struct;3406 readonly isQueryResponse: boolean;3407 readonly asQueryResponse: {3408 readonly queryId: Compact<u64>;3409 readonly response: XcmV0Response;3410 } & Struct;3411 readonly isTransferAsset: boolean;3412 readonly asTransferAsset: {3413 readonly assets: Vec<XcmV0MultiAsset>;3414 readonly dest: XcmV0MultiLocation;3415 } & Struct;3416 readonly isTransferReserveAsset: boolean;3417 readonly asTransferReserveAsset: {3418 readonly assets: Vec<XcmV0MultiAsset>;3419 readonly dest: XcmV0MultiLocation;3420 readonly effects: Vec<XcmV0Order>;3421 } & Struct;3422 readonly isTransact: boolean;3423 readonly asTransact: {3424 readonly originType: XcmV0OriginKind;3425 readonly requireWeightAtMost: u64;3426 readonly call: XcmDoubleEncoded;3427 } & Struct;3428 readonly isHrmpNewChannelOpenRequest: boolean;3429 readonly asHrmpNewChannelOpenRequest: {3430 readonly sender: Compact<u32>;3431 readonly maxMessageSize: Compact<u32>;3432 readonly maxCapacity: Compact<u32>;3433 } & Struct;3434 readonly isHrmpChannelAccepted: boolean;3435 readonly asHrmpChannelAccepted: {3436 readonly recipient: Compact<u32>;3437 } & Struct;3438 readonly isHrmpChannelClosing: boolean;3439 readonly asHrmpChannelClosing: {3440 readonly initiator: Compact<u32>;3441 readonly sender: Compact<u32>;3442 readonly recipient: Compact<u32>;3443 } & Struct;3444 readonly isRelayedFrom: boolean;3445 readonly asRelayedFrom: {3446 readonly who: XcmV0MultiLocation;3447 readonly message: XcmV0Xcm;3448 } & Struct;3449 readonly type: 'WithdrawAsset' | 'ReserveAssetDeposit' | 'TeleportAsset' | 'QueryResponse' | 'TransferAsset' | 'TransferReserveAsset' | 'Transact' | 'HrmpNewChannelOpenRequest' | 'HrmpChannelAccepted' | 'HrmpChannelClosing' | 'RelayedFrom';3450}34513452/** @name XcmV1Junction */3453export interface XcmV1Junction extends Enum {3454 readonly isParachain: boolean;3455 readonly asParachain: Compact<u32>;3456 readonly isAccountId32: boolean;3457 readonly asAccountId32: {3458 readonly network: XcmV0JunctionNetworkId;3459 readonly id: U8aFixed;3460 } & Struct;3461 readonly isAccountIndex64: boolean;3462 readonly asAccountIndex64: {3463 readonly network: XcmV0JunctionNetworkId;3464 readonly index: Compact<u64>;3465 } & Struct;3466 readonly isAccountKey20: boolean;3467 readonly asAccountKey20: {3468 readonly network: XcmV0JunctionNetworkId;3469 readonly key: U8aFixed;3470 } & Struct;3471 readonly isPalletInstance: boolean;3472 readonly asPalletInstance: u8;3473 readonly isGeneralIndex: boolean;3474 readonly asGeneralIndex: Compact<u128>;3475 readonly isGeneralKey: boolean;3476 readonly asGeneralKey: Bytes;3477 readonly isOnlyChild: boolean;3478 readonly isPlurality: boolean;3479 readonly asPlurality: {3480 readonly id: XcmV0JunctionBodyId;3481 readonly part: XcmV0JunctionBodyPart;3482 } & Struct;3483 readonly type: 'Parachain' | 'AccountId32' | 'AccountIndex64' | 'AccountKey20' | 'PalletInstance' | 'GeneralIndex' | 'GeneralKey' | 'OnlyChild' | 'Plurality';3484}34853486/** @name XcmV1MultiAsset */3487export interface XcmV1MultiAsset extends Struct {3488 readonly id: XcmV1MultiassetAssetId;3489 readonly fun: XcmV1MultiassetFungibility;3490}34913492/** @name XcmV1MultiassetAssetId */3493export interface XcmV1MultiassetAssetId extends Enum {3494 readonly isConcrete: boolean;3495 readonly asConcrete: XcmV1MultiLocation;3496 readonly isAbstract: boolean;3497 readonly asAbstract: Bytes;3498 readonly type: 'Concrete' | 'Abstract';3499}35003501/** @name XcmV1MultiassetAssetInstance */3502export interface XcmV1MultiassetAssetInstance extends Enum {3503 readonly isUndefined: boolean;3504 readonly isIndex: boolean;3505 readonly asIndex: Compact<u128>;3506 readonly isArray4: boolean;3507 readonly asArray4: U8aFixed;3508 readonly isArray8: boolean;3509 readonly asArray8: U8aFixed;3510 readonly isArray16: boolean;3511 readonly asArray16: U8aFixed;3512 readonly isArray32: boolean;3513 readonly asArray32: U8aFixed;3514 readonly isBlob: boolean;3515 readonly asBlob: Bytes;3516 readonly type: 'Undefined' | 'Index' | 'Array4' | 'Array8' | 'Array16' | 'Array32' | 'Blob';3517}35183519/** @name XcmV1MultiassetFungibility */3520export interface XcmV1MultiassetFungibility extends Enum {3521 readonly isFungible: boolean;3522 readonly asFungible: Compact<u128>;3523 readonly isNonFungible: boolean;3524 readonly asNonFungible: XcmV1MultiassetAssetInstance;3525 readonly type: 'Fungible' | 'NonFungible';3526}35273528/** @name XcmV1MultiassetMultiAssetFilter */3529export interface XcmV1MultiassetMultiAssetFilter extends Enum {3530 readonly isDefinite: boolean;3531 readonly asDefinite: XcmV1MultiassetMultiAssets;3532 readonly isWild: boolean;3533 readonly asWild: XcmV1MultiassetWildMultiAsset;3534 readonly type: 'Definite' | 'Wild';3535}35363537/** @name XcmV1MultiassetMultiAssets */3538export interface XcmV1MultiassetMultiAssets extends Vec<XcmV1MultiAsset> {}35393540/** @name XcmV1MultiassetWildFungibility */3541export interface XcmV1MultiassetWildFungibility extends Enum {3542 readonly isFungible: boolean;3543 readonly isNonFungible: boolean;3544 readonly type: 'Fungible' | 'NonFungible';3545}35463547/** @name XcmV1MultiassetWildMultiAsset */3548export interface XcmV1MultiassetWildMultiAsset extends Enum {3549 readonly isAll: boolean;3550 readonly isAllOf: boolean;3551 readonly asAllOf: {3552 readonly id: XcmV1MultiassetAssetId;3553 readonly fun: XcmV1MultiassetWildFungibility;3554 } & Struct;3555 readonly type: 'All' | 'AllOf';3556}35573558/** @name XcmV1MultiLocation */3559export interface XcmV1MultiLocation extends Struct {3560 readonly parents: u8;3561 readonly interior: XcmV1MultilocationJunctions;3562}35633564/** @name XcmV1MultilocationJunctions */3565export interface XcmV1MultilocationJunctions extends Enum {3566 readonly isHere: boolean;3567 readonly isX1: boolean;3568 readonly asX1: XcmV1Junction;3569 readonly isX2: boolean;3570 readonly asX2: ITuple<[XcmV1Junction, XcmV1Junction]>;3571 readonly isX3: boolean;3572 readonly asX3: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction]>;3573 readonly isX4: boolean;3574 readonly asX4: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction]>;3575 readonly isX5: boolean;3576 readonly asX5: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction]>;3577 readonly isX6: boolean;3578 readonly asX6: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction]>;3579 readonly isX7: boolean;3580 readonly asX7: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction]>;3581 readonly isX8: boolean;3582 readonly asX8: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction]>;3583 readonly type: 'Here' | 'X1' | 'X2' | 'X3' | 'X4' | 'X5' | 'X6' | 'X7' | 'X8';3584}35853586/** @name XcmV1Order */3587export interface XcmV1Order extends Enum {3588 readonly isNoop: boolean;3589 readonly isDepositAsset: boolean;3590 readonly asDepositAsset: {3591 readonly assets: XcmV1MultiassetMultiAssetFilter;3592 readonly maxAssets: u32;3593 readonly beneficiary: XcmV1MultiLocation;3594 } & Struct;3595 readonly isDepositReserveAsset: boolean;3596 readonly asDepositReserveAsset: {3597 readonly assets: XcmV1MultiassetMultiAssetFilter;3598 readonly maxAssets: u32;3599 readonly dest: XcmV1MultiLocation;3600 readonly effects: Vec<XcmV1Order>;3601 } & Struct;3602 readonly isExchangeAsset: boolean;3603 readonly asExchangeAsset: {3604 readonly give: XcmV1MultiassetMultiAssetFilter;3605 readonly receive: XcmV1MultiassetMultiAssets;3606 } & Struct;3607 readonly isInitiateReserveWithdraw: boolean;3608 readonly asInitiateReserveWithdraw: {3609 readonly assets: XcmV1MultiassetMultiAssetFilter;3610 readonly reserve: XcmV1MultiLocation;3611 readonly effects: Vec<XcmV1Order>;3612 } & Struct;3613 readonly isInitiateTeleport: boolean;3614 readonly asInitiateTeleport: {3615 readonly assets: XcmV1MultiassetMultiAssetFilter;3616 readonly dest: XcmV1MultiLocation;3617 readonly effects: Vec<XcmV1Order>;3618 } & Struct;3619 readonly isQueryHolding: boolean;3620 readonly asQueryHolding: {3621 readonly queryId: Compact<u64>;3622 readonly dest: XcmV1MultiLocation;3623 readonly assets: XcmV1MultiassetMultiAssetFilter;3624 } & Struct;3625 readonly isBuyExecution: boolean;3626 readonly asBuyExecution: {3627 readonly fees: XcmV1MultiAsset;3628 readonly weight: u64;3629 readonly debt: u64;3630 readonly haltOnError: bool;3631 readonly instructions: Vec<XcmV1Xcm>;3632 } & Struct;3633 readonly type: 'Noop' | 'DepositAsset' | 'DepositReserveAsset' | 'ExchangeAsset' | 'InitiateReserveWithdraw' | 'InitiateTeleport' | 'QueryHolding' | 'BuyExecution';3634}36353636/** @name XcmV1Response */3637export interface XcmV1Response extends Enum {3638 readonly isAssets: boolean;3639 readonly asAssets: XcmV1MultiassetMultiAssets;3640 readonly isVersion: boolean;3641 readonly asVersion: u32;3642 readonly type: 'Assets' | 'Version';3643}36443645/** @name XcmV1Xcm */3646export interface XcmV1Xcm extends Enum {3647 readonly isWithdrawAsset: boolean;3648 readonly asWithdrawAsset: {3649 readonly assets: XcmV1MultiassetMultiAssets;3650 readonly effects: Vec<XcmV1Order>;3651 } & Struct;3652 readonly isReserveAssetDeposited: boolean;3653 readonly asReserveAssetDeposited: {3654 readonly assets: XcmV1MultiassetMultiAssets;3655 readonly effects: Vec<XcmV1Order>;3656 } & Struct;3657 readonly isReceiveTeleportedAsset: boolean;3658 readonly asReceiveTeleportedAsset: {3659 readonly assets: XcmV1MultiassetMultiAssets;3660 readonly effects: Vec<XcmV1Order>;3661 } & Struct;3662 readonly isQueryResponse: boolean;3663 readonly asQueryResponse: {3664 readonly queryId: Compact<u64>;3665 readonly response: XcmV1Response;3666 } & Struct;3667 readonly isTransferAsset: boolean;3668 readonly asTransferAsset: {3669 readonly assets: XcmV1MultiassetMultiAssets;3670 readonly beneficiary: XcmV1MultiLocation;3671 } & Struct;3672 readonly isTransferReserveAsset: boolean;3673 readonly asTransferReserveAsset: {3674 readonly assets: XcmV1MultiassetMultiAssets;3675 readonly dest: XcmV1MultiLocation;3676 readonly effects: Vec<XcmV1Order>;3677 } & Struct;3678 readonly isTransact: boolean;3679 readonly asTransact: {3680 readonly originType: XcmV0OriginKind;3681 readonly requireWeightAtMost: u64;3682 readonly call: XcmDoubleEncoded;3683 } & Struct;3684 readonly isHrmpNewChannelOpenRequest: boolean;3685 readonly asHrmpNewChannelOpenRequest: {3686 readonly sender: Compact<u32>;3687 readonly maxMessageSize: Compact<u32>;3688 readonly maxCapacity: Compact<u32>;3689 } & Struct;3690 readonly isHrmpChannelAccepted: boolean;3691 readonly asHrmpChannelAccepted: {3692 readonly recipient: Compact<u32>;3693 } & Struct;3694 readonly isHrmpChannelClosing: boolean;3695 readonly asHrmpChannelClosing: {3696 readonly initiator: Compact<u32>;3697 readonly sender: Compact<u32>;3698 readonly recipient: Compact<u32>;3699 } & Struct;3700 readonly isRelayedFrom: boolean;3701 readonly asRelayedFrom: {3702 readonly who: XcmV1MultilocationJunctions;3703 readonly message: XcmV1Xcm;3704 } & Struct;3705 readonly isSubscribeVersion: boolean;3706 readonly asSubscribeVersion: {3707 readonly queryId: Compact<u64>;3708 readonly maxResponseWeight: Compact<u64>;3709 } & Struct;3710 readonly isUnsubscribeVersion: boolean;3711 readonly type: 'WithdrawAsset' | 'ReserveAssetDeposited' | 'ReceiveTeleportedAsset' | 'QueryResponse' | 'TransferAsset' | 'TransferReserveAsset' | 'Transact' | 'HrmpNewChannelOpenRequest' | 'HrmpChannelAccepted' | 'HrmpChannelClosing' | 'RelayedFrom' | 'SubscribeVersion' | 'UnsubscribeVersion';3712}37133714/** @name XcmV2Instruction */3715export interface XcmV2Instruction extends Enum {3716 readonly isWithdrawAsset: boolean;3717 readonly asWithdrawAsset: XcmV1MultiassetMultiAssets;3718 readonly isReserveAssetDeposited: boolean;3719 readonly asReserveAssetDeposited: XcmV1MultiassetMultiAssets;3720 readonly isReceiveTeleportedAsset: boolean;3721 readonly asReceiveTeleportedAsset: XcmV1MultiassetMultiAssets;3722 readonly isQueryResponse: boolean;3723 readonly asQueryResponse: {3724 readonly queryId: Compact<u64>;3725 readonly response: XcmV2Response;3726 readonly maxWeight: Compact<u64>;3727 } & Struct;3728 readonly isTransferAsset: boolean;3729 readonly asTransferAsset: {3730 readonly assets: XcmV1MultiassetMultiAssets;3731 readonly beneficiary: XcmV1MultiLocation;3732 } & Struct;3733 readonly isTransferReserveAsset: boolean;3734 readonly asTransferReserveAsset: {3735 readonly assets: XcmV1MultiassetMultiAssets;3736 readonly dest: XcmV1MultiLocation;3737 readonly xcm: XcmV2Xcm;3738 } & Struct;3739 readonly isTransact: boolean;3740 readonly asTransact: {3741 readonly originType: XcmV0OriginKind;3742 readonly requireWeightAtMost: Compact<u64>;3743 readonly call: XcmDoubleEncoded;3744 } & Struct;3745 readonly isHrmpNewChannelOpenRequest: boolean;3746 readonly asHrmpNewChannelOpenRequest: {3747 readonly sender: Compact<u32>;3748 readonly maxMessageSize: Compact<u32>;3749 readonly maxCapacity: Compact<u32>;3750 } & Struct;3751 readonly isHrmpChannelAccepted: boolean;3752 readonly asHrmpChannelAccepted: {3753 readonly recipient: Compact<u32>;3754 } & Struct;3755 readonly isHrmpChannelClosing: boolean;3756 readonly asHrmpChannelClosing: {3757 readonly initiator: Compact<u32>;3758 readonly sender: Compact<u32>;3759 readonly recipient: Compact<u32>;3760 } & Struct;3761 readonly isClearOrigin: boolean;3762 readonly isDescendOrigin: boolean;3763 readonly asDescendOrigin: XcmV1MultilocationJunctions;3764 readonly isReportError: boolean;3765 readonly asReportError: {3766 readonly queryId: Compact<u64>;3767 readonly dest: XcmV1MultiLocation;3768 readonly maxResponseWeight: Compact<u64>;3769 } & Struct;3770 readonly isDepositAsset: boolean;3771 readonly asDepositAsset: {3772 readonly assets: XcmV1MultiassetMultiAssetFilter;3773 readonly maxAssets: Compact<u32>;3774 readonly beneficiary: XcmV1MultiLocation;3775 } & Struct;3776 readonly isDepositReserveAsset: boolean;3777 readonly asDepositReserveAsset: {3778 readonly assets: XcmV1MultiassetMultiAssetFilter;3779 readonly maxAssets: Compact<u32>;3780 readonly dest: XcmV1MultiLocation;3781 readonly xcm: XcmV2Xcm;3782 } & Struct;3783 readonly isExchangeAsset: boolean;3784 readonly asExchangeAsset: {3785 readonly give: XcmV1MultiassetMultiAssetFilter;3786 readonly receive: XcmV1MultiassetMultiAssets;3787 } & Struct;3788 readonly isInitiateReserveWithdraw: boolean;3789 readonly asInitiateReserveWithdraw: {3790 readonly assets: XcmV1MultiassetMultiAssetFilter;3791 readonly reserve: XcmV1MultiLocation;3792 readonly xcm: XcmV2Xcm;3793 } & Struct;3794 readonly isInitiateTeleport: boolean;3795 readonly asInitiateTeleport: {3796 readonly assets: XcmV1MultiassetMultiAssetFilter;3797 readonly dest: XcmV1MultiLocation;3798 readonly xcm: XcmV2Xcm;3799 } & Struct;3800 readonly isQueryHolding: boolean;3801 readonly asQueryHolding: {3802 readonly queryId: Compact<u64>;3803 readonly dest: XcmV1MultiLocation;3804 readonly assets: XcmV1MultiassetMultiAssetFilter;3805 readonly maxResponseWeight: Compact<u64>;3806 } & Struct;3807 readonly isBuyExecution: boolean;3808 readonly asBuyExecution: {3809 readonly fees: XcmV1MultiAsset;3810 readonly weightLimit: XcmV2WeightLimit;3811 } & Struct;3812 readonly isRefundSurplus: boolean;3813 readonly isSetErrorHandler: boolean;3814 readonly asSetErrorHandler: XcmV2Xcm;3815 readonly isSetAppendix: boolean;3816 readonly asSetAppendix: XcmV2Xcm;3817 readonly isClearError: boolean;3818 readonly isClaimAsset: boolean;3819 readonly asClaimAsset: {3820 readonly assets: XcmV1MultiassetMultiAssets;3821 readonly ticket: XcmV1MultiLocation;3822 } & Struct;3823 readonly isTrap: boolean;3824 readonly asTrap: Compact<u64>;3825 readonly isSubscribeVersion: boolean;3826 readonly asSubscribeVersion: {3827 readonly queryId: Compact<u64>;3828 readonly maxResponseWeight: Compact<u64>;3829 } & Struct;3830 readonly isUnsubscribeVersion: boolean;3831 readonly type: 'WithdrawAsset' | 'ReserveAssetDeposited' | 'ReceiveTeleportedAsset' | 'QueryResponse' | 'TransferAsset' | 'TransferReserveAsset' | 'Transact' | 'HrmpNewChannelOpenRequest' | 'HrmpChannelAccepted' | 'HrmpChannelClosing' | 'ClearOrigin' | 'DescendOrigin' | 'ReportError' | 'DepositAsset' | 'DepositReserveAsset' | 'ExchangeAsset' | 'InitiateReserveWithdraw' | 'InitiateTeleport' | 'QueryHolding' | 'BuyExecution' | 'RefundSurplus' | 'SetErrorHandler' | 'SetAppendix' | 'ClearError' | 'ClaimAsset' | 'Trap' | 'SubscribeVersion' | 'UnsubscribeVersion';3832}38333834/** @name XcmV2Response */3835export interface XcmV2Response extends Enum {3836 readonly isNull: boolean;3837 readonly isAssets: boolean;3838 readonly asAssets: XcmV1MultiassetMultiAssets;3839 readonly isExecutionResult: boolean;3840 readonly asExecutionResult: Option<ITuple<[u32, XcmV2TraitsError]>>;3841 readonly isVersion: boolean;3842 readonly asVersion: u32;3843 readonly type: 'Null' | 'Assets' | 'ExecutionResult' | 'Version';3844}38453846/** @name XcmV2TraitsError */3847export interface XcmV2TraitsError extends Enum {3848 readonly isOverflow: boolean;3849 readonly isUnimplemented: boolean;3850 readonly isUntrustedReserveLocation: boolean;3851 readonly isUntrustedTeleportLocation: boolean;3852 readonly isMultiLocationFull: boolean;3853 readonly isMultiLocationNotInvertible: boolean;3854 readonly isBadOrigin: boolean;3855 readonly isInvalidLocation: boolean;3856 readonly isAssetNotFound: boolean;3857 readonly isFailedToTransactAsset: boolean;3858 readonly isNotWithdrawable: boolean;3859 readonly isLocationCannotHold: boolean;3860 readonly isExceedsMaxMessageSize: boolean;3861 readonly isDestinationUnsupported: boolean;3862 readonly isTransport: boolean;3863 readonly isUnroutable: boolean;3864 readonly isUnknownClaim: boolean;3865 readonly isFailedToDecode: boolean;3866 readonly isMaxWeightInvalid: boolean;3867 readonly isNotHoldingFees: boolean;3868 readonly isTooExpensive: boolean;3869 readonly isTrap: boolean;3870 readonly asTrap: u64;3871 readonly isUnhandledXcmVersion: boolean;3872 readonly isWeightLimitReached: boolean;3873 readonly asWeightLimitReached: u64;3874 readonly isBarrier: boolean;3875 readonly isWeightNotComputable: boolean;3876 readonly type: 'Overflow' | 'Unimplemented' | 'UntrustedReserveLocation' | 'UntrustedTeleportLocation' | 'MultiLocationFull' | 'MultiLocationNotInvertible' | 'BadOrigin' | 'InvalidLocation' | 'AssetNotFound' | 'FailedToTransactAsset' | 'NotWithdrawable' | 'LocationCannotHold' | 'ExceedsMaxMessageSize' | 'DestinationUnsupported' | 'Transport' | 'Unroutable' | 'UnknownClaim' | 'FailedToDecode' | 'MaxWeightInvalid' | 'NotHoldingFees' | 'TooExpensive' | 'Trap' | 'UnhandledXcmVersion' | 'WeightLimitReached' | 'Barrier' | 'WeightNotComputable';3877}38783879/** @name XcmV2TraitsOutcome */3880export interface XcmV2TraitsOutcome extends Enum {3881 readonly isComplete: boolean;3882 readonly asComplete: u64;3883 readonly isIncomplete: boolean;3884 readonly asIncomplete: ITuple<[u64, XcmV2TraitsError]>;3885 readonly isError: boolean;3886 readonly asError: XcmV2TraitsError;3887 readonly type: 'Complete' | 'Incomplete' | 'Error';3888}38893890/** @name XcmV2WeightLimit */3891export interface XcmV2WeightLimit extends Enum {3892 readonly isUnlimited: boolean;3893 readonly isLimited: boolean;3894 readonly asLimited: Compact<u64>;3895 readonly type: 'Unlimited' | 'Limited';3896}38973898/** @name XcmV2Xcm */3899export interface XcmV2Xcm extends Vec<XcmV2Instruction> {}39003901/** @name XcmVersionedMultiAsset */3902export interface XcmVersionedMultiAsset extends Enum {3903 readonly isV0: boolean;3904 readonly asV0: XcmV0MultiAsset;3905 readonly isV1: boolean;3906 readonly asV1: XcmV1MultiAsset;3907 readonly type: 'V0' | 'V1';3908}39093910/** @name XcmVersionedMultiAssets */3911export interface XcmVersionedMultiAssets extends Enum {3912 readonly isV0: boolean;3913 readonly asV0: Vec<XcmV0MultiAsset>;3914 readonly isV1: boolean;3915 readonly asV1: XcmV1MultiassetMultiAssets;3916 readonly type: 'V0' | 'V1';3917}39183919/** @name XcmVersionedMultiLocation */3920export interface XcmVersionedMultiLocation extends Enum {3921 readonly isV0: boolean;3922 readonly asV0: XcmV0MultiLocation;3923 readonly isV1: boolean;3924 readonly asV1: XcmV1MultiLocation;3925 readonly type: 'V0' | 'V1';3926}39273928/** @name XcmVersionedXcm */3929export interface XcmVersionedXcm extends Enum {3930 readonly isV0: boolean;3931 readonly asV0: XcmV0Xcm;3932 readonly isV1: boolean;3933 readonly asV1: XcmV1Xcm;3934 readonly isV2: boolean;3935 readonly asV2: XcmV2Xcm;3936 readonly type: 'V0' | 'V1' | 'V2';3937}39383939export type PHANTOM_DEFAULT = 'default';tests/src/interfaces/lookup.tsdiffbeforeafterboth--- a/tests/src/interfaces/lookup.ts
+++ b/tests/src/interfaces/lookup.ts
@@ -1046,6 +1046,7 @@
ItemDestroyed: '(u32,u32,PalletEvmAccountBasicCrossAccountIdRepr,u128)',
Transfer: '(u32,u32,PalletEvmAccountBasicCrossAccountIdRepr,PalletEvmAccountBasicCrossAccountIdRepr,u128)',
Approved: '(u32,u32,PalletEvmAccountBasicCrossAccountIdRepr,PalletEvmAccountBasicCrossAccountIdRepr,u128)',
+ ApprovedForAll: '(u32,PalletEvmAccountBasicCrossAccountIdRepr,PalletEvmAccountBasicCrossAccountIdRepr,bool)',
CollectionPropertySet: '(u32,Bytes)',
CollectionPropertyDeleted: '(u32,Bytes)',
TokenPropertySet: '(u32,u32,Bytes)',
@@ -1054,7 +1055,7 @@
}
},
/**
- * Lookup99: pallet_structure::pallet::Event<T>
+ * Lookup100: pallet_structure::pallet::Event<T>
**/
PalletStructureEvent: {
_enum: {
@@ -1062,7 +1063,7 @@
}
},
/**
- * Lookup100: pallet_rmrk_core::pallet::Event<T>
+ * Lookup101: pallet_rmrk_core::pallet::Event<T>
**/
PalletRmrkCoreEvent: {
_enum: {
@@ -1139,7 +1140,7 @@
}
},
/**
- * Lookup101: rmrk_traits::nft::AccountIdOrCollectionNftTuple<sp_core::crypto::AccountId32>
+ * Lookup102: rmrk_traits::nft::AccountIdOrCollectionNftTuple<sp_core::crypto::AccountId32>
**/
RmrkTraitsNftAccountIdOrCollectionNftTuple: {
_enum: {
@@ -2302,7 +2303,12 @@
repartition: {
collectionId: 'u32',
tokenId: 'u32',
- amount: 'u128'
+ amount: 'u128',
+ },
+ set_approval_for_all: {
+ collectionId: 'u32',
+ operator: 'PalletEvmAccountBasicCrossAccountIdRepr',
+ approve: 'bool'
}
}
},
@@ -3445,7 +3451,7 @@
* Lookup430: pallet_fungible::pallet::Error<T>
**/
PalletFungibleError: {
- _enum: ['NotFungibleDataUsedToMintFungibleCollectionToken', 'FungibleItemsHaveNoId', 'FungibleItemsDontHaveData', 'FungibleDisallowsNesting', 'SettingPropertiesNotAllowed']
+ _enum: ['NotFungibleDataUsedToMintFungibleCollectionToken', 'FungibleItemsHaveNoId', 'FungibleItemsDontHaveData', 'FungibleDisallowsNesting', 'SettingPropertiesNotAllowed', 'SettingApprovalForAllNotAllowed']
},
/**
* Lookup431: pallet_refungible::ItemData
tests/src/interfaces/types-lookup.tsdiffbeforeafterboth--- a/tests/src/interfaces/types-lookup.ts
+++ b/tests/src/interfaces/types-lookup.ts
@@ -1182,6 +1182,8 @@
readonly asTransfer: ITuple<[u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr, u128]>;
readonly isApproved: boolean;
readonly asApproved: ITuple<[u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr, u128]>;
+ readonly isApprovedForAll: boolean;
+ readonly asApprovedForAll: ITuple<[u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr, bool]>;
readonly isCollectionPropertySet: boolean;
readonly asCollectionPropertySet: ITuple<[u32, Bytes]>;
readonly isCollectionPropertyDeleted: boolean;
@@ -1192,17 +1194,17 @@
readonly asTokenPropertyDeleted: ITuple<[u32, u32, Bytes]>;
readonly isPropertyPermissionSet: boolean;
readonly asPropertyPermissionSet: ITuple<[u32, Bytes]>;
- readonly type: 'CollectionCreated' | 'CollectionDestroyed' | 'ItemCreated' | 'ItemDestroyed' | 'Transfer' | 'Approved' | 'CollectionPropertySet' | 'CollectionPropertyDeleted' | 'TokenPropertySet' | 'TokenPropertyDeleted' | 'PropertyPermissionSet';
+ readonly type: 'CollectionCreated' | 'CollectionDestroyed' | 'ItemCreated' | 'ItemDestroyed' | 'Transfer' | 'Approved' | 'ApprovedForAll' | 'CollectionPropertySet' | 'CollectionPropertyDeleted' | 'TokenPropertySet' | 'TokenPropertyDeleted' | 'PropertyPermissionSet';
}
- /** @name PalletStructureEvent (99) */
+ /** @name PalletStructureEvent (100) */
interface PalletStructureEvent extends Enum {
readonly isExecuted: boolean;
readonly asExecuted: Result<Null, SpRuntimeDispatchError>;
readonly type: 'Executed';
}
- /** @name PalletRmrkCoreEvent (100) */
+ /** @name PalletRmrkCoreEvent (101) */
interface PalletRmrkCoreEvent extends Enum {
readonly isCollectionCreated: boolean;
readonly asCollectionCreated: {
@@ -1292,7 +1294,7 @@
readonly type: 'CollectionCreated' | 'CollectionDestroyed' | 'IssuerChanged' | 'CollectionLocked' | 'NftMinted' | 'NftBurned' | 'NftSent' | 'NftAccepted' | 'NftRejected' | 'PropertySet' | 'ResourceAdded' | 'ResourceRemoval' | 'ResourceAccepted' | 'ResourceRemovalAccepted' | 'PrioritySet';
}
- /** @name RmrkTraitsNftAccountIdOrCollectionNftTuple (101) */
+ /** @name RmrkTraitsNftAccountIdOrCollectionNftTuple (102) */
interface RmrkTraitsNftAccountIdOrCollectionNftTuple extends Enum {
readonly isAccountId: boolean;
readonly asAccountId: AccountId32;
@@ -2539,7 +2541,13 @@
readonly tokenId: u32;
readonly amount: u128;
} & Struct;
- readonly type: 'CreateCollection' | 'CreateCollectionEx' | 'DestroyCollection' | 'AddToAllowList' | 'RemoveFromAllowList' | 'ChangeCollectionOwner' | 'AddCollectionAdmin' | 'RemoveCollectionAdmin' | 'SetCollectionSponsor' | 'ConfirmSponsorship' | 'RemoveCollectionSponsor' | 'CreateItem' | 'CreateMultipleItems' | 'SetCollectionProperties' | 'DeleteCollectionProperties' | 'SetTokenProperties' | 'DeleteTokenProperties' | 'SetTokenPropertyPermissions' | 'CreateMultipleItemsEx' | 'SetTransfersEnabledFlag' | 'BurnItem' | 'BurnFrom' | 'Transfer' | 'Approve' | 'TransferFrom' | 'SetCollectionLimits' | 'SetCollectionPermissions' | 'Repartition';
+ readonly isSetApprovalForAll: boolean;
+ readonly asSetApprovalForAll: {
+ readonly collectionId: u32;
+ readonly operator: PalletEvmAccountBasicCrossAccountIdRepr;
+ readonly approve: bool;
+ } & Struct;
+ readonly type: 'CreateCollection' | 'CreateCollectionEx' | 'DestroyCollection' | 'AddToAllowList' | 'RemoveFromAllowList' | 'ChangeCollectionOwner' | 'AddCollectionAdmin' | 'RemoveCollectionAdmin' | 'SetCollectionSponsor' | 'ConfirmSponsorship' | 'RemoveCollectionSponsor' | 'CreateItem' | 'CreateMultipleItems' | 'SetCollectionProperties' | 'DeleteCollectionProperties' | 'SetTokenProperties' | 'DeleteTokenProperties' | 'SetTokenPropertyPermissions' | 'CreateMultipleItemsEx' | 'SetTransfersEnabledFlag' | 'BurnItem' | 'BurnFrom' | 'Transfer' | 'Approve' | 'TransferFrom' | 'SetCollectionLimits' | 'SetCollectionPermissions' | 'Repartition' | 'SetApprovalForAll';
}
/** @name UpDataStructsCollectionMode (240) */
@@ -3655,7 +3663,8 @@
readonly isFungibleItemsDontHaveData: boolean;
readonly isFungibleDisallowsNesting: boolean;
readonly isSettingPropertiesNotAllowed: boolean;
- readonly type: 'NotFungibleDataUsedToMintFungibleCollectionToken' | 'FungibleItemsHaveNoId' | 'FungibleItemsDontHaveData' | 'FungibleDisallowsNesting' | 'SettingPropertiesNotAllowed';
+ readonly isSettingApprovalForAllNotAllowed: boolean;
+ readonly type: 'NotFungibleDataUsedToMintFungibleCollectionToken' | 'FungibleItemsHaveNoId' | 'FungibleItemsDontHaveData' | 'FungibleDisallowsNesting' | 'SettingPropertiesNotAllowed' | 'SettingApprovalForAllNotAllowed';
}
/** @name PalletRefungibleItemData (431) */
tests/src/interfaces/unique/definitions.tsdiffbeforeafterboth--- a/tests/src/interfaces/unique/definitions.ts
+++ b/tests/src/interfaces/unique/definitions.ts
@@ -175,5 +175,10 @@
[collectionParam, tokenParam],
'Option<u128>',
),
+ isApprovedForAll: fun(
+ 'Tells whether an operator is approved by a given owner.',
+ [collectionParam, crossAccountParam('owner'), crossAccountParam('operator')],
+ 'Option<bool>',
+ ),
},
};
tests/src/util/playgrounds/unique.tsdiffbeforeafterboth--- a/tests/src/util/playgrounds/unique.ts
+++ b/tests/src/util/playgrounds/unique.ts
@@ -1413,6 +1413,32 @@
getTokenObject(_collectionId: number, _tokenId: number): any {
return null;
}
+
+ /**
+ * Tells whether an operator is approved by a given owner.
+ * @param collectionId ID of collection
+ * @param owner owner address
+ * @param operator operator addrees
+ * @returns true if operator is enabled
+ */
+ async isApprovedForAll(collectionId: number, owner: ICrossAccountId, operator: ICrossAccountId): Promise<boolean> {
+ return (await this.helper.callRpc('api.rpc.unique.isApprovedForAll', [collectionId, owner, operator])).toJSON();
+ }
+
+ /** Sets or unsets the approval of a given operator.
+ * An operator is allowed to transfer all tokens of the sender on their behalf.
+ * @param operator Operator
+ * @param approved Is operator enabled or disabled
+ * @returns ```true``` if extrinsic success, otherwise ```false```
+ */
+ async setApprovalForAll(signer: TSigner, collectionId: number, operator: ICrossAccountId, approved: boolean): Promise<boolean> {
+ const result = await this.helper.executeExtrinsic(
+ signer,
+ 'api.tx.unique.setApprovalForAll', [collectionId, operator, approved],
+ true,
+ );
+ return this.helper.util.findCollectionInEvents(result.result.events, collectionId, 'common', 'ApprovedForAll');
+ }
}