git.delta.rocks / unique-network / refs/commits / 749341e77d24

difftreelog

feat(refungible-pallet) ERC-721 EVM API

Grigoriy Simonov2022-07-25parent: #2232fc1.patch.diff
in: master

12 files changed

modifiedMakefilediffbeforeafterboth
--- a/Makefile
+++ b/Makefile
@@ -15,8 +15,9 @@
 NONFUNGIBLE_EVM_STUBS=./pallets/nonfungible/src/stubs
 NONFUNGIBLE_EVM_ABI=./tests/src/eth/nonFungibleAbi.json
 
-RENFUNGIBLE_EVM_ABI=./tests/src/eth/reFungibleAbi.json
-RENFUNGIBLE_TOKEN_EVM_ABI=./tests/src/eth/reFungibleTokenAbi.json
+REFUNGIBLE_EVM_STUBS=./pallets/refungible/src/stubs
+REFUNGIBLE_EVM_ABI=./tests/src/eth/reFungibleAbi.json
+REFUNGIBLE_TOKEN_EVM_ABI=./tests/src/eth/reFungibleTokenAbi.json
 
 CONTRACT_HELPERS_STUBS=./pallets/evm-contract-helpers/src/stubs/
 CONTRACT_HELPERS_ABI=./tests/src/eth/util/contractHelpersAbi.json
@@ -36,6 +37,10 @@
 UniqueNFT.sol:
 	PACKAGE=pallet-nonfungible NAME=erc::gen_iface OUTPUT=$(TESTS_API)/$@ ./.maintain/scripts/generate_sol.sh
 	PACKAGE=pallet-nonfungible NAME=erc::gen_impl OUTPUT=$(NONFUNGIBLE_EVM_STUBS)/$@ ./.maintain/scripts/generate_sol.sh
+
+UniqueRefungible.sol:
+	PACKAGE=pallet-refungible NAME=erc::gen_iface OUTPUT=$(TESTS_API)/$@ ./.maintain/scripts/generate_sol.sh
+	PACKAGE=pallet-refungible NAME=erc::gen_impl OUTPUT=$(REFUNGIBLE_EVM_STUBS)/$@ ./.maintain/scripts/generate_sol.sh
 	
 UniqueRefungible.sol:
 	PACKAGE=pallet-refungible NAME=erc::gen_iface OUTPUT=$(TESTS_API)/$@ ./.maintain/scripts/generate_sol.sh
@@ -61,9 +66,13 @@
 	INPUT=$(NONFUNGIBLE_EVM_STUBS)/$< OUTPUT=$(NONFUNGIBLE_EVM_STUBS)/UniqueNFT.raw ./.maintain/scripts/compile_stub.sh
 	INPUT=$(NONFUNGIBLE_EVM_STUBS)/$< OUTPUT=$(NONFUNGIBLE_EVM_ABI) ./.maintain/scripts/generate_abi.sh
 
+UniqueRefungible: UniqueRefungible.sol
+	INPUT=$(REFUNGIBLE_EVM_STUBS)/$< OUTPUT=$(REFUNGIBLE_EVM_STUBS)/UniqueRefungible.raw ./.maintain/scripts/compile_stub.sh
+	INPUT=$(REFUNGIBLE_EVM_STUBS)/$< OUTPUT=$(REFUNGIBLE_EVM_ABI) ./.maintain/scripts/generate_abi.sh
+
 UniqueRefungibleToken: UniqueRefungibleToken.sol
 	INPUT=$(REFUNGIBLE_EVM_STUBS)/$< OUTPUT=$(REFUNGIBLE_EVM_STUBS)/UniqueRefungibleToken.raw ./.maintain/scripts/compile_stub.sh
-	INPUT=$(REFUNGIBLE_EVM_STUBS)/$< OUTPUT=$(RENFUNGIBLE_TOKEN_EVM_ABI) ./.maintain/scripts/generate_abi.sh
+	INPUT=$(REFUNGIBLE_EVM_STUBS)/$< OUTPUT=$(REFUNGIBLE_TOKEN_EVM_ABI) ./.maintain/scripts/generate_abi.sh
 
 UniqueRefungible: UniqueRefungible.sol
 	INPUT=$(REFUNGIBLE_EVM_STUBS)/$< OUTPUT=$(REFUNGIBLE_EVM_STUBS)/UniqueRefungible.raw ./.maintain/scripts/compile_stub.sh
modifiedpallets/refungible/src/erc.rsdiffbeforeafterboth
--- a/pallets/refungible/src/erc.rs
+++ b/pallets/refungible/src/erc.rs
@@ -15,18 +15,607 @@
 // along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
 
 extern crate alloc;
-use evm_coder::{generate_stubgen, solidity_interface, types::*};
 
-use pallet_common::{CollectionHandle, erc::CollectionCall, erc::CommonEvmHandler};
+use alloc::string::ToString;
+use core::{
+	char::{REPLACEMENT_CHARACTER, decode_utf16},
+	convert::TryInto,
+};
+use evm_coder::{ToLog, execution::*, generate_stubgen, solidity, solidity_interface, types::*, weight};
+use frame_support::{BoundedBTreeMap, BoundedVec};
+use pallet_common::{
+	CollectionHandle, CollectionPropertyPermissions,
+	erc::{
+		CommonEvmHandler, CollectionCall,
+		static_property::{key, value as property_value},
+	},
+};
+use pallet_evm::{account::CrossAccountId, PrecompileHandle};
+use pallet_evm_coder_substrate::{call, dispatch_to_evm};
+use pallet_structure::{SelfWeightOf as StructureWeight, weights::WeightInfo as _};
+use sp_core::H160;
+use sp_std::{collections::btree_map::BTreeMap, vec::Vec, vec};
+use up_data_structs::{
+	CollectionId, CollectionPropertiesVec, Property, PropertyKey, PropertyKeyPermission,
+	PropertyPermission, TokenId,
+};
+
+use crate::{
+	AccountBalance, Config, CreateItemData, Pallet, RefungibleHandle, SelfWeightOf,
+	TokenProperties, TokensMinted, weights::WeightInfo,
+};
 
-use pallet_evm::PrecompileHandle;
-use pallet_evm_coder_substrate::call;
+#[solidity_interface(name = "TokenProperties")]
+impl<T: Config> RefungibleHandle<T> {
+	fn set_token_property_permission(
+		&mut self,
+		caller: caller,
+		key: string,
+		is_mutable: bool,
+		collection_admin: bool,
+		token_owner: bool,
+	) -> Result<()> {
+		let caller = T::CrossAccountId::from_eth(caller);
+		<Pallet<T>>::set_token_property_permissions(
+			self,
+			&caller,
+			vec![PropertyKeyPermission {
+				key: <Vec<u8>>::from(key)
+					.try_into()
+					.map_err(|_| "too long key")?,
+				permission: PropertyPermission {
+					mutable: is_mutable,
+					collection_admin,
+					token_owner,
+				},
+			}],
+		)
+		.map_err(dispatch_to_evm::<T>)
+	}
 
-use crate::{Config, RefungibleHandle};
+	fn set_property(
+		&mut self,
+		caller: caller,
+		token_id: uint256,
+		key: string,
+		value: bytes,
+	) -> Result<()> {
+		let caller = T::CrossAccountId::from_eth(caller);
+		let token_id: u32 = token_id.try_into().map_err(|_| "token id overflow")?;
+		let key = <Vec<u8>>::from(key)
+			.try_into()
+			.map_err(|_| "key too long")?;
+		let value = value.try_into().map_err(|_| "value too long")?;
 
+		let nesting_budget = self
+			.recorder
+			.weight_calls_budget(<StructureWeight<T>>::find_parent());
+
+		<Pallet<T>>::set_token_property(
+			self,
+			&caller,
+			TokenId(token_id),
+			Property { key, value },
+			&nesting_budget,
+		)
+		.map_err(dispatch_to_evm::<T>)
+	}
+
+	fn delete_property(&mut self, token_id: uint256, caller: caller, key: string) -> Result<()> {
+		let caller = T::CrossAccountId::from_eth(caller);
+		let token_id: u32 = token_id.try_into().map_err(|_| "token id overflow")?;
+		let key = <Vec<u8>>::from(key)
+			.try_into()
+			.map_err(|_| "key too long")?;
+
+		let nesting_budget = self
+			.recorder
+			.weight_calls_budget(<StructureWeight<T>>::find_parent());
+
+		<Pallet<T>>::delete_token_property(self, &caller, TokenId(token_id), key, &nesting_budget)
+			.map_err(dispatch_to_evm::<T>)
+	}
+
+	/// Throws error if key not found
+	fn property(&self, token_id: uint256, key: string) -> Result<bytes> {
+		let token_id: u32 = token_id.try_into().map_err(|_| "token id overflow")?;
+		let key = <Vec<u8>>::from(key)
+			.try_into()
+			.map_err(|_| "key too long")?;
+
+		let props = <TokenProperties<T>>::get((self.id, token_id));
+		let prop = props.get(&key).ok_or("key not found")?;
+
+		Ok(prop.to_vec())
+	}
+}
+
+#[derive(ToLog)]
+pub enum ERC721Events {
+	Transfer {
+		#[indexed]
+		from: address,
+		#[indexed]
+		to: address,
+		#[indexed]
+		token_id: uint256,
+	},
+	/// @dev Not supported
+	Approval {
+		#[indexed]
+		owner: address,
+		#[indexed]
+		approved: address,
+		#[indexed]
+		token_id: uint256,
+	},
+	/// @dev Not supported
+	#[allow(dead_code)]
+	ApprovalForAll {
+		#[indexed]
+		owner: address,
+		#[indexed]
+		operator: address,
+		approved: bool,
+	},
+}
+
+#[derive(ToLog)]
+pub enum ERC721MintableEvents {
+	/// @dev Not supported
+	#[allow(dead_code)]
+	MintingFinished {},
+}
+
+#[solidity_interface(name = "ERC721Metadata")]
+impl<T: Config> RefungibleHandle<T> {
+	fn name(&self) -> Result<string> {
+		Ok(decode_utf16(self.name.iter().copied())
+			.map(|r| r.unwrap_or(REPLACEMENT_CHARACTER))
+			.collect::<string>())
+	}
+
+	fn symbol(&self) -> Result<string> {
+		Ok(string::from_utf8_lossy(&self.token_prefix).into())
+	}
+
+	/// @notice A distinct Uniform Resource Identifier (URI) for a given asset.
+	///
+	/// @dev If the token has a `url` property and it is not empty, it is returned.
+	///  Else If the collection does not have a property with key `schemaName` or its value is not equal to `ERC721Metadata`, it return an error `tokenURI not set`.
+	///  If the collection property `baseURI` is empty or absent, return "" (empty string)
+	///  otherwise, if token property `suffix` present and is non-empty, return concatenation of baseURI and suffix
+	///  otherwise, return concatenation of `baseURI` and stringified token id (decimal stringifying, without paddings).
+	///
+	/// @return token's const_metadata
+	#[solidity(rename_selector = "tokenURI")]
+	fn token_uri(&self, token_id: uint256) -> Result<string> {
+		let token_id_u32: u32 = token_id.try_into().map_err(|_| "token id overflow")?;
+
+		if let Ok(url) = get_token_property(self, token_id_u32, &key::url()) {
+			if !url.is_empty() {
+				return Ok(url);
+			}
+		} else if !is_erc721_metadata_compatible::<T>(self.id) {
+			return Err("tokenURI not set".into());
+		}
+
+		if let Some(base_uri) =
+			pallet_common::Pallet::<T>::get_collection_property(self.id, &key::base_uri())
+		{
+			if !base_uri.is_empty() {
+				let base_uri = string::from_utf8(base_uri.into_inner()).map_err(|e| {
+					Error::Revert(alloc::format!(
+						"Can not convert value \"baseURI\" to string with error \"{}\"",
+						e
+					))
+				})?;
+				if let Ok(suffix) = get_token_property(self, token_id_u32, &key::suffix()) {
+					if !suffix.is_empty() {
+						return Ok(base_uri + suffix.as_str());
+					}
+				}
+
+				return Ok(base_uri + token_id.to_string().as_str());
+			}
+		}
+
+		Ok("".into())
+	}
+}
+
+#[solidity_interface(name = "ERC721Enumerable")]
+impl<T: Config> RefungibleHandle<T> {
+	fn token_by_index(&self, index: uint256) -> Result<uint256> {
+		Ok(index)
+	}
+
+	/// Not implemented
+	fn token_of_owner_by_index(&self, _owner: address, _index: uint256) -> Result<uint256> {
+		// TODO: Not implemetable
+		Err("not implemented".into())
+	}
+
+	fn total_supply(&self) -> Result<uint256> {
+		self.consume_store_reads(1)?;
+		Ok(<Pallet<T>>::total_supply(self).into())
+	}
+}
+
+#[solidity_interface(name = "ERC721", events(ERC721Events))]
+impl<T: Config> RefungibleHandle<T> {
+	fn balance_of(&self, owner: address) -> Result<uint256> {
+		self.consume_store_reads(1)?;
+		let owner = T::CrossAccountId::from_eth(owner);
+		let balance = <AccountBalance<T>>::get((self.id, owner));
+		Ok(balance.into())
+	}
+
+	fn owner_of(&self, token_id: uint256) -> Result<address> {
+		self.consume_store_reads(2)?;
+		let token = token_id.try_into()?;
+		let owner = <Pallet<T>>::token_owner(self.id, token);
+		Ok(owner
+			.map(|address| *address.as_eth())
+			.unwrap_or_else(|| H160::default()))
+	}
+
+	/// @dev Not implemented
+	fn safe_transfer_from_with_data(
+		&mut self,
+		_from: address,
+		_to: address,
+		_token_id: uint256,
+		_data: bytes,
+		_value: value,
+	) -> Result<void> {
+		// TODO: Not implemetable
+		Err("not implemented".into())
+	}
+
+	/// @dev Not implemented
+	fn safe_transfer_from(
+		&mut self,
+		_from: address,
+		_to: address,
+		_token_id: uint256,
+		_value: value,
+	) -> Result<void> {
+		// TODO: Not implemetable
+		Err("not implemented".into())
+	}
+
+	/// @dev Not implemented
+	fn transfer_from(
+		&mut self,
+		_caller: caller,
+		_from: address,
+		_to: address,
+		_token_id: uint256,
+		_value: value,
+	) -> Result<void> {
+		Err("not implemented".into())
+	}
+
+	/// @dev Not implemented
+	fn approve(
+		&mut self,
+		_caller: caller,
+		_approved: address,
+		_token_id: uint256,
+		_value: value,
+	) -> Result<void> {
+		Err("not implemented".into())
+	}
+
+	/// @dev Not implemented
+	fn set_approval_for_all(
+		&mut self,
+		_caller: caller,
+		_operator: address,
+		_approved: bool,
+	) -> Result<void> {
+		// TODO: Not implemetable
+		Err("not implemented".into())
+	}
+
+	/// @dev Not implemented
+	fn get_approved(&self, _token_id: uint256) -> Result<address> {
+		// TODO: Not implemetable
+		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())
+	}
+}
+
+#[solidity_interface(name = "ERC721Burnable")]
+impl<T: Config> RefungibleHandle<T> {
+	/// @dev Not implemented
+	fn burn(&mut self, _caller: caller, _token_id: uint256, _value: value) -> Result<void> {
+		Err("not implemented".into())
+	}
+}
+
+#[solidity_interface(name = "ERC721Mintable", events(ERC721MintableEvents))]
+impl<T: Config> RefungibleHandle<T> {
+	fn minting_finished(&self) -> Result<bool> {
+		Ok(false)
+	}
+
+	/// `token_id` should be obtained with `next_token_id` method,
+	/// unlike standard, you can't specify it manually
+	#[weight(<SelfWeightOf<T>>::create_item())]
+	fn mint(&mut self, caller: caller, to: address, token_id: uint256) -> Result<bool> {
+		let caller = T::CrossAccountId::from_eth(caller);
+		let to = T::CrossAccountId::from_eth(to);
+		let token_id: u32 = token_id.try_into()?;
+		let budget = self
+			.recorder
+			.weight_calls_budget(<StructureWeight<T>>::find_parent());
+
+		if <TokensMinted<T>>::get(self.id)
+			.checked_add(1)
+			.ok_or("item id overflow")?
+			!= token_id
+		{
+			return Err("item id should be next".into());
+		}
+
+		let const_data = BoundedVec::default();
+		let users = [(to.clone(), 1)]
+			.into_iter()
+			.collect::<BTreeMap<_, _>>()
+			.try_into()
+			.unwrap();
+		<Pallet<T>>::create_item(
+			self,
+			&caller,
+			CreateItemData::<T> {
+				const_data,
+				users,
+				properties: CollectionPropertiesVec::default(),
+			},
+			&budget,
+		)
+		.map_err(dispatch_to_evm::<T>)?;
+
+		Ok(true)
+	}
+
+	/// `token_id` should be obtained with `next_token_id` method,
+	/// unlike standard, you can't specify it manually
+	#[solidity(rename_selector = "mintWithTokenURI")]
+	#[weight(<SelfWeightOf<T>>::create_item())]
+	fn mint_with_token_uri(
+		&mut self,
+		caller: caller,
+		to: address,
+		token_id: uint256,
+		token_uri: string,
+	) -> Result<bool> {
+		let key = key::url();
+		let permission = get_token_permission::<T>(self.id, &key)?;
+		if !permission.collection_admin {
+			return Err("Operation is not allowed".into());
+		}
+
+		let caller = T::CrossAccountId::from_eth(caller);
+		let to = T::CrossAccountId::from_eth(to);
+		let token_id: u32 = token_id.try_into().map_err(|_| "amount overflow")?;
+		let budget = self
+			.recorder
+			.weight_calls_budget(<StructureWeight<T>>::find_parent());
+
+		if <TokensMinted<T>>::get(self.id)
+			.checked_add(1)
+			.ok_or("item id overflow")?
+			!= token_id
+		{
+			return Err("item id should be next".into());
+		}
+
+		let mut properties = CollectionPropertiesVec::default();
+		properties
+			.try_push(Property {
+				key,
+				value: token_uri
+					.into_bytes()
+					.try_into()
+					.map_err(|_| "token uri is too long")?,
+			})
+			.map_err(|e| Error::Revert(alloc::format!("Can't add property: {:?}", e)))?;
+
+		let const_data = BoundedVec::default();
+		let users = [(to.clone(), 1)]
+			.into_iter()
+			.collect::<BTreeMap<_, _>>()
+			.try_into()
+			.unwrap();
+		<Pallet<T>>::create_item(
+			self,
+			&caller,
+			CreateItemData::<T> {
+				const_data,
+				users,
+				properties,
+			},
+			&budget,
+		)
+		.map_err(dispatch_to_evm::<T>)?;
+		Ok(true)
+	}
+
+	/// @dev Not implemented
+	fn finish_minting(&mut self, _caller: caller) -> Result<bool> {
+		Err("not implementable".into())
+	}
+}
+
+fn get_token_property<T: Config>(
+	collection: &CollectionHandle<T>,
+	token_id: u32,
+	key: &up_data_structs::PropertyKey,
+) -> Result<string> {
+	collection.consume_store_reads(1)?;
+	let properties = <TokenProperties<T>>::try_get((collection.id, token_id))
+		.map_err(|_| Error::Revert("Token properties not found".into()))?;
+	if let Some(property) = properties.get(key) {
+		return Ok(string::from_utf8_lossy(property).into());
+	}
+
+	Err("Property tokenURI not found".into())
+}
+
+fn is_erc721_metadata_compatible<T: Config>(collection_id: CollectionId) -> bool {
+	if let Some(shema_name) =
+		pallet_common::Pallet::<T>::get_collection_property(collection_id, &key::schema_name())
+	{
+		let shema_name = shema_name.into_inner();
+		shema_name == property_value::ERC721_METADATA
+	} else {
+		false
+	}
+}
+
+fn get_token_permission<T: Config>(
+	collection_id: CollectionId,
+	key: &PropertyKey,
+) -> Result<PropertyPermission> {
+	let token_property_permissions = CollectionPropertyPermissions::<T>::try_get(collection_id)
+		.map_err(|_| Error::Revert("No permissions for collection".into()))?;
+	let a = token_property_permissions
+		.get(key)
+		.map(Clone::clone)
+		.ok_or_else(|| {
+			let key = string::from_utf8(key.clone().into_inner()).unwrap_or_default();
+			Error::Revert(alloc::format!("No permission for key {}", key))
+		})?;
+	Ok(a)
+}
+
+#[solidity_interface(name = "ERC721UniqueExtensions")]
+impl<T: Config> RefungibleHandle<T> {
+	/// @notice Returns next free RFT ID.
+	fn next_token_id(&self) -> Result<uint256> {
+		self.consume_store_reads(1)?;
+		Ok(<TokensMinted<T>>::get(self.id)
+			.checked_add(1)
+			.ok_or("item id overflow")?
+			.into())
+	}
+
+	#[weight(<SelfWeightOf<T>>::create_multiple_items(token_ids.len() as u32))]
+	fn mint_bulk(&mut self, caller: caller, to: address, token_ids: Vec<uint256>) -> Result<bool> {
+		let caller = T::CrossAccountId::from_eth(caller);
+		let to = T::CrossAccountId::from_eth(to);
+		let mut expected_index = <TokensMinted<T>>::get(self.id)
+			.checked_add(1)
+			.ok_or("item id overflow")?;
+		let budget = self
+			.recorder
+			.weight_calls_budget(<StructureWeight<T>>::find_parent());
+
+		let total_tokens = token_ids.len();
+		for id in token_ids.into_iter() {
+			let id: u32 = id.try_into().map_err(|_| "token id overflow")?;
+			if id != expected_index {
+				return Err("item id should be next".into());
+			}
+			expected_index = expected_index.checked_add(1).ok_or("item id overflow")?;
+		}
+		let const_data = BoundedVec::default();
+		let users = [(to.clone(), 1)]
+			.into_iter()
+			.collect::<BTreeMap<_, _>>()
+			.try_into()
+			.unwrap();
+		let create_item_data = CreateItemData::<T> {
+			const_data,
+			users,
+			properties: CollectionPropertiesVec::default(),
+		};
+		let data = (0..total_tokens)
+			.map(|_| create_item_data.clone())
+			.collect();
+
+		<Pallet<T>>::create_multiple_items(self, &caller, data, &budget)
+			.map_err(dispatch_to_evm::<T>)?;
+		Ok(true)
+	}
+
+	#[solidity(rename_selector = "mintBulkWithTokenURI")]
+	#[weight(<SelfWeightOf<T>>::create_multiple_items(tokens.len() as u32))]
+	fn mint_bulk_with_token_uri(
+		&mut self,
+		caller: caller,
+		to: address,
+		tokens: Vec<(uint256, string)>,
+	) -> Result<bool> {
+		let key = key::url();
+		let caller = T::CrossAccountId::from_eth(caller);
+		let to = T::CrossAccountId::from_eth(to);
+		let mut expected_index = <TokensMinted<T>>::get(self.id)
+			.checked_add(1)
+			.ok_or("item id overflow")?;
+		let budget = self
+			.recorder
+			.weight_calls_budget(<StructureWeight<T>>::find_parent());
+
+		let mut data = Vec::with_capacity(tokens.len());
+		let const_data = BoundedVec::default();
+		let users: BoundedBTreeMap<_, _, _> = [(to.clone(), 1)]
+			.into_iter()
+			.collect::<BTreeMap<_, _>>()
+			.try_into()
+			.unwrap();
+		for (id, token_uri) in tokens {
+			let id: u32 = id.try_into().map_err(|_| "token id overflow")?;
+			if id != expected_index {
+				return Err("item id should be next".into());
+			}
+			expected_index = expected_index.checked_add(1).ok_or("item id overflow")?;
+
+			let mut properties = CollectionPropertiesVec::default();
+			properties
+				.try_push(Property {
+					key: key.clone(),
+					value: token_uri
+						.into_bytes()
+						.try_into()
+						.map_err(|_| "token uri is too long")?,
+				})
+				.map_err(|e| Error::Revert(alloc::format!("Can't add property: {:?}", e)))?;
+
+			let create_item_data = CreateItemData::<T> {
+				const_data: const_data.clone(),
+				users: users.clone(),
+				properties,
+			};
+			data.push(create_item_data);
+		}
+
+		<Pallet<T>>::create_multiple_items(self, &caller, data, &budget)
+			.map_err(dispatch_to_evm::<T>)?;
+		Ok(true)
+	}
+}
+
 #[solidity_interface(
 	name = "UniqueRefungible",
-	is(via("CollectionHandle<T>", common_mut, Collection),)
+	is(
+		ERC721,
+		ERC721Metadata,
+		ERC721Enumerable,
+		ERC721UniqueExtensions,
+		ERC721Mintable,
+		ERC721Burnable,
+		via("CollectionHandle<T>", common_mut, Collection),
+		TokenProperties,
+	)
 )]
 impl<T: Config> RefungibleHandle<T> where T::AccountId: From<[u8; 32]> {}
 
modifiedpallets/refungible/src/lib.rsdiffbeforeafterboth
--- a/pallets/refungible/src/lib.rs
+++ b/pallets/refungible/src/lib.rs
@@ -88,6 +88,7 @@
 #![cfg_attr(not(feature = "std"), no_std)]
 
 use crate::erc_token::ERC20Events;
+use crate::erc::ERC721Events;
 
 use codec::{Encode, Decode, MaxEncodedLen};
 use core::ops::Deref;
@@ -96,7 +97,8 @@
 use pallet_evm::{account::CrossAccountId, Pallet as PalletEvm};
 use pallet_evm_coder_substrate::WithRecorder;
 use pallet_common::{
-	CommonCollectionOperations, Error as CommonError, Event as CommonEvent, Pallet as PalletCommon,
+	CommonCollectionOperations, Error as CommonError, Event as CommonEvent,
+	eth::collection_id_to_address, Pallet as PalletCommon,
 };
 use pallet_structure::Pallet as PalletStructure;
 use scale_info::TypeInfo;
@@ -117,6 +119,9 @@
 pub mod erc;
 pub mod erc_token;
 pub mod weights;
+
+pub type CreateItemData<T> =
+	CreateRefungibleExData<<T as pallet_evm::account::Config>::CrossAccountId>;
 pub(crate) type SelfWeightOf<T> = <T as Config>::WeightInfo;
 
 /// Token data, stored independently from other data used to describe it
@@ -779,6 +784,7 @@
 				token,
 			)),
 		);
+
 		<PalletCommon<T>>::deposit_event(CommonEvent::Transfer(
 			collection.id,
 			token,
@@ -797,7 +803,7 @@
 	pub fn create_multiple_items(
 		collection: &RefungibleHandle<T>,
 		sender: &T::CrossAccountId,
-		data: Vec<CreateRefungibleExData<T::CrossAccountId>>,
+		data: Vec<CreateItemData<T>>,
 		nesting_budget: &dyn Budget,
 	) -> DispatchResult {
 		if !collection.is_owner_or_admin(sender) {
@@ -942,6 +948,14 @@
 						TokenId(token_id),
 					)),
 				);
+				<PalletEvm<T>>::deposit_log(
+					ERC721Events::Transfer {
+						from: H160::default(),
+						to: *user.as_eth(),
+						token_id: token_id.into(),
+					}
+					.to_log(collection_id_to_address(collection.id)),
+				);
 				<PalletCommon<T>>::deposit_event(CommonEvent::ItemCreated(
 					collection.id,
 					TokenId(token_id),
@@ -1120,7 +1134,7 @@
 	pub fn create_item(
 		collection: &RefungibleHandle<T>,
 		sender: &T::CrossAccountId,
-		data: CreateRefungibleExData<T::CrossAccountId>,
+		data: CreateItemData<T>,
 		nesting_budget: &dyn Budget,
 	) -> DispatchResult {
 		Self::create_multiple_items(collection, sender, vec![data], nesting_budget)
modifiedpallets/refungible/src/stubs/UniqueRefungible.soldiffbeforeafterboth
--- a/pallets/refungible/src/stubs/UniqueRefungible.sol
+++ b/pallets/refungible/src/stubs/UniqueRefungible.sol
@@ -3,6 +3,12 @@
 
 pragma solidity >=0.8.0 <0.9.0;
 
+// Anonymous struct
+struct Tuple0 {
+	uint256 field_0;
+	string field_1;
+}
+
 // Common stubs holder
 contract Dummy {
 	uint8 dummy;
@@ -21,6 +27,351 @@
 	}
 }
 
+// Inline
+contract ERC721Events {
+	event Transfer(
+		address indexed from,
+		address indexed to,
+		uint256 indexed tokenId
+	);
+	event Approval(
+		address indexed owner,
+		address indexed approved,
+		uint256 indexed tokenId
+	);
+	event ApprovalForAll(
+		address indexed owner,
+		address indexed operator,
+		bool approved
+	);
+}
+
+// Inline
+contract ERC721MintableEvents {
+	event MintingFinished();
+}
+
+// Selector: 0784ee64
+contract ERC721UniqueExtensions is Dummy, ERC165 {
+	// @notice Returns next free RFT ID.
+	//
+	// Selector: nextTokenId() 75794a3c
+	function nextTokenId() public view returns (uint256) {
+		require(false, stub_error);
+		dummy;
+		return 0;
+	}
+
+	// Selector: mintBulk(address,uint256[]) 44a9945e
+	function mintBulk(address to, uint256[] memory tokenIds)
+		public
+		returns (bool)
+	{
+		require(false, stub_error);
+		to;
+		tokenIds;
+		dummy = 0;
+		return false;
+	}
+
+	// Selector: mintBulkWithTokenURI(address,(uint256,string)[]) 36543006
+	function mintBulkWithTokenURI(address to, Tuple0[] memory tokens)
+		public
+		returns (bool)
+	{
+		require(false, stub_error);
+		to;
+		tokens;
+		dummy = 0;
+		return false;
+	}
+}
+
+// Selector: 41369377
+contract TokenProperties is Dummy, ERC165 {
+	// Selector: setTokenPropertyPermission(string,bool,bool,bool) 222d97fa
+	function setTokenPropertyPermission(
+		string memory key,
+		bool isMutable,
+		bool collectionAdmin,
+		bool tokenOwner
+	) public {
+		require(false, stub_error);
+		key;
+		isMutable;
+		collectionAdmin;
+		tokenOwner;
+		dummy = 0;
+	}
+
+	// Selector: setProperty(uint256,string,bytes) 1752d67b
+	function setProperty(
+		uint256 tokenId,
+		string memory key,
+		bytes memory value
+	) public {
+		require(false, stub_error);
+		tokenId;
+		key;
+		value;
+		dummy = 0;
+	}
+
+	// Selector: deleteProperty(uint256,string) 066111d1
+	function deleteProperty(uint256 tokenId, string memory key) public {
+		require(false, stub_error);
+		tokenId;
+		key;
+		dummy = 0;
+	}
+
+	// Throws error if key not found
+	//
+	// Selector: property(uint256,string) 7228c327
+	function property(uint256 tokenId, string memory key)
+		public
+		view
+		returns (bytes memory)
+	{
+		require(false, stub_error);
+		tokenId;
+		key;
+		dummy;
+		return hex"";
+	}
+}
+
+// Selector: 42966c68
+contract ERC721Burnable is Dummy, ERC165 {
+	// @dev Not implemented
+	//
+	// Selector: burn(uint256) 42966c68
+	function burn(uint256 tokenId) public {
+		require(false, stub_error);
+		tokenId;
+		dummy = 0;
+	}
+}
+
+// Selector: 58800161
+contract ERC721 is Dummy, ERC165, ERC721Events {
+	// Selector: balanceOf(address) 70a08231
+	function balanceOf(address owner) public view returns (uint256) {
+		require(false, stub_error);
+		owner;
+		dummy;
+		return 0;
+	}
+
+	// Selector: ownerOf(uint256) 6352211e
+	function ownerOf(uint256 tokenId) public view returns (address) {
+		require(false, stub_error);
+		tokenId;
+		dummy;
+		return 0x0000000000000000000000000000000000000000;
+	}
+
+	// @dev Not implemented
+	//
+	// Selector: safeTransferFromWithData(address,address,uint256,bytes) 60a11672
+	function safeTransferFromWithData(
+		address from,
+		address to,
+		uint256 tokenId,
+		bytes memory data
+	) public {
+		require(false, stub_error);
+		from;
+		to;
+		tokenId;
+		data;
+		dummy = 0;
+	}
+
+	// @dev Not implemented
+	//
+	// Selector: safeTransferFrom(address,address,uint256) 42842e0e
+	function safeTransferFrom(
+		address from,
+		address to,
+		uint256 tokenId
+	) public {
+		require(false, stub_error);
+		from;
+		to;
+		tokenId;
+		dummy = 0;
+	}
+
+	// @dev Not implemented
+	//
+	// Selector: transferFrom(address,address,uint256) 23b872dd
+	function transferFrom(
+		address from,
+		address to,
+		uint256 tokenId
+	) public {
+		require(false, stub_error);
+		from;
+		to;
+		tokenId;
+		dummy = 0;
+	}
+
+	// @dev Not implemented
+	//
+	// Selector: approve(address,uint256) 095ea7b3
+	function approve(address approved, uint256 tokenId) public {
+		require(false, stub_error);
+		approved;
+		tokenId;
+		dummy = 0;
+	}
+
+	// @dev Not implemented
+	//
+	// Selector: setApprovalForAll(address,bool) a22cb465
+	function setApprovalForAll(address operator, bool approved) public {
+		require(false, stub_error);
+		operator;
+		approved;
+		dummy = 0;
+	}
+
+	// @dev Not implemented
+	//
+	// Selector: getApproved(uint256) 081812fc
+	function getApproved(uint256 tokenId) public view returns (address) {
+		require(false, stub_error);
+		tokenId;
+		dummy;
+		return 0x0000000000000000000000000000000000000000;
+	}
+
+	// @dev Not implemented
+	//
+	// Selector: isApprovedForAll(address,address) e985e9c5
+	function isApprovedForAll(address owner, address operator)
+		public
+		view
+		returns (address)
+	{
+		require(false, stub_error);
+		owner;
+		operator;
+		dummy;
+		return 0x0000000000000000000000000000000000000000;
+	}
+}
+
+// Selector: 5b5e139f
+contract ERC721Metadata is Dummy, ERC165 {
+	// Selector: name() 06fdde03
+	function name() public view returns (string memory) {
+		require(false, stub_error);
+		dummy;
+		return "";
+	}
+
+	// Selector: symbol() 95d89b41
+	function symbol() public view returns (string memory) {
+		require(false, stub_error);
+		dummy;
+		return "";
+	}
+
+	// Returns token's const_metadata
+	//
+	// Selector: tokenURI(uint256) c87b56dd
+	function tokenURI(uint256 tokenId) public view returns (string memory) {
+		require(false, stub_error);
+		tokenId;
+		dummy;
+		return "";
+	}
+}
+
+// Selector: 68ccfe89
+contract ERC721Mintable is Dummy, ERC165, ERC721MintableEvents {
+	// Selector: mintingFinished() 05d2035b
+	function mintingFinished() public view returns (bool) {
+		require(false, stub_error);
+		dummy;
+		return false;
+	}
+
+	// `token_id` should be obtained with `next_token_id` method,
+	// unlike standard, you can't specify it manually
+	//
+	// Selector: mint(address,uint256) 40c10f19
+	function mint(address to, uint256 tokenId) public returns (bool) {
+		require(false, stub_error);
+		to;
+		tokenId;
+		dummy = 0;
+		return false;
+	}
+
+	// `token_id` should be obtained with `next_token_id` method,
+	// unlike standard, you can't specify it manually
+	//
+	// Selector: mintWithTokenURI(address,uint256,string) 50bb4e7f
+	function mintWithTokenURI(
+		address to,
+		uint256 tokenId,
+		string memory tokenUri
+	) public returns (bool) {
+		require(false, stub_error);
+		to;
+		tokenId;
+		tokenUri;
+		dummy = 0;
+		return false;
+	}
+
+	// @dev Not implemented
+	//
+	// Selector: finishMinting() 7d64bcb4
+	function finishMinting() public returns (bool) {
+		require(false, stub_error);
+		dummy = 0;
+		return false;
+	}
+}
+
+// Selector: 780e9d63
+contract ERC721Enumerable is Dummy, ERC165 {
+	// Selector: tokenByIndex(uint256) 4f6ccce7
+	function tokenByIndex(uint256 index) public view returns (uint256) {
+		require(false, stub_error);
+		index;
+		dummy;
+		return 0;
+	}
+
+	// Not implemented
+	//
+	// Selector: tokenOfOwnerByIndex(address,uint256) 2f745c59
+	function tokenOfOwnerByIndex(address owner, uint256 index)
+		public
+		view
+		returns (uint256)
+	{
+		require(false, stub_error);
+		owner;
+		index;
+		dummy;
+		return 0;
+	}
+
+	// Selector: totalSupply() 18160ddd
+	function totalSupply() public view returns (uint256) {
+		require(false, stub_error);
+		dummy;
+		return 0;
+	}
+}
+
 // Selector: 7d9262e6
 contract Collection is Dummy, ERC165 {
 	// Set collection property.
@@ -248,4 +599,15 @@
 	}
 }
 
-contract UniqueRefungible is Dummy, ERC165, Collection {}
+contract UniqueRefungible is
+	Dummy,
+	ERC165,
+	ERC721,
+	ERC721Metadata,
+	ERC721Enumerable,
+	ERC721UniqueExtensions,
+	ERC721Mintable,
+	ERC721Burnable,
+	Collection,
+	TokenProperties
+{}
modifiedtests/src/eth/api/UniqueRefungible.soldiffbeforeafterboth
--- a/tests/src/eth/api/UniqueRefungible.sol
+++ b/tests/src/eth/api/UniqueRefungible.sol
@@ -3,6 +3,12 @@
 
 pragma solidity >=0.8.0 <0.9.0;
 
+// Anonymous struct
+struct Tuple0 {
+	uint256 field_0;
+	string field_1;
+}
+
 // Common stubs holder
 interface Dummy {
 
@@ -12,6 +18,203 @@
 	function supportsInterface(bytes4 interfaceID) external view returns (bool);
 }
 
+// Inline
+interface ERC721Events {
+	event Transfer(
+		address indexed from,
+		address indexed to,
+		uint256 indexed tokenId
+	);
+	event Approval(
+		address indexed owner,
+		address indexed approved,
+		uint256 indexed tokenId
+	);
+	event ApprovalForAll(
+		address indexed owner,
+		address indexed operator,
+		bool approved
+	);
+}
+
+// Inline
+interface ERC721MintableEvents {
+	event MintingFinished();
+}
+
+// Selector: 0784ee64
+interface ERC721UniqueExtensions is Dummy, ERC165 {
+	// @notice Returns next free RFT ID.
+	//
+	// Selector: nextTokenId() 75794a3c
+	function nextTokenId() external view returns (uint256);
+
+	// Selector: mintBulk(address,uint256[]) 44a9945e
+	function mintBulk(address to, uint256[] memory tokenIds)
+		external
+		returns (bool);
+
+	// Selector: mintBulkWithTokenURI(address,(uint256,string)[]) 36543006
+	function mintBulkWithTokenURI(address to, Tuple0[] memory tokens)
+		external
+		returns (bool);
+}
+
+// Selector: 41369377
+interface TokenProperties is Dummy, ERC165 {
+	// Selector: setTokenPropertyPermission(string,bool,bool,bool) 222d97fa
+	function setTokenPropertyPermission(
+		string memory key,
+		bool isMutable,
+		bool collectionAdmin,
+		bool tokenOwner
+	) external;
+
+	// Selector: setProperty(uint256,string,bytes) 1752d67b
+	function setProperty(
+		uint256 tokenId,
+		string memory key,
+		bytes memory value
+	) external;
+
+	// Selector: deleteProperty(uint256,string) 066111d1
+	function deleteProperty(uint256 tokenId, string memory key) external;
+
+	// Throws error if key not found
+	//
+	// Selector: property(uint256,string) 7228c327
+	function property(uint256 tokenId, string memory key)
+		external
+		view
+		returns (bytes memory);
+}
+
+// Selector: 42966c68
+interface ERC721Burnable is Dummy, ERC165 {
+	// @dev Not implemented
+	//
+	// Selector: burn(uint256) 42966c68
+	function burn(uint256 tokenId) external;
+}
+
+// Selector: 58800161
+interface ERC721 is Dummy, ERC165, ERC721Events {
+	// Selector: balanceOf(address) 70a08231
+	function balanceOf(address owner) external view returns (uint256);
+
+	// Selector: ownerOf(uint256) 6352211e
+	function ownerOf(uint256 tokenId) external view returns (address);
+
+	// @dev Not implemented
+	//
+	// Selector: safeTransferFromWithData(address,address,uint256,bytes) 60a11672
+	function safeTransferFromWithData(
+		address from,
+		address to,
+		uint256 tokenId,
+		bytes memory data
+	) external;
+
+	// @dev Not implemented
+	//
+	// Selector: safeTransferFrom(address,address,uint256) 42842e0e
+	function safeTransferFrom(
+		address from,
+		address to,
+		uint256 tokenId
+	) external;
+
+	// @dev Not implemented
+	//
+	// Selector: transferFrom(address,address,uint256) 23b872dd
+	function transferFrom(
+		address from,
+		address to,
+		uint256 tokenId
+	) external;
+
+	// @dev Not implemented
+	//
+	// Selector: approve(address,uint256) 095ea7b3
+	function approve(address approved, uint256 tokenId) external;
+
+	// @dev Not implemented
+	//
+	// Selector: setApprovalForAll(address,bool) a22cb465
+	function setApprovalForAll(address operator, bool approved) external;
+
+	// @dev Not implemented
+	//
+	// Selector: getApproved(uint256) 081812fc
+	function getApproved(uint256 tokenId) external view returns (address);
+
+	// @dev Not implemented
+	//
+	// Selector: isApprovedForAll(address,address) e985e9c5
+	function isApprovedForAll(address owner, address operator)
+		external
+		view
+		returns (address);
+}
+
+// Selector: 5b5e139f
+interface ERC721Metadata is Dummy, ERC165 {
+	// Selector: name() 06fdde03
+	function name() external view returns (string memory);
+
+	// Selector: symbol() 95d89b41
+	function symbol() external view returns (string memory);
+
+	// Returns token's const_metadata
+	//
+	// Selector: tokenURI(uint256) c87b56dd
+	function tokenURI(uint256 tokenId) external view returns (string memory);
+}
+
+// Selector: 68ccfe89
+interface ERC721Mintable is Dummy, ERC165, ERC721MintableEvents {
+	// Selector: mintingFinished() 05d2035b
+	function mintingFinished() external view returns (bool);
+
+	// `token_id` should be obtained with `next_token_id` method,
+	// unlike standard, you can't specify it manually
+	//
+	// Selector: mint(address,uint256) 40c10f19
+	function mint(address to, uint256 tokenId) external returns (bool);
+
+	// `token_id` should be obtained with `next_token_id` method,
+	// unlike standard, you can't specify it manually
+	//
+	// Selector: mintWithTokenURI(address,uint256,string) 50bb4e7f
+	function mintWithTokenURI(
+		address to,
+		uint256 tokenId,
+		string memory tokenUri
+	) external returns (bool);
+
+	// @dev Not implemented
+	//
+	// Selector: finishMinting() 7d64bcb4
+	function finishMinting() external returns (bool);
+}
+
+// Selector: 780e9d63
+interface ERC721Enumerable is Dummy, ERC165 {
+	// Selector: tokenByIndex(uint256) 4f6ccce7
+	function tokenByIndex(uint256 index) external view returns (uint256);
+
+	// Not implemented
+	//
+	// Selector: tokenOfOwnerByIndex(address,uint256) 2f745c59
+	function tokenOfOwnerByIndex(address owner, uint256 index)
+		external
+		view
+		returns (uint256);
+
+	// Selector: totalSupply() 18160ddd
+	function totalSupply() external view returns (uint256);
+}
+
 // Selector: 7d9262e6
 interface Collection is Dummy, ERC165 {
 	// Set collection property.
@@ -160,4 +363,15 @@
 	function setCollectionMintMode(bool mode) external;
 }
 
-interface UniqueRefungible is Dummy, ERC165, Collection {}
+interface UniqueRefungible is
+	Dummy,
+	ERC165,
+	ERC721,
+	ERC721Metadata,
+	ERC721Enumerable,
+	ERC721UniqueExtensions,
+	ERC721Mintable,
+	ERC721Burnable,
+	Collection,
+	TokenProperties
+{}
addedtests/src/eth/reFungibleAbi.jsondiffbeforeafterboth
--- /dev/null
+++ b/tests/src/eth/reFungibleAbi.json
@@ -0,0 +1,510 @@
+[
+  {
+    "anonymous": false,
+    "inputs": [
+      {
+        "indexed": true,
+        "internalType": "address",
+        "name": "owner",
+        "type": "address"
+      },
+      {
+        "indexed": true,
+        "internalType": "address",
+        "name": "approved",
+        "type": "address"
+      },
+      {
+        "indexed": true,
+        "internalType": "uint256",
+        "name": "tokenId",
+        "type": "uint256"
+      }
+    ],
+    "name": "Approval",
+    "type": "event"
+  },
+  {
+    "anonymous": false,
+    "inputs": [
+      {
+        "indexed": true,
+        "internalType": "address",
+        "name": "owner",
+        "type": "address"
+      },
+      {
+        "indexed": true,
+        "internalType": "address",
+        "name": "operator",
+        "type": "address"
+      },
+      {
+        "indexed": false,
+        "internalType": "bool",
+        "name": "approved",
+        "type": "bool"
+      }
+    ],
+    "name": "ApprovalForAll",
+    "type": "event"
+  },
+  {
+    "anonymous": false,
+    "inputs": [],
+    "name": "MintingFinished",
+    "type": "event"
+  },
+  {
+    "anonymous": false,
+    "inputs": [
+      {
+        "indexed": true,
+        "internalType": "address",
+        "name": "from",
+        "type": "address"
+      },
+      {
+        "indexed": true,
+        "internalType": "address",
+        "name": "to",
+        "type": "address"
+      },
+      {
+        "indexed": true,
+        "internalType": "uint256",
+        "name": "tokenId",
+        "type": "uint256"
+      }
+    ],
+    "name": "Transfer",
+    "type": "event"
+  },
+  {
+    "inputs": [
+      { "internalType": "address", "name": "newAdmin", "type": "address" }
+    ],
+    "name": "addCollectionAdmin",
+    "outputs": [],
+    "stateMutability": "nonpayable",
+    "type": "function"
+  },
+  {
+    "inputs": [
+      { "internalType": "uint256", "name": "newAdmin", "type": "uint256" }
+    ],
+    "name": "addCollectionAdminSubstrate",
+    "outputs": [],
+    "stateMutability": "nonpayable",
+    "type": "function"
+  },
+  {
+    "inputs": [
+      { "internalType": "address", "name": "user", "type": "address" }
+    ],
+    "name": "addToCollectionAllowList",
+    "outputs": [],
+    "stateMutability": "nonpayable",
+    "type": "function"
+  },
+  {
+    "inputs": [
+      { "internalType": "address", "name": "approved", "type": "address" },
+      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
+    ],
+    "name": "approve",
+    "outputs": [],
+    "stateMutability": "nonpayable",
+    "type": "function"
+  },
+  {
+    "inputs": [
+      { "internalType": "address", "name": "owner", "type": "address" }
+    ],
+    "name": "balanceOf",
+    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
+    "stateMutability": "view",
+    "type": "function"
+  },
+  {
+    "inputs": [
+      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
+    ],
+    "name": "burn",
+    "outputs": [],
+    "stateMutability": "nonpayable",
+    "type": "function"
+  },
+  {
+    "inputs": [{ "internalType": "string", "name": "key", "type": "string" }],
+    "name": "collectionProperty",
+    "outputs": [{ "internalType": "bytes", "name": "", "type": "bytes" }],
+    "stateMutability": "view",
+    "type": "function"
+  },
+  {
+    "inputs": [],
+    "name": "confirmCollectionSponsorship",
+    "outputs": [],
+    "stateMutability": "nonpayable",
+    "type": "function"
+  },
+  {
+    "inputs": [],
+    "name": "contractAddress",
+    "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
+    "stateMutability": "view",
+    "type": "function"
+  },
+  {
+    "inputs": [{ "internalType": "string", "name": "key", "type": "string" }],
+    "name": "deleteCollectionProperty",
+    "outputs": [],
+    "stateMutability": "nonpayable",
+    "type": "function"
+  },
+  {
+    "inputs": [
+      { "internalType": "uint256", "name": "tokenId", "type": "uint256" },
+      { "internalType": "string", "name": "key", "type": "string" }
+    ],
+    "name": "deleteProperty",
+    "outputs": [],
+    "stateMutability": "nonpayable",
+    "type": "function"
+  },
+  {
+    "inputs": [],
+    "name": "finishMinting",
+    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+    "stateMutability": "nonpayable",
+    "type": "function"
+  },
+  {
+    "inputs": [
+      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
+    ],
+    "name": "getApproved",
+    "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
+    "stateMutability": "view",
+    "type": "function"
+  },
+  {
+    "inputs": [
+      { "internalType": "address", "name": "owner", "type": "address" },
+      { "internalType": "address", "name": "operator", "type": "address" }
+    ],
+    "name": "isApprovedForAll",
+    "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
+    "stateMutability": "view",
+    "type": "function"
+  },
+  {
+    "inputs": [
+      { "internalType": "address", "name": "to", "type": "address" },
+      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
+    ],
+    "name": "mint",
+    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+    "stateMutability": "nonpayable",
+    "type": "function"
+  },
+  {
+    "inputs": [
+      { "internalType": "address", "name": "to", "type": "address" },
+      { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" }
+    ],
+    "name": "mintBulk",
+    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+    "stateMutability": "nonpayable",
+    "type": "function"
+  },
+  {
+    "inputs": [
+      { "internalType": "address", "name": "to", "type": "address" },
+      {
+        "components": [
+          { "internalType": "uint256", "name": "field_0", "type": "uint256" },
+          { "internalType": "string", "name": "field_1", "type": "string" }
+        ],
+        "internalType": "struct Tuple0[]",
+        "name": "tokens",
+        "type": "tuple[]"
+      }
+    ],
+    "name": "mintBulkWithTokenURI",
+    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+    "stateMutability": "nonpayable",
+    "type": "function"
+  },
+  {
+    "inputs": [
+      { "internalType": "address", "name": "to", "type": "address" },
+      { "internalType": "uint256", "name": "tokenId", "type": "uint256" },
+      { "internalType": "string", "name": "tokenUri", "type": "string" }
+    ],
+    "name": "mintWithTokenURI",
+    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+    "stateMutability": "nonpayable",
+    "type": "function"
+  },
+  {
+    "inputs": [],
+    "name": "mintingFinished",
+    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+    "stateMutability": "view",
+    "type": "function"
+  },
+  {
+    "inputs": [],
+    "name": "name",
+    "outputs": [{ "internalType": "string", "name": "", "type": "string" }],
+    "stateMutability": "view",
+    "type": "function"
+  },
+  {
+    "inputs": [],
+    "name": "nextTokenId",
+    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
+    "stateMutability": "view",
+    "type": "function"
+  },
+  {
+    "inputs": [
+      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
+    ],
+    "name": "ownerOf",
+    "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
+    "stateMutability": "view",
+    "type": "function"
+  },
+  {
+    "inputs": [
+      { "internalType": "uint256", "name": "tokenId", "type": "uint256" },
+      { "internalType": "string", "name": "key", "type": "string" }
+    ],
+    "name": "property",
+    "outputs": [{ "internalType": "bytes", "name": "", "type": "bytes" }],
+    "stateMutability": "view",
+    "type": "function"
+  },
+  {
+    "inputs": [
+      { "internalType": "address", "name": "admin", "type": "address" }
+    ],
+    "name": "removeCollectionAdmin",
+    "outputs": [],
+    "stateMutability": "nonpayable",
+    "type": "function"
+  },
+  {
+    "inputs": [
+      { "internalType": "uint256", "name": "admin", "type": "uint256" }
+    ],
+    "name": "removeCollectionAdminSubstrate",
+    "outputs": [],
+    "stateMutability": "nonpayable",
+    "type": "function"
+  },
+  {
+    "inputs": [
+      { "internalType": "address", "name": "user", "type": "address" }
+    ],
+    "name": "removeFromCollectionAllowList",
+    "outputs": [],
+    "stateMutability": "nonpayable",
+    "type": "function"
+  },
+  {
+    "inputs": [
+      { "internalType": "address", "name": "from", "type": "address" },
+      { "internalType": "address", "name": "to", "type": "address" },
+      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
+    ],
+    "name": "safeTransferFrom",
+    "outputs": [],
+    "stateMutability": "nonpayable",
+    "type": "function"
+  },
+  {
+    "inputs": [
+      { "internalType": "address", "name": "from", "type": "address" },
+      { "internalType": "address", "name": "to", "type": "address" },
+      { "internalType": "uint256", "name": "tokenId", "type": "uint256" },
+      { "internalType": "bytes", "name": "data", "type": "bytes" }
+    ],
+    "name": "safeTransferFromWithData",
+    "outputs": [],
+    "stateMutability": "nonpayable",
+    "type": "function"
+  },
+  {
+    "inputs": [
+      { "internalType": "address", "name": "operator", "type": "address" },
+      { "internalType": "bool", "name": "approved", "type": "bool" }
+    ],
+    "name": "setApprovalForAll",
+    "outputs": [],
+    "stateMutability": "nonpayable",
+    "type": "function"
+  },
+  {
+    "inputs": [{ "internalType": "uint8", "name": "mode", "type": "uint8" }],
+    "name": "setCollectionAccess",
+    "outputs": [],
+    "stateMutability": "nonpayable",
+    "type": "function"
+  },
+  {
+    "inputs": [
+      { "internalType": "string", "name": "limit", "type": "string" },
+      { "internalType": "uint32", "name": "value", "type": "uint32" }
+    ],
+    "name": "setCollectionLimit",
+    "outputs": [],
+    "stateMutability": "nonpayable",
+    "type": "function"
+  },
+  {
+    "inputs": [
+      { "internalType": "string", "name": "limit", "type": "string" },
+      { "internalType": "bool", "name": "value", "type": "bool" }
+    ],
+    "name": "setCollectionLimit",
+    "outputs": [],
+    "stateMutability": "nonpayable",
+    "type": "function"
+  },
+  {
+    "inputs": [{ "internalType": "bool", "name": "mode", "type": "bool" }],
+    "name": "setCollectionMintMode",
+    "outputs": [],
+    "stateMutability": "nonpayable",
+    "type": "function"
+  },
+  {
+    "inputs": [{ "internalType": "bool", "name": "enable", "type": "bool" }],
+    "name": "setCollectionNesting",
+    "outputs": [],
+    "stateMutability": "nonpayable",
+    "type": "function"
+  },
+  {
+    "inputs": [
+      { "internalType": "bool", "name": "enable", "type": "bool" },
+      {
+        "internalType": "address[]",
+        "name": "collections",
+        "type": "address[]"
+      }
+    ],
+    "name": "setCollectionNesting",
+    "outputs": [],
+    "stateMutability": "nonpayable",
+    "type": "function"
+  },
+  {
+    "inputs": [
+      { "internalType": "string", "name": "key", "type": "string" },
+      { "internalType": "bytes", "name": "value", "type": "bytes" }
+    ],
+    "name": "setCollectionProperty",
+    "outputs": [],
+    "stateMutability": "nonpayable",
+    "type": "function"
+  },
+  {
+    "inputs": [
+      { "internalType": "address", "name": "sponsor", "type": "address" }
+    ],
+    "name": "setCollectionSponsor",
+    "outputs": [],
+    "stateMutability": "nonpayable",
+    "type": "function"
+  },
+  {
+    "inputs": [
+      { "internalType": "uint256", "name": "tokenId", "type": "uint256" },
+      { "internalType": "string", "name": "key", "type": "string" },
+      { "internalType": "bytes", "name": "value", "type": "bytes" }
+    ],
+    "name": "setProperty",
+    "outputs": [],
+    "stateMutability": "nonpayable",
+    "type": "function"
+  },
+  {
+    "inputs": [
+      { "internalType": "string", "name": "key", "type": "string" },
+      { "internalType": "bool", "name": "isMutable", "type": "bool" },
+      { "internalType": "bool", "name": "collectionAdmin", "type": "bool" },
+      { "internalType": "bool", "name": "tokenOwner", "type": "bool" }
+    ],
+    "name": "setTokenPropertyPermission",
+    "outputs": [],
+    "stateMutability": "nonpayable",
+    "type": "function"
+  },
+  {
+    "inputs": [
+      { "internalType": "bytes4", "name": "interfaceID", "type": "bytes4" }
+    ],
+    "name": "supportsInterface",
+    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+    "stateMutability": "view",
+    "type": "function"
+  },
+  {
+    "inputs": [],
+    "name": "symbol",
+    "outputs": [{ "internalType": "string", "name": "", "type": "string" }],
+    "stateMutability": "view",
+    "type": "function"
+  },
+  {
+    "inputs": [
+      { "internalType": "uint256", "name": "index", "type": "uint256" }
+    ],
+    "name": "tokenByIndex",
+    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
+    "stateMutability": "view",
+    "type": "function"
+  },
+  {
+    "inputs": [
+      { "internalType": "address", "name": "owner", "type": "address" },
+      { "internalType": "uint256", "name": "index", "type": "uint256" }
+    ],
+    "name": "tokenOfOwnerByIndex",
+    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
+    "stateMutability": "view",
+    "type": "function"
+  },
+  {
+    "inputs": [
+      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
+    ],
+    "name": "tokenURI",
+    "outputs": [{ "internalType": "string", "name": "", "type": "string" }],
+    "stateMutability": "view",
+    "type": "function"
+  },
+  {
+    "inputs": [],
+    "name": "totalSupply",
+    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
+    "stateMutability": "view",
+    "type": "function"
+  },
+  {
+    "inputs": [
+      { "internalType": "address", "name": "from", "type": "address" },
+      { "internalType": "address", "name": "to", "type": "address" },
+      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
+    ],
+    "name": "transferFrom",
+    "outputs": [],
+    "stateMutability": "nonpayable",
+    "type": "function"
+  }
+]
modifiedtests/src/interfaces/augment-api-errors.tsdiffbeforeafterboth
--- a/tests/src/interfaces/augment-api-errors.ts
+++ b/tests/src/interfaces/augment-api-errors.ts
@@ -446,25 +446,83 @@
       [key: string]: AugmentedError<ApiType>;
     };
     rmrkCore: {
+      /**
+       * Not the target owner of the sent NFT.
+       **/
       CannotAcceptNonOwnedNft: AugmentedError<ApiType>;
+      /**
+       * Not the target owner of the sent NFT.
+       **/
       CannotRejectNonOwnedNft: AugmentedError<ApiType>;
+      /**
+       * NFT was not sent and is not pending.
+       **/
       CannotRejectNonPendingNft: AugmentedError<ApiType>;
+      /**
+       * If an NFT is sent to a descendant, that would form a nesting loop, an ouroboros.
+       * Sending to self is redundant.
+       **/
       CannotSendToDescendentOrSelf: AugmentedError<ApiType>;
+      /**
+       * Too many tokens created in the collection, no new ones are allowed.
+       **/
       CollectionFullOrLocked: AugmentedError<ApiType>;
+      /**
+       * Only destroying collections without tokens is allowed.
+       **/
       CollectionNotEmpty: AugmentedError<ApiType>;
+      /**
+       * Collection does not exist, has a wrong type, or does not map to a Unique ID.
+       **/
       CollectionUnknown: AugmentedError<ApiType>;
+      /**
+       * Property of the type of RMRK collection could not be read successfully.
+       **/
       CorruptedCollectionType: AugmentedError<ApiType>;
-      NftTypeEncodeError: AugmentedError<ApiType>;
+      /**
+       * Could not find an ID for a collection. It is likely there were too many collections created on the chain, causing an overflow.
+       **/
       NoAvailableCollectionId: AugmentedError<ApiType>;
+      /**
+       * Token does not exist, or there is no suitable ID for it, likely too many tokens were created in a collection, causing an overflow.
+       **/
       NoAvailableNftId: AugmentedError<ApiType>;
+      /**
+       * Could not find an ID for the resource. It is likely there were too many resources created on an NFT, causing an overflow.
+       **/
       NoAvailableResourceId: AugmentedError<ApiType>;
+      /**
+       * Token is marked as non-transferable, and thus cannot be transferred.
+       **/
       NonTransferable: AugmentedError<ApiType>;
+      /**
+       * No permission to perform action.
+       **/
       NoPermission: AugmentedError<ApiType>;
+      /**
+       * No such resource found.
+       **/
       ResourceDoesntExist: AugmentedError<ApiType>;
+      /**
+       * Resource is not pending for the operation.
+       **/
       ResourceNotPending: AugmentedError<ApiType>;
+      /**
+       * Could not find a property by the supplied key.
+       **/
       RmrkPropertyIsNotFound: AugmentedError<ApiType>;
+      /**
+       * Too many symbols supplied as the property key. The maximum is [256](up_data_structs::MAX_PROPERTY_KEY_LENGTH).
+       **/
       RmrkPropertyKeyIsTooLong: AugmentedError<ApiType>;
+      /**
+       * Too many bytes supplied as the property value. The maximum is [32768](up_data_structs::MAX_PROPERTY_VALUE_LENGTH).
+       **/
       RmrkPropertyValueIsTooLong: AugmentedError<ApiType>;
+      /**
+       * Something went wrong when decoding encoded data from the storage.
+       * Perhaps, there was a wrong key supplied for the type, or the data was improperly stored.
+       **/
       UnableToDecodeRmrkData: AugmentedError<ApiType>;
       /**
        * Generic error
@@ -472,12 +530,33 @@
       [key: string]: AugmentedError<ApiType>;
     };
     rmrkEquip: {
+      /**
+       * Base collection linked to this ID does not exist.
+       **/
       BaseDoesntExist: AugmentedError<ApiType>;
+      /**
+       * No Theme named "default" is associated with the Base.
+       **/
       NeedsDefaultThemeFirst: AugmentedError<ApiType>;
+      /**
+       * Could not find an ID for a Base collection. It is likely there were too many collections created on the chain, causing an overflow.
+       **/
       NoAvailableBaseId: AugmentedError<ApiType>;
+      /**
+       * Could not find a suitable ID for a Part, likely too many Part tokens were created in the Base, causing an overflow
+       **/
       NoAvailablePartId: AugmentedError<ApiType>;
+      /**
+       * Cannot assign equippables to a fixed Part.
+       **/
       NoEquippableOnFixedPart: AugmentedError<ApiType>;
+      /**
+       * Part linked to this ID does not exist.
+       **/
       PartDoesntExist: AugmentedError<ApiType>;
+      /**
+       * No permission to perform action.
+       **/
       PermissionError: AugmentedError<ApiType>;
       /**
        * Generic error
@@ -508,15 +587,15 @@
     };
     structure: {
       /**
-       * While iterating over children, reached the breadth limit.
+       * While nesting, reached the breadth limit of nesting, exceeding the provided budget.
        **/
       BreadthLimit: AugmentedError<ApiType>;
       /**
-       * While searching for the owner, reached the depth limit.
+       * While nesting, reached the depth limit of nesting, exceeding the provided budget.
        **/
       DepthLimit: AugmentedError<ApiType>;
       /**
-       * While searching for the owner, encountered an already checked account, detecting a loop.
+       * While nesting, encountered an already checked account, detecting a loop.
        **/
       OuroborosDetected: AugmentedError<ApiType>;
       /**
modifiedtests/src/interfaces/augment-api-query.tsdiffbeforeafterboth
--- a/tests/src/interfaces/augment-api-query.ts
+++ b/tests/src/interfaces/augment-api-query.ts
@@ -492,7 +492,13 @@
       [key: string]: QueryableStorageEntry<ApiType>;
     };
     rmrkCore: {
+      /**
+       * Latest yet-unused collection ID.
+       **/
       collectionIndex: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;
+      /**
+       * Mapping from RMRK collection ID to Unique's.
+       **/
       uniqueCollectionId: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<u32>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;
       /**
        * Generic query
@@ -500,7 +506,13 @@
       [key: string]: QueryableStorageEntry<ApiType>;
     };
     rmrkEquip: {
+      /**
+       * Checkmark that a Base has a Theme NFT named "default".
+       **/
       baseHasDefaultTheme: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<bool>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;
+      /**
+       * Map of a Base ID and a Part ID to an NFT in the Base collection serving as the Part.
+       **/
       inernalPartId: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array) => Observable<Option<u32>>, [u32, u32]> & QueryableStorageEntry<ApiType, [u32, u32]>;
       /**
        * Generic query
modifiedtests/src/interfaces/augment-api-tx.tsdiffbeforeafterboth
--- a/tests/src/interfaces/augment-api-tx.ts
+++ b/tests/src/interfaces/augment-api-tx.ts
@@ -348,103 +348,259 @@
     };
     rmrkCore: {
       /**
-       * Accepts an NFT sent from another account to self or owned NFT
+       * Accept an NFT sent from another account to self or an owned NFT.
+       * 
+       * The NFT in question must be pending, and, thus, be [sent](`Pallet::send`) first.
        * 
-       * Parameters:
-       * - `origin`: sender of the transaction
-       * - `rmrk_collection_id`: collection id of the nft to be accepted
-       * - `rmrk_nft_id`: nft id of the nft to be accepted
-       * - `new_owner`: either origin's account ID or origin-owned NFT, whichever the NFT was
-       * sent to
+       * # Permissions:
+       * - Token-owner-to-be
+       * 
+       * # Arguments:
+       * - `rmrk_collection_id`: RMRK collection ID of the NFT to be accepted.
+       * - `rmrk_nft_id`: ID of the NFT to be accepted.
+       * - `new_owner`: Either the sender's account ID or a sender-owned NFT,
+       * whichever the accepted NFT was sent to.
        **/
       acceptNft: AugmentedSubmittable<(rmrkCollectionId: u32 | AnyNumber | Uint8Array, rmrkNftId: u32 | AnyNumber | Uint8Array, newOwner: RmrkTraitsNftAccountIdOrCollectionNftTuple | { AccountId: any } | { CollectionAndNftTuple: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, u32, RmrkTraitsNftAccountIdOrCollectionNftTuple]>;
       /**
-       * accept the addition of a new resource to an existing NFT
+       * Accept the addition of a newly created pending resource to an existing NFT.
+       * 
+       * This transaction is needed when a resource is created and assigned to an NFT
+       * by a non-owner, i.e. the collection issuer, with one of the
+       * [`add_...` transactions](Pallet::add_basic_resource).
+       * 
+       * # Permissions:
+       * - Token owner
+       * 
+       * # Arguments:
+       * - `rmrk_collection_id`: RMRK collection ID of the NFT.
+       * - `rmrk_nft_id`: ID of the NFT with a pending resource to be accepted.
+       * - `resource_id`: ID of the newly created pending resource.
        **/
       acceptResource: AugmentedSubmittable<(rmrkCollectionId: u32 | AnyNumber | Uint8Array, rmrkNftId: u32 | AnyNumber | Uint8Array, resourceId: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, u32, u32]>;
       /**
-       * accept the removal of a resource of an existing NFT
+       * Accept the removal of a removal-pending resource from an NFT.
+       * 
+       * This transaction is needed when a non-owner, i.e. the collection issuer,
+       * requests a [removal](`Pallet::remove_resource`) of a resource from an NFT.
+       * 
+       * # Permissions:
+       * - Token owner
+       * 
+       * # Arguments:
+       * - `rmrk_collection_id`: RMRK collection ID of the NFT.
+       * - `rmrk_nft_id`: ID of the NFT with a resource to be removed.
+       * - `resource_id`: ID of the removal-pending resource.
        **/
       acceptResourceRemoval: AugmentedSubmittable<(rmrkCollectionId: u32 | AnyNumber | Uint8Array, rmrkNftId: u32 | AnyNumber | Uint8Array, resourceId: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, u32, u32]>;
       /**
-       * Create basic resource
+       * Create and set/propose a basic resource for an NFT.
+       * 
+       * A basic resource is the simplest, lacking a Base and anything that comes with it.
+       * See RMRK docs for more information and examples.
+       * 
+       * # Permissions:
+       * - Collection issuer - if not the token owner, adding the resource will warrant
+       * the owner's [acceptance](Pallet::accept_resource).
+       * 
+       * # Arguments:
+       * - `rmrk_collection_id`: RMRK collection ID of the NFT.
+       * - `nft_id`: ID of the NFT to assign a resource to.
+       * - `resource`: Data of the resource to be created.
        **/
       addBasicResource: AugmentedSubmittable<(rmrkCollectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array, resource: RmrkTraitsResourceBasicResource | { src?: any; metadata?: any; license?: any; thumb?: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, u32, RmrkTraitsResourceBasicResource]>;
       /**
-       * Create composable resource
+       * Create and set/propose a composable resource for an NFT.
+       * 
+       * A composable resource links to a Base and has a subset of its Parts it is composed of.
+       * See RMRK docs for more information and examples.
+       * 
+       * # Permissions:
+       * - Collection issuer - if not the token owner, adding the resource will warrant
+       * the owner's [acceptance](Pallet::accept_resource).
+       * 
+       * # Arguments:
+       * - `rmrk_collection_id`: RMRK collection ID of the NFT.
+       * - `nft_id`: ID of the NFT to assign a resource to.
+       * - `resource`: Data of the resource to be created.
        **/
       addComposableResource: AugmentedSubmittable<(rmrkCollectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array, resource: RmrkTraitsResourceComposableResource | { parts?: any; base?: any; src?: any; metadata?: any; license?: any; thumb?: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, u32, RmrkTraitsResourceComposableResource]>;
       /**
-       * Create slot resource
+       * Create and set/propose a slot resource for an NFT.
+       * 
+       * A slot resource links to a Base and a slot ID in it which it can fit into.
+       * See RMRK docs for more information and examples.
+       * 
+       * # Permissions:
+       * - Collection issuer - if not the token owner, adding the resource will warrant
+       * the owner's [acceptance](Pallet::accept_resource).
+       * 
+       * # Arguments:
+       * - `rmrk_collection_id`: RMRK collection ID of the NFT.
+       * - `nft_id`: ID of the NFT to assign a resource to.
+       * - `resource`: Data of the resource to be created.
        **/
       addSlotResource: AugmentedSubmittable<(rmrkCollectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array, resource: RmrkTraitsResourceSlotResource | { base?: any; src?: any; metadata?: any; slot?: any; license?: any; thumb?: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, u32, RmrkTraitsResourceSlotResource]>;
       /**
-       * burn nft
+       * Burn an NFT, destroying it and its nested tokens up to the specified limit.
+       * If the burning budget is exceeded, the transaction is reverted.
+       * 
+       * This is the way to burn a nested token as well.
+       * 
+       * For more information, see [`burn_recursively`](pallet_nonfungible::pallet::Pallet::burn_recursively).
+       * 
+       * # Permissions:
+       * * Token owner
+       * 
+       * # Arguments:
+       * - `collection_id`: RMRK ID of the collection in which the NFT to burn belongs to.
+       * - `nft_id`: ID of the NFT to be destroyed.
+       * - `max_burns`: Maximum number of tokens to burn, assuming nesting. The transaction
+       * is reverted if there are more tokens to burn in the nesting tree than this number.
+       * This is primarily a mechanism of transaction weight control.
        **/
       burnNft: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array, maxBurns: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, u32, u32]>;
       /**
-       * Change the issuer of a collection
+       * Change the issuer of a collection. Analogous to Unique's collection's [`owner`](up_data_structs::Collection).
        * 
-       * Parameters:
-       * - `origin`: sender of the transaction
-       * - `collection_id`: collection id of the nft to change issuer of
-       * - `new_issuer`: Collection's new issuer
+       * # Permissions:
+       * * Collection issuer
+       * 
+       * # Arguments:
+       * - `collection_id`: RMRK collection ID to change the issuer of.
+       * - `new_issuer`: Collection's new issuer.
        **/
       changeCollectionIssuer: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, newIssuer: MultiAddress | { Id: any } | { Index: any } | { Raw: any } | { Address32: any } | { Address20: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, MultiAddress]>;
       /**
-       * Create a collection
+       * Create a new collection of NFTs.
+       * 
+       * # Permissions:
+       * * Anyone - will be assigned as the issuer of the collection.
+       * 
+       * # Arguments:
+       * - `metadata`: Metadata describing the collection, e.g. IPFS hash. Cannot be changed.
+       * - `max`: Optional maximum number of tokens.
+       * - `symbol`: UTF-8 string with token prefix, by which to represent the token in wallets and UIs.
+       * Analogous to Unique's [`token_prefix`](up_data_structs::Collection). Cannot be changed.
        **/
       createCollection: AugmentedSubmittable<(metadata: Bytes | string | Uint8Array, max: Option<u32> | null | object | string | Uint8Array, symbol: Bytes | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [Bytes, Option<u32>, Bytes]>;
       /**
-       * destroy collection
+       * Destroy a collection.
+       * 
+       * Only empty collections can be destroyed. If it has any tokens, they must be burned first.
+       * 
+       * # Permissions:
+       * * Collection issuer
+       * 
+       * # Arguments:
+       * - `collection_id`: RMRK ID of the collection to destroy.
        **/
       destroyCollection: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32]>;
       /**
-       * lock collection
+       * "Lock" the collection and prevent new token creation. Cannot be undone.
+       * 
+       * # Permissions:
+       * * Collection issuer
+       * 
+       * # Arguments:
+       * - `collection_id`: RMRK ID of the collection to lock.
        **/
       lockCollection: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32]>;
       /**
-       * Mints an NFT in the specified collection
-       * Sets metadata and the royalty attribute
+       * Mint an NFT in a specified collection.
+       * 
+       * # Permissions:
+       * * Collection issuer
        * 
-       * Parameters:
-       * - `collection_id`: The class of the asset to be minted.
-       * - `nft_id`: The nft value of the asset to be minted.
-       * - `recipient`: Receiver of the royalty
-       * - `royalty`: Permillage reward from each trade for the Recipient
-       * - `metadata`: Arbitrary data about an nft, e.g. IPFS hash
-       * - `transferable`: Ability to transfer this NFT
+       * # Arguments:
+       * - `owner`: Owner account of the NFT. If set to None, defaults to the sender (collection issuer).
+       * - `collection_id`: RMRK collection ID for the NFT to be minted within. Cannot be changed.
+       * - `recipient`: Receiver account of the royalty. Has no effect if the `royalty_amount` is not set. Cannot be changed.
+       * - `royalty_amount`: Optional permillage reward from each trade for the `recipient`. Cannot be changed.
+       * - `metadata`: Arbitrary data about an NFT, e.g. IPFS hash. Cannot be changed.
+       * - `transferable`: Can this NFT be transferred? Cannot be changed.
+       * - `resources`: Resource data to be added to the NFT immediately after minting.
        **/
       mintNft: AugmentedSubmittable<(owner: Option<AccountId32> | null | object | string | Uint8Array, collectionId: u32 | AnyNumber | Uint8Array, recipient: Option<AccountId32> | null | object | string | Uint8Array, royaltyAmount: Option<Permill> | null | object | string | Uint8Array, metadata: Bytes | string | Uint8Array, transferable: bool | boolean | Uint8Array, resources: Option<Vec<RmrkTraitsResourceResourceTypes>> | null | object | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [Option<AccountId32>, u32, Option<AccountId32>, Option<Permill>, Bytes, bool, Option<Vec<RmrkTraitsResourceResourceTypes>>]>;
       /**
-       * Rejects an NFT sent from another account to self or owned NFT
+       * Reject an NFT sent from another account to self or owned NFT.
+       * The NFT in question will not be sent back and burnt instead.
+       * 
+       * The NFT in question must be pending, and, thus, be [sent](`Pallet::send`) first.
+       * 
+       * # Permissions:
+       * - Token-owner-to-be-not
        * 
-       * Parameters:
-       * - `origin`: sender of the transaction
-       * - `rmrk_collection_id`: collection id of the nft to be accepted
-       * - `rmrk_nft_id`: nft id of the nft to be accepted
+       * # Arguments:
+       * - `rmrk_collection_id`: RMRK ID of the NFT to be rejected.
+       * - `rmrk_nft_id`: ID of the NFT to be rejected.
        **/
       rejectNft: AugmentedSubmittable<(rmrkCollectionId: u32 | AnyNumber | Uint8Array, rmrkNftId: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, u32]>;
       /**
-       * remove resource
+       * Remove and erase a resource from an NFT.
+       * 
+       * If the sender does not own the NFT, then it will be pending confirmation,
+       * and will have to be [accepted](Pallet::accept_resource_removal) by the token owner.
+       * 
+       * # Permissions
+       * - Collection issuer
+       * 
+       * # Arguments
+       * - `collection_id`: RMRK ID of a collection to which the NFT making use of the resource belongs to.
+       * - `nft_id`: ID of the NFT with a resource to be removed.
+       * - `resource_id`: ID of the resource to be removed.
        **/
       removeResource: AugmentedSubmittable<(rmrkCollectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array, resourceId: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, u32, u32]>;
       /**
-       * Transfers a NFT from an Account or NFT A to another Account or NFT B
+       * Transfer an NFT from an account/NFT A to another account/NFT B.
+       * The token must be transferable. Nesting cannot occur deeper than the [`NESTING_BUDGET`].
        * 
-       * Parameters:
-       * - `origin`: sender of the transaction
-       * - `rmrk_collection_id`: collection id of the nft to be transferred
-       * - `rmrk_nft_id`: nft id of the nft to be transferred
-       * - `new_owner`: new owner of the nft which can be either an account or a NFT
+       * If the target owner is an NFT owned by another account, then the NFT will enter
+       * the pending state and will have to be accepted by the other account.
+       * 
+       * # Permissions:
+       * - Token owner
+       * 
+       * # Arguments:
+       * - `collection_id`: RMRK ID of the collection of the NFT to be transferred.
+       * - `nft_id`: ID of the NFT to be transferred.
+       * - `new_owner`: New owner of the nft which can be either an account or a NFT.
        **/
       send: AugmentedSubmittable<(rmrkCollectionId: u32 | AnyNumber | Uint8Array, rmrkNftId: u32 | AnyNumber | Uint8Array, newOwner: RmrkTraitsNftAccountIdOrCollectionNftTuple | { AccountId: any } | { CollectionAndNftTuple: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, u32, RmrkTraitsNftAccountIdOrCollectionNftTuple]>;
       /**
-       * set a different order of resource priority
+       * Set a different order of resource priorities for an NFT. Priorities can be used,
+       * for example, for order of rendering.
+       * 
+       * Note that the priorities are not updated automatically, and are an empty vector
+       * by default. There is no pre-set definition for the order to be particular,
+       * it can be interpreted arbitrarily use-case by use-case.
+       * 
+       * # Permissions:
+       * - Token owner
+       * 
+       * # Arguments:
+       * - `rmrk_collection_id`: RMRK collection ID of the NFT.
+       * - `rmrk_nft_id`: ID of the NFT to rearrange resource priorities for.
+       * - `priorities`: Ordered vector of resource IDs.
        **/
       setPriority: AugmentedSubmittable<(rmrkCollectionId: u32 | AnyNumber | Uint8Array, rmrkNftId: u32 | AnyNumber | Uint8Array, priorities: Vec<u32> | (u32 | AnyNumber | Uint8Array)[]) => SubmittableExtrinsic<ApiType>, [u32, u32, Vec<u32>]>;
       /**
-       * set a custom value on an NFT
+       * Add or edit a custom user property, a key-value pair, describing the metadata
+       * of a token or a collection, on either one of these.
+       * 
+       * Note that in this proxy implementation many details regarding RMRK are stored
+       * as scoped properties prefixed with "rmrk:", normally inaccessible
+       * to external transactions and RPCs.
+       * 
+       * # Permissions:
+       * - Collection issuer - in case of collection property
+       * - Token owner - in case of NFT property
+       * 
+       * # Arguments:
+       * - `rmrk_collection_id`: RMRK collection ID.
+       * - `maybe_nft_id`: Optional ID of the NFT. If left empty, then the property is set for the collection.
+       * - `key`: Key of the custom property to be referenced by.
+       * - `value`: Value of the custom property to be stored.
        **/
       setProperty: AugmentedSubmittable<(rmrkCollectionId: Compact<u32> | AnyNumber | Uint8Array, maybeNftId: Option<u32> | null | object | string | Uint8Array, key: Bytes | string | Uint8Array, value: Bytes | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [Compact<u32>, Option<u32>, Bytes, Bytes]>;
       /**
@@ -454,32 +610,50 @@
     };
     rmrkEquip: {
       /**
-       * Creates a new Base.
-       * Modeled after [base interaction](https://github.com/rmrk-team/rmrk-spec/blob/master/standards/rmrk2.0.0/interactions/base.md)
+       * Create a new Base.
+       * 
+       * Modeled after the [Base interaction](https://github.com/rmrk-team/rmrk-spec/blob/master/standards/rmrk2.0.0/interactions/base.md)
+       * 
+       * # Permissions
+       * - Anyone - will be assigned as the issuer of the Base.
        * 
-       * Parameters:
-       * - origin: Caller, will be assigned as the issuer of the Base
-       * - base_type: media type, e.g. "svg"
-       * - symbol: arbitrary client-chosen symbol
-       * - parts: array of Fixed and Slot parts composing the base, confined in length by
-       * RmrkPartsLimit
+       * # Arguments:
+       * - `base_type`: Arbitrary media type, e.g. "svg".
+       * - `symbol`: Arbitrary client-chosen symbol.
+       * - `parts`: Array of Fixed and Slot Parts composing the Base,
+       * confined in length by [`RmrkPartsLimit`](up_data_structs::RmrkPartsLimit).
        **/
       createBase: AugmentedSubmittable<(baseType: Bytes | string | Uint8Array, symbol: Bytes | string | Uint8Array, parts: Vec<RmrkTraitsPartPartType> | (RmrkTraitsPartPartType | { FixedPart: any } | { SlotPart: any } | string | Uint8Array)[]) => SubmittableExtrinsic<ApiType>, [Bytes, Bytes, Vec<RmrkTraitsPartPartType>]>;
+      /**
+       * Update the array of Collections allowed to be equipped to a Base's specified Slot Part.
+       * 
+       * Modeled after [equippable interaction](https://github.com/rmrk-team/rmrk-spec/blob/master/standards/rmrk2.0.0/interactions/equippable.md).
+       * 
+       * # Permissions:
+       * - Base issuer
+       * 
+       * # Arguments:
+       * - `base_id`: Base containing the Slot Part to be updated.
+       * - `part_id`: Slot Part whose Equippable List is being updated.
+       * - `equippables`: List of equippables that will override the current Equippables list.
+       **/
       equippable: AugmentedSubmittable<(baseId: u32 | AnyNumber | Uint8Array, slotId: u32 | AnyNumber | Uint8Array, equippables: RmrkTraitsPartEquippableList | { All: any } | { Empty: any } | { Custom: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, u32, RmrkTraitsPartEquippableList]>;
       /**
-       * Adds a Theme to a Base.
-       * Modeled after [themeadd interaction](https://github.com/rmrk-team/rmrk-spec/blob/master/standards/rmrk2.0.0/interactions/themeadd.md)
-       * Themes are stored in the Themes storage
+       * Add a Theme to a Base.
        * A Theme named "default" is required prior to adding other Themes.
        * 
-       * Parameters:
-       * - origin: The caller of the function, must be issuer of the base
-       * - base_id: The Base containing the Theme to be updated
-       * - theme: The Theme to add to the Base.  A Theme has a name and properties, which are an
+       * Modeled after [Themeadd interaction](https://github.com/rmrk-team/rmrk-spec/blob/master/standards/rmrk2.0.0/interactions/themeadd.md).
+       * 
+       * # Permissions:
+       * - Base issuer
+       * 
+       * # Arguments:
+       * - `base_id`: Base ID containing the Theme to be updated.
+       * - `theme`: Theme to add to the Base.  A Theme has a name and properties, which are an
        * array of [key, value, inherit].
-       * - key: arbitrary BoundedString, defined by client
-       * - value: arbitrary BoundedString, defined by client
-       * - inherit: optional bool
+       * - `key`: Arbitrary BoundedString, defined by client.
+       * - `value`: Arbitrary BoundedString, defined by client.
+       * - `inherit`: Optional bool.
        **/
       themeAdd: AugmentedSubmittable<(baseId: u32 | AnyNumber | Uint8Array, theme: RmrkTraitsTheme | { name?: any; properties?: any; inherit?: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, RmrkTraitsTheme]>;
       /**
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 } 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: u64;15  } & Struct;16  readonly type: 'ServiceOverweight';17}1819/** @name CumulusPalletDmpQueueConfigData */20export interface CumulusPalletDmpQueueConfigData extends Struct {21  readonly maxIndividual: u64;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: u64;50    readonly requiredWeight: u64;51  } & Struct;52  readonly isOverweightEnqueued: boolean;53  readonly asOverweightEnqueued: {54    readonly messageId: U8aFixed;55    readonly overweightIndex: u64;56    readonly requiredWeight: u64;57  } & Struct;58  readonly isOverweightServiced: boolean;59  readonly asOverweightServiced: {60    readonly overweightIndex: u64;61    readonly weightUsed: u64;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: u64;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: u64;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_: u64;188  } & Struct;189  readonly isUpdateWeightRestrictDecay: boolean;190  readonly asUpdateWeightRestrictDecay: {191    readonly new_: u64;192  } & Struct;193  readonly isUpdateXcmpMaxIndividualWeight: boolean;194  readonly asUpdateXcmpMaxIndividualWeight: {195    readonly new_: u64;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: Option<H256>;214  readonly isFail: boolean;215  readonly asFail: ITuple<[Option<H256>, XcmV2TraitsError]>;216  readonly isBadVersion: boolean;217  readonly asBadVersion: Option<H256>;218  readonly isBadFormat: boolean;219  readonly asBadFormat: Option<H256>;220  readonly isUpwardMessageSent: boolean;221  readonly asUpwardMessageSent: Option<H256>;222  readonly isXcmpMessageSent: boolean;223  readonly asXcmpMessageSent: Option<H256>;224  readonly isOverweightEnqueued: boolean;225  readonly asOverweightEnqueued: ITuple<[u32, u32, u64, u64]>;226  readonly isOverweightServiced: boolean;227  readonly asOverweightServiced: ITuple<[u64, u64]>;228  readonly type: 'Success' | 'Fail' | 'BadVersion' | 'BadFormat' | 'UpwardMessageSent' | 'XcmpMessageSent' | 'OverweightEnqueued' | 'OverweightServiced';229}230231/** @name CumulusPalletXcmpQueueInboundChannelDetails */232export interface CumulusPalletXcmpQueueInboundChannelDetails extends Struct {233  readonly sender: u32;234  readonly state: CumulusPalletXcmpQueueInboundState;235  readonly messageMetadata: Vec<ITuple<[u32, PolkadotParachainPrimitivesXcmpMessageFormat]>>;236}237238/** @name CumulusPalletXcmpQueueInboundState */239export interface CumulusPalletXcmpQueueInboundState extends Enum {240  readonly isOk: boolean;241  readonly isSuspended: boolean;242  readonly type: 'Ok' | 'Suspended';243}244245/** @name CumulusPalletXcmpQueueOutboundChannelDetails */246export interface CumulusPalletXcmpQueueOutboundChannelDetails extends Struct {247  readonly recipient: u32;248  readonly state: CumulusPalletXcmpQueueOutboundState;249  readonly signalsExist: bool;250  readonly firstIndex: u16;251  readonly lastIndex: u16;252}253254/** @name CumulusPalletXcmpQueueOutboundState */255export interface CumulusPalletXcmpQueueOutboundState extends Enum {256  readonly isOk: boolean;257  readonly isSuspended: boolean;258  readonly type: 'Ok' | 'Suspended';259}260261/** @name CumulusPalletXcmpQueueQueueConfigData */262export interface CumulusPalletXcmpQueueQueueConfigData extends Struct {263  readonly suspendThreshold: u32;264  readonly dropThreshold: u32;265  readonly resumeThreshold: u32;266  readonly thresholdWeight: u64;267  readonly weightRestrictDecay: u64;268  readonly xcmpMaxIndividualWeight: u64;269}270271/** @name CumulusPrimitivesParachainInherentParachainInherentData */272export interface CumulusPrimitivesParachainInherentParachainInherentData extends Struct {273  readonly validationData: PolkadotPrimitivesV2PersistedValidationData;274  readonly relayChainState: SpTrieStorageProof;275  readonly downwardMessages: Vec<PolkadotCorePrimitivesInboundDownwardMessage>;276  readonly horizontalMessages: BTreeMap<u32, Vec<PolkadotCorePrimitivesInboundHrmpMessage>>;277}278279/** @name EthbloomBloom */280export interface EthbloomBloom extends U8aFixed {}281282/** @name EthereumBlock */283export interface EthereumBlock extends Struct {284  readonly header: EthereumHeader;285  readonly transactions: Vec<EthereumTransactionTransactionV2>;286  readonly ommers: Vec<EthereumHeader>;287}288289/** @name EthereumHeader */290export interface EthereumHeader extends Struct {291  readonly parentHash: H256;292  readonly ommersHash: H256;293  readonly beneficiary: H160;294  readonly stateRoot: H256;295  readonly transactionsRoot: H256;296  readonly receiptsRoot: H256;297  readonly logsBloom: EthbloomBloom;298  readonly difficulty: U256;299  readonly number: U256;300  readonly gasLimit: U256;301  readonly gasUsed: U256;302  readonly timestamp: u64;303  readonly extraData: Bytes;304  readonly mixHash: H256;305  readonly nonce: EthereumTypesHashH64;306}307308/** @name EthereumLog */309export interface EthereumLog extends Struct {310  readonly address: H160;311  readonly topics: Vec<H256>;312  readonly data: Bytes;313}314315/** @name EthereumReceiptEip658ReceiptData */316export interface EthereumReceiptEip658ReceiptData extends Struct {317  readonly statusCode: u8;318  readonly usedGas: U256;319  readonly logsBloom: EthbloomBloom;320  readonly logs: Vec<EthereumLog>;321}322323/** @name EthereumReceiptReceiptV3 */324export interface EthereumReceiptReceiptV3 extends Enum {325  readonly isLegacy: boolean;326  readonly asLegacy: EthereumReceiptEip658ReceiptData;327  readonly isEip2930: boolean;328  readonly asEip2930: EthereumReceiptEip658ReceiptData;329  readonly isEip1559: boolean;330  readonly asEip1559: EthereumReceiptEip658ReceiptData;331  readonly type: 'Legacy' | 'Eip2930' | 'Eip1559';332}333334/** @name EthereumTransactionAccessListItem */335export interface EthereumTransactionAccessListItem extends Struct {336  readonly address: H160;337  readonly storageKeys: Vec<H256>;338}339340/** @name EthereumTransactionEip1559Transaction */341export interface EthereumTransactionEip1559Transaction extends Struct {342  readonly chainId: u64;343  readonly nonce: U256;344  readonly maxPriorityFeePerGas: U256;345  readonly maxFeePerGas: U256;346  readonly gasLimit: U256;347  readonly action: EthereumTransactionTransactionAction;348  readonly value: U256;349  readonly input: Bytes;350  readonly accessList: Vec<EthereumTransactionAccessListItem>;351  readonly oddYParity: bool;352  readonly r: H256;353  readonly s: H256;354}355356/** @name EthereumTransactionEip2930Transaction */357export interface EthereumTransactionEip2930Transaction extends Struct {358  readonly chainId: u64;359  readonly nonce: U256;360  readonly gasPrice: U256;361  readonly gasLimit: U256;362  readonly action: EthereumTransactionTransactionAction;363  readonly value: U256;364  readonly input: Bytes;365  readonly accessList: Vec<EthereumTransactionAccessListItem>;366  readonly oddYParity: bool;367  readonly r: H256;368  readonly s: H256;369}370371/** @name EthereumTransactionLegacyTransaction */372export interface EthereumTransactionLegacyTransaction extends Struct {373  readonly nonce: U256;374  readonly gasPrice: U256;375  readonly gasLimit: U256;376  readonly action: EthereumTransactionTransactionAction;377  readonly value: U256;378  readonly input: Bytes;379  readonly signature: EthereumTransactionTransactionSignature;380}381382/** @name EthereumTransactionTransactionAction */383export interface EthereumTransactionTransactionAction extends Enum {384  readonly isCall: boolean;385  readonly asCall: H160;386  readonly isCreate: boolean;387  readonly type: 'Call' | 'Create';388}389390/** @name EthereumTransactionTransactionSignature */391export interface EthereumTransactionTransactionSignature extends Struct {392  readonly v: u64;393  readonly r: H256;394  readonly s: H256;395}396397/** @name EthereumTransactionTransactionV2 */398export interface EthereumTransactionTransactionV2 extends Enum {399  readonly isLegacy: boolean;400  readonly asLegacy: EthereumTransactionLegacyTransaction;401  readonly isEip2930: boolean;402  readonly asEip2930: EthereumTransactionEip2930Transaction;403  readonly isEip1559: boolean;404  readonly asEip1559: EthereumTransactionEip1559Transaction;405  readonly type: 'Legacy' | 'Eip2930' | 'Eip1559';406}407408/** @name EthereumTypesHashH64 */409export interface EthereumTypesHashH64 extends U8aFixed {}410411/** @name EvmCoreErrorExitError */412export interface EvmCoreErrorExitError extends Enum {413  readonly isStackUnderflow: boolean;414  readonly isStackOverflow: boolean;415  readonly isInvalidJump: boolean;416  readonly isInvalidRange: boolean;417  readonly isDesignatedInvalid: boolean;418  readonly isCallTooDeep: boolean;419  readonly isCreateCollision: boolean;420  readonly isCreateContractLimit: boolean;421  readonly isOutOfOffset: boolean;422  readonly isOutOfGas: boolean;423  readonly isOutOfFund: boolean;424  readonly isPcUnderflow: boolean;425  readonly isCreateEmpty: boolean;426  readonly isOther: boolean;427  readonly asOther: Text;428  readonly isInvalidCode: boolean;429  readonly type: 'StackUnderflow' | 'StackOverflow' | 'InvalidJump' | 'InvalidRange' | 'DesignatedInvalid' | 'CallTooDeep' | 'CreateCollision' | 'CreateContractLimit' | 'OutOfOffset' | 'OutOfGas' | 'OutOfFund' | 'PcUnderflow' | 'CreateEmpty' | 'Other' | 'InvalidCode';430}431432/** @name EvmCoreErrorExitFatal */433export interface EvmCoreErrorExitFatal extends Enum {434  readonly isNotSupported: boolean;435  readonly isUnhandledInterrupt: boolean;436  readonly isCallErrorAsFatal: boolean;437  readonly asCallErrorAsFatal: EvmCoreErrorExitError;438  readonly isOther: boolean;439  readonly asOther: Text;440  readonly type: 'NotSupported' | 'UnhandledInterrupt' | 'CallErrorAsFatal' | 'Other';441}442443/** @name EvmCoreErrorExitReason */444export interface EvmCoreErrorExitReason extends Enum {445  readonly isSucceed: boolean;446  readonly asSucceed: EvmCoreErrorExitSucceed;447  readonly isError: boolean;448  readonly asError: EvmCoreErrorExitError;449  readonly isRevert: boolean;450  readonly asRevert: EvmCoreErrorExitRevert;451  readonly isFatal: boolean;452  readonly asFatal: EvmCoreErrorExitFatal;453  readonly type: 'Succeed' | 'Error' | 'Revert' | 'Fatal';454}455456/** @name EvmCoreErrorExitRevert */457export interface EvmCoreErrorExitRevert extends Enum {458  readonly isReverted: boolean;459  readonly type: 'Reverted';460}461462/** @name EvmCoreErrorExitSucceed */463export interface EvmCoreErrorExitSucceed extends Enum {464  readonly isStopped: boolean;465  readonly isReturned: boolean;466  readonly isSuicided: boolean;467  readonly type: 'Stopped' | 'Returned' | 'Suicided';468}469470/** @name FpRpcTransactionStatus */471export interface FpRpcTransactionStatus extends Struct {472  readonly transactionHash: H256;473  readonly transactionIndex: u32;474  readonly from: H160;475  readonly to: Option<H160>;476  readonly contractAddress: Option<H160>;477  readonly logs: Vec<EthereumLog>;478  readonly logsBloom: EthbloomBloom;479}480481/** @name FrameSupportDispatchRawOrigin */482export interface FrameSupportDispatchRawOrigin extends Enum {483  readonly isRoot: boolean;484  readonly isSigned: boolean;485  readonly asSigned: AccountId32;486  readonly isNone: boolean;487  readonly type: 'Root' | 'Signed' | 'None';488}489490/** @name FrameSupportPalletId */491export interface FrameSupportPalletId extends U8aFixed {}492493/** @name FrameSupportScheduleLookupError */494export interface FrameSupportScheduleLookupError extends Enum {495  readonly isUnknown: boolean;496  readonly isBadFormat: boolean;497  readonly type: 'Unknown' | 'BadFormat';498}499500/** @name FrameSupportScheduleMaybeHashed */501export interface FrameSupportScheduleMaybeHashed extends Enum {502  readonly isValue: boolean;503  readonly asValue: Call;504  readonly isHash: boolean;505  readonly asHash: H256;506  readonly type: 'Value' | 'Hash';507}508509/** @name FrameSupportTokensMiscBalanceStatus */510export interface FrameSupportTokensMiscBalanceStatus extends Enum {511  readonly isFree: boolean;512  readonly isReserved: boolean;513  readonly type: 'Free' | 'Reserved';514}515516/** @name FrameSupportWeightsDispatchClass */517export interface FrameSupportWeightsDispatchClass extends Enum {518  readonly isNormal: boolean;519  readonly isOperational: boolean;520  readonly isMandatory: boolean;521  readonly type: 'Normal' | 'Operational' | 'Mandatory';522}523524/** @name FrameSupportWeightsDispatchInfo */525export interface FrameSupportWeightsDispatchInfo extends Struct {526  readonly weight: u64;527  readonly class: FrameSupportWeightsDispatchClass;528  readonly paysFee: FrameSupportWeightsPays;529}530531/** @name FrameSupportWeightsPays */532export interface FrameSupportWeightsPays extends Enum {533  readonly isYes: boolean;534  readonly isNo: boolean;535  readonly type: 'Yes' | 'No';536}537538/** @name FrameSupportWeightsPerDispatchClassU32 */539export interface FrameSupportWeightsPerDispatchClassU32 extends Struct {540  readonly normal: u32;541  readonly operational: u32;542  readonly mandatory: u32;543}544545/** @name FrameSupportWeightsPerDispatchClassU64 */546export interface FrameSupportWeightsPerDispatchClassU64 extends Struct {547  readonly normal: u64;548  readonly operational: u64;549  readonly mandatory: u64;550}551552/** @name FrameSupportWeightsPerDispatchClassWeightsPerClass */553export interface FrameSupportWeightsPerDispatchClassWeightsPerClass extends Struct {554  readonly normal: FrameSystemLimitsWeightsPerClass;555  readonly operational: FrameSystemLimitsWeightsPerClass;556  readonly mandatory: FrameSystemLimitsWeightsPerClass;557}558559/** @name FrameSupportWeightsRuntimeDbWeight */560export interface FrameSupportWeightsRuntimeDbWeight extends Struct {561  readonly read: u64;562  readonly write: u64;563}564565/** @name FrameSystemAccountInfo */566export interface FrameSystemAccountInfo extends Struct {567  readonly nonce: u32;568  readonly consumers: u32;569  readonly providers: u32;570  readonly sufficients: u32;571  readonly data: PalletBalancesAccountData;572}573574/** @name FrameSystemCall */575export interface FrameSystemCall extends Enum {576  readonly isFillBlock: boolean;577  readonly asFillBlock: {578    readonly ratio: Perbill;579  } & Struct;580  readonly isRemark: boolean;581  readonly asRemark: {582    readonly remark: Bytes;583  } & Struct;584  readonly isSetHeapPages: boolean;585  readonly asSetHeapPages: {586    readonly pages: u64;587  } & Struct;588  readonly isSetCode: boolean;589  readonly asSetCode: {590    readonly code: Bytes;591  } & Struct;592  readonly isSetCodeWithoutChecks: boolean;593  readonly asSetCodeWithoutChecks: {594    readonly code: Bytes;595  } & Struct;596  readonly isSetStorage: boolean;597  readonly asSetStorage: {598    readonly items: Vec<ITuple<[Bytes, Bytes]>>;599  } & Struct;600  readonly isKillStorage: boolean;601  readonly asKillStorage: {602    readonly keys_: Vec<Bytes>;603  } & Struct;604  readonly isKillPrefix: boolean;605  readonly asKillPrefix: {606    readonly prefix: Bytes;607    readonly subkeys: u32;608  } & Struct;609  readonly isRemarkWithEvent: boolean;610  readonly asRemarkWithEvent: {611    readonly remark: Bytes;612  } & Struct;613  readonly type: 'FillBlock' | 'Remark' | 'SetHeapPages' | 'SetCode' | 'SetCodeWithoutChecks' | 'SetStorage' | 'KillStorage' | 'KillPrefix' | 'RemarkWithEvent';614}615616/** @name FrameSystemError */617export interface FrameSystemError extends Enum {618  readonly isInvalidSpecName: boolean;619  readonly isSpecVersionNeedsToIncrease: boolean;620  readonly isFailedToExtractRuntimeVersion: boolean;621  readonly isNonDefaultComposite: boolean;622  readonly isNonZeroRefCount: boolean;623  readonly isCallFiltered: boolean;624  readonly type: 'InvalidSpecName' | 'SpecVersionNeedsToIncrease' | 'FailedToExtractRuntimeVersion' | 'NonDefaultComposite' | 'NonZeroRefCount' | 'CallFiltered';625}626627/** @name FrameSystemEvent */628export interface FrameSystemEvent extends Enum {629  readonly isExtrinsicSuccess: boolean;630  readonly asExtrinsicSuccess: {631    readonly dispatchInfo: FrameSupportWeightsDispatchInfo;632  } & Struct;633  readonly isExtrinsicFailed: boolean;634  readonly asExtrinsicFailed: {635    readonly dispatchError: SpRuntimeDispatchError;636    readonly dispatchInfo: FrameSupportWeightsDispatchInfo;637  } & Struct;638  readonly isCodeUpdated: boolean;639  readonly isNewAccount: boolean;640  readonly asNewAccount: {641    readonly account: AccountId32;642  } & Struct;643  readonly isKilledAccount: boolean;644  readonly asKilledAccount: {645    readonly account: AccountId32;646  } & Struct;647  readonly isRemarked: boolean;648  readonly asRemarked: {649    readonly sender: AccountId32;650    readonly hash_: H256;651  } & Struct;652  readonly type: 'ExtrinsicSuccess' | 'ExtrinsicFailed' | 'CodeUpdated' | 'NewAccount' | 'KilledAccount' | 'Remarked';653}654655/** @name FrameSystemEventRecord */656export interface FrameSystemEventRecord extends Struct {657  readonly phase: FrameSystemPhase;658  readonly event: Event;659  readonly topics: Vec<H256>;660}661662/** @name FrameSystemExtensionsCheckGenesis */663export interface FrameSystemExtensionsCheckGenesis extends Null {}664665/** @name FrameSystemExtensionsCheckNonce */666export interface FrameSystemExtensionsCheckNonce extends Compact<u32> {}667668/** @name FrameSystemExtensionsCheckSpecVersion */669export interface FrameSystemExtensionsCheckSpecVersion extends Null {}670671/** @name FrameSystemExtensionsCheckWeight */672export interface FrameSystemExtensionsCheckWeight extends Null {}673674/** @name FrameSystemLastRuntimeUpgradeInfo */675export interface FrameSystemLastRuntimeUpgradeInfo extends Struct {676  readonly specVersion: Compact<u32>;677  readonly specName: Text;678}679680/** @name FrameSystemLimitsBlockLength */681export interface FrameSystemLimitsBlockLength extends Struct {682  readonly max: FrameSupportWeightsPerDispatchClassU32;683}684685/** @name FrameSystemLimitsBlockWeights */686export interface FrameSystemLimitsBlockWeights extends Struct {687  readonly baseBlock: u64;688  readonly maxBlock: u64;689  readonly perClass: FrameSupportWeightsPerDispatchClassWeightsPerClass;690}691692/** @name FrameSystemLimitsWeightsPerClass */693export interface FrameSystemLimitsWeightsPerClass extends Struct {694  readonly baseExtrinsic: u64;695  readonly maxExtrinsic: Option<u64>;696  readonly maxTotal: Option<u64>;697  readonly reserved: Option<u64>;698}699700/** @name FrameSystemPhase */701export interface FrameSystemPhase extends Enum {702  readonly isApplyExtrinsic: boolean;703  readonly asApplyExtrinsic: u32;704  readonly isFinalization: boolean;705  readonly isInitialization: boolean;706  readonly type: 'ApplyExtrinsic' | 'Finalization' | 'Initialization';707}708709/** @name OpalRuntimeOriginCaller */710export interface OpalRuntimeOriginCaller extends Enum {711  readonly isVoid: boolean;712  readonly asVoid: SpCoreVoid;713  readonly isSystem: boolean;714  readonly asSystem: FrameSupportDispatchRawOrigin;715  readonly isPolkadotXcm: boolean;716  readonly asPolkadotXcm: PalletXcmOrigin;717  readonly isCumulusXcm: boolean;718  readonly asCumulusXcm: CumulusPalletXcmOrigin;719  readonly isEthereum: boolean;720  readonly asEthereum: PalletEthereumRawOrigin;721  readonly type: 'Void' | 'System' | 'PolkadotXcm' | 'CumulusXcm' | 'Ethereum';722}723724/** @name OpalRuntimeRuntime */725export interface OpalRuntimeRuntime extends Null {}726727/** @name OrmlVestingModuleCall */728export interface OrmlVestingModuleCall extends Enum {729  readonly isClaim: boolean;730  readonly isVestedTransfer: boolean;731  readonly asVestedTransfer: {732    readonly dest: MultiAddress;733    readonly schedule: OrmlVestingVestingSchedule;734  } & Struct;735  readonly isUpdateVestingSchedules: boolean;736  readonly asUpdateVestingSchedules: {737    readonly who: MultiAddress;738    readonly vestingSchedules: Vec<OrmlVestingVestingSchedule>;739  } & Struct;740  readonly isClaimFor: boolean;741  readonly asClaimFor: {742    readonly dest: MultiAddress;743  } & Struct;744  readonly type: 'Claim' | 'VestedTransfer' | 'UpdateVestingSchedules' | 'ClaimFor';745}746747/** @name OrmlVestingModuleError */748export interface OrmlVestingModuleError extends Enum {749  readonly isZeroVestingPeriod: boolean;750  readonly isZeroVestingPeriodCount: boolean;751  readonly isInsufficientBalanceToLock: boolean;752  readonly isTooManyVestingSchedules: boolean;753  readonly isAmountLow: boolean;754  readonly isMaxVestingSchedulesExceeded: boolean;755  readonly type: 'ZeroVestingPeriod' | 'ZeroVestingPeriodCount' | 'InsufficientBalanceToLock' | 'TooManyVestingSchedules' | 'AmountLow' | 'MaxVestingSchedulesExceeded';756}757758/** @name OrmlVestingModuleEvent */759export interface OrmlVestingModuleEvent extends Enum {760  readonly isVestingScheduleAdded: boolean;761  readonly asVestingScheduleAdded: {762    readonly from: AccountId32;763    readonly to: AccountId32;764    readonly vestingSchedule: OrmlVestingVestingSchedule;765  } & Struct;766  readonly isClaimed: boolean;767  readonly asClaimed: {768    readonly who: AccountId32;769    readonly amount: u128;770  } & Struct;771  readonly isVestingSchedulesUpdated: boolean;772  readonly asVestingSchedulesUpdated: {773    readonly who: AccountId32;774  } & Struct;775  readonly type: 'VestingScheduleAdded' | 'Claimed' | 'VestingSchedulesUpdated';776}777778/** @name OrmlVestingVestingSchedule */779export interface OrmlVestingVestingSchedule extends Struct {780  readonly start: u32;781  readonly period: u32;782  readonly periodCount: u32;783  readonly perPeriod: Compact<u128>;784}785786/** @name PalletBalancesAccountData */787export interface PalletBalancesAccountData extends Struct {788  readonly free: u128;789  readonly reserved: u128;790  readonly miscFrozen: u128;791  readonly feeFrozen: u128;792}793794/** @name PalletBalancesBalanceLock */795export interface PalletBalancesBalanceLock extends Struct {796  readonly id: U8aFixed;797  readonly amount: u128;798  readonly reasons: PalletBalancesReasons;799}800801/** @name PalletBalancesCall */802export interface PalletBalancesCall extends Enum {803  readonly isTransfer: boolean;804  readonly asTransfer: {805    readonly dest: MultiAddress;806    readonly value: Compact<u128>;807  } & Struct;808  readonly isSetBalance: boolean;809  readonly asSetBalance: {810    readonly who: MultiAddress;811    readonly newFree: Compact<u128>;812    readonly newReserved: Compact<u128>;813  } & Struct;814  readonly isForceTransfer: boolean;815  readonly asForceTransfer: {816    readonly source: MultiAddress;817    readonly dest: MultiAddress;818    readonly value: Compact<u128>;819  } & Struct;820  readonly isTransferKeepAlive: boolean;821  readonly asTransferKeepAlive: {822    readonly dest: MultiAddress;823    readonly value: Compact<u128>;824  } & Struct;825  readonly isTransferAll: boolean;826  readonly asTransferAll: {827    readonly dest: MultiAddress;828    readonly keepAlive: bool;829  } & Struct;830  readonly isForceUnreserve: boolean;831  readonly asForceUnreserve: {832    readonly who: MultiAddress;833    readonly amount: u128;834  } & Struct;835  readonly type: 'Transfer' | 'SetBalance' | 'ForceTransfer' | 'TransferKeepAlive' | 'TransferAll' | 'ForceUnreserve';836}837838/** @name PalletBalancesError */839export interface PalletBalancesError extends Enum {840  readonly isVestingBalance: boolean;841  readonly isLiquidityRestrictions: boolean;842  readonly isInsufficientBalance: boolean;843  readonly isExistentialDeposit: boolean;844  readonly isKeepAlive: boolean;845  readonly isExistingVestingSchedule: boolean;846  readonly isDeadAccount: boolean;847  readonly isTooManyReserves: boolean;848  readonly type: 'VestingBalance' | 'LiquidityRestrictions' | 'InsufficientBalance' | 'ExistentialDeposit' | 'KeepAlive' | 'ExistingVestingSchedule' | 'DeadAccount' | 'TooManyReserves';849}850851/** @name PalletBalancesEvent */852export interface PalletBalancesEvent extends Enum {853  readonly isEndowed: boolean;854  readonly asEndowed: {855    readonly account: AccountId32;856    readonly freeBalance: u128;857  } & Struct;858  readonly isDustLost: boolean;859  readonly asDustLost: {860    readonly account: AccountId32;861    readonly amount: u128;862  } & Struct;863  readonly isTransfer: boolean;864  readonly asTransfer: {865    readonly from: AccountId32;866    readonly to: AccountId32;867    readonly amount: u128;868  } & Struct;869  readonly isBalanceSet: boolean;870  readonly asBalanceSet: {871    readonly who: AccountId32;872    readonly free: u128;873    readonly reserved: u128;874  } & Struct;875  readonly isReserved: boolean;876  readonly asReserved: {877    readonly who: AccountId32;878    readonly amount: u128;879  } & Struct;880  readonly isUnreserved: boolean;881  readonly asUnreserved: {882    readonly who: AccountId32;883    readonly amount: u128;884  } & Struct;885  readonly isReserveRepatriated: boolean;886  readonly asReserveRepatriated: {887    readonly from: AccountId32;888    readonly to: AccountId32;889    readonly amount: u128;890    readonly destinationStatus: FrameSupportTokensMiscBalanceStatus;891  } & Struct;892  readonly isDeposit: boolean;893  readonly asDeposit: {894    readonly who: AccountId32;895    readonly amount: u128;896  } & Struct;897  readonly isWithdraw: boolean;898  readonly asWithdraw: {899    readonly who: AccountId32;900    readonly amount: u128;901  } & Struct;902  readonly isSlashed: boolean;903  readonly asSlashed: {904    readonly who: AccountId32;905    readonly amount: u128;906  } & Struct;907  readonly type: 'Endowed' | 'DustLost' | 'Transfer' | 'BalanceSet' | 'Reserved' | 'Unreserved' | 'ReserveRepatriated' | 'Deposit' | 'Withdraw' | 'Slashed';908}909910/** @name PalletBalancesReasons */911export interface PalletBalancesReasons extends Enum {912  readonly isFee: boolean;913  readonly isMisc: boolean;914  readonly isAll: boolean;915  readonly type: 'Fee' | 'Misc' | 'All';916}917918/** @name PalletBalancesReleases */919export interface PalletBalancesReleases extends Enum {920  readonly isV100: boolean;921  readonly isV200: boolean;922  readonly type: 'V100' | 'V200';923}924925/** @name PalletBalancesReserveData */926export interface PalletBalancesReserveData extends Struct {927  readonly id: U8aFixed;928  readonly amount: u128;929}930931/** @name PalletCommonError */932export interface PalletCommonError extends Enum {933  readonly isCollectionNotFound: boolean;934  readonly isMustBeTokenOwner: boolean;935  readonly isNoPermission: boolean;936  readonly isCantDestroyNotEmptyCollection: boolean;937  readonly isPublicMintingNotAllowed: boolean;938  readonly isAddressNotInAllowlist: boolean;939  readonly isCollectionNameLimitExceeded: boolean;940  readonly isCollectionDescriptionLimitExceeded: boolean;941  readonly isCollectionTokenPrefixLimitExceeded: boolean;942  readonly isTotalCollectionsLimitExceeded: boolean;943  readonly isCollectionAdminCountExceeded: boolean;944  readonly isCollectionLimitBoundsExceeded: boolean;945  readonly isOwnerPermissionsCantBeReverted: boolean;946  readonly isTransferNotAllowed: boolean;947  readonly isAccountTokenLimitExceeded: boolean;948  readonly isCollectionTokenLimitExceeded: boolean;949  readonly isMetadataFlagFrozen: boolean;950  readonly isTokenNotFound: boolean;951  readonly isTokenValueTooLow: boolean;952  readonly isApprovedValueTooLow: boolean;953  readonly isCantApproveMoreThanOwned: boolean;954  readonly isAddressIsZero: boolean;955  readonly isUnsupportedOperation: boolean;956  readonly isNotSufficientFounds: boolean;957  readonly isUserIsNotAllowedToNest: boolean;958  readonly isSourceCollectionIsNotAllowedToNest: boolean;959  readonly isCollectionFieldSizeExceeded: boolean;960  readonly isNoSpaceForProperty: boolean;961  readonly isPropertyLimitReached: boolean;962  readonly isPropertyKeyIsTooLong: boolean;963  readonly isInvalidCharacterInPropertyKey: boolean;964  readonly isEmptyPropertyKey: boolean;965  readonly isCollectionIsExternal: boolean;966  readonly isCollectionIsInternal: boolean;967  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';968}969970/** @name PalletCommonEvent */971export interface PalletCommonEvent extends Enum {972  readonly isCollectionCreated: boolean;973  readonly asCollectionCreated: ITuple<[u32, u8, AccountId32]>;974  readonly isCollectionDestroyed: boolean;975  readonly asCollectionDestroyed: u32;976  readonly isItemCreated: boolean;977  readonly asItemCreated: ITuple<[u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, u128]>;978  readonly isItemDestroyed: boolean;979  readonly asItemDestroyed: ITuple<[u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, u128]>;980  readonly isTransfer: boolean;981  readonly asTransfer: ITuple<[u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr, u128]>;982  readonly isApproved: boolean;983  readonly asApproved: ITuple<[u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr, u128]>;984  readonly isCollectionPropertySet: boolean;985  readonly asCollectionPropertySet: ITuple<[u32, Bytes]>;986  readonly isCollectionPropertyDeleted: boolean;987  readonly asCollectionPropertyDeleted: ITuple<[u32, Bytes]>;988  readonly isTokenPropertySet: boolean;989  readonly asTokenPropertySet: ITuple<[u32, u32, Bytes]>;990  readonly isTokenPropertyDeleted: boolean;991  readonly asTokenPropertyDeleted: ITuple<[u32, u32, Bytes]>;992  readonly isPropertyPermissionSet: boolean;993  readonly asPropertyPermissionSet: ITuple<[u32, Bytes]>;994  readonly type: 'CollectionCreated' | 'CollectionDestroyed' | 'ItemCreated' | 'ItemDestroyed' | 'Transfer' | 'Approved' | 'CollectionPropertySet' | 'CollectionPropertyDeleted' | 'TokenPropertySet' | 'TokenPropertyDeleted' | 'PropertyPermissionSet';995}996997/** @name PalletEthereumCall */998export interface PalletEthereumCall extends Enum {999  readonly isTransact: boolean;1000  readonly asTransact: {1001    readonly transaction: EthereumTransactionTransactionV2;1002  } & Struct;1003  readonly type: 'Transact';1004}10051006/** @name PalletEthereumError */1007export interface PalletEthereumError extends Enum {1008  readonly isInvalidSignature: boolean;1009  readonly isPreLogExists: boolean;1010  readonly type: 'InvalidSignature' | 'PreLogExists';1011}10121013/** @name PalletEthereumEvent */1014export interface PalletEthereumEvent extends Enum {1015  readonly isExecuted: boolean;1016  readonly asExecuted: ITuple<[H160, H160, H256, EvmCoreErrorExitReason]>;1017  readonly type: 'Executed';1018}10191020/** @name PalletEthereumFakeTransactionFinalizer */1021export interface PalletEthereumFakeTransactionFinalizer extends Null {}10221023/** @name PalletEthereumRawOrigin */1024export interface PalletEthereumRawOrigin extends Enum {1025  readonly isEthereumTransaction: boolean;1026  readonly asEthereumTransaction: H160;1027  readonly type: 'EthereumTransaction';1028}10291030/** @name PalletEvmAccountBasicCrossAccountIdRepr */1031export interface PalletEvmAccountBasicCrossAccountIdRepr extends Enum {1032  readonly isSubstrate: boolean;1033  readonly asSubstrate: AccountId32;1034  readonly isEthereum: boolean;1035  readonly asEthereum: H160;1036  readonly type: 'Substrate' | 'Ethereum';1037}10381039/** @name PalletEvmCall */1040export interface PalletEvmCall extends Enum {1041  readonly isWithdraw: boolean;1042  readonly asWithdraw: {1043    readonly address: H160;1044    readonly value: u128;1045  } & Struct;1046  readonly isCall: boolean;1047  readonly asCall: {1048    readonly source: H160;1049    readonly target: H160;1050    readonly input: Bytes;1051    readonly value: U256;1052    readonly gasLimit: u64;1053    readonly maxFeePerGas: U256;1054    readonly maxPriorityFeePerGas: Option<U256>;1055    readonly nonce: Option<U256>;1056    readonly accessList: Vec<ITuple<[H160, Vec<H256>]>>;1057  } & Struct;1058  readonly isCreate: boolean;1059  readonly asCreate: {1060    readonly source: H160;1061    readonly init: Bytes;1062    readonly value: U256;1063    readonly gasLimit: u64;1064    readonly maxFeePerGas: U256;1065    readonly maxPriorityFeePerGas: Option<U256>;1066    readonly nonce: Option<U256>;1067    readonly accessList: Vec<ITuple<[H160, Vec<H256>]>>;1068  } & Struct;1069  readonly isCreate2: boolean;1070  readonly asCreate2: {1071    readonly source: H160;1072    readonly init: Bytes;1073    readonly salt: H256;1074    readonly value: U256;1075    readonly gasLimit: u64;1076    readonly maxFeePerGas: U256;1077    readonly maxPriorityFeePerGas: Option<U256>;1078    readonly nonce: Option<U256>;1079    readonly accessList: Vec<ITuple<[H160, Vec<H256>]>>;1080  } & Struct;1081  readonly type: 'Withdraw' | 'Call' | 'Create' | 'Create2';1082}10831084/** @name PalletEvmCoderSubstrateError */1085export interface PalletEvmCoderSubstrateError extends Enum {1086  readonly isOutOfGas: boolean;1087  readonly isOutOfFund: boolean;1088  readonly type: 'OutOfGas' | 'OutOfFund';1089}10901091/** @name PalletEvmContractHelpersError */1092export interface PalletEvmContractHelpersError extends Enum {1093  readonly isNoPermission: boolean;1094  readonly type: 'NoPermission';1095}10961097/** @name PalletEvmContractHelpersSponsoringModeT */1098export interface PalletEvmContractHelpersSponsoringModeT extends Enum {1099  readonly isDisabled: boolean;1100  readonly isAllowlisted: boolean;1101  readonly isGenerous: boolean;1102  readonly type: 'Disabled' | 'Allowlisted' | 'Generous';1103}11041105/** @name PalletEvmError */1106export interface PalletEvmError extends Enum {1107  readonly isBalanceLow: boolean;1108  readonly isFeeOverflow: boolean;1109  readonly isPaymentOverflow: boolean;1110  readonly isWithdrawFailed: boolean;1111  readonly isGasPriceTooLow: boolean;1112  readonly isInvalidNonce: boolean;1113  readonly type: 'BalanceLow' | 'FeeOverflow' | 'PaymentOverflow' | 'WithdrawFailed' | 'GasPriceTooLow' | 'InvalidNonce';1114}11151116/** @name PalletEvmEvent */1117export interface PalletEvmEvent extends Enum {1118  readonly isLog: boolean;1119  readonly asLog: EthereumLog;1120  readonly isCreated: boolean;1121  readonly asCreated: H160;1122  readonly isCreatedFailed: boolean;1123  readonly asCreatedFailed: H160;1124  readonly isExecuted: boolean;1125  readonly asExecuted: H160;1126  readonly isExecutedFailed: boolean;1127  readonly asExecutedFailed: H160;1128  readonly isBalanceDeposit: boolean;1129  readonly asBalanceDeposit: ITuple<[AccountId32, H160, U256]>;1130  readonly isBalanceWithdraw: boolean;1131  readonly asBalanceWithdraw: ITuple<[AccountId32, H160, U256]>;1132  readonly type: 'Log' | 'Created' | 'CreatedFailed' | 'Executed' | 'ExecutedFailed' | 'BalanceDeposit' | 'BalanceWithdraw';1133}11341135/** @name PalletEvmMigrationCall */1136export interface PalletEvmMigrationCall extends Enum {1137  readonly isBegin: boolean;1138  readonly asBegin: {1139    readonly address: H160;1140  } & Struct;1141  readonly isSetData: boolean;1142  readonly asSetData: {1143    readonly address: H160;1144    readonly data: Vec<ITuple<[H256, H256]>>;1145  } & Struct;1146  readonly isFinish: boolean;1147  readonly asFinish: {1148    readonly address: H160;1149    readonly code: Bytes;1150  } & Struct;1151  readonly type: 'Begin' | 'SetData' | 'Finish';1152}11531154/** @name PalletEvmMigrationError */1155export interface PalletEvmMigrationError extends Enum {1156  readonly isAccountNotEmpty: boolean;1157  readonly isAccountIsNotMigrating: boolean;1158  readonly type: 'AccountNotEmpty' | 'AccountIsNotMigrating';1159}11601161/** @name PalletFungibleError */1162export interface PalletFungibleError extends Enum {1163  readonly isNotFungibleDataUsedToMintFungibleCollectionToken: boolean;1164  readonly isFungibleItemsHaveNoId: boolean;1165  readonly isFungibleItemsDontHaveData: boolean;1166  readonly isFungibleDisallowsNesting: boolean;1167  readonly isSettingPropertiesNotAllowed: boolean;1168  readonly type: 'NotFungibleDataUsedToMintFungibleCollectionToken' | 'FungibleItemsHaveNoId' | 'FungibleItemsDontHaveData' | 'FungibleDisallowsNesting' | 'SettingPropertiesNotAllowed';1169}11701171/** @name PalletInflationCall */1172export interface PalletInflationCall extends Enum {1173  readonly isStartInflation: boolean;1174  readonly asStartInflation: {1175    readonly inflationStartRelayBlock: u32;1176  } & Struct;1177  readonly type: 'StartInflation';1178}11791180/** @name PalletNonfungibleError */1181export interface PalletNonfungibleError extends Enum {1182  readonly isNotNonfungibleDataUsedToMintFungibleCollectionToken: boolean;1183  readonly isNonfungibleItemsHaveNoAmount: boolean;1184  readonly isCantBurnNftWithChildren: boolean;1185  readonly type: 'NotNonfungibleDataUsedToMintFungibleCollectionToken' | 'NonfungibleItemsHaveNoAmount' | 'CantBurnNftWithChildren';1186}11871188/** @name PalletNonfungibleItemData */1189export interface PalletNonfungibleItemData extends Struct {1190  readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;1191}11921193/** @name PalletRefungibleError */1194export interface PalletRefungibleError extends Enum {1195  readonly isNotRefungibleDataUsedToMintFungibleCollectionToken: boolean;1196  readonly isWrongRefungiblePieces: boolean;1197  readonly isRepartitionWhileNotOwningAllPieces: boolean;1198  readonly isRefungibleDisallowsNesting: boolean;1199  readonly isSettingPropertiesNotAllowed: boolean;1200  readonly type: 'NotRefungibleDataUsedToMintFungibleCollectionToken' | 'WrongRefungiblePieces' | 'RepartitionWhileNotOwningAllPieces' | 'RefungibleDisallowsNesting' | 'SettingPropertiesNotAllowed';1201}12021203/** @name PalletRefungibleItemData */1204export interface PalletRefungibleItemData extends Struct {1205  readonly constData: Bytes;1206}12071208/** @name PalletRmrkCoreCall */1209export interface PalletRmrkCoreCall extends Enum {1210  readonly isCreateCollection: boolean;1211  readonly asCreateCollection: {1212    readonly metadata: Bytes;1213    readonly max: Option<u32>;1214    readonly symbol: Bytes;1215  } & Struct;1216  readonly isDestroyCollection: boolean;1217  readonly asDestroyCollection: {1218    readonly collectionId: u32;1219  } & Struct;1220  readonly isChangeCollectionIssuer: boolean;1221  readonly asChangeCollectionIssuer: {1222    readonly collectionId: u32;1223    readonly newIssuer: MultiAddress;1224  } & Struct;1225  readonly isLockCollection: boolean;1226  readonly asLockCollection: {1227    readonly collectionId: u32;1228  } & Struct;1229  readonly isMintNft: boolean;1230  readonly asMintNft: {1231    readonly owner: Option<AccountId32>;1232    readonly collectionId: u32;1233    readonly recipient: Option<AccountId32>;1234    readonly royaltyAmount: Option<Permill>;1235    readonly metadata: Bytes;1236    readonly transferable: bool;1237    readonly resources: Option<Vec<RmrkTraitsResourceResourceTypes>>;1238  } & Struct;1239  readonly isBurnNft: boolean;1240  readonly asBurnNft: {1241    readonly collectionId: u32;1242    readonly nftId: u32;1243    readonly maxBurns: u32;1244  } & Struct;1245  readonly isSend: boolean;1246  readonly asSend: {1247    readonly rmrkCollectionId: u32;1248    readonly rmrkNftId: u32;1249    readonly newOwner: RmrkTraitsNftAccountIdOrCollectionNftTuple;1250  } & Struct;1251  readonly isAcceptNft: boolean;1252  readonly asAcceptNft: {1253    readonly rmrkCollectionId: u32;1254    readonly rmrkNftId: u32;1255    readonly newOwner: RmrkTraitsNftAccountIdOrCollectionNftTuple;1256  } & Struct;1257  readonly isRejectNft: boolean;1258  readonly asRejectNft: {1259    readonly rmrkCollectionId: u32;1260    readonly rmrkNftId: u32;1261  } & Struct;1262  readonly isAcceptResource: boolean;1263  readonly asAcceptResource: {1264    readonly rmrkCollectionId: u32;1265    readonly rmrkNftId: u32;1266    readonly resourceId: u32;1267  } & Struct;1268  readonly isAcceptResourceRemoval: boolean;1269  readonly asAcceptResourceRemoval: {1270    readonly rmrkCollectionId: u32;1271    readonly rmrkNftId: u32;1272    readonly resourceId: u32;1273  } & Struct;1274  readonly isSetProperty: boolean;1275  readonly asSetProperty: {1276    readonly rmrkCollectionId: Compact<u32>;1277    readonly maybeNftId: Option<u32>;1278    readonly key: Bytes;1279    readonly value: Bytes;1280  } & Struct;1281  readonly isSetPriority: boolean;1282  readonly asSetPriority: {1283    readonly rmrkCollectionId: u32;1284    readonly rmrkNftId: u32;1285    readonly priorities: Vec<u32>;1286  } & Struct;1287  readonly isAddBasicResource: boolean;1288  readonly asAddBasicResource: {1289    readonly rmrkCollectionId: u32;1290    readonly nftId: u32;1291    readonly resource: RmrkTraitsResourceBasicResource;1292  } & Struct;1293  readonly isAddComposableResource: boolean;1294  readonly asAddComposableResource: {1295    readonly rmrkCollectionId: u32;1296    readonly nftId: u32;1297    readonly resource: RmrkTraitsResourceComposableResource;1298  } & Struct;1299  readonly isAddSlotResource: boolean;1300  readonly asAddSlotResource: {1301    readonly rmrkCollectionId: u32;1302    readonly nftId: u32;1303    readonly resource: RmrkTraitsResourceSlotResource;1304  } & Struct;1305  readonly isRemoveResource: boolean;1306  readonly asRemoveResource: {1307    readonly rmrkCollectionId: u32;1308    readonly nftId: u32;1309    readonly resourceId: u32;1310  } & Struct;1311  readonly type: 'CreateCollection' | 'DestroyCollection' | 'ChangeCollectionIssuer' | 'LockCollection' | 'MintNft' | 'BurnNft' | 'Send' | 'AcceptNft' | 'RejectNft' | 'AcceptResource' | 'AcceptResourceRemoval' | 'SetProperty' | 'SetPriority' | 'AddBasicResource' | 'AddComposableResource' | 'AddSlotResource' | 'RemoveResource';1312}13131314/** @name PalletRmrkCoreError */1315export interface PalletRmrkCoreError extends Enum {1316  readonly isCorruptedCollectionType: boolean;1317  readonly isNftTypeEncodeError: boolean;1318  readonly isRmrkPropertyKeyIsTooLong: boolean;1319  readonly isRmrkPropertyValueIsTooLong: boolean;1320  readonly isRmrkPropertyIsNotFound: boolean;1321  readonly isUnableToDecodeRmrkData: boolean;1322  readonly isCollectionNotEmpty: boolean;1323  readonly isNoAvailableCollectionId: boolean;1324  readonly isNoAvailableNftId: boolean;1325  readonly isCollectionUnknown: boolean;1326  readonly isNoPermission: boolean;1327  readonly isNonTransferable: boolean;1328  readonly isCollectionFullOrLocked: boolean;1329  readonly isResourceDoesntExist: boolean;1330  readonly isCannotSendToDescendentOrSelf: boolean;1331  readonly isCannotAcceptNonOwnedNft: boolean;1332  readonly isCannotRejectNonOwnedNft: boolean;1333  readonly isCannotRejectNonPendingNft: boolean;1334  readonly isResourceNotPending: boolean;1335  readonly isNoAvailableResourceId: boolean;1336  readonly type: 'CorruptedCollectionType' | 'NftTypeEncodeError' | 'RmrkPropertyKeyIsTooLong' | 'RmrkPropertyValueIsTooLong' | 'RmrkPropertyIsNotFound' | 'UnableToDecodeRmrkData' | 'CollectionNotEmpty' | 'NoAvailableCollectionId' | 'NoAvailableNftId' | 'CollectionUnknown' | 'NoPermission' | 'NonTransferable' | 'CollectionFullOrLocked' | 'ResourceDoesntExist' | 'CannotSendToDescendentOrSelf' | 'CannotAcceptNonOwnedNft' | 'CannotRejectNonOwnedNft' | 'CannotRejectNonPendingNft' | 'ResourceNotPending' | 'NoAvailableResourceId';1337}13381339/** @name PalletRmrkCoreEvent */1340export interface PalletRmrkCoreEvent extends Enum {1341  readonly isCollectionCreated: boolean;1342  readonly asCollectionCreated: {1343    readonly issuer: AccountId32;1344    readonly collectionId: u32;1345  } & Struct;1346  readonly isCollectionDestroyed: boolean;1347  readonly asCollectionDestroyed: {1348    readonly issuer: AccountId32;1349    readonly collectionId: u32;1350  } & Struct;1351  readonly isIssuerChanged: boolean;1352  readonly asIssuerChanged: {1353    readonly oldIssuer: AccountId32;1354    readonly newIssuer: AccountId32;1355    readonly collectionId: u32;1356  } & Struct;1357  readonly isCollectionLocked: boolean;1358  readonly asCollectionLocked: {1359    readonly issuer: AccountId32;1360    readonly collectionId: u32;1361  } & Struct;1362  readonly isNftMinted: boolean;1363  readonly asNftMinted: {1364    readonly owner: AccountId32;1365    readonly collectionId: u32;1366    readonly nftId: u32;1367  } & Struct;1368  readonly isNftBurned: boolean;1369  readonly asNftBurned: {1370    readonly owner: AccountId32;1371    readonly nftId: u32;1372  } & Struct;1373  readonly isNftSent: boolean;1374  readonly asNftSent: {1375    readonly sender: AccountId32;1376    readonly recipient: RmrkTraitsNftAccountIdOrCollectionNftTuple;1377    readonly collectionId: u32;1378    readonly nftId: u32;1379    readonly approvalRequired: bool;1380  } & Struct;1381  readonly isNftAccepted: boolean;1382  readonly asNftAccepted: {1383    readonly sender: AccountId32;1384    readonly recipient: RmrkTraitsNftAccountIdOrCollectionNftTuple;1385    readonly collectionId: u32;1386    readonly nftId: u32;1387  } & Struct;1388  readonly isNftRejected: boolean;1389  readonly asNftRejected: {1390    readonly sender: AccountId32;1391    readonly collectionId: u32;1392    readonly nftId: u32;1393  } & Struct;1394  readonly isPropertySet: boolean;1395  readonly asPropertySet: {1396    readonly collectionId: u32;1397    readonly maybeNftId: Option<u32>;1398    readonly key: Bytes;1399    readonly value: Bytes;1400  } & Struct;1401  readonly isResourceAdded: boolean;1402  readonly asResourceAdded: {1403    readonly nftId: u32;1404    readonly resourceId: u32;1405  } & Struct;1406  readonly isResourceRemoval: boolean;1407  readonly asResourceRemoval: {1408    readonly nftId: u32;1409    readonly resourceId: u32;1410  } & Struct;1411  readonly isResourceAccepted: boolean;1412  readonly asResourceAccepted: {1413    readonly nftId: u32;1414    readonly resourceId: u32;1415  } & Struct;1416  readonly isResourceRemovalAccepted: boolean;1417  readonly asResourceRemovalAccepted: {1418    readonly nftId: u32;1419    readonly resourceId: u32;1420  } & Struct;1421  readonly isPrioritySet: boolean;1422  readonly asPrioritySet: {1423    readonly collectionId: u32;1424    readonly nftId: u32;1425  } & Struct;1426  readonly type: 'CollectionCreated' | 'CollectionDestroyed' | 'IssuerChanged' | 'CollectionLocked' | 'NftMinted' | 'NftBurned' | 'NftSent' | 'NftAccepted' | 'NftRejected' | 'PropertySet' | 'ResourceAdded' | 'ResourceRemoval' | 'ResourceAccepted' | 'ResourceRemovalAccepted' | 'PrioritySet';1427}14281429/** @name PalletRmrkEquipCall */1430export interface PalletRmrkEquipCall extends Enum {1431  readonly isCreateBase: boolean;1432  readonly asCreateBase: {1433    readonly baseType: Bytes;1434    readonly symbol: Bytes;1435    readonly parts: Vec<RmrkTraitsPartPartType>;1436  } & Struct;1437  readonly isThemeAdd: boolean;1438  readonly asThemeAdd: {1439    readonly baseId: u32;1440    readonly theme: RmrkTraitsTheme;1441  } & Struct;1442  readonly isEquippable: boolean;1443  readonly asEquippable: {1444    readonly baseId: u32;1445    readonly slotId: u32;1446    readonly equippables: RmrkTraitsPartEquippableList;1447  } & Struct;1448  readonly type: 'CreateBase' | 'ThemeAdd' | 'Equippable';1449}14501451/** @name PalletRmrkEquipError */1452export interface PalletRmrkEquipError extends Enum {1453  readonly isPermissionError: boolean;1454  readonly isNoAvailableBaseId: boolean;1455  readonly isNoAvailablePartId: boolean;1456  readonly isBaseDoesntExist: boolean;1457  readonly isNeedsDefaultThemeFirst: boolean;1458  readonly isPartDoesntExist: boolean;1459  readonly isNoEquippableOnFixedPart: boolean;1460  readonly type: 'PermissionError' | 'NoAvailableBaseId' | 'NoAvailablePartId' | 'BaseDoesntExist' | 'NeedsDefaultThemeFirst' | 'PartDoesntExist' | 'NoEquippableOnFixedPart';1461}14621463/** @name PalletRmrkEquipEvent */1464export interface PalletRmrkEquipEvent extends Enum {1465  readonly isBaseCreated: boolean;1466  readonly asBaseCreated: {1467    readonly issuer: AccountId32;1468    readonly baseId: u32;1469  } & Struct;1470  readonly isEquippablesUpdated: boolean;1471  readonly asEquippablesUpdated: {1472    readonly baseId: u32;1473    readonly slotId: u32;1474  } & Struct;1475  readonly type: 'BaseCreated' | 'EquippablesUpdated';1476}14771478/** @name PalletStructureCall */1479export interface PalletStructureCall extends Null {}14801481/** @name PalletStructureError */1482export interface PalletStructureError extends Enum {1483  readonly isOuroborosDetected: boolean;1484  readonly isDepthLimit: boolean;1485  readonly isBreadthLimit: boolean;1486  readonly isTokenNotFound: boolean;1487  readonly type: 'OuroborosDetected' | 'DepthLimit' | 'BreadthLimit' | 'TokenNotFound';1488}14891490/** @name PalletStructureEvent */1491export interface PalletStructureEvent extends Enum {1492  readonly isExecuted: boolean;1493  readonly asExecuted: Result<Null, SpRuntimeDispatchError>;1494  readonly type: 'Executed';1495}14961497/** @name PalletSudoCall */1498export interface PalletSudoCall extends Enum {1499  readonly isSudo: boolean;1500  readonly asSudo: {1501    readonly call: Call;1502  } & Struct;1503  readonly isSudoUncheckedWeight: boolean;1504  readonly asSudoUncheckedWeight: {1505    readonly call: Call;1506    readonly weight: u64;1507  } & Struct;1508  readonly isSetKey: boolean;1509  readonly asSetKey: {1510    readonly new_: MultiAddress;1511  } & Struct;1512  readonly isSudoAs: boolean;1513  readonly asSudoAs: {1514    readonly who: MultiAddress;1515    readonly call: Call;1516  } & Struct;1517  readonly type: 'Sudo' | 'SudoUncheckedWeight' | 'SetKey' | 'SudoAs';1518}15191520/** @name PalletSudoError */1521export interface PalletSudoError extends Enum {1522  readonly isRequireSudo: boolean;1523  readonly type: 'RequireSudo';1524}15251526/** @name PalletSudoEvent */1527export interface PalletSudoEvent extends Enum {1528  readonly isSudid: boolean;1529  readonly asSudid: {1530    readonly sudoResult: Result<Null, SpRuntimeDispatchError>;1531  } & Struct;1532  readonly isKeyChanged: boolean;1533  readonly asKeyChanged: {1534    readonly oldSudoer: Option<AccountId32>;1535  } & Struct;1536  readonly isSudoAsDone: boolean;1537  readonly asSudoAsDone: {1538    readonly sudoResult: Result<Null, SpRuntimeDispatchError>;1539  } & Struct;1540  readonly type: 'Sudid' | 'KeyChanged' | 'SudoAsDone';1541}15421543/** @name PalletTemplateTransactionPaymentCall */1544export interface PalletTemplateTransactionPaymentCall extends Null {}15451546/** @name PalletTemplateTransactionPaymentChargeTransactionPayment */1547export interface PalletTemplateTransactionPaymentChargeTransactionPayment extends Compact<u128> {}15481549/** @name PalletTimestampCall */1550export interface PalletTimestampCall extends Enum {1551  readonly isSet: boolean;1552  readonly asSet: {1553    readonly now: Compact<u64>;1554  } & Struct;1555  readonly type: 'Set';1556}15571558/** @name PalletTransactionPaymentReleases */1559export interface PalletTransactionPaymentReleases extends Enum {1560  readonly isV1Ancient: boolean;1561  readonly isV2: boolean;1562  readonly type: 'V1Ancient' | 'V2';1563}15641565/** @name PalletTreasuryCall */1566export interface PalletTreasuryCall extends Enum {1567  readonly isProposeSpend: boolean;1568  readonly asProposeSpend: {1569    readonly value: Compact<u128>;1570    readonly beneficiary: MultiAddress;1571  } & Struct;1572  readonly isRejectProposal: boolean;1573  readonly asRejectProposal: {1574    readonly proposalId: Compact<u32>;1575  } & Struct;1576  readonly isApproveProposal: boolean;1577  readonly asApproveProposal: {1578    readonly proposalId: Compact<u32>;1579  } & Struct;1580  readonly isRemoveApproval: boolean;1581  readonly asRemoveApproval: {1582    readonly proposalId: Compact<u32>;1583  } & Struct;1584  readonly type: 'ProposeSpend' | 'RejectProposal' | 'ApproveProposal' | 'RemoveApproval';1585}15861587/** @name PalletTreasuryError */1588export interface PalletTreasuryError extends Enum {1589  readonly isInsufficientProposersBalance: boolean;1590  readonly isInvalidIndex: boolean;1591  readonly isTooManyApprovals: boolean;1592  readonly isProposalNotApproved: boolean;1593  readonly type: 'InsufficientProposersBalance' | 'InvalidIndex' | 'TooManyApprovals' | 'ProposalNotApproved';1594}15951596/** @name PalletTreasuryEvent */1597export interface PalletTreasuryEvent extends Enum {1598  readonly isProposed: boolean;1599  readonly asProposed: {1600    readonly proposalIndex: u32;1601  } & Struct;1602  readonly isSpending: boolean;1603  readonly asSpending: {1604    readonly budgetRemaining: u128;1605  } & Struct;1606  readonly isAwarded: boolean;1607  readonly asAwarded: {1608    readonly proposalIndex: u32;1609    readonly award: u128;1610    readonly account: AccountId32;1611  } & Struct;1612  readonly isRejected: boolean;1613  readonly asRejected: {1614    readonly proposalIndex: u32;1615    readonly slashed: u128;1616  } & Struct;1617  readonly isBurnt: boolean;1618  readonly asBurnt: {1619    readonly burntFunds: u128;1620  } & Struct;1621  readonly isRollover: boolean;1622  readonly asRollover: {1623    readonly rolloverBalance: u128;1624  } & Struct;1625  readonly isDeposit: boolean;1626  readonly asDeposit: {1627    readonly value: u128;1628  } & Struct;1629  readonly type: 'Proposed' | 'Spending' | 'Awarded' | 'Rejected' | 'Burnt' | 'Rollover' | 'Deposit';1630}16311632/** @name PalletTreasuryProposal */1633export interface PalletTreasuryProposal extends Struct {1634  readonly proposer: AccountId32;1635  readonly value: u128;1636  readonly beneficiary: AccountId32;1637  readonly bond: u128;1638}16391640/** @name PalletUniqueCall */1641export interface PalletUniqueCall extends Enum {1642  readonly isCreateCollection: boolean;1643  readonly asCreateCollection: {1644    readonly collectionName: Vec<u16>;1645    readonly collectionDescription: Vec<u16>;1646    readonly tokenPrefix: Bytes;1647    readonly mode: UpDataStructsCollectionMode;1648  } & Struct;1649  readonly isCreateCollectionEx: boolean;1650  readonly asCreateCollectionEx: {1651    readonly data: UpDataStructsCreateCollectionData;1652  } & Struct;1653  readonly isDestroyCollection: boolean;1654  readonly asDestroyCollection: {1655    readonly collectionId: u32;1656  } & Struct;1657  readonly isAddToAllowList: boolean;1658  readonly asAddToAllowList: {1659    readonly collectionId: u32;1660    readonly address: PalletEvmAccountBasicCrossAccountIdRepr;1661  } & Struct;1662  readonly isRemoveFromAllowList: boolean;1663  readonly asRemoveFromAllowList: {1664    readonly collectionId: u32;1665    readonly address: PalletEvmAccountBasicCrossAccountIdRepr;1666  } & Struct;1667  readonly isChangeCollectionOwner: boolean;1668  readonly asChangeCollectionOwner: {1669    readonly collectionId: u32;1670    readonly newOwner: AccountId32;1671  } & Struct;1672  readonly isAddCollectionAdmin: boolean;1673  readonly asAddCollectionAdmin: {1674    readonly collectionId: u32;1675    readonly newAdmin: PalletEvmAccountBasicCrossAccountIdRepr;1676  } & Struct;1677  readonly isRemoveCollectionAdmin: boolean;1678  readonly asRemoveCollectionAdmin: {1679    readonly collectionId: u32;1680    readonly accountId: PalletEvmAccountBasicCrossAccountIdRepr;1681  } & Struct;1682  readonly isSetCollectionSponsor: boolean;1683  readonly asSetCollectionSponsor: {1684    readonly collectionId: u32;1685    readonly newSponsor: AccountId32;1686  } & Struct;1687  readonly isConfirmSponsorship: boolean;1688  readonly asConfirmSponsorship: {1689    readonly collectionId: u32;1690  } & Struct;1691  readonly isRemoveCollectionSponsor: boolean;1692  readonly asRemoveCollectionSponsor: {1693    readonly collectionId: u32;1694  } & Struct;1695  readonly isCreateItem: boolean;1696  readonly asCreateItem: {1697    readonly collectionId: u32;1698    readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;1699    readonly data: UpDataStructsCreateItemData;1700  } & Struct;1701  readonly isCreateMultipleItems: boolean;1702  readonly asCreateMultipleItems: {1703    readonly collectionId: u32;1704    readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;1705    readonly itemsData: Vec<UpDataStructsCreateItemData>;1706  } & Struct;1707  readonly isSetCollectionProperties: boolean;1708  readonly asSetCollectionProperties: {1709    readonly collectionId: u32;1710    readonly properties: Vec<UpDataStructsProperty>;1711  } & Struct;1712  readonly isDeleteCollectionProperties: boolean;1713  readonly asDeleteCollectionProperties: {1714    readonly collectionId: u32;1715    readonly propertyKeys: Vec<Bytes>;1716  } & Struct;1717  readonly isSetTokenProperties: boolean;1718  readonly asSetTokenProperties: {1719    readonly collectionId: u32;1720    readonly tokenId: u32;1721    readonly properties: Vec<UpDataStructsProperty>;1722  } & Struct;1723  readonly isDeleteTokenProperties: boolean;1724  readonly asDeleteTokenProperties: {1725    readonly collectionId: u32;1726    readonly tokenId: u32;1727    readonly propertyKeys: Vec<Bytes>;1728  } & Struct;1729  readonly isSetTokenPropertyPermissions: boolean;1730  readonly asSetTokenPropertyPermissions: {1731    readonly collectionId: u32;1732    readonly propertyPermissions: Vec<UpDataStructsPropertyKeyPermission>;1733  } & Struct;1734  readonly isCreateMultipleItemsEx: boolean;1735  readonly asCreateMultipleItemsEx: {1736    readonly collectionId: u32;1737    readonly data: UpDataStructsCreateItemExData;1738  } & Struct;1739  readonly isSetTransfersEnabledFlag: boolean;1740  readonly asSetTransfersEnabledFlag: {1741    readonly collectionId: u32;1742    readonly value: bool;1743  } & Struct;1744  readonly isBurnItem: boolean;1745  readonly asBurnItem: {1746    readonly collectionId: u32;1747    readonly itemId: u32;1748    readonly value: u128;1749  } & Struct;1750  readonly isBurnFrom: boolean;1751  readonly asBurnFrom: {1752    readonly collectionId: u32;1753    readonly from: PalletEvmAccountBasicCrossAccountIdRepr;1754    readonly itemId: u32;1755    readonly value: u128;1756  } & Struct;1757  readonly isTransfer: boolean;1758  readonly asTransfer: {1759    readonly recipient: PalletEvmAccountBasicCrossAccountIdRepr;1760    readonly collectionId: u32;1761    readonly itemId: u32;1762    readonly value: u128;1763  } & Struct;1764  readonly isApprove: boolean;1765  readonly asApprove: {1766    readonly spender: PalletEvmAccountBasicCrossAccountIdRepr;1767    readonly collectionId: u32;1768    readonly itemId: u32;1769    readonly amount: u128;1770  } & Struct;1771  readonly isTransferFrom: boolean;1772  readonly asTransferFrom: {1773    readonly from: PalletEvmAccountBasicCrossAccountIdRepr;1774    readonly recipient: PalletEvmAccountBasicCrossAccountIdRepr;1775    readonly collectionId: u32;1776    readonly itemId: u32;1777    readonly value: u128;1778  } & Struct;1779  readonly isSetCollectionLimits: boolean;1780  readonly asSetCollectionLimits: {1781    readonly collectionId: u32;1782    readonly newLimit: UpDataStructsCollectionLimits;1783  } & Struct;1784  readonly isSetCollectionPermissions: boolean;1785  readonly asSetCollectionPermissions: {1786    readonly collectionId: u32;1787    readonly newPermission: UpDataStructsCollectionPermissions;1788  } & Struct;1789  readonly isRepartition: boolean;1790  readonly asRepartition: {1791    readonly collectionId: u32;1792    readonly tokenId: u32;1793    readonly amount: u128;1794  } & Struct;1795  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';1796}17971798/** @name PalletUniqueError */1799export interface PalletUniqueError extends Enum {1800  readonly isCollectionDecimalPointLimitExceeded: boolean;1801  readonly isConfirmUnsetSponsorFail: boolean;1802  readonly isEmptyArgument: boolean;1803  readonly isRepartitionCalledOnNonRefungibleCollection: boolean;1804  readonly type: 'CollectionDecimalPointLimitExceeded' | 'ConfirmUnsetSponsorFail' | 'EmptyArgument' | 'RepartitionCalledOnNonRefungibleCollection';1805}18061807/** @name PalletUniqueRawEvent */1808export interface PalletUniqueRawEvent extends Enum {1809  readonly isCollectionSponsorRemoved: boolean;1810  readonly asCollectionSponsorRemoved: u32;1811  readonly isCollectionAdminAdded: boolean;1812  readonly asCollectionAdminAdded: ITuple<[u32, PalletEvmAccountBasicCrossAccountIdRepr]>;1813  readonly isCollectionOwnedChanged: boolean;1814  readonly asCollectionOwnedChanged: ITuple<[u32, AccountId32]>;1815  readonly isCollectionSponsorSet: boolean;1816  readonly asCollectionSponsorSet: ITuple<[u32, AccountId32]>;1817  readonly isSponsorshipConfirmed: boolean;1818  readonly asSponsorshipConfirmed: ITuple<[u32, AccountId32]>;1819  readonly isCollectionAdminRemoved: boolean;1820  readonly asCollectionAdminRemoved: ITuple<[u32, PalletEvmAccountBasicCrossAccountIdRepr]>;1821  readonly isAllowListAddressRemoved: boolean;1822  readonly asAllowListAddressRemoved: ITuple<[u32, PalletEvmAccountBasicCrossAccountIdRepr]>;1823  readonly isAllowListAddressAdded: boolean;1824  readonly asAllowListAddressAdded: ITuple<[u32, PalletEvmAccountBasicCrossAccountIdRepr]>;1825  readonly isCollectionLimitSet: boolean;1826  readonly asCollectionLimitSet: u32;1827  readonly isCollectionPermissionSet: boolean;1828  readonly asCollectionPermissionSet: u32;1829  readonly type: 'CollectionSponsorRemoved' | 'CollectionAdminAdded' | 'CollectionOwnedChanged' | 'CollectionSponsorSet' | 'SponsorshipConfirmed' | 'CollectionAdminRemoved' | 'AllowListAddressRemoved' | 'AllowListAddressAdded' | 'CollectionLimitSet' | 'CollectionPermissionSet';1830}18311832/** @name PalletUniqueSchedulerCall */1833export interface PalletUniqueSchedulerCall extends Enum {1834  readonly isScheduleNamed: boolean;1835  readonly asScheduleNamed: {1836    readonly id: U8aFixed;1837    readonly when: u32;1838    readonly maybePeriodic: Option<ITuple<[u32, u32]>>;1839    readonly priority: u8;1840    readonly call: FrameSupportScheduleMaybeHashed;1841  } & Struct;1842  readonly isCancelNamed: boolean;1843  readonly asCancelNamed: {1844    readonly id: U8aFixed;1845  } & Struct;1846  readonly isScheduleNamedAfter: boolean;1847  readonly asScheduleNamedAfter: {1848    readonly id: U8aFixed;1849    readonly after: u32;1850    readonly maybePeriodic: Option<ITuple<[u32, u32]>>;1851    readonly priority: u8;1852    readonly call: FrameSupportScheduleMaybeHashed;1853  } & Struct;1854  readonly type: 'ScheduleNamed' | 'CancelNamed' | 'ScheduleNamedAfter';1855}18561857/** @name PalletUniqueSchedulerError */1858export interface PalletUniqueSchedulerError extends Enum {1859  readonly isFailedToSchedule: boolean;1860  readonly isNotFound: boolean;1861  readonly isTargetBlockNumberInPast: boolean;1862  readonly isRescheduleNoChange: boolean;1863  readonly type: 'FailedToSchedule' | 'NotFound' | 'TargetBlockNumberInPast' | 'RescheduleNoChange';1864}18651866/** @name PalletUniqueSchedulerEvent */1867export interface PalletUniqueSchedulerEvent extends Enum {1868  readonly isScheduled: boolean;1869  readonly asScheduled: {1870    readonly when: u32;1871    readonly index: u32;1872  } & Struct;1873  readonly isCanceled: boolean;1874  readonly asCanceled: {1875    readonly when: u32;1876    readonly index: u32;1877  } & Struct;1878  readonly isDispatched: boolean;1879  readonly asDispatched: {1880    readonly task: ITuple<[u32, u32]>;1881    readonly id: Option<U8aFixed>;1882    readonly result: Result<Null, SpRuntimeDispatchError>;1883  } & Struct;1884  readonly isCallLookupFailed: boolean;1885  readonly asCallLookupFailed: {1886    readonly task: ITuple<[u32, u32]>;1887    readonly id: Option<U8aFixed>;1888    readonly error: FrameSupportScheduleLookupError;1889  } & Struct;1890  readonly type: 'Scheduled' | 'Canceled' | 'Dispatched' | 'CallLookupFailed';1891}18921893/** @name PalletUniqueSchedulerScheduledV3 */1894export interface PalletUniqueSchedulerScheduledV3 extends Struct {1895  readonly maybeId: Option<U8aFixed>;1896  readonly priority: u8;1897  readonly call: FrameSupportScheduleMaybeHashed;1898  readonly maybePeriodic: Option<ITuple<[u32, u32]>>;1899  readonly origin: OpalRuntimeOriginCaller;1900}19011902/** @name PalletXcmCall */1903export interface PalletXcmCall extends Enum {1904  readonly isSend: boolean;1905  readonly asSend: {1906    readonly dest: XcmVersionedMultiLocation;1907    readonly message: XcmVersionedXcm;1908  } & Struct;1909  readonly isTeleportAssets: boolean;1910  readonly asTeleportAssets: {1911    readonly dest: XcmVersionedMultiLocation;1912    readonly beneficiary: XcmVersionedMultiLocation;1913    readonly assets: XcmVersionedMultiAssets;1914    readonly feeAssetItem: u32;1915  } & Struct;1916  readonly isReserveTransferAssets: boolean;1917  readonly asReserveTransferAssets: {1918    readonly dest: XcmVersionedMultiLocation;1919    readonly beneficiary: XcmVersionedMultiLocation;1920    readonly assets: XcmVersionedMultiAssets;1921    readonly feeAssetItem: u32;1922  } & Struct;1923  readonly isExecute: boolean;1924  readonly asExecute: {1925    readonly message: XcmVersionedXcm;1926    readonly maxWeight: u64;1927  } & Struct;1928  readonly isForceXcmVersion: boolean;1929  readonly asForceXcmVersion: {1930    readonly location: XcmV1MultiLocation;1931    readonly xcmVersion: u32;1932  } & Struct;1933  readonly isForceDefaultXcmVersion: boolean;1934  readonly asForceDefaultXcmVersion: {1935    readonly maybeXcmVersion: Option<u32>;1936  } & Struct;1937  readonly isForceSubscribeVersionNotify: boolean;1938  readonly asForceSubscribeVersionNotify: {1939    readonly location: XcmVersionedMultiLocation;1940  } & Struct;1941  readonly isForceUnsubscribeVersionNotify: boolean;1942  readonly asForceUnsubscribeVersionNotify: {1943    readonly location: XcmVersionedMultiLocation;1944  } & Struct;1945  readonly isLimitedReserveTransferAssets: boolean;1946  readonly asLimitedReserveTransferAssets: {1947    readonly dest: XcmVersionedMultiLocation;1948    readonly beneficiary: XcmVersionedMultiLocation;1949    readonly assets: XcmVersionedMultiAssets;1950    readonly feeAssetItem: u32;1951    readonly weightLimit: XcmV2WeightLimit;1952  } & Struct;1953  readonly isLimitedTeleportAssets: boolean;1954  readonly asLimitedTeleportAssets: {1955    readonly dest: XcmVersionedMultiLocation;1956    readonly beneficiary: XcmVersionedMultiLocation;1957    readonly assets: XcmVersionedMultiAssets;1958    readonly feeAssetItem: u32;1959    readonly weightLimit: XcmV2WeightLimit;1960  } & Struct;1961  readonly type: 'Send' | 'TeleportAssets' | 'ReserveTransferAssets' | 'Execute' | 'ForceXcmVersion' | 'ForceDefaultXcmVersion' | 'ForceSubscribeVersionNotify' | 'ForceUnsubscribeVersionNotify' | 'LimitedReserveTransferAssets' | 'LimitedTeleportAssets';1962}19631964/** @name PalletXcmError */1965export interface PalletXcmError extends Enum {1966  readonly isUnreachable: boolean;1967  readonly isSendFailure: boolean;1968  readonly isFiltered: boolean;1969  readonly isUnweighableMessage: boolean;1970  readonly isDestinationNotInvertible: boolean;1971  readonly isEmpty: boolean;1972  readonly isCannotReanchor: boolean;1973  readonly isTooManyAssets: boolean;1974  readonly isInvalidOrigin: boolean;1975  readonly isBadVersion: boolean;1976  readonly isBadLocation: boolean;1977  readonly isNoSubscription: boolean;1978  readonly isAlreadySubscribed: boolean;1979  readonly type: 'Unreachable' | 'SendFailure' | 'Filtered' | 'UnweighableMessage' | 'DestinationNotInvertible' | 'Empty' | 'CannotReanchor' | 'TooManyAssets' | 'InvalidOrigin' | 'BadVersion' | 'BadLocation' | 'NoSubscription' | 'AlreadySubscribed';1980}19811982/** @name PalletXcmEvent */1983export interface PalletXcmEvent extends Enum {1984  readonly isAttempted: boolean;1985  readonly asAttempted: XcmV2TraitsOutcome;1986  readonly isSent: boolean;1987  readonly asSent: ITuple<[XcmV1MultiLocation, XcmV1MultiLocation, XcmV2Xcm]>;1988  readonly isUnexpectedResponse: boolean;1989  readonly asUnexpectedResponse: ITuple<[XcmV1MultiLocation, u64]>;1990  readonly isResponseReady: boolean;1991  readonly asResponseReady: ITuple<[u64, XcmV2Response]>;1992  readonly isNotified: boolean;1993  readonly asNotified: ITuple<[u64, u8, u8]>;1994  readonly isNotifyOverweight: boolean;1995  readonly asNotifyOverweight: ITuple<[u64, u8, u8, u64, u64]>;1996  readonly isNotifyDispatchError: boolean;1997  readonly asNotifyDispatchError: ITuple<[u64, u8, u8]>;1998  readonly isNotifyDecodeFailed: boolean;1999  readonly asNotifyDecodeFailed: ITuple<[u64, u8, u8]>;2000  readonly isInvalidResponder: boolean;2001  readonly asInvalidResponder: ITuple<[XcmV1MultiLocation, u64, Option<XcmV1MultiLocation>]>;2002  readonly isInvalidResponderVersion: boolean;2003  readonly asInvalidResponderVersion: ITuple<[XcmV1MultiLocation, u64]>;2004  readonly isResponseTaken: boolean;2005  readonly asResponseTaken: u64;2006  readonly isAssetsTrapped: boolean;2007  readonly asAssetsTrapped: ITuple<[H256, XcmV1MultiLocation, XcmVersionedMultiAssets]>;2008  readonly isVersionChangeNotified: boolean;2009  readonly asVersionChangeNotified: ITuple<[XcmV1MultiLocation, u32]>;2010  readonly isSupportedVersionChanged: boolean;2011  readonly asSupportedVersionChanged: ITuple<[XcmV1MultiLocation, u32]>;2012  readonly isNotifyTargetSendFail: boolean;2013  readonly asNotifyTargetSendFail: ITuple<[XcmV1MultiLocation, u64, XcmV2TraitsError]>;2014  readonly isNotifyTargetMigrationFail: boolean;2015  readonly asNotifyTargetMigrationFail: ITuple<[XcmVersionedMultiLocation, u64]>;2016  readonly type: 'Attempted' | 'Sent' | 'UnexpectedResponse' | 'ResponseReady' | 'Notified' | 'NotifyOverweight' | 'NotifyDispatchError' | 'NotifyDecodeFailed' | 'InvalidResponder' | 'InvalidResponderVersion' | 'ResponseTaken' | 'AssetsTrapped' | 'VersionChangeNotified' | 'SupportedVersionChanged' | 'NotifyTargetSendFail' | 'NotifyTargetMigrationFail';2017}20182019/** @name PalletXcmOrigin */2020export interface PalletXcmOrigin extends Enum {2021  readonly isXcm: boolean;2022  readonly asXcm: XcmV1MultiLocation;2023  readonly isResponse: boolean;2024  readonly asResponse: XcmV1MultiLocation;2025  readonly type: 'Xcm' | 'Response';2026}20272028/** @name PhantomTypeUpDataStructs */2029export interface PhantomTypeUpDataStructs extends Vec<ITuple<[UpDataStructsTokenData, UpDataStructsRpcCollection, RmrkTraitsCollectionCollectionInfo, RmrkTraitsNftNftInfo, RmrkTraitsResourceResourceInfo, RmrkTraitsPropertyPropertyInfo, RmrkTraitsBaseBaseInfo, RmrkTraitsPartPartType, RmrkTraitsTheme, RmrkTraitsNftNftChild]>> {}20302031/** @name PolkadotCorePrimitivesInboundDownwardMessage */2032export interface PolkadotCorePrimitivesInboundDownwardMessage extends Struct {2033  readonly sentAt: u32;2034  readonly msg: Bytes;2035}20362037/** @name PolkadotCorePrimitivesInboundHrmpMessage */2038export interface PolkadotCorePrimitivesInboundHrmpMessage extends Struct {2039  readonly sentAt: u32;2040  readonly data: Bytes;2041}20422043/** @name PolkadotCorePrimitivesOutboundHrmpMessage */2044export interface PolkadotCorePrimitivesOutboundHrmpMessage extends Struct {2045  readonly recipient: u32;2046  readonly data: Bytes;2047}20482049/** @name PolkadotParachainPrimitivesXcmpMessageFormat */2050export interface PolkadotParachainPrimitivesXcmpMessageFormat extends Enum {2051  readonly isConcatenatedVersionedXcm: boolean;2052  readonly isConcatenatedEncodedBlob: boolean;2053  readonly isSignals: boolean;2054  readonly type: 'ConcatenatedVersionedXcm' | 'ConcatenatedEncodedBlob' | 'Signals';2055}20562057/** @name PolkadotPrimitivesV2AbridgedHostConfiguration */2058export interface PolkadotPrimitivesV2AbridgedHostConfiguration extends Struct {2059  readonly maxCodeSize: u32;2060  readonly maxHeadDataSize: u32;2061  readonly maxUpwardQueueCount: u32;2062  readonly maxUpwardQueueSize: u32;2063  readonly maxUpwardMessageSize: u32;2064  readonly maxUpwardMessageNumPerCandidate: u32;2065  readonly hrmpMaxMessageNumPerCandidate: u32;2066  readonly validationUpgradeCooldown: u32;2067  readonly validationUpgradeDelay: u32;2068}20692070/** @name PolkadotPrimitivesV2AbridgedHrmpChannel */2071export interface PolkadotPrimitivesV2AbridgedHrmpChannel extends Struct {2072  readonly maxCapacity: u32;2073  readonly maxTotalSize: u32;2074  readonly maxMessageSize: u32;2075  readonly msgCount: u32;2076  readonly totalSize: u32;2077  readonly mqcHead: Option<H256>;2078}20792080/** @name PolkadotPrimitivesV2PersistedValidationData */2081export interface PolkadotPrimitivesV2PersistedValidationData extends Struct {2082  readonly parentHead: Bytes;2083  readonly relayParentNumber: u32;2084  readonly relayParentStorageRoot: H256;2085  readonly maxPovSize: u32;2086}20872088/** @name PolkadotPrimitivesV2UpgradeRestriction */2089export interface PolkadotPrimitivesV2UpgradeRestriction extends Enum {2090  readonly isPresent: boolean;2091  readonly type: 'Present';2092}20932094/** @name RmrkTraitsBaseBaseInfo */2095export interface RmrkTraitsBaseBaseInfo extends Struct {2096  readonly issuer: AccountId32;2097  readonly baseType: Bytes;2098  readonly symbol: Bytes;2099}21002101/** @name RmrkTraitsCollectionCollectionInfo */2102export interface RmrkTraitsCollectionCollectionInfo extends Struct {2103  readonly issuer: AccountId32;2104  readonly metadata: Bytes;2105  readonly max: Option<u32>;2106  readonly symbol: Bytes;2107  readonly nftsCount: u32;2108}21092110/** @name RmrkTraitsNftAccountIdOrCollectionNftTuple */2111export interface RmrkTraitsNftAccountIdOrCollectionNftTuple extends Enum {2112  readonly isAccountId: boolean;2113  readonly asAccountId: AccountId32;2114  readonly isCollectionAndNftTuple: boolean;2115  readonly asCollectionAndNftTuple: ITuple<[u32, u32]>;2116  readonly type: 'AccountId' | 'CollectionAndNftTuple';2117}21182119/** @name RmrkTraitsNftNftChild */2120export interface RmrkTraitsNftNftChild extends Struct {2121  readonly collectionId: u32;2122  readonly nftId: u32;2123}21242125/** @name RmrkTraitsNftNftInfo */2126export interface RmrkTraitsNftNftInfo extends Struct {2127  readonly owner: RmrkTraitsNftAccountIdOrCollectionNftTuple;2128  readonly royalty: Option<RmrkTraitsNftRoyaltyInfo>;2129  readonly metadata: Bytes;2130  readonly equipped: bool;2131  readonly pending: bool;2132}21332134/** @name RmrkTraitsNftRoyaltyInfo */2135export interface RmrkTraitsNftRoyaltyInfo extends Struct {2136  readonly recipient: AccountId32;2137  readonly amount: Permill;2138}21392140/** @name RmrkTraitsPartEquippableList */2141export interface RmrkTraitsPartEquippableList extends Enum {2142  readonly isAll: boolean;2143  readonly isEmpty: boolean;2144  readonly isCustom: boolean;2145  readonly asCustom: Vec<u32>;2146  readonly type: 'All' | 'Empty' | 'Custom';2147}21482149/** @name RmrkTraitsPartFixedPart */2150export interface RmrkTraitsPartFixedPart extends Struct {2151  readonly id: u32;2152  readonly z: u32;2153  readonly src: Bytes;2154}21552156/** @name RmrkTraitsPartPartType */2157export interface RmrkTraitsPartPartType extends Enum {2158  readonly isFixedPart: boolean;2159  readonly asFixedPart: RmrkTraitsPartFixedPart;2160  readonly isSlotPart: boolean;2161  readonly asSlotPart: RmrkTraitsPartSlotPart;2162  readonly type: 'FixedPart' | 'SlotPart';2163}21642165/** @name RmrkTraitsPartSlotPart */2166export interface RmrkTraitsPartSlotPart extends Struct {2167  readonly id: u32;2168  readonly equippable: RmrkTraitsPartEquippableList;2169  readonly src: Bytes;2170  readonly z: u32;2171}21722173/** @name RmrkTraitsPropertyPropertyInfo */2174export interface RmrkTraitsPropertyPropertyInfo extends Struct {2175  readonly key: Bytes;2176  readonly value: Bytes;2177}21782179/** @name RmrkTraitsResourceBasicResource */2180export interface RmrkTraitsResourceBasicResource extends Struct {2181  readonly src: Option<Bytes>;2182  readonly metadata: Option<Bytes>;2183  readonly license: Option<Bytes>;2184  readonly thumb: Option<Bytes>;2185}21862187/** @name RmrkTraitsResourceComposableResource */2188export interface RmrkTraitsResourceComposableResource extends Struct {2189  readonly parts: Vec<u32>;2190  readonly base: u32;2191  readonly src: Option<Bytes>;2192  readonly metadata: Option<Bytes>;2193  readonly license: Option<Bytes>;2194  readonly thumb: Option<Bytes>;2195}21962197/** @name RmrkTraitsResourceResourceInfo */2198export interface RmrkTraitsResourceResourceInfo extends Struct {2199  readonly id: u32;2200  readonly resource: RmrkTraitsResourceResourceTypes;2201  readonly pending: bool;2202  readonly pendingRemoval: bool;2203}22042205/** @name RmrkTraitsResourceResourceTypes */2206export interface RmrkTraitsResourceResourceTypes extends Enum {2207  readonly isBasic: boolean;2208  readonly asBasic: RmrkTraitsResourceBasicResource;2209  readonly isComposable: boolean;2210  readonly asComposable: RmrkTraitsResourceComposableResource;2211  readonly isSlot: boolean;2212  readonly asSlot: RmrkTraitsResourceSlotResource;2213  readonly type: 'Basic' | 'Composable' | 'Slot';2214}22152216/** @name RmrkTraitsResourceSlotResource */2217export interface RmrkTraitsResourceSlotResource extends Struct {2218  readonly base: u32;2219  readonly src: Option<Bytes>;2220  readonly metadata: Option<Bytes>;2221  readonly slot: u32;2222  readonly license: Option<Bytes>;2223  readonly thumb: Option<Bytes>;2224}22252226/** @name RmrkTraitsTheme */2227export interface RmrkTraitsTheme extends Struct {2228  readonly name: Bytes;2229  readonly properties: Vec<RmrkTraitsThemeThemeProperty>;2230  readonly inherit: bool;2231}22322233/** @name RmrkTraitsThemeThemeProperty */2234export interface RmrkTraitsThemeThemeProperty extends Struct {2235  readonly key: Bytes;2236  readonly value: Bytes;2237}22382239/** @name SpCoreEcdsaSignature */2240export interface SpCoreEcdsaSignature extends U8aFixed {}22412242/** @name SpCoreEd25519Signature */2243export interface SpCoreEd25519Signature extends U8aFixed {}22442245/** @name SpCoreSr25519Signature */2246export interface SpCoreSr25519Signature extends U8aFixed {}22472248/** @name SpCoreVoid */2249export interface SpCoreVoid extends Null {}22502251/** @name SpRuntimeArithmeticError */2252export interface SpRuntimeArithmeticError extends Enum {2253  readonly isUnderflow: boolean;2254  readonly isOverflow: boolean;2255  readonly isDivisionByZero: boolean;2256  readonly type: 'Underflow' | 'Overflow' | 'DivisionByZero';2257}22582259/** @name SpRuntimeDigest */2260export interface SpRuntimeDigest extends Struct {2261  readonly logs: Vec<SpRuntimeDigestDigestItem>;2262}22632264/** @name SpRuntimeDigestDigestItem */2265export interface SpRuntimeDigestDigestItem extends Enum {2266  readonly isOther: boolean;2267  readonly asOther: Bytes;2268  readonly isConsensus: boolean;2269  readonly asConsensus: ITuple<[U8aFixed, Bytes]>;2270  readonly isSeal: boolean;2271  readonly asSeal: ITuple<[U8aFixed, Bytes]>;2272  readonly isPreRuntime: boolean;2273  readonly asPreRuntime: ITuple<[U8aFixed, Bytes]>;2274  readonly isRuntimeEnvironmentUpdated: boolean;2275  readonly type: 'Other' | 'Consensus' | 'Seal' | 'PreRuntime' | 'RuntimeEnvironmentUpdated';2276}22772278/** @name SpRuntimeDispatchError */2279export interface SpRuntimeDispatchError extends Enum {2280  readonly isOther: boolean;2281  readonly isCannotLookup: boolean;2282  readonly isBadOrigin: boolean;2283  readonly isModule: boolean;2284  readonly asModule: SpRuntimeModuleError;2285  readonly isConsumerRemaining: boolean;2286  readonly isNoProviders: boolean;2287  readonly isTooManyConsumers: boolean;2288  readonly isToken: boolean;2289  readonly asToken: SpRuntimeTokenError;2290  readonly isArithmetic: boolean;2291  readonly asArithmetic: SpRuntimeArithmeticError;2292  readonly isTransactional: boolean;2293  readonly asTransactional: SpRuntimeTransactionalError;2294  readonly type: 'Other' | 'CannotLookup' | 'BadOrigin' | 'Module' | 'ConsumerRemaining' | 'NoProviders' | 'TooManyConsumers' | 'Token' | 'Arithmetic' | 'Transactional';2295}22962297/** @name SpRuntimeModuleError */2298export interface SpRuntimeModuleError extends Struct {2299  readonly index: u8;2300  readonly error: U8aFixed;2301}23022303/** @name SpRuntimeMultiSignature */2304export interface SpRuntimeMultiSignature extends Enum {2305  readonly isEd25519: boolean;2306  readonly asEd25519: SpCoreEd25519Signature;2307  readonly isSr25519: boolean;2308  readonly asSr25519: SpCoreSr25519Signature;2309  readonly isEcdsa: boolean;2310  readonly asEcdsa: SpCoreEcdsaSignature;2311  readonly type: 'Ed25519' | 'Sr25519' | 'Ecdsa';2312}23132314/** @name SpRuntimeTokenError */2315export interface SpRuntimeTokenError extends Enum {2316  readonly isNoFunds: boolean;2317  readonly isWouldDie: boolean;2318  readonly isBelowMinimum: boolean;2319  readonly isCannotCreate: boolean;2320  readonly isUnknownAsset: boolean;2321  readonly isFrozen: boolean;2322  readonly isUnsupported: boolean;2323  readonly type: 'NoFunds' | 'WouldDie' | 'BelowMinimum' | 'CannotCreate' | 'UnknownAsset' | 'Frozen' | 'Unsupported';2324}23252326/** @name SpRuntimeTransactionalError */2327export interface SpRuntimeTransactionalError extends Enum {2328  readonly isLimitReached: boolean;2329  readonly isNoLayer: boolean;2330  readonly type: 'LimitReached' | 'NoLayer';2331}23322333/** @name SpTrieStorageProof */2334export interface SpTrieStorageProof extends Struct {2335  readonly trieNodes: BTreeSet<Bytes>;2336}23372338/** @name SpVersionRuntimeVersion */2339export interface SpVersionRuntimeVersion extends Struct {2340  readonly specName: Text;2341  readonly implName: Text;2342  readonly authoringVersion: u32;2343  readonly specVersion: u32;2344  readonly implVersion: u32;2345  readonly apis: Vec<ITuple<[U8aFixed, u32]>>;2346  readonly transactionVersion: u32;2347  readonly stateVersion: u8;2348}23492350/** @name UpDataStructsAccessMode */2351export interface UpDataStructsAccessMode extends Enum {2352  readonly isNormal: boolean;2353  readonly isAllowList: boolean;2354  readonly type: 'Normal' | 'AllowList';2355}23562357/** @name UpDataStructsCollection */2358export interface UpDataStructsCollection extends Struct {2359  readonly owner: AccountId32;2360  readonly mode: UpDataStructsCollectionMode;2361  readonly name: Vec<u16>;2362  readonly description: Vec<u16>;2363  readonly tokenPrefix: Bytes;2364  readonly sponsorship: UpDataStructsSponsorshipState;2365  readonly limits: UpDataStructsCollectionLimits;2366  readonly permissions: UpDataStructsCollectionPermissions;2367  readonly externalCollection: bool;2368}23692370/** @name UpDataStructsCollectionLimits */2371export interface UpDataStructsCollectionLimits extends Struct {2372  readonly accountTokenOwnershipLimit: Option<u32>;2373  readonly sponsoredDataSize: Option<u32>;2374  readonly sponsoredDataRateLimit: Option<UpDataStructsSponsoringRateLimit>;2375  readonly tokenLimit: Option<u32>;2376  readonly sponsorTransferTimeout: Option<u32>;2377  readonly sponsorApproveTimeout: Option<u32>;2378  readonly ownerCanTransfer: Option<bool>;2379  readonly ownerCanDestroy: Option<bool>;2380  readonly transfersEnabled: Option<bool>;2381}23822383/** @name UpDataStructsCollectionMode */2384export interface UpDataStructsCollectionMode extends Enum {2385  readonly isNft: boolean;2386  readonly isFungible: boolean;2387  readonly asFungible: u8;2388  readonly isReFungible: boolean;2389  readonly type: 'Nft' | 'Fungible' | 'ReFungible';2390}23912392/** @name UpDataStructsCollectionPermissions */2393export interface UpDataStructsCollectionPermissions extends Struct {2394  readonly access: Option<UpDataStructsAccessMode>;2395  readonly mintMode: Option<bool>;2396  readonly nesting: Option<UpDataStructsNestingPermissions>;2397}23982399/** @name UpDataStructsCollectionStats */2400export interface UpDataStructsCollectionStats extends Struct {2401  readonly created: u32;2402  readonly destroyed: u32;2403  readonly alive: u32;2404}24052406/** @name UpDataStructsCreateCollectionData */2407export interface UpDataStructsCreateCollectionData extends Struct {2408  readonly mode: UpDataStructsCollectionMode;2409  readonly access: Option<UpDataStructsAccessMode>;2410  readonly name: Vec<u16>;2411  readonly description: Vec<u16>;2412  readonly tokenPrefix: Bytes;2413  readonly pendingSponsor: Option<AccountId32>;2414  readonly limits: Option<UpDataStructsCollectionLimits>;2415  readonly permissions: Option<UpDataStructsCollectionPermissions>;2416  readonly tokenPropertyPermissions: Vec<UpDataStructsPropertyKeyPermission>;2417  readonly properties: Vec<UpDataStructsProperty>;2418}24192420/** @name UpDataStructsCreateFungibleData */2421export interface UpDataStructsCreateFungibleData extends Struct {2422  readonly value: u128;2423}24242425/** @name UpDataStructsCreateItemData */2426export interface UpDataStructsCreateItemData extends Enum {2427  readonly isNft: boolean;2428  readonly asNft: UpDataStructsCreateNftData;2429  readonly isFungible: boolean;2430  readonly asFungible: UpDataStructsCreateFungibleData;2431  readonly isReFungible: boolean;2432  readonly asReFungible: UpDataStructsCreateReFungibleData;2433  readonly type: 'Nft' | 'Fungible' | 'ReFungible';2434}24352436/** @name UpDataStructsCreateItemExData */2437export interface UpDataStructsCreateItemExData extends Enum {2438  readonly isNft: boolean;2439  readonly asNft: Vec<UpDataStructsCreateNftExData>;2440  readonly isFungible: boolean;2441  readonly asFungible: BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr,u128>;2442  readonly isRefungibleMultipleItems: boolean;2443  readonly asRefungibleMultipleItems: Vec<UpDataStructsCreateRefungibleExData>;2444  readonly isRefungibleMultipleOwners: boolean;2445  readonly asRefungibleMultipleOwners: UpDataStructsCreateRefungibleExData;2446  readonly type: 'Nft' | 'Fungible' | 'RefungibleMultipleItems' | 'RefungibleMultipleOwners';2447}24482449/** @name UpDataStructsCreateNftData */2450export interface UpDataStructsCreateNftData extends Struct {2451  readonly properties: Vec<UpDataStructsProperty>;2452}24532454/** @name UpDataStructsCreateNftExData */2455export interface UpDataStructsCreateNftExData extends Struct {2456  readonly properties: Vec<UpDataStructsProperty>;2457  readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;2458}24592460/** @name UpDataStructsCreateReFungibleData */2461export interface UpDataStructsCreateReFungibleData extends Struct {2462  readonly constData: Bytes;2463  readonly pieces: u128;2464  readonly properties: Vec<UpDataStructsProperty>;2465}24662467/** @name UpDataStructsCreateRefungibleExData */2468export interface UpDataStructsCreateRefungibleExData extends Struct {2469  readonly constData: Bytes;2470  readonly users: BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr, u128>;2471  readonly properties: Vec<UpDataStructsProperty>;2472}24732474/** @name UpDataStructsNestingPermissions */2475export interface UpDataStructsNestingPermissions extends Struct {2476  readonly tokenOwner: bool;2477  readonly collectionAdmin: bool;2478  readonly restricted: Option<UpDataStructsOwnerRestrictedSet>;2479}24802481/** @name UpDataStructsOwnerRestrictedSet */2482export interface UpDataStructsOwnerRestrictedSet extends BTreeSet<u32> {}24832484/** @name UpDataStructsProperties */2485export interface UpDataStructsProperties extends Struct {2486  readonly map: UpDataStructsPropertiesMapBoundedVec;2487  readonly consumedSpace: u32;2488  readonly spaceLimit: u32;2489}24902491/** @name UpDataStructsPropertiesMapBoundedVec */2492export interface UpDataStructsPropertiesMapBoundedVec extends BTreeMap<Bytes, Bytes> {}24932494/** @name UpDataStructsPropertiesMapPropertyPermission */2495export interface UpDataStructsPropertiesMapPropertyPermission extends BTreeMap<Bytes, UpDataStructsPropertyPermission> {}24962497/** @name UpDataStructsProperty */2498export interface UpDataStructsProperty extends Struct {2499  readonly key: Bytes;2500  readonly value: Bytes;2501}25022503/** @name UpDataStructsPropertyKeyPermission */2504export interface UpDataStructsPropertyKeyPermission extends Struct {2505  readonly key: Bytes;2506  readonly permission: UpDataStructsPropertyPermission;2507}25082509/** @name UpDataStructsPropertyPermission */2510export interface UpDataStructsPropertyPermission extends Struct {2511  readonly mutable: bool;2512  readonly collectionAdmin: bool;2513  readonly tokenOwner: bool;2514}25152516/** @name UpDataStructsPropertyScope */2517export interface UpDataStructsPropertyScope extends Enum {2518  readonly isNone: boolean;2519  readonly isRmrk: boolean;2520  readonly type: 'None' | 'Rmrk';2521}25222523/** @name UpDataStructsRpcCollection */2524export interface UpDataStructsRpcCollection extends Struct {2525  readonly owner: AccountId32;2526  readonly mode: UpDataStructsCollectionMode;2527  readonly name: Vec<u16>;2528  readonly description: Vec<u16>;2529  readonly tokenPrefix: Bytes;2530  readonly sponsorship: UpDataStructsSponsorshipState;2531  readonly limits: UpDataStructsCollectionLimits;2532  readonly permissions: UpDataStructsCollectionPermissions;2533  readonly tokenPropertyPermissions: Vec<UpDataStructsPropertyKeyPermission>;2534  readonly properties: Vec<UpDataStructsProperty>;2535  readonly readOnly: bool;2536}25372538/** @name UpDataStructsSponsoringRateLimit */2539export interface UpDataStructsSponsoringRateLimit extends Enum {2540  readonly isSponsoringDisabled: boolean;2541  readonly isBlocks: boolean;2542  readonly asBlocks: u32;2543  readonly type: 'SponsoringDisabled' | 'Blocks';2544}25452546/** @name UpDataStructsSponsorshipState */2547export interface UpDataStructsSponsorshipState extends Enum {2548  readonly isDisabled: boolean;2549  readonly isUnconfirmed: boolean;2550  readonly asUnconfirmed: AccountId32;2551  readonly isConfirmed: boolean;2552  readonly asConfirmed: AccountId32;2553  readonly type: 'Disabled' | 'Unconfirmed' | 'Confirmed';2554}25552556/** @name UpDataStructsTokenChild */2557export interface UpDataStructsTokenChild extends Struct {2558  readonly token: u32;2559  readonly collection: u32;2560}25612562/** @name UpDataStructsTokenData */2563export interface UpDataStructsTokenData extends Struct {2564  readonly properties: Vec<UpDataStructsProperty>;2565  readonly owner: Option<PalletEvmAccountBasicCrossAccountIdRepr>;2566  readonly pieces: u128;2567}25682569/** @name XcmDoubleEncoded */2570export interface XcmDoubleEncoded extends Struct {2571  readonly encoded: Bytes;2572}25732574/** @name XcmV0Junction */2575export interface XcmV0Junction extends Enum {2576  readonly isParent: boolean;2577  readonly isParachain: boolean;2578  readonly asParachain: Compact<u32>;2579  readonly isAccountId32: boolean;2580  readonly asAccountId32: {2581    readonly network: XcmV0JunctionNetworkId;2582    readonly id: U8aFixed;2583  } & Struct;2584  readonly isAccountIndex64: boolean;2585  readonly asAccountIndex64: {2586    readonly network: XcmV0JunctionNetworkId;2587    readonly index: Compact<u64>;2588  } & Struct;2589  readonly isAccountKey20: boolean;2590  readonly asAccountKey20: {2591    readonly network: XcmV0JunctionNetworkId;2592    readonly key: U8aFixed;2593  } & Struct;2594  readonly isPalletInstance: boolean;2595  readonly asPalletInstance: u8;2596  readonly isGeneralIndex: boolean;2597  readonly asGeneralIndex: Compact<u128>;2598  readonly isGeneralKey: boolean;2599  readonly asGeneralKey: Bytes;2600  readonly isOnlyChild: boolean;2601  readonly isPlurality: boolean;2602  readonly asPlurality: {2603    readonly id: XcmV0JunctionBodyId;2604    readonly part: XcmV0JunctionBodyPart;2605  } & Struct;2606  readonly type: 'Parent' | 'Parachain' | 'AccountId32' | 'AccountIndex64' | 'AccountKey20' | 'PalletInstance' | 'GeneralIndex' | 'GeneralKey' | 'OnlyChild' | 'Plurality';2607}26082609/** @name XcmV0JunctionBodyId */2610export interface XcmV0JunctionBodyId extends Enum {2611  readonly isUnit: boolean;2612  readonly isNamed: boolean;2613  readonly asNamed: Bytes;2614  readonly isIndex: boolean;2615  readonly asIndex: Compact<u32>;2616  readonly isExecutive: boolean;2617  readonly isTechnical: boolean;2618  readonly isLegislative: boolean;2619  readonly isJudicial: boolean;2620  readonly type: 'Unit' | 'Named' | 'Index' | 'Executive' | 'Technical' | 'Legislative' | 'Judicial';2621}26222623/** @name XcmV0JunctionBodyPart */2624export interface XcmV0JunctionBodyPart extends Enum {2625  readonly isVoice: boolean;2626  readonly isMembers: boolean;2627  readonly asMembers: {2628    readonly count: Compact<u32>;2629  } & Struct;2630  readonly isFraction: boolean;2631  readonly asFraction: {2632    readonly nom: Compact<u32>;2633    readonly denom: Compact<u32>;2634  } & Struct;2635  readonly isAtLeastProportion: boolean;2636  readonly asAtLeastProportion: {2637    readonly nom: Compact<u32>;2638    readonly denom: Compact<u32>;2639  } & Struct;2640  readonly isMoreThanProportion: boolean;2641  readonly asMoreThanProportion: {2642    readonly nom: Compact<u32>;2643    readonly denom: Compact<u32>;2644  } & Struct;2645  readonly type: 'Voice' | 'Members' | 'Fraction' | 'AtLeastProportion' | 'MoreThanProportion';2646}26472648/** @name XcmV0JunctionNetworkId */2649export interface XcmV0JunctionNetworkId extends Enum {2650  readonly isAny: boolean;2651  readonly isNamed: boolean;2652  readonly asNamed: Bytes;2653  readonly isPolkadot: boolean;2654  readonly isKusama: boolean;2655  readonly type: 'Any' | 'Named' | 'Polkadot' | 'Kusama';2656}26572658/** @name XcmV0MultiAsset */2659export interface XcmV0MultiAsset extends Enum {2660  readonly isNone: boolean;2661  readonly isAll: boolean;2662  readonly isAllFungible: boolean;2663  readonly isAllNonFungible: boolean;2664  readonly isAllAbstractFungible: boolean;2665  readonly asAllAbstractFungible: {2666    readonly id: Bytes;2667  } & Struct;2668  readonly isAllAbstractNonFungible: boolean;2669  readonly asAllAbstractNonFungible: {2670    readonly class: Bytes;2671  } & Struct;2672  readonly isAllConcreteFungible: boolean;2673  readonly asAllConcreteFungible: {2674    readonly id: XcmV0MultiLocation;2675  } & Struct;2676  readonly isAllConcreteNonFungible: boolean;2677  readonly asAllConcreteNonFungible: {2678    readonly class: XcmV0MultiLocation;2679  } & Struct;2680  readonly isAbstractFungible: boolean;2681  readonly asAbstractFungible: {2682    readonly id: Bytes;2683    readonly amount: Compact<u128>;2684  } & Struct;2685  readonly isAbstractNonFungible: boolean;2686  readonly asAbstractNonFungible: {2687    readonly class: Bytes;2688    readonly instance: XcmV1MultiassetAssetInstance;2689  } & Struct;2690  readonly isConcreteFungible: boolean;2691  readonly asConcreteFungible: {2692    readonly id: XcmV0MultiLocation;2693    readonly amount: Compact<u128>;2694  } & Struct;2695  readonly isConcreteNonFungible: boolean;2696  readonly asConcreteNonFungible: {2697    readonly class: XcmV0MultiLocation;2698    readonly instance: XcmV1MultiassetAssetInstance;2699  } & Struct;2700  readonly type: 'None' | 'All' | 'AllFungible' | 'AllNonFungible' | 'AllAbstractFungible' | 'AllAbstractNonFungible' | 'AllConcreteFungible' | 'AllConcreteNonFungible' | 'AbstractFungible' | 'AbstractNonFungible' | 'ConcreteFungible' | 'ConcreteNonFungible';2701}27022703/** @name XcmV0MultiLocation */2704export interface XcmV0MultiLocation extends Enum {2705  readonly isNull: boolean;2706  readonly isX1: boolean;2707  readonly asX1: XcmV0Junction;2708  readonly isX2: boolean;2709  readonly asX2: ITuple<[XcmV0Junction, XcmV0Junction]>;2710  readonly isX3: boolean;2711  readonly asX3: ITuple<[XcmV0Junction, XcmV0Junction, XcmV0Junction]>;2712  readonly isX4: boolean;2713  readonly asX4: ITuple<[XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction]>;2714  readonly isX5: boolean;2715  readonly asX5: ITuple<[XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction]>;2716  readonly isX6: boolean;2717  readonly asX6: ITuple<[XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction]>;2718  readonly isX7: boolean;2719  readonly asX7: ITuple<[XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction]>;2720  readonly isX8: boolean;2721  readonly asX8: ITuple<[XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction]>;2722  readonly type: 'Null' | 'X1' | 'X2' | 'X3' | 'X4' | 'X5' | 'X6' | 'X7' | 'X8';2723}27242725/** @name XcmV0Order */2726export interface XcmV0Order extends Enum {2727  readonly isNull: boolean;2728  readonly isDepositAsset: boolean;2729  readonly asDepositAsset: {2730    readonly assets: Vec<XcmV0MultiAsset>;2731    readonly dest: XcmV0MultiLocation;2732  } & Struct;2733  readonly isDepositReserveAsset: boolean;2734  readonly asDepositReserveAsset: {2735    readonly assets: Vec<XcmV0MultiAsset>;2736    readonly dest: XcmV0MultiLocation;2737    readonly effects: Vec<XcmV0Order>;2738  } & Struct;2739  readonly isExchangeAsset: boolean;2740  readonly asExchangeAsset: {2741    readonly give: Vec<XcmV0MultiAsset>;2742    readonly receive: Vec<XcmV0MultiAsset>;2743  } & Struct;2744  readonly isInitiateReserveWithdraw: boolean;2745  readonly asInitiateReserveWithdraw: {2746    readonly assets: Vec<XcmV0MultiAsset>;2747    readonly reserve: XcmV0MultiLocation;2748    readonly effects: Vec<XcmV0Order>;2749  } & Struct;2750  readonly isInitiateTeleport: boolean;2751  readonly asInitiateTeleport: {2752    readonly assets: Vec<XcmV0MultiAsset>;2753    readonly dest: XcmV0MultiLocation;2754    readonly effects: Vec<XcmV0Order>;2755  } & Struct;2756  readonly isQueryHolding: boolean;2757  readonly asQueryHolding: {2758    readonly queryId: Compact<u64>;2759    readonly dest: XcmV0MultiLocation;2760    readonly assets: Vec<XcmV0MultiAsset>;2761  } & Struct;2762  readonly isBuyExecution: boolean;2763  readonly asBuyExecution: {2764    readonly fees: XcmV0MultiAsset;2765    readonly weight: u64;2766    readonly debt: u64;2767    readonly haltOnError: bool;2768    readonly xcm: Vec<XcmV0Xcm>;2769  } & Struct;2770  readonly type: 'Null' | 'DepositAsset' | 'DepositReserveAsset' | 'ExchangeAsset' | 'InitiateReserveWithdraw' | 'InitiateTeleport' | 'QueryHolding' | 'BuyExecution';2771}27722773/** @name XcmV0OriginKind */2774export interface XcmV0OriginKind extends Enum {2775  readonly isNative: boolean;2776  readonly isSovereignAccount: boolean;2777  readonly isSuperuser: boolean;2778  readonly isXcm: boolean;2779  readonly type: 'Native' | 'SovereignAccount' | 'Superuser' | 'Xcm';2780}27812782/** @name XcmV0Response */2783export interface XcmV0Response extends Enum {2784  readonly isAssets: boolean;2785  readonly asAssets: Vec<XcmV0MultiAsset>;2786  readonly type: 'Assets';2787}27882789/** @name XcmV0Xcm */2790export interface XcmV0Xcm extends Enum {2791  readonly isWithdrawAsset: boolean;2792  readonly asWithdrawAsset: {2793    readonly assets: Vec<XcmV0MultiAsset>;2794    readonly effects: Vec<XcmV0Order>;2795  } & Struct;2796  readonly isReserveAssetDeposit: boolean;2797  readonly asReserveAssetDeposit: {2798    readonly assets: Vec<XcmV0MultiAsset>;2799    readonly effects: Vec<XcmV0Order>;2800  } & Struct;2801  readonly isTeleportAsset: boolean;2802  readonly asTeleportAsset: {2803    readonly assets: Vec<XcmV0MultiAsset>;2804    readonly effects: Vec<XcmV0Order>;2805  } & Struct;2806  readonly isQueryResponse: boolean;2807  readonly asQueryResponse: {2808    readonly queryId: Compact<u64>;2809    readonly response: XcmV0Response;2810  } & Struct;2811  readonly isTransferAsset: boolean;2812  readonly asTransferAsset: {2813    readonly assets: Vec<XcmV0MultiAsset>;2814    readonly dest: XcmV0MultiLocation;2815  } & Struct;2816  readonly isTransferReserveAsset: boolean;2817  readonly asTransferReserveAsset: {2818    readonly assets: Vec<XcmV0MultiAsset>;2819    readonly dest: XcmV0MultiLocation;2820    readonly effects: Vec<XcmV0Order>;2821  } & Struct;2822  readonly isTransact: boolean;2823  readonly asTransact: {2824    readonly originType: XcmV0OriginKind;2825    readonly requireWeightAtMost: u64;2826    readonly call: XcmDoubleEncoded;2827  } & Struct;2828  readonly isHrmpNewChannelOpenRequest: boolean;2829  readonly asHrmpNewChannelOpenRequest: {2830    readonly sender: Compact<u32>;2831    readonly maxMessageSize: Compact<u32>;2832    readonly maxCapacity: Compact<u32>;2833  } & Struct;2834  readonly isHrmpChannelAccepted: boolean;2835  readonly asHrmpChannelAccepted: {2836    readonly recipient: Compact<u32>;2837  } & Struct;2838  readonly isHrmpChannelClosing: boolean;2839  readonly asHrmpChannelClosing: {2840    readonly initiator: Compact<u32>;2841    readonly sender: Compact<u32>;2842    readonly recipient: Compact<u32>;2843  } & Struct;2844  readonly isRelayedFrom: boolean;2845  readonly asRelayedFrom: {2846    readonly who: XcmV0MultiLocation;2847    readonly message: XcmV0Xcm;2848  } & Struct;2849  readonly type: 'WithdrawAsset' | 'ReserveAssetDeposit' | 'TeleportAsset' | 'QueryResponse' | 'TransferAsset' | 'TransferReserveAsset' | 'Transact' | 'HrmpNewChannelOpenRequest' | 'HrmpChannelAccepted' | 'HrmpChannelClosing' | 'RelayedFrom';2850}28512852/** @name XcmV1Junction */2853export interface XcmV1Junction extends Enum {2854  readonly isParachain: boolean;2855  readonly asParachain: Compact<u32>;2856  readonly isAccountId32: boolean;2857  readonly asAccountId32: {2858    readonly network: XcmV0JunctionNetworkId;2859    readonly id: U8aFixed;2860  } & Struct;2861  readonly isAccountIndex64: boolean;2862  readonly asAccountIndex64: {2863    readonly network: XcmV0JunctionNetworkId;2864    readonly index: Compact<u64>;2865  } & Struct;2866  readonly isAccountKey20: boolean;2867  readonly asAccountKey20: {2868    readonly network: XcmV0JunctionNetworkId;2869    readonly key: U8aFixed;2870  } & Struct;2871  readonly isPalletInstance: boolean;2872  readonly asPalletInstance: u8;2873  readonly isGeneralIndex: boolean;2874  readonly asGeneralIndex: Compact<u128>;2875  readonly isGeneralKey: boolean;2876  readonly asGeneralKey: Bytes;2877  readonly isOnlyChild: boolean;2878  readonly isPlurality: boolean;2879  readonly asPlurality: {2880    readonly id: XcmV0JunctionBodyId;2881    readonly part: XcmV0JunctionBodyPart;2882  } & Struct;2883  readonly type: 'Parachain' | 'AccountId32' | 'AccountIndex64' | 'AccountKey20' | 'PalletInstance' | 'GeneralIndex' | 'GeneralKey' | 'OnlyChild' | 'Plurality';2884}28852886/** @name XcmV1MultiAsset */2887export interface XcmV1MultiAsset extends Struct {2888  readonly id: XcmV1MultiassetAssetId;2889  readonly fun: XcmV1MultiassetFungibility;2890}28912892/** @name XcmV1MultiassetAssetId */2893export interface XcmV1MultiassetAssetId extends Enum {2894  readonly isConcrete: boolean;2895  readonly asConcrete: XcmV1MultiLocation;2896  readonly isAbstract: boolean;2897  readonly asAbstract: Bytes;2898  readonly type: 'Concrete' | 'Abstract';2899}29002901/** @name XcmV1MultiassetAssetInstance */2902export interface XcmV1MultiassetAssetInstance extends Enum {2903  readonly isUndefined: boolean;2904  readonly isIndex: boolean;2905  readonly asIndex: Compact<u128>;2906  readonly isArray4: boolean;2907  readonly asArray4: U8aFixed;2908  readonly isArray8: boolean;2909  readonly asArray8: U8aFixed;2910  readonly isArray16: boolean;2911  readonly asArray16: U8aFixed;2912  readonly isArray32: boolean;2913  readonly asArray32: U8aFixed;2914  readonly isBlob: boolean;2915  readonly asBlob: Bytes;2916  readonly type: 'Undefined' | 'Index' | 'Array4' | 'Array8' | 'Array16' | 'Array32' | 'Blob';2917}29182919/** @name XcmV1MultiassetFungibility */2920export interface XcmV1MultiassetFungibility extends Enum {2921  readonly isFungible: boolean;2922  readonly asFungible: Compact<u128>;2923  readonly isNonFungible: boolean;2924  readonly asNonFungible: XcmV1MultiassetAssetInstance;2925  readonly type: 'Fungible' | 'NonFungible';2926}29272928/** @name XcmV1MultiassetMultiAssetFilter */2929export interface XcmV1MultiassetMultiAssetFilter extends Enum {2930  readonly isDefinite: boolean;2931  readonly asDefinite: XcmV1MultiassetMultiAssets;2932  readonly isWild: boolean;2933  readonly asWild: XcmV1MultiassetWildMultiAsset;2934  readonly type: 'Definite' | 'Wild';2935}29362937/** @name XcmV1MultiassetMultiAssets */2938export interface XcmV1MultiassetMultiAssets extends Vec<XcmV1MultiAsset> {}29392940/** @name XcmV1MultiassetWildFungibility */2941export interface XcmV1MultiassetWildFungibility extends Enum {2942  readonly isFungible: boolean;2943  readonly isNonFungible: boolean;2944  readonly type: 'Fungible' | 'NonFungible';2945}29462947/** @name XcmV1MultiassetWildMultiAsset */2948export interface XcmV1MultiassetWildMultiAsset extends Enum {2949  readonly isAll: boolean;2950  readonly isAllOf: boolean;2951  readonly asAllOf: {2952    readonly id: XcmV1MultiassetAssetId;2953    readonly fun: XcmV1MultiassetWildFungibility;2954  } & Struct;2955  readonly type: 'All' | 'AllOf';2956}29572958/** @name XcmV1MultiLocation */2959export interface XcmV1MultiLocation extends Struct {2960  readonly parents: u8;2961  readonly interior: XcmV1MultilocationJunctions;2962}29632964/** @name XcmV1MultilocationJunctions */2965export interface XcmV1MultilocationJunctions extends Enum {2966  readonly isHere: boolean;2967  readonly isX1: boolean;2968  readonly asX1: XcmV1Junction;2969  readonly isX2: boolean;2970  readonly asX2: ITuple<[XcmV1Junction, XcmV1Junction]>;2971  readonly isX3: boolean;2972  readonly asX3: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction]>;2973  readonly isX4: boolean;2974  readonly asX4: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction]>;2975  readonly isX5: boolean;2976  readonly asX5: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction]>;2977  readonly isX6: boolean;2978  readonly asX6: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction]>;2979  readonly isX7: boolean;2980  readonly asX7: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction]>;2981  readonly isX8: boolean;2982  readonly asX8: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction]>;2983  readonly type: 'Here' | 'X1' | 'X2' | 'X3' | 'X4' | 'X5' | 'X6' | 'X7' | 'X8';2984}29852986/** @name XcmV1Order */2987export interface XcmV1Order extends Enum {2988  readonly isNoop: boolean;2989  readonly isDepositAsset: boolean;2990  readonly asDepositAsset: {2991    readonly assets: XcmV1MultiassetMultiAssetFilter;2992    readonly maxAssets: u32;2993    readonly beneficiary: XcmV1MultiLocation;2994  } & Struct;2995  readonly isDepositReserveAsset: boolean;2996  readonly asDepositReserveAsset: {2997    readonly assets: XcmV1MultiassetMultiAssetFilter;2998    readonly maxAssets: u32;2999    readonly dest: XcmV1MultiLocation;3000    readonly effects: Vec<XcmV1Order>;3001  } & Struct;3002  readonly isExchangeAsset: boolean;3003  readonly asExchangeAsset: {3004    readonly give: XcmV1MultiassetMultiAssetFilter;3005    readonly receive: XcmV1MultiassetMultiAssets;3006  } & Struct;3007  readonly isInitiateReserveWithdraw: boolean;3008  readonly asInitiateReserveWithdraw: {3009    readonly assets: XcmV1MultiassetMultiAssetFilter;3010    readonly reserve: XcmV1MultiLocation;3011    readonly effects: Vec<XcmV1Order>;3012  } & Struct;3013  readonly isInitiateTeleport: boolean;3014  readonly asInitiateTeleport: {3015    readonly assets: XcmV1MultiassetMultiAssetFilter;3016    readonly dest: XcmV1MultiLocation;3017    readonly effects: Vec<XcmV1Order>;3018  } & Struct;3019  readonly isQueryHolding: boolean;3020  readonly asQueryHolding: {3021    readonly queryId: Compact<u64>;3022    readonly dest: XcmV1MultiLocation;3023    readonly assets: XcmV1MultiassetMultiAssetFilter;3024  } & Struct;3025  readonly isBuyExecution: boolean;3026  readonly asBuyExecution: {3027    readonly fees: XcmV1MultiAsset;3028    readonly weight: u64;3029    readonly debt: u64;3030    readonly haltOnError: bool;3031    readonly instructions: Vec<XcmV1Xcm>;3032  } & Struct;3033  readonly type: 'Noop' | 'DepositAsset' | 'DepositReserveAsset' | 'ExchangeAsset' | 'InitiateReserveWithdraw' | 'InitiateTeleport' | 'QueryHolding' | 'BuyExecution';3034}30353036/** @name XcmV1Response */3037export interface XcmV1Response extends Enum {3038  readonly isAssets: boolean;3039  readonly asAssets: XcmV1MultiassetMultiAssets;3040  readonly isVersion: boolean;3041  readonly asVersion: u32;3042  readonly type: 'Assets' | 'Version';3043}30443045/** @name XcmV1Xcm */3046export interface XcmV1Xcm extends Enum {3047  readonly isWithdrawAsset: boolean;3048  readonly asWithdrawAsset: {3049    readonly assets: XcmV1MultiassetMultiAssets;3050    readonly effects: Vec<XcmV1Order>;3051  } & Struct;3052  readonly isReserveAssetDeposited: boolean;3053  readonly asReserveAssetDeposited: {3054    readonly assets: XcmV1MultiassetMultiAssets;3055    readonly effects: Vec<XcmV1Order>;3056  } & Struct;3057  readonly isReceiveTeleportedAsset: boolean;3058  readonly asReceiveTeleportedAsset: {3059    readonly assets: XcmV1MultiassetMultiAssets;3060    readonly effects: Vec<XcmV1Order>;3061  } & Struct;3062  readonly isQueryResponse: boolean;3063  readonly asQueryResponse: {3064    readonly queryId: Compact<u64>;3065    readonly response: XcmV1Response;3066  } & Struct;3067  readonly isTransferAsset: boolean;3068  readonly asTransferAsset: {3069    readonly assets: XcmV1MultiassetMultiAssets;3070    readonly beneficiary: XcmV1MultiLocation;3071  } & Struct;3072  readonly isTransferReserveAsset: boolean;3073  readonly asTransferReserveAsset: {3074    readonly assets: XcmV1MultiassetMultiAssets;3075    readonly dest: XcmV1MultiLocation;3076    readonly effects: Vec<XcmV1Order>;3077  } & Struct;3078  readonly isTransact: boolean;3079  readonly asTransact: {3080    readonly originType: XcmV0OriginKind;3081    readonly requireWeightAtMost: u64;3082    readonly call: XcmDoubleEncoded;3083  } & Struct;3084  readonly isHrmpNewChannelOpenRequest: boolean;3085  readonly asHrmpNewChannelOpenRequest: {3086    readonly sender: Compact<u32>;3087    readonly maxMessageSize: Compact<u32>;3088    readonly maxCapacity: Compact<u32>;3089  } & Struct;3090  readonly isHrmpChannelAccepted: boolean;3091  readonly asHrmpChannelAccepted: {3092    readonly recipient: Compact<u32>;3093  } & Struct;3094  readonly isHrmpChannelClosing: boolean;3095  readonly asHrmpChannelClosing: {3096    readonly initiator: Compact<u32>;3097    readonly sender: Compact<u32>;3098    readonly recipient: Compact<u32>;3099  } & Struct;3100  readonly isRelayedFrom: boolean;3101  readonly asRelayedFrom: {3102    readonly who: XcmV1MultilocationJunctions;3103    readonly message: XcmV1Xcm;3104  } & Struct;3105  readonly isSubscribeVersion: boolean;3106  readonly asSubscribeVersion: {3107    readonly queryId: Compact<u64>;3108    readonly maxResponseWeight: Compact<u64>;3109  } & Struct;3110  readonly isUnsubscribeVersion: boolean;3111  readonly type: 'WithdrawAsset' | 'ReserveAssetDeposited' | 'ReceiveTeleportedAsset' | 'QueryResponse' | 'TransferAsset' | 'TransferReserveAsset' | 'Transact' | 'HrmpNewChannelOpenRequest' | 'HrmpChannelAccepted' | 'HrmpChannelClosing' | 'RelayedFrom' | 'SubscribeVersion' | 'UnsubscribeVersion';3112}31133114/** @name XcmV2Instruction */3115export interface XcmV2Instruction extends Enum {3116  readonly isWithdrawAsset: boolean;3117  readonly asWithdrawAsset: XcmV1MultiassetMultiAssets;3118  readonly isReserveAssetDeposited: boolean;3119  readonly asReserveAssetDeposited: XcmV1MultiassetMultiAssets;3120  readonly isReceiveTeleportedAsset: boolean;3121  readonly asReceiveTeleportedAsset: XcmV1MultiassetMultiAssets;3122  readonly isQueryResponse: boolean;3123  readonly asQueryResponse: {3124    readonly queryId: Compact<u64>;3125    readonly response: XcmV2Response;3126    readonly maxWeight: Compact<u64>;3127  } & Struct;3128  readonly isTransferAsset: boolean;3129  readonly asTransferAsset: {3130    readonly assets: XcmV1MultiassetMultiAssets;3131    readonly beneficiary: XcmV1MultiLocation;3132  } & Struct;3133  readonly isTransferReserveAsset: boolean;3134  readonly asTransferReserveAsset: {3135    readonly assets: XcmV1MultiassetMultiAssets;3136    readonly dest: XcmV1MultiLocation;3137    readonly xcm: XcmV2Xcm;3138  } & Struct;3139  readonly isTransact: boolean;3140  readonly asTransact: {3141    readonly originType: XcmV0OriginKind;3142    readonly requireWeightAtMost: Compact<u64>;3143    readonly call: XcmDoubleEncoded;3144  } & Struct;3145  readonly isHrmpNewChannelOpenRequest: boolean;3146  readonly asHrmpNewChannelOpenRequest: {3147    readonly sender: Compact<u32>;3148    readonly maxMessageSize: Compact<u32>;3149    readonly maxCapacity: Compact<u32>;3150  } & Struct;3151  readonly isHrmpChannelAccepted: boolean;3152  readonly asHrmpChannelAccepted: {3153    readonly recipient: Compact<u32>;3154  } & Struct;3155  readonly isHrmpChannelClosing: boolean;3156  readonly asHrmpChannelClosing: {3157    readonly initiator: Compact<u32>;3158    readonly sender: Compact<u32>;3159    readonly recipient: Compact<u32>;3160  } & Struct;3161  readonly isClearOrigin: boolean;3162  readonly isDescendOrigin: boolean;3163  readonly asDescendOrigin: XcmV1MultilocationJunctions;3164  readonly isReportError: boolean;3165  readonly asReportError: {3166    readonly queryId: Compact<u64>;3167    readonly dest: XcmV1MultiLocation;3168    readonly maxResponseWeight: Compact<u64>;3169  } & Struct;3170  readonly isDepositAsset: boolean;3171  readonly asDepositAsset: {3172    readonly assets: XcmV1MultiassetMultiAssetFilter;3173    readonly maxAssets: Compact<u32>;3174    readonly beneficiary: XcmV1MultiLocation;3175  } & Struct;3176  readonly isDepositReserveAsset: boolean;3177  readonly asDepositReserveAsset: {3178    readonly assets: XcmV1MultiassetMultiAssetFilter;3179    readonly maxAssets: Compact<u32>;3180    readonly dest: XcmV1MultiLocation;3181    readonly xcm: XcmV2Xcm;3182  } & Struct;3183  readonly isExchangeAsset: boolean;3184  readonly asExchangeAsset: {3185    readonly give: XcmV1MultiassetMultiAssetFilter;3186    readonly receive: XcmV1MultiassetMultiAssets;3187  } & Struct;3188  readonly isInitiateReserveWithdraw: boolean;3189  readonly asInitiateReserveWithdraw: {3190    readonly assets: XcmV1MultiassetMultiAssetFilter;3191    readonly reserve: XcmV1MultiLocation;3192    readonly xcm: XcmV2Xcm;3193  } & Struct;3194  readonly isInitiateTeleport: boolean;3195  readonly asInitiateTeleport: {3196    readonly assets: XcmV1MultiassetMultiAssetFilter;3197    readonly dest: XcmV1MultiLocation;3198    readonly xcm: XcmV2Xcm;3199  } & Struct;3200  readonly isQueryHolding: boolean;3201  readonly asQueryHolding: {3202    readonly queryId: Compact<u64>;3203    readonly dest: XcmV1MultiLocation;3204    readonly assets: XcmV1MultiassetMultiAssetFilter;3205    readonly maxResponseWeight: Compact<u64>;3206  } & Struct;3207  readonly isBuyExecution: boolean;3208  readonly asBuyExecution: {3209    readonly fees: XcmV1MultiAsset;3210    readonly weightLimit: XcmV2WeightLimit;3211  } & Struct;3212  readonly isRefundSurplus: boolean;3213  readonly isSetErrorHandler: boolean;3214  readonly asSetErrorHandler: XcmV2Xcm;3215  readonly isSetAppendix: boolean;3216  readonly asSetAppendix: XcmV2Xcm;3217  readonly isClearError: boolean;3218  readonly isClaimAsset: boolean;3219  readonly asClaimAsset: {3220    readonly assets: XcmV1MultiassetMultiAssets;3221    readonly ticket: XcmV1MultiLocation;3222  } & Struct;3223  readonly isTrap: boolean;3224  readonly asTrap: Compact<u64>;3225  readonly isSubscribeVersion: boolean;3226  readonly asSubscribeVersion: {3227    readonly queryId: Compact<u64>;3228    readonly maxResponseWeight: Compact<u64>;3229  } & Struct;3230  readonly isUnsubscribeVersion: boolean;3231  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';3232}32333234/** @name XcmV2Response */3235export interface XcmV2Response extends Enum {3236  readonly isNull: boolean;3237  readonly isAssets: boolean;3238  readonly asAssets: XcmV1MultiassetMultiAssets;3239  readonly isExecutionResult: boolean;3240  readonly asExecutionResult: Option<ITuple<[u32, XcmV2TraitsError]>>;3241  readonly isVersion: boolean;3242  readonly asVersion: u32;3243  readonly type: 'Null' | 'Assets' | 'ExecutionResult' | 'Version';3244}32453246/** @name XcmV2TraitsError */3247export interface XcmV2TraitsError extends Enum {3248  readonly isOverflow: boolean;3249  readonly isUnimplemented: boolean;3250  readonly isUntrustedReserveLocation: boolean;3251  readonly isUntrustedTeleportLocation: boolean;3252  readonly isMultiLocationFull: boolean;3253  readonly isMultiLocationNotInvertible: boolean;3254  readonly isBadOrigin: boolean;3255  readonly isInvalidLocation: boolean;3256  readonly isAssetNotFound: boolean;3257  readonly isFailedToTransactAsset: boolean;3258  readonly isNotWithdrawable: boolean;3259  readonly isLocationCannotHold: boolean;3260  readonly isExceedsMaxMessageSize: boolean;3261  readonly isDestinationUnsupported: boolean;3262  readonly isTransport: boolean;3263  readonly isUnroutable: boolean;3264  readonly isUnknownClaim: boolean;3265  readonly isFailedToDecode: boolean;3266  readonly isMaxWeightInvalid: boolean;3267  readonly isNotHoldingFees: boolean;3268  readonly isTooExpensive: boolean;3269  readonly isTrap: boolean;3270  readonly asTrap: u64;3271  readonly isUnhandledXcmVersion: boolean;3272  readonly isWeightLimitReached: boolean;3273  readonly asWeightLimitReached: u64;3274  readonly isBarrier: boolean;3275  readonly isWeightNotComputable: boolean;3276  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';3277}32783279/** @name XcmV2TraitsOutcome */3280export interface XcmV2TraitsOutcome extends Enum {3281  readonly isComplete: boolean;3282  readonly asComplete: u64;3283  readonly isIncomplete: boolean;3284  readonly asIncomplete: ITuple<[u64, XcmV2TraitsError]>;3285  readonly isError: boolean;3286  readonly asError: XcmV2TraitsError;3287  readonly type: 'Complete' | 'Incomplete' | 'Error';3288}32893290/** @name XcmV2WeightLimit */3291export interface XcmV2WeightLimit extends Enum {3292  readonly isUnlimited: boolean;3293  readonly isLimited: boolean;3294  readonly asLimited: Compact<u64>;3295  readonly type: 'Unlimited' | 'Limited';3296}32973298/** @name XcmV2Xcm */3299export interface XcmV2Xcm extends Vec<XcmV2Instruction> {}33003301/** @name XcmVersionedMultiAssets */3302export interface XcmVersionedMultiAssets extends Enum {3303  readonly isV0: boolean;3304  readonly asV0: Vec<XcmV0MultiAsset>;3305  readonly isV1: boolean;3306  readonly asV1: XcmV1MultiassetMultiAssets;3307  readonly type: 'V0' | 'V1';3308}33093310/** @name XcmVersionedMultiLocation */3311export interface XcmVersionedMultiLocation extends Enum {3312  readonly isV0: boolean;3313  readonly asV0: XcmV0MultiLocation;3314  readonly isV1: boolean;3315  readonly asV1: XcmV1MultiLocation;3316  readonly type: 'V0' | 'V1';3317}33183319/** @name XcmVersionedXcm */3320export interface XcmVersionedXcm extends Enum {3321  readonly isV0: boolean;3322  readonly asV0: XcmV0Xcm;3323  readonly isV1: boolean;3324  readonly asV1: XcmV1Xcm;3325  readonly isV2: boolean;3326  readonly asV2: XcmV2Xcm;3327  readonly type: 'V0' | 'V1' | 'V2';3328}33293330export type PHANTOM_DEFAULT = 'default';
modifiedtests/src/interfaces/lookup.tsdiffbeforeafterboth
--- a/tests/src/interfaces/lookup.ts
+++ b/tests/src/interfaces/lookup.ts
@@ -2990,7 +2990,7 @@
    * Lookup400: pallet_rmrk_core::pallet::Error<T>
    **/
   PalletRmrkCoreError: {
-    _enum: ['CorruptedCollectionType', 'NftTypeEncodeError', 'RmrkPropertyKeyIsTooLong', 'RmrkPropertyValueIsTooLong', 'RmrkPropertyIsNotFound', 'UnableToDecodeRmrkData', 'CollectionNotEmpty', 'NoAvailableCollectionId', 'NoAvailableNftId', 'CollectionUnknown', 'NoPermission', 'NonTransferable', 'CollectionFullOrLocked', 'ResourceDoesntExist', 'CannotSendToDescendentOrSelf', 'CannotAcceptNonOwnedNft', 'CannotRejectNonOwnedNft', 'CannotRejectNonPendingNft', 'ResourceNotPending', 'NoAvailableResourceId']
+    _enum: ['CorruptedCollectionType', 'RmrkPropertyKeyIsTooLong', 'RmrkPropertyValueIsTooLong', 'RmrkPropertyIsNotFound', 'UnableToDecodeRmrkData', 'CollectionNotEmpty', 'NoAvailableCollectionId', 'NoAvailableNftId', 'CollectionUnknown', 'NoPermission', 'NonTransferable', 'CollectionFullOrLocked', 'ResourceDoesntExist', 'CannotSendToDescendentOrSelf', 'CannotAcceptNonOwnedNft', 'CannotRejectNonOwnedNft', 'CannotRejectNonPendingNft', 'ResourceNotPending', 'NoAvailableResourceId']
   },
   /**
    * Lookup402: pallet_rmrk_equip::pallet::Error<T>
modifiedtests/src/interfaces/types-lookup.tsdiffbeforeafterboth
--- a/tests/src/interfaces/types-lookup.ts
+++ b/tests/src/interfaces/types-lookup.ts
@@ -3144,7 +3144,6 @@
   /** @name PalletRmrkCoreError (400) */
   export interface PalletRmrkCoreError extends Enum {
     readonly isCorruptedCollectionType: boolean;
-    readonly isNftTypeEncodeError: boolean;
     readonly isRmrkPropertyKeyIsTooLong: boolean;
     readonly isRmrkPropertyValueIsTooLong: boolean;
     readonly isRmrkPropertyIsNotFound: boolean;
@@ -3163,7 +3162,7 @@
     readonly isCannotRejectNonPendingNft: boolean;
     readonly isResourceNotPending: boolean;
     readonly isNoAvailableResourceId: boolean;
-    readonly type: 'CorruptedCollectionType' | 'NftTypeEncodeError' | 'RmrkPropertyKeyIsTooLong' | 'RmrkPropertyValueIsTooLong' | 'RmrkPropertyIsNotFound' | 'UnableToDecodeRmrkData' | 'CollectionNotEmpty' | 'NoAvailableCollectionId' | 'NoAvailableNftId' | 'CollectionUnknown' | 'NoPermission' | 'NonTransferable' | 'CollectionFullOrLocked' | 'ResourceDoesntExist' | 'CannotSendToDescendentOrSelf' | 'CannotAcceptNonOwnedNft' | 'CannotRejectNonOwnedNft' | 'CannotRejectNonPendingNft' | 'ResourceNotPending' | 'NoAvailableResourceId';
+    readonly type: 'CorruptedCollectionType' | 'RmrkPropertyKeyIsTooLong' | 'RmrkPropertyValueIsTooLong' | 'RmrkPropertyIsNotFound' | 'UnableToDecodeRmrkData' | 'CollectionNotEmpty' | 'NoAvailableCollectionId' | 'NoAvailableNftId' | 'CollectionUnknown' | 'NoPermission' | 'NonTransferable' | 'CollectionFullOrLocked' | 'ResourceDoesntExist' | 'CannotSendToDescendentOrSelf' | 'CannotAcceptNonOwnedNft' | 'CannotRejectNonOwnedNft' | 'CannotRejectNonPendingNft' | 'ResourceNotPending' | 'NoAvailableResourceId';
   }
 
   /** @name PalletRmrkEquipError (402) */