git.delta.rocks / unique-network / refs/commits / c6354cf493a0

difftreelog

feat add ApproveForAll to Eth and Sub

Grigoriy Simonov2022-12-06parent: #e7f81f3.patch.diff
in: master

39 files changed

modifiedclient/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>
modifiedpallets/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.
modifiedpallets/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
+	}
 }
modifiedpallets/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]
modifiedpallets/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)}
 }
modifiedpallets/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)
+	}
 }
modifiedpallets/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
modifiedpallets/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)
+	}
 }
modifiedpallets/nonfungible/src/stubs/UniqueNFT.rawdiffbeforeafterboth

binary blob — no preview

modifiedpallets/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
modifiedpallets/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))
+	}
 }
modifiedpallets/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)}
 }
modifiedpallets/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> {
modifiedpallets/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
modifiedpallets/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)
+	}
 }
modifiedpallets/refungible/src/stubs/UniqueRefungible.rawdiffbeforeafterboth

binary blob — no preview

modifiedpallets/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
modifiedpallets/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))
+	}
 }
modifiedpallets/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)
+			})
+		}
 	}
 }
 
modifiedprimitives/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>;
 	}
 }
modifiedruntime/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 {
modifiedruntime/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")]
modifiedtests/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;
+  });
+});
modifiedtests/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"
   },
modifiedtests/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"
   },
modifiedtests/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,
modifiedtests/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,
modifiedtests/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;
+    }
+  });
+});
modifiedtests/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;
+    }
+  });
+});
modifiedtests/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>;
modifiedtests/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]>;
modifiedtests/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>;
modifiedtests/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>>;
modifiedtests/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
modifiedtests/src/interfaces/default/types.tsdiffbeforeafterboth
before · tests/src/interfaces/default/types.ts
1// 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';
modifiedtests/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
modifiedtests/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) */
modifiedtests/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>',
+    ),
   },
 };
modifiedtests/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');
+  }
 }