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

difftreelog

Merge branch 'feature/pallet-structure-rebased' of https://github.com/UniqueNetwork/unique-chain into feature/pallet-structure-rebased

Fahrrader2022-05-19parents: #547ee7a #aa4cd0e.patch.diff
in: master

68 files changed

modified.maintain/scripts/generate_api.shdiffbeforeafterboth
--- a/.maintain/scripts/generate_api.sh
+++ b/.maintain/scripts/generate_api.sh
@@ -7,6 +7,5 @@
 sed -n '/=== SNIP START ===/, /=== SNIP END ===/{ /=== SNIP START ===/! { /=== SNIP END ===/! p } }' $tmp > $raw
 formatted=$(mktemp)
 prettier --use-tabs $raw > $formatted
-solhint --fix $formatted
 
 mv $formatted $OUTPUT
modifiedCargo.lockdiffbeforeafterboth
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -6391,6 +6391,7 @@
  "sp-core",
  "sp-runtime",
  "sp-std",
+ "struct-versioning",
  "up-data-structs",
 ]
 
@@ -6508,6 +6509,7 @@
  "sp-core",
  "sp-runtime",
  "sp-std",
+ "struct-versioning",
  "up-data-structs",
 ]
 
modifiedclient/rpc/src/lib.rsdiffbeforeafterboth
--- a/client/rpc/src/lib.rs
+++ b/client/rpc/src/lib.rs
@@ -30,8 +30,8 @@
 // RMRK
 use rmrk_rpc::RmrkApi as RmrkRuntimeApi;
 use up_data_structs::{
-	RmrkCollectionId, RmrkNftId, RmrkBaseId, RmrkNftChild,
-	RmrkThemeName, RmrkPropertyKey, RmrkResourceId
+	RmrkCollectionId, RmrkNftId, RmrkBaseId, RmrkNftChild, RmrkThemeName, RmrkPropertyKey,
+	RmrkResourceId,
 };
 
 pub use rmrk_unique_rpc::RmrkApi;
@@ -75,13 +75,6 @@
 	) -> Result<Option<CrossAccountId>>;
 	#[rpc(name = "unique_constMetadata")]
 	fn const_metadata(
-		&self,
-		collection: CollectionId,
-		token: TokenId,
-		at: Option<BlockHash>,
-	) -> Result<Vec<u8>>;
-	#[rpc(name = "unique_variableMetadata")]
-	fn variable_metadata(
 		&self,
 		collection: CollectionId,
 		token: TokenId,
@@ -92,7 +85,7 @@
 	fn collection_properties(
 		&self,
 		collection: CollectionId,
-		keys: Vec<String>,
+		keys: Option<Vec<String>>,
 		at: Option<BlockHash>,
 	) -> Result<Vec<Property>>;
 
@@ -101,7 +94,7 @@
 		&self,
 		collection: CollectionId,
 		token_id: TokenId,
-		properties: Vec<String>,
+		keys: Option<Vec<String>>,
 		at: Option<BlockHash>,
 	) -> Result<Vec<Property>>;
 
@@ -109,7 +102,7 @@
 	fn property_permissions(
 		&self,
 		collection: CollectionId,
-		keys: Vec<String>,
+		keys: Option<Vec<String>>,
 		at: Option<BlockHash>,
 	) -> Result<Vec<PropertyKeyPermission>>;
 
@@ -118,7 +111,7 @@
 		&self,
 		collection: CollectionId,
 		token_id: TokenId,
-		keys: Vec<String>,
+		keys: Option<Vec<String>>,
 		at: Option<BlockHash>,
 	) -> Result<TokenData<CrossAccountId>>;
 
@@ -428,10 +421,6 @@
 	);
 	pass_method!(
 		const_metadata(collection: CollectionId, token: TokenId) -> Vec<u8>, unique_api
-	);
-	pass_method!(
-		variable_metadata(collection: CollectionId, token: TokenId) -> Vec<u8>,
-		unique_api
 	);
 	pass_method!(total_supply(collection: CollectionId) -> u32, unique_api);
 	pass_method!(account_balance(collection: CollectionId, account: CrossAccountId) -> u32, unique_api);
@@ -445,7 +434,7 @@
 		collection: CollectionId,
 
 		#[map(|keys| string_keys_to_bytes_keys(keys))]
-		keys: Vec<String>
+		keys: Option<Vec<String>>
 	) -> Vec<Property>, unique_api);
 
 	pass_method!(token_properties(
@@ -453,14 +442,14 @@
 		token_id: TokenId,
 
 		#[map(|keys| string_keys_to_bytes_keys(keys))]
-		properties: Vec<String>
+		keys: Option<Vec<String>>
 	) -> Vec<Property>, unique_api);
 
 	pass_method!(property_permissions(
 		collection: CollectionId,
 
 		#[map(|keys| string_keys_to_bytes_keys(keys))]
-		keys: Vec<String>
+		keys: Option<Vec<String>>
 	) -> Vec<PropertyKeyPermission>, unique_api);
 
 	pass_method!(token_data(
@@ -468,7 +457,7 @@
 		token_id: TokenId,
 
 		#[map(|keys| string_keys_to_bytes_keys(keys))]
-		keys: Vec<String>,
+		keys: Option<Vec<String>>,
 	) -> TokenData<CrossAccountId>, unique_api);
 
 	pass_method!(adminlist(collection: CollectionId) -> Vec<CrossAccountId>, unique_api);
@@ -549,6 +538,6 @@
 	pass_method!(theme(base_id: RmrkBaseId, theme_name: RmrkThemeName, filter_keys: Option<Vec<RmrkPropertyKey>>) -> Option<Theme>, rmrk_api);
 }
 
-fn string_keys_to_bytes_keys(keys: Vec<String>) -> Vec<Vec<u8>> {
-	keys.into_iter().map(|key| key.into_bytes()).collect()
+fn string_keys_to_bytes_keys(keys: Option<Vec<String>>) -> Option<Vec<Vec<u8>>> {
+	keys.map(|keys| keys.into_iter().map(|key| key.into_bytes()).collect())
 }
modifiednode/cli/src/service.rsdiffbeforeafterboth
--- a/node/cli/src/service.rs
+++ b/node/cli/src/service.rs
@@ -65,25 +65,12 @@
 use fc_rpc_core::types::FilterPool;
 use fc_mapping_sync::{MappingSyncWorker, SyncStrategy};
 
-use unique_runtime_common::types::{
-	AuraId,
-	RuntimeInstance,
-	AccountId,
-	Balance,
-	Index,
-	Hash,
-	Block,
-};
+use unique_runtime_common::types::{AuraId, RuntimeInstance, AccountId, Balance, Index, Hash, Block};
 
 // RMRK
 use up_data_structs::{
-	RmrkCollectionInfo,
-	RmrkInstanceInfo,
-	RmrkResourceInfo,
-	RmrkPropertyInfo,
-	RmrkBaseInfo,
-	RmrkPartType,
-	RmrkTheme,
+	RmrkCollectionInfo, RmrkInstanceInfo, RmrkResourceInfo, RmrkPropertyInfo, RmrkBaseInfo,
+	RmrkPartType, RmrkTheme,
 };
 
 /// Unique native executor instance.
modifiednode/rpc/src/lib.rsdiffbeforeafterboth
--- a/node/rpc/src/lib.rs
+++ b/node/rpc/src/lib.rs
@@ -41,17 +41,12 @@
 use std::{collections::BTreeMap, sync::Arc};
 
 use unique_runtime_common::types::{
-	Hash,
-	AccountId,
-	RuntimeInstance,
-	Index,
-	Block,
-	BlockNumber,
-	Balance,
+	Hash, AccountId, RuntimeInstance, Index, Block, BlockNumber, Balance,
 };
 // RMRK
 use up_data_structs::{
-	RmrkCollectionInfo, RmrkInstanceInfo, RmrkResourceInfo, RmrkPropertyInfo, RmrkBaseInfo, RmrkPartType, RmrkTheme, 
+	RmrkCollectionInfo, RmrkInstanceInfo, RmrkResourceInfo, RmrkPropertyInfo, RmrkBaseInfo,
+	RmrkPartType, RmrkTheme,
 };
 
 /// Public io handler for exporting into other modules
modifiedpallets/common/src/erc.rsdiffbeforeafterboth
--- a/pallets/common/src/erc.rs
+++ b/pallets/common/src/erc.rs
@@ -21,7 +21,7 @@
 use sp_std::vec::Vec;
 use up_data_structs::Property;
 
-use crate::{Pallet, CollectionHandle, Config};
+use crate::{Pallet, CollectionHandle, Config, CollectionProperties};
 
 /// Does not always represent a full collection, for RFT it is either
 /// collection (Implementing ERC721), or specific collection token (Implementing ERC20)
@@ -33,24 +33,35 @@
 
 #[solidity_interface(name = "CollectionProperties")]
 impl<T: Config> CollectionHandle<T> {
-	fn set_property(&mut self, caller: caller, key: string, value: string) -> Result<()> {
-		<Pallet<T>>::set_collection_property(
-			self,
-			&T::CrossAccountId::from_eth(caller),
-			Property {
-				key: <Vec<u8>>::from(key)
-					.try_into()
-					.map_err(|_| "key too large")?,
-				value: <Vec<u8>>::from(value)
-					.try_into()
-					.map_err(|_| "value too large")?,
-			},
-		)
-		.map_err(dispatch_to_evm::<T>)?;
-		Ok(())
+	fn set_collection_property(&mut self, caller: caller, key: string, value: bytes) -> Result<()> {
+		let caller = T::CrossAccountId::from_eth(caller);
+		let key = <Vec<u8>>::from(key)
+			.try_into()
+			.map_err(|_| "key too large")?;
+		let value = value.try_into().map_err(|_| "value too large")?;
+
+		<Pallet<T>>::set_collection_property(self, &caller, Property { key, value })
+			.map_err(dispatch_to_evm::<T>)
 	}
 
-	fn delete_property(&mut self, caller: caller, key: string) -> Result<()> {
-		self.set_property(caller, key, string::new())
+	fn delete_collection_property(&mut self, caller: caller, key: string) -> Result<()> {
+		let caller = T::CrossAccountId::from_eth(caller);
+		let key = <Vec<u8>>::from(key)
+			.try_into()
+			.map_err(|_| "key too large")?;
+
+		<Pallet<T>>::delete_collection_property(self, &caller, key).map_err(dispatch_to_evm::<T>)
+	}
+
+	/// Throws error if key not found
+	fn collection_property(&self, key: string) -> Result<bytes> {
+		let key = <Vec<u8>>::from(key)
+			.try_into()
+			.map_err(|_| "key too large")?;
+
+		let props = <CollectionProperties<T>>::get(self.id);
+		let prop = props.get(&key).ok_or("key not found")?;
+
+		Ok(prop.to_vec())
 	}
 }
modifiedpallets/common/src/lib.rsdiffbeforeafterboth
--- a/pallets/common/src/lib.rs
+++ b/pallets/common/src/lib.rs
@@ -22,23 +22,56 @@
 use pallet_evm::account::CrossAccountId;
 use frame_support::{
 	dispatch::{DispatchErrorWithPostInfo, DispatchResultWithPostInfo, Weight, PostDispatchInfo},
-	ensure, fail,
+	ensure,
 	traits::{Imbalance, Get, Currency, WithdrawReasons, ExistenceRequirement},
 	BoundedVec,
 	weights::Pays,
+	transactional,
 };
 use pallet_evm::GasWeightMapping;
 use up_data_structs::{
-	COLLECTION_NUMBER_LIMIT, Collection, RpcCollection, CollectionId, CreateItemData,
-	MAX_TOKEN_PREFIX_LENGTH, COLLECTION_ADMINS_LIMIT, MetaUpdatePermission, TokenId,
-	CollectionStats, MAX_TOKEN_OWNERSHIP, CollectionMode, NFT_SPONSOR_TRANSFER_TIMEOUT,
-	FUNGIBLE_SPONSOR_TRANSFER_TIMEOUT, REFUNGIBLE_SPONSOR_TRANSFER_TIMEOUT, MAX_SPONSOR_TIMEOUT,
-	CUSTOM_DATA_LIMIT, CollectionLimits, CustomDataLimit, CreateCollectionData, SponsorshipState,
-	CreateItemExData, SponsoringRateLimit, budget::Budget, COLLECTION_FIELD_LIMIT, CollectionField,
-	PhantomType, Property, Properties, PropertiesPermissionMap, PropertyKey, PropertyPermission,
-	PropertiesError, PropertyKeyPermission, TokenData, TrySet,
+	COLLECTION_NUMBER_LIMIT,
+	Collection,
+	RpcCollection,
+	CollectionId,
+	CreateItemData,
+	MAX_TOKEN_PREFIX_LENGTH,
+	COLLECTION_ADMINS_LIMIT,
+	TokenId,
+	CollectionStats,
+	MAX_TOKEN_OWNERSHIP,
+	CollectionMode,
+	NFT_SPONSOR_TRANSFER_TIMEOUT,
+	FUNGIBLE_SPONSOR_TRANSFER_TIMEOUT,
+	REFUNGIBLE_SPONSOR_TRANSFER_TIMEOUT,
+	MAX_SPONSOR_TIMEOUT,
+	CUSTOM_DATA_LIMIT,
+	CollectionLimits,
+	CreateCollectionData,
+	SponsorshipState,
+	CreateItemExData,
+	SponsoringRateLimit,
+	budget::Budget,
+	COLLECTION_FIELD_LIMIT,
+	CollectionField,
+	PhantomType,
+	Property,
+	Properties,
+	PropertiesPermissionMap,
+	PropertyKey,
+	PropertyPermission,
+	PropertiesError,
+	PropertyKeyPermission,
+	TokenData,
+	TrySetProperty,
 	// RMRK
-	RmrkCollectionInfo, RmrkInstanceInfo, RmrkResourceInfo, RmrkPropertyInfo, RmrkBaseInfo, RmrkPartType, RmrkTheme,
+	RmrkCollectionInfo,
+	RmrkInstanceInfo,
+	RmrkResourceInfo,
+	RmrkPropertyInfo,
+	RmrkBaseInfo,
+	RmrkPartType,
+	RmrkTheme,
 	RmrkNftChild,
 };
 
@@ -138,21 +171,6 @@
 			<Error<T>>::AddressNotInAllowlist
 		);
 		Ok(())
-	}
-
-	pub fn check_can_update_meta(
-		&self,
-		subject: &T::CrossAccountId,
-		item_owner: &T::CrossAccountId,
-	) -> DispatchResult {
-		match self.meta_update_permission {
-			MetaUpdatePermission::ItemOwner => {
-				ensure!(subject == item_owner, <Error<T>>::NoPermission);
-				Ok(())
-			}
-			MetaUpdatePermission::Admin => self.check_is_owner_or_admin(subject),
-			MetaUpdatePermission::None => fail!(<Error<T>>::NoPermission),
-		}
 	}
 }
 
@@ -316,8 +334,6 @@
 		CollectionTokenPrefixLimitExceeded,
 		/// Total collections bound exceeded.
 		TotalCollectionsLimitExceeded,
-		/// variable_data exceeded data limit.
-		TokenVariableDataLimitExceeded,
 		/// Exceeded max admin count
 		CollectionAdminCountExceeded,
 		/// Collection limit bounds per collection exceeded
@@ -366,8 +382,8 @@
 		/// Tried to store more property keys than allowed
 		PropertyLimitReached,
 
-		/// Unable to read array of unbounded keys
-		UnableToReadUnboundedKeys,
+		/// Property key is too long
+		PropertyKeyIsTooLong,
 
 		/// Only ASCII letters, digits, and '_', '-' are allowed
 		InvalidCharacterInPropertyKey,
@@ -580,7 +596,6 @@
 			schema_version,
 			sponsorship,
 			limits,
-			meta_update_permission,
 		} = <CollectionById<T>>::get(collection)?;
 
 		let token_property_permissions = <CollectionPropertyPermissions<T>>::get(collection)
@@ -610,7 +625,6 @@
 			schema_version,
 			sponsorship,
 			limits,
-			meta_update_permission,
 			offchain_schema: <CollectionData<T>>::get((
 				collection,
 				CollectionField::OffchainSchema,
@@ -671,7 +685,6 @@
 				.limits
 				.map(|limits| Self::clamp_limits(data.mode.clone(), &Default::default(), limits))
 				.unwrap_or_else(|| Ok(CollectionLimits::default()))?,
-			meta_update_permission: data.meta_update_permission.unwrap_or_default(),
 		};
 
 		let mut collection_properties = up_data_structs::CollectionProperties::get();
@@ -775,6 +788,7 @@
 		Ok(())
 	}
 
+	#[transactional]
 	pub fn set_collection_properties(
 		collection: &CollectionHandle<T>,
 		sender: &T::CrossAccountId,
@@ -807,6 +821,7 @@
 		Ok(())
 	}
 
+	#[transactional]
 	pub fn delete_collection_properties(
 		collection: &CollectionHandle<T>,
 		sender: &T::CrossAccountId,
@@ -849,6 +864,7 @@
 		Ok(())
 	}
 
+	#[transactional]
 	pub fn set_property_permissions(
 		collection: &CollectionHandle<T>,
 		sender: &T::CrossAccountId,
@@ -867,60 +883,69 @@
 		keys.into_iter()
 			.map(|key| -> Result<PropertyKey, DispatchError> {
 				key.try_into()
-					.map_err(|_| <Error<T>>::UnableToReadUnboundedKeys.into())
+					.map_err(|_| <Error<T>>::PropertyKeyIsTooLong.into())
 			})
 			.collect::<Result<Vec<PropertyKey>, DispatchError>>()
-	}
-
-	pub fn check_property_key(key: &PropertyKey) -> Result<(), DispatchError> {
-		let key_str = sp_std::str::from_utf8(key.as_slice())
-			.map_err(|_| <Error<T>>::InvalidCharacterInPropertyKey)?;
-
-		for ch in key_str.chars() {
-			if !ch.is_ascii_alphanumeric() && ch != '_' && ch != '-' {
-				return Err(<Error<T>>::InvalidCharacterInPropertyKey.into());
-			}
-		}
-
-		Ok(())
 	}
 
 	pub fn filter_collection_properties(
 		collection_id: CollectionId,
-		keys: Vec<PropertyKey>,
+		keys: Option<Vec<PropertyKey>>,
 	) -> Result<Vec<Property>, DispatchError> {
 		let properties = Self::collection_properties(collection_id);
 
 		let properties = keys
-			.into_iter()
-			.filter_map(|key| {
-				properties.get(&key).map(|value| Property {
-					key,
-					value: value.clone(),
-				})
+			.map(|keys| {
+				keys.into_iter()
+					.filter_map(|key| {
+						properties.get(&key).map(|value| Property {
+							key,
+							value: value.clone(),
+						})
+					})
+					.collect()
 			})
-			.collect();
+			.unwrap_or_else(|| {
+				properties
+					.iter()
+					.map(|(key, value)| Property {
+						key: key.clone(),
+						value: value.clone(),
+					})
+					.collect()
+			});
 
 		Ok(properties)
 	}
 
 	pub fn filter_property_permissions(
 		collection_id: CollectionId,
-		keys: Vec<PropertyKey>,
+		keys: Option<Vec<PropertyKey>>,
 	) -> Result<Vec<PropertyKeyPermission>, DispatchError> {
 		let permissions = Self::property_permissions(collection_id);
 
 		let key_permissions = keys
-			.into_iter()
-			.filter_map(|key| {
+			.map(|keys| {
+				keys.into_iter()
+					.filter_map(|key| {
+						permissions
+							.get(&key)
+							.map(|permission| PropertyKeyPermission {
+								key,
+								permission: permission.clone(),
+							})
+					})
+					.collect()
+			})
+			.unwrap_or_else(|| {
 				permissions
-					.get(&key)
-					.map(|permission| PropertyKeyPermission {
-						key,
+					.iter()
+					.map(|(key, permission)| PropertyKeyPermission {
+						key: key.clone(),
 						permission: permission.clone(),
 					})
-			})
-			.collect();
+					.collect()
+			});
 
 		Ok(key_permissions)
 	}
@@ -1086,7 +1111,6 @@
 	fn approve() -> Weight;
 	fn transfer_from() -> Weight;
 	fn burn_from() -> Weight;
-	fn set_variable_metadata(bytes: u32) -> Weight;
 }
 
 pub trait CommonCollectionOperations<T: Config> {
@@ -1174,13 +1198,6 @@
 		token: TokenId,
 		amount: u128,
 		nesting_budget: &dyn Budget,
-	) -> DispatchResultWithPostInfo;
-
-	fn set_variable_metadata(
-		&self,
-		sender: T::CrossAccountId,
-		token: TokenId,
-		data: BoundedVec<u8, CustomDataLimit>,
 	) -> DispatchResultWithPostInfo;
 
 	fn check_nesting(
@@ -1198,8 +1215,7 @@
 
 	fn token_owner(&self, token: TokenId) -> Option<T::CrossAccountId>;
 	fn const_metadata(&self, token: TokenId) -> Vec<u8>;
-	fn variable_metadata(&self, token: TokenId) -> Vec<u8>;
-	fn token_properties(&self, token_id: TokenId, keys: Vec<PropertyKey>) -> Vec<Property>;
+	fn token_properties(&self, token_id: TokenId, keys: Option<Vec<PropertyKey>>) -> Vec<Property>;
 	/// Amount of unique collection tokens
 	fn total_supply(&self) -> u32;
 	/// Amount of different tokens account has (Applicable to nonfungible/refungible)
@@ -1232,6 +1248,7 @@
 			PropertiesError::NoSpaceForProperty => Self::NoSpaceForProperty,
 			PropertiesError::PropertyLimitReached => Self::PropertyLimitReached,
 			PropertiesError::InvalidCharacterInPropertyKey => Self::InvalidCharacterInPropertyKey,
+			PropertiesError::PropertyKeyIsTooLong => Self::PropertyKeyIsTooLong,
 			PropertiesError::EmptyPropertyKey => Self::EmptyPropertyKey,
 		}
 	}
modifiedpallets/evm-contract-helpers/src/stubs/ContractHelpers.rawdiffbeforeafterboth

binary blob — no preview

modifiedpallets/fungible/src/common.rsdiffbeforeafterboth
--- a/pallets/fungible/src/common.rs
+++ b/pallets/fungible/src/common.rs
@@ -16,12 +16,12 @@
 
 use core::marker::PhantomData;
 
-use frame_support::{dispatch::DispatchResultWithPostInfo, ensure, fail, weights::Weight, BoundedVec};
+use frame_support::{dispatch::DispatchResultWithPostInfo, ensure, fail, weights::Weight};
 use up_data_structs::{TokenId, CollectionId, CreateItemExData, budget::Budget};
 use pallet_common::{CommonCollectionOperations, CommonWeightInfo, with_weight};
 use sp_runtime::ArithmeticError;
 use sp_std::{vec::Vec, vec};
-use up_data_structs::{CustomDataLimit, Property, PropertyKey, PropertyKeyPermission};
+use up_data_structs::{Property, PropertyKey, PropertyKeyPermission};
 
 use crate::{
 	Allowance, Balance, Config, Error, FungibleHandle, Pallet, SelfWeightOf, weights::WeightInfo,
@@ -84,11 +84,6 @@
 
 	fn burn_from() -> Weight {
 		<SelfWeightOf<T>>::burn_from()
-	}
-
-	fn set_variable_metadata(_bytes: u32) -> Weight {
-		// Error
-		0
 	}
 }
 
@@ -287,15 +282,6 @@
 		fail!(<Error<T>>::SettingPropertiesNotAllowed)
 	}
 
-	fn set_variable_metadata(
-		&self,
-		_sender: T::CrossAccountId,
-		_token: TokenId,
-		_data: BoundedVec<u8, CustomDataLimit>,
-	) -> DispatchResultWithPostInfo {
-		fail!(<Error<T>>::FungibleItemsDontHaveData)
-	}
-
 	fn check_nesting(
 		&self,
 		_sender: <T>::CrossAccountId,
@@ -330,13 +316,14 @@
 		None
 	}
 	fn const_metadata(&self, _token: TokenId) -> Vec<u8> {
-		Vec::new()
-	}
-	fn variable_metadata(&self, _token: TokenId) -> Vec<u8> {
 		Vec::new()
 	}
 
-	fn token_properties(&self, _token_id: TokenId, _keys: Vec<PropertyKey>) -> Vec<Property> {
+	fn token_properties(
+		&self,
+		_token_id: TokenId,
+		_keys: Option<Vec<PropertyKey>>,
+	) -> Vec<Property> {
 		Vec::new()
 	}
 
modifiedpallets/fungible/src/stubs/UniqueFungible.rawdiffbeforeafterboth

binary blob — no preview

modifiedpallets/fungible/src/stubs/UniqueFungible.soldiffbeforeafterboth
--- a/pallets/fungible/src/stubs/UniqueFungible.sol
+++ b/pallets/fungible/src/stubs/UniqueFungible.sol
@@ -8,8 +8,13 @@
 	uint8 dummy;
 	string stub_error = "this contract is implemented in native";
 }
+
 contract ERC165 is Dummy {
-	function supportsInterface(bytes4 interfaceID) external view returns (bool) {
+	function supportsInterface(bytes4 interfaceID)
+		external
+		view
+		returns (bool)
+	{
 		require(false, stub_error);
 		interfaceID;
 		return true;
@@ -19,24 +24,11 @@
 // Inline
 contract ERC20Events {
 	event Transfer(address indexed from, address indexed to, uint256 value);
-	event Approval(address indexed owner, address indexed spender, uint256 value);
-}
-
-// Selector: 56fd500b
-contract CollectionProperties is Dummy, ERC165 {
-	// Selector: setProperty(string,string) 62d9491f
-	function setProperty(string memory key, string memory value) public {
-		require(false, stub_error);
-		key;
-		value;
-		dummy = 0;
-	}
-	// Selector: deleteProperty(string) 34241914
-	function deleteProperty(string memory key) public {
-		require(false, stub_error);
-		key;
-		dummy = 0;
-	}
+	event Approval(
+		address indexed owner,
+		address indexed spender,
+		uint256 value
+	);
 }
 
 // Selector: 79cc6790
@@ -59,24 +51,28 @@
 		dummy;
 		return "";
 	}
+
 	// Selector: symbol() 95d89b41
 	function symbol() public view returns (string memory) {
 		require(false, stub_error);
 		dummy;
 		return "";
 	}
+
 	// Selector: totalSupply() 18160ddd
 	function totalSupply() public view returns (uint256) {
 		require(false, stub_error);
 		dummy;
 		return 0;
 	}
+
 	// Selector: decimals() 313ce567
 	function decimals() public view returns (uint8) {
 		require(false, stub_error);
 		dummy;
 		return 0;
 	}
+
 	// Selector: balanceOf(address) 70a08231
 	function balanceOf(address owner) public view returns (uint256) {
 		require(false, stub_error);
@@ -84,6 +80,7 @@
 		dummy;
 		return 0;
 	}
+
 	// Selector: transfer(address,uint256) a9059cbb
 	function transfer(address to, uint256 amount) public returns (bool) {
 		require(false, stub_error);
@@ -92,8 +89,13 @@
 		dummy = 0;
 		return false;
 	}
+
 	// Selector: transferFrom(address,address,uint256) 23b872dd
-	function transferFrom(address from, address to, uint256 amount) public returns (bool) {
+	function transferFrom(
+		address from,
+		address to,
+		uint256 amount
+	) public returns (bool) {
 		require(false, stub_error);
 		from;
 		to;
@@ -101,6 +103,7 @@
 		dummy = 0;
 		return false;
 	}
+
 	// Selector: approve(address,uint256) 095ea7b3
 	function approve(address spender, uint256 amount) public returns (bool) {
 		require(false, stub_error);
@@ -109,8 +112,13 @@
 		dummy = 0;
 		return false;
 	}
+
 	// Selector: allowance(address,address) dd62ed3e
-	function allowance(address owner, address spender) public view returns (uint256) {
+	function allowance(address owner, address spender)
+		public
+		view
+		returns (uint256)
+	{
 		require(false, stub_error);
 		owner;
 		spender;
@@ -119,6 +127,44 @@
 	}
 }
 
-contract UniqueFungible is Dummy, ERC165, ERC20, ERC20UniqueExtensions, CollectionProperties {
+// Selector: 9b5e29c5
+contract CollectionProperties is Dummy, ERC165 {
+	// Selector: setCollectionProperty(string,bytes) 2f073f66
+	function setCollectionProperty(string memory key, bytes memory value)
+		public
+	{
+		require(false, stub_error);
+		key;
+		value;
+		dummy = 0;
+	}
+
+	// Selector: deleteCollectionProperty(string) 7b7debce
+	function deleteCollectionProperty(string memory key) public {
+		require(false, stub_error);
+		key;
+		dummy = 0;
+	}
+
+	// Throws error if key not found
+	//
+	// Selector: collectionProperty(string) cf24fd6d
+	function collectionProperty(string memory key)
+		public
+		view
+		returns (bytes memory)
+	{
+		require(false, stub_error);
+		key;
+		dummy;
+		return hex"";
+	}
 }
 
+contract UniqueFungible is
+	Dummy,
+	ERC165,
+	ERC20,
+	ERC20UniqueExtensions,
+	CollectionProperties
+{}
modifiedpallets/nonfungible/Cargo.tomldiffbeforeafterboth
--- a/pallets/nonfungible/Cargo.toml
+++ b/pallets/nonfungible/Cargo.toml
@@ -27,6 +27,7 @@
 scale-info = { version = "2.0.1", default-features = false, features = [
     "derive",
 ] }
+struct-versioning = { path = "../../crates/struct-versioning" }
 
 [features]
 default = ["std"]
modifiedpallets/nonfungible/src/benchmarking.rsdiffbeforeafterboth
--- a/pallets/nonfungible/src/benchmarking.rs
+++ b/pallets/nonfungible/src/benchmarking.rs
@@ -28,12 +28,7 @@
 
 fn create_max_item_data<T: Config>(owner: T::CrossAccountId) -> CreateItemData<T> {
 	let const_data = create_data::<CUSTOM_DATA_LIMIT>();
-	let variable_data = create_data::<CUSTOM_DATA_LIMIT>();
-	CreateItemData::<T> {
-		const_data,
-		variable_data,
-		owner,
-	}
+	CreateItemData::<T> { const_data, owner }
 }
 fn create_max_item<T: Config>(
 	collection: &NonfungibleHandle<T>,
@@ -125,14 +120,4 @@
 		let item = create_max_item(&collection, &owner, sender.clone())?;
 		<Pallet<T>>::set_allowance(&collection, &sender, item, Some(&burner))?;
 	}: {<Pallet<T>>::burn_from(&collection, &burner, &sender, item, &Unlimited)?}
-
-	set_variable_metadata {
-		let b in 0..CUSTOM_DATA_LIMIT;
-		bench_init!{
-			owner: sub; collection: collection(owner);
-			owner: cross_from_sub; sender: cross_sub;
-		};
-		let item = create_max_item(&collection, &owner, sender.clone())?;
-		let data = create_var_data(b).try_into().unwrap();
-	}: {<Pallet<T>>::set_variable_metadata(&collection, &sender, item, data)?}
 }
modifiedpallets/nonfungible/src/common.rsdiffbeforeafterboth
--- a/pallets/nonfungible/src/common.rs
+++ b/pallets/nonfungible/src/common.rs
@@ -16,10 +16,10 @@
 
 use core::marker::PhantomData;
 
-use frame_support::{dispatch::DispatchResultWithPostInfo, ensure, fail, weights::Weight, BoundedVec};
+use frame_support::{dispatch::DispatchResultWithPostInfo, ensure, fail, weights::Weight};
 use up_data_structs::{
-	TokenId, CustomDataLimit, CreateItemExData, CollectionId, budget::Budget, Property,
-	PropertyKey, PropertyKeyPermission,
+	TokenId, CreateItemExData, CollectionId, budget::Budget, Property, PropertyKey,
+	PropertyKeyPermission,
 };
 use pallet_common::{CommonCollectionOperations, CommonWeightInfo, with_weight};
 use sp_runtime::DispatchError;
@@ -86,10 +86,6 @@
 	fn burn_from() -> Weight {
 		<SelfWeightOf<T>>::burn_from()
 	}
-
-	fn set_variable_metadata(bytes: u32) -> Weight {
-		<SelfWeightOf<T>>::set_variable_metadata(bytes)
-	}
 }
 
 fn map_create_data<T: Config>(
@@ -99,7 +95,6 @@
 	match data {
 		up_data_structs::CreateItemData::NFT(data) => Ok(CreateItemData::<T> {
 			const_data: data.const_data,
-			variable_data: data.variable_data,
 			properties: data.properties,
 			owner: to.clone(),
 		}),
@@ -184,7 +179,7 @@
 		let weight = <CommonWeights<T>>::delete_collection_properties(property_keys.len() as u32);
 
 		with_weight(
-			<Pallet<T>>::delete_collection_properties(self, &sender, property_keys),
+			<Pallet<T>>::delete_collection_properties(self, sender, property_keys),
 			weight,
 		)
 	}
@@ -327,19 +322,6 @@
 		}
 	}
 
-	fn set_variable_metadata(
-		&self,
-		sender: T::CrossAccountId,
-		token: TokenId,
-		data: BoundedVec<u8, CustomDataLimit>,
-	) -> DispatchResultWithPostInfo {
-		let len = data.len();
-		with_weight(
-			<Pallet<T>>::set_variable_metadata(self, &sender, token, data),
-			<CommonWeights<T>>::set_variable_metadata(len as u32),
-		)
-	}
-
 	fn check_nesting(
 		&self,
 		sender: T::CrossAccountId,
@@ -379,24 +361,29 @@
 			.unwrap_or_default()
 			.into_inner()
 	}
-	fn variable_metadata(&self, token: TokenId) -> Vec<u8> {
-		<TokenData<T>>::get((self.id, token))
-			.map(|t| t.variable_data)
-			.unwrap_or_default()
-			.into_inner()
-	}
 
-	fn token_properties(&self, token_id: TokenId, keys: Vec<PropertyKey>) -> Vec<Property> {
+	fn token_properties(&self, token_id: TokenId, keys: Option<Vec<PropertyKey>>) -> Vec<Property> {
 		let properties = <Pallet<T>>::token_properties((self.id, token_id));
 
-		keys.into_iter()
-			.filter_map(|key| {
-				properties.get(&key).map(|value| Property {
-					key,
+		keys.map(|keys| {
+			keys.into_iter()
+				.filter_map(|key| {
+					properties.get(&key).map(|value| Property {
+						key,
+						value: value.clone(),
+					})
+				})
+				.collect()
+		})
+		.unwrap_or_else(|| {
+			properties
+				.iter()
+				.map(|(key, value)| Property {
+					key: key.clone(),
 					value: value.clone(),
 				})
-			})
-			.collect()
+				.collect()
+		})
 	}
 
 	fn total_supply(&self) -> u32 {
modifiedpallets/nonfungible/src/erc.rsdiffbeforeafterboth
--- a/pallets/nonfungible/src/erc.rs
+++ b/pallets/nonfungible/src/erc.rs
@@ -21,10 +21,10 @@
 };
 use evm_coder::{ToLog, execution::*, generate_stubgen, solidity, solidity_interface, types::*, weight};
 use frame_support::BoundedVec;
-use up_data_structs::{TokenId, SchemaVersion};
+use up_data_structs::{TokenId, SchemaVersion, PropertyPermission, PropertyKeyPermission, Property};
 use pallet_evm_coder_substrate::dispatch_to_evm;
 use sp_core::{H160, U256};
-use sp_std::{vec::Vec, vec};
+use sp_std::vec::Vec;
 use pallet_common::{
 	erc::{CommonEvmHandler, PrecompileResult, CollectionPropertiesCall},
 	CollectionHandle,
@@ -35,9 +35,80 @@
 
 use crate::{
 	AccountBalance, Config, CreateItemData, NonfungibleHandle, Pallet, TokenData, TokensMinted,
-	SelfWeightOf, weights::WeightInfo,
+	SelfWeightOf, weights::WeightInfo, TokenProperties,
 };
 
+#[solidity_interface(name = "TokenProperties")]
+impl<T: Config> NonfungibleHandle<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_property_permission(
+			self,
+			&caller,
+			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>)
+	}
+
+	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")?;
+
+		<Pallet<T>>::set_token_property(self, &caller, TokenId(token_id), Property { key, value })
+			.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")?;
+
+		<Pallet<T>>::delete_token_property(self, &caller, TokenId(token_id), key)
+			.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())
+	}
+}
+
 fn error_unsupported_schema_version() -> Error {
 	alloc::format!(
 		"Unsupported schema version! Support only {:?}",
@@ -274,7 +345,6 @@
 			&caller,
 			CreateItemData::<T> {
 				const_data: BoundedVec::default(),
-				variable_data: BoundedVec::default(),
 				properties: BoundedVec::default(),
 				owner: to,
 			},
@@ -322,7 +392,6 @@
 				const_data: Vec::<u8>::from(token_uri)
 					.try_into()
 					.map_err(|_| "token uri is too long")?,
-				variable_data: BoundedVec::default(),
 				properties: BoundedVec::default(),
 				owner: to,
 			},
@@ -387,37 +456,6 @@
 			.into())
 	}
 
-	#[weight(<SelfWeightOf<T>>::set_variable_metadata(data.len() as u32))]
-	fn set_variable_metadata(
-		&mut self,
-		caller: caller,
-		token_id: uint256,
-		data: bytes,
-	) -> Result<void> {
-		let caller = T::CrossAccountId::from_eth(caller);
-		let token = token_id.try_into()?;
-
-		<Pallet<T>>::set_variable_metadata(
-			self,
-			&caller,
-			token,
-			data.try_into()
-				.map_err(|_| "metadata size exceeded limit")?,
-		)
-		.map_err(dispatch_to_evm::<T>)?;
-		Ok(())
-	}
-
-	fn get_variable_metadata(&self, token_id: uint256) -> Result<bytes> {
-		self.consume_store_reads(1)?;
-		let token: TokenId = token_id.try_into()?;
-
-		Ok(<TokenData<T>>::get((self.id, token))
-			.ok_or("token not found")?
-			.variable_data
-			.into_inner())
-	}
-
 	#[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);
@@ -440,7 +478,6 @@
 		let data = (0..total_tokens)
 			.map(|_| CreateItemData::<T> {
 				const_data: BoundedVec::default(),
-				variable_data: BoundedVec::default(),
 				properties: BoundedVec::default(),
 				owner: to.clone(),
 			})
@@ -484,7 +521,6 @@
 				const_data: Vec::<u8>::from(token_uri)
 					.try_into()
 					.map_err(|_| "token uri is too long")?,
-				variable_data: vec![].try_into().unwrap(),
 				properties: BoundedVec::default(),
 				owner: to.clone(),
 			});
@@ -505,7 +541,8 @@
 		ERC721UniqueExtensions,
 		ERC721Mintable,
 		ERC721Burnable,
-		via("CollectionHandle<T>", common_mut, CollectionProperties)
+		via("CollectionHandle<T>", common_mut, CollectionProperties),
+		TokenProperties,
 	)
 )]
 impl<T: Config> NonfungibleHandle<T> {}
modifiedpallets/nonfungible/src/lib.rsdiffbeforeafterboth
--- a/pallets/nonfungible/src/lib.rs
+++ b/pallets/nonfungible/src/lib.rs
@@ -18,11 +18,11 @@
 
 use erc::ERC721Events;
 use evm_coder::ToLog;
-use frame_support::{BoundedVec, ensure, fail};
+use frame_support::{BoundedVec, ensure, fail, transactional};
 use up_data_structs::{
 	AccessMode, CollectionId, CustomDataLimit, TokenId, CreateCollectionData, CreateNftExData,
 	mapping::TokenAddressMapping, NestingRule, budget::Budget, Property, PropertyPermission,
-	PropertyKey, PropertyKeyPermission, Properties, TrySet,
+	PropertyKey, PropertyKeyPermission, Properties, TrySetProperty,
 };
 use pallet_evm::{account::CrossAccountId, Pallet as PalletEvm};
 use pallet_common::{
@@ -49,17 +49,24 @@
 pub type CreateItemData<T> = CreateNftExData<<T as pallet_evm::account::Config>::CrossAccountId>;
 pub(crate) type SelfWeightOf<T> = <T as Config>::WeightInfo;
 
+#[struct_versioning::versioned(version = 2, upper)]
 #[derive(Encode, Decode, TypeInfo, MaxEncodedLen)]
 pub struct ItemData<CrossAccountId> {
 	pub const_data: BoundedVec<u8, CustomDataLimit>,
+
+	#[version(..2)]
 	pub variable_data: BoundedVec<u8, CustomDataLimit>,
+
 	pub owner: CrossAccountId,
 }
 
 #[frame_support::pallet]
 pub mod pallet {
 	use super::*;
-	use frame_support::{Blake2_128Concat, Twox64Concat, pallet_prelude::*, storage::Key};
+	use frame_support::{
+		Blake2_128Concat, Twox64Concat, pallet_prelude::*, storage::Key, traits::StorageVersion,
+	};
+	use frame_system::pallet_prelude::*;
 	use up_data_structs::{CollectionId, TokenId};
 	use super::weights::WeightInfo;
 
@@ -78,7 +85,10 @@
 		type WeightInfo: WeightInfo;
 	}
 
+	const STORAGE_VERSION: StorageVersion = StorageVersion::new(1);
+
 	#[pallet::pallet]
+	#[pallet::storage_version(STORAGE_VERSION)]
 	#[pallet::generate_store(pub(super) trait Store)]
 	pub struct Pallet<T>(_);
 
@@ -133,6 +143,19 @@
 		Value = T::CrossAccountId,
 		QueryKind = OptionQuery,
 	>;
+
+	#[pallet::hooks]
+	impl<T: Config> Hooks<BlockNumberFor<T>> for Pallet<T> {
+		fn on_runtime_upgrade() -> Weight {
+			if StorageVersion::get::<Pallet<T>>() < StorageVersion::new(1) {
+				<TokenData<T>>::translate_values::<ItemDataVersion1<T::CrossAccountId>, _>(|v| {
+					Some(<ItemDataVersion2<T::CrossAccountId>>::from(v))
+				})
+			}
+
+			0
+		}
+	}
 }
 
 pub struct NonfungibleHandle<T: Config>(pallet_common::CollectionHandle<T>);
@@ -286,6 +309,7 @@
 		Ok(())
 	}
 
+	#[transactional]
 	pub fn set_token_properties(
 		collection: &NonfungibleHandle<T>,
 		sender: &T::CrossAccountId,
@@ -329,8 +353,8 @@
 	) -> DispatchResult {
 		let permission = <PalletCommon<T>>::property_permissions(collection.id)
 			.get(property_key)
-			.map(|p| p.clone())
-			.unwrap_or(PropertyPermission::none());
+			.cloned()
+			.unwrap_or_else(PropertyPermission::none);
 
 		let token_data = <TokenData<T>>::get((collection.id, token_id))
 			.ok_or(<CommonError<T>>::TokenNotFound)?;
@@ -369,6 +393,7 @@
 		}
 	}
 
+	#[transactional]
 	pub fn delete_token_properties(
 		collection: &NonfungibleHandle<T>,
 		sender: &T::CrossAccountId,
@@ -406,6 +431,14 @@
 		<PalletCommon<T>>::set_property_permissions(collection, sender, property_permissions)
 	}
 
+	pub fn set_property_permission(
+		collection: &CollectionHandle<T>,
+		sender: &T::CrossAccountId,
+		permission: PropertyKeyPermission,
+	) -> DispatchResult {
+		<PalletCommon<T>>::set_property_permission(collection, sender, permission)
+	}
+
 	pub fn transfer(
 		collection: &NonfungibleHandle<T>,
 		from: &T::CrossAccountId,
@@ -577,7 +610,6 @@
 				(collection.id, token),
 				ItemData {
 					const_data: data.const_data,
-					variable_data: data.variable_data,
 					owner: data.owner.clone(),
 				},
 			);
@@ -773,28 +805,6 @@
 		// =========
 
 		Self::burn(collection, from, token)
-	}
-
-	pub fn set_variable_metadata(
-		collection: &NonfungibleHandle<T>,
-		sender: &T::CrossAccountId,
-		token: TokenId,
-		data: BoundedVec<u8, CustomDataLimit>,
-	) -> DispatchResult {
-		let token_data =
-			<TokenData<T>>::get((collection.id, token)).ok_or(<CommonError<T>>::TokenNotFound)?;
-		collection.check_can_update_meta(sender, &token_data.owner)?;
-
-		// =========
-
-		<TokenData<T>>::insert(
-			(collection.id, token),
-			ItemData {
-				variable_data: data,
-				..token_data
-			},
-		);
-		Ok(())
 	}
 
 	pub fn check_nesting(
modifiedpallets/nonfungible/src/stubs/UniqueNFT.rawdiffbeforeafterboth

binary blob — no preview

modifiedpallets/nonfungible/src/stubs/UniqueNFT.soldiffbeforeafterboth
--- a/pallets/nonfungible/src/stubs/UniqueNFT.sol
+++ b/pallets/nonfungible/src/stubs/UniqueNFT.sol
@@ -51,6 +51,60 @@
 	event MintingFinished();
 }
 
+// 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 {
 	// Selector: burn(uint256) 42966c68
@@ -276,7 +330,41 @@
 	}
 }
 
-// Selector: e562194d
+// Selector: 9b5e29c5
+contract CollectionProperties is Dummy, ERC165 {
+	// Selector: setCollectionProperty(string,bytes) 2f073f66
+	function setCollectionProperty(string memory key, bytes memory value)
+		public
+	{
+		require(false, stub_error);
+		key;
+		value;
+		dummy = 0;
+	}
+
+	// Selector: deleteCollectionProperty(string) 7b7debce
+	function deleteCollectionProperty(string memory key) public {
+		require(false, stub_error);
+		key;
+		dummy = 0;
+	}
+
+	// Throws error if key not found
+	//
+	// Selector: collectionProperty(string) cf24fd6d
+	function collectionProperty(string memory key)
+		public
+		view
+		returns (bytes memory)
+	{
+		require(false, stub_error);
+		key;
+		dummy;
+		return hex"";
+	}
+}
+
+// Selector: d74d154f
 contract ERC721UniqueExtensions is Dummy, ERC165 {
 	// Selector: transfer(address,uint256) a9059cbb
 	function transfer(address to, uint256 tokenId) public {
@@ -299,26 +387,6 @@
 		require(false, stub_error);
 		dummy;
 		return 0;
-	}
-
-	// Selector: setVariableMetadata(uint256,bytes) d4eac26d
-	function setVariableMetadata(uint256 tokenId, bytes memory data) public {
-		require(false, stub_error);
-		tokenId;
-		data;
-		dummy = 0;
-	}
-
-	// Selector: getVariableMetadata(uint256) e6c5ce6f
-	function getVariableMetadata(uint256 tokenId)
-		public
-		view
-		returns (bytes memory)
-	{
-		require(false, stub_error);
-		tokenId;
-		dummy;
-		return hex"";
 	}
 
 	// Selector: mintBulk(address,uint256[]) 44a9945e
@@ -354,5 +422,7 @@
 	ERC721Enumerable,
 	ERC721UniqueExtensions,
 	ERC721Mintable,
-	ERC721Burnable
+	ERC721Burnable,
+	CollectionProperties,
+	TokenProperties
 {}
modifiedpallets/nonfungible/src/weights.rsdiffbeforeafterboth
--- a/pallets/nonfungible/src/weights.rs
+++ b/pallets/nonfungible/src/weights.rs
@@ -45,7 +45,6 @@
 	fn approve() -> Weight;
 	fn transfer_from() -> Weight;
 	fn burn_from() -> Weight;
-	fn set_variable_metadata(b: u32, ) -> Weight;
 }
 
 /// Weights for pallet_nonfungible using the Substrate node and recommended hardware.
@@ -155,12 +154,6 @@
 		(27_580_000 as Weight)
 			.saturating_add(T::DbWeight::get().reads(4 as Weight))
 			.saturating_add(T::DbWeight::get().writes(5 as Weight))
-	}
-	// Storage: Nonfungible TokenData (r:1 w:1)
-	fn set_variable_metadata(_b: u32, ) -> Weight {
-		(7_700_000 as Weight)
-			.saturating_add(T::DbWeight::get().reads(1 as Weight))
-			.saturating_add(T::DbWeight::get().writes(1 as Weight))
 	}
 }
 
@@ -270,11 +263,5 @@
 		(27_580_000 as Weight)
 			.saturating_add(RocksDbWeight::get().reads(4 as Weight))
 			.saturating_add(RocksDbWeight::get().writes(5 as Weight))
-	}
-	// Storage: Nonfungible TokenData (r:1 w:1)
-	fn set_variable_metadata(_b: u32, ) -> Weight {
-		(7_700_000 as Weight)
-			.saturating_add(RocksDbWeight::get().reads(1 as Weight))
-			.saturating_add(RocksDbWeight::get().writes(1 as Weight))
 	}
 }
modifiedpallets/refungible/Cargo.tomldiffbeforeafterboth
--- a/pallets/refungible/Cargo.toml
+++ b/pallets/refungible/Cargo.toml
@@ -24,6 +24,7 @@
 scale-info = { version = "2.0.1", default-features = false, features = [
     "derive",
 ] }
+struct-versioning = { path = "../../crates/struct-versioning" }
 
 [features]
 default = ["std"]
modifiedpallets/refungible/src/benchmarking.rsdiffbeforeafterboth
--- a/pallets/refungible/src/benchmarking.rs
+++ b/pallets/refungible/src/benchmarking.rs
@@ -31,10 +31,8 @@
 	users: impl IntoIterator<Item = (CrossAccountId, u128)>,
 ) -> CreateRefungibleExData<CrossAccountId> {
 	let const_data = create_data::<CUSTOM_DATA_LIMIT>();
-	let variable_data = create_data::<CUSTOM_DATA_LIMIT>();
 	CreateRefungibleExData {
 		const_data,
-		variable_data,
 		users: users
 			.into_iter()
 			.collect::<BTreeMap<_, _>>()
@@ -203,14 +201,4 @@
 		let item = create_max_item(&collection, &owner, [(sender.clone(), 200)])?;
 		<Pallet<T>>::set_allowance(&collection, &sender, &burner, item, 200)?;
 	}: {<Pallet<T>>::burn_from(&collection, &burner, &sender, item, 200, &Unlimited)?}
-
-	set_variable_metadata {
-		let b in 0..CUSTOM_DATA_LIMIT;
-		bench_init!{
-			owner: sub; collection: collection(owner);
-			sender: cross_from_sub(owner);
-		};
-		let item = create_max_item(&collection, &sender, [(sender.clone(), 200)])?;
-		let data = create_var_data(b).try_into().unwrap();
-	}: {<Pallet<T>>::set_variable_metadata(&collection, &sender, item, data)?}
 }
modifiedpallets/refungible/src/common.rsdiffbeforeafterboth
--- a/pallets/refungible/src/common.rs
+++ b/pallets/refungible/src/common.rs
@@ -17,10 +17,10 @@
 use core::marker::PhantomData;
 
 use sp_std::collections::btree_map::BTreeMap;
-use frame_support::{dispatch::DispatchResultWithPostInfo, fail, weights::Weight, BoundedVec};
+use frame_support::{dispatch::DispatchResultWithPostInfo, fail, weights::Weight};
 use up_data_structs::{
-	CollectionId, TokenId, CustomDataLimit, CreateItemExData, CreateRefungibleExData,
-	budget::Budget, Property, PropertyKey, PropertyKeyPermission,
+	CollectionId, TokenId, CreateItemExData, CreateRefungibleExData, budget::Budget, Property,
+	PropertyKey, PropertyKeyPermission,
 };
 use pallet_common::{CommonCollectionOperations, CommonWeightInfo, with_weight};
 use sp_runtime::DispatchError;
@@ -110,10 +110,6 @@
 
 	fn burn_from() -> Weight {
 		<SelfWeightOf<T>>::burn_from()
-	}
-
-	fn set_variable_metadata(bytes: u32) -> Weight {
-		<SelfWeightOf<T>>::set_variable_metadata(bytes)
 	}
 }
 
@@ -124,7 +120,6 @@
 	match data {
 		up_data_structs::CreateItemData::ReFungible(data) => Ok(CreateRefungibleExData {
 			const_data: data.const_data,
-			variable_data: data.variable_data,
 			users: {
 				let mut out = BTreeMap::new();
 				out.insert(to.clone(), data.pieces);
@@ -306,19 +301,6 @@
 		fail!(<Error<T>>::SettingPropertiesNotAllowed)
 	}
 
-	fn set_variable_metadata(
-		&self,
-		sender: T::CrossAccountId,
-		token: TokenId,
-		data: BoundedVec<u8, CustomDataLimit>,
-	) -> DispatchResultWithPostInfo {
-		let len = data.len();
-		with_weight(
-			<Pallet<T>>::set_variable_metadata(self, &sender, token, data),
-			<CommonWeights<T>>::set_variable_metadata(len as u32),
-		)
-	}
-
 	fn check_nesting(
 		&self,
 		_sender: <T>::CrossAccountId,
@@ -357,13 +339,12 @@
 			.const_data
 			.into_inner()
 	}
-	fn variable_metadata(&self, token: TokenId) -> Vec<u8> {
-		<TokenData<T>>::get((self.id, token))
-			.variable_data
-			.into_inner()
-	}
 
-	fn token_properties(&self, _token_id: TokenId, _keys: Vec<PropertyKey>) -> Vec<Property> {
+	fn token_properties(
+		&self,
+		_token_id: TokenId,
+		_keys: Option<Vec<PropertyKey>>,
+	) -> Vec<Property> {
 		Vec::new()
 	}
 
modifiedpallets/refungible/src/lib.rsdiffbeforeafterboth
--- a/pallets/refungible/src/lib.rs
+++ b/pallets/refungible/src/lib.rs
@@ -41,16 +41,23 @@
 pub mod weights;
 pub(crate) type SelfWeightOf<T> = <T as Config>::WeightInfo;
 
+#[struct_versioning::versioned(version = 2, upper)]
 #[derive(Encode, Decode, Default, TypeInfo, MaxEncodedLen)]
 pub struct ItemData {
 	pub const_data: BoundedVec<u8, CustomDataLimit>,
+
+	#[version(..2)]
 	pub variable_data: BoundedVec<u8, CustomDataLimit>,
 }
 
 #[frame_support::pallet]
 pub mod pallet {
 	use super::*;
-	use frame_support::{Blake2_128, Blake2_128Concat, Twox64Concat, pallet_prelude::*, storage::Key};
+	use frame_support::{
+		Blake2_128, Blake2_128Concat, Twox64Concat, pallet_prelude::*, storage::Key,
+		traits::StorageVersion,
+	};
+	use frame_system::pallet_prelude::*;
 	use up_data_structs::{CollectionId, TokenId};
 	use super::weights::WeightInfo;
 
@@ -73,7 +80,10 @@
 		type WeightInfo: WeightInfo;
 	}
 
+	const STORAGE_VERSION: StorageVersion = StorageVersion::new(1);
+
 	#[pallet::pallet]
+	#[pallet::storage_version(STORAGE_VERSION)]
 	#[pallet::generate_store(pub(super) trait Store)]
 	pub struct Pallet<T>(_);
 
@@ -146,6 +156,19 @@
 		Value = u128,
 		QueryKind = ValueQuery,
 	>;
+
+	#[pallet::hooks]
+	impl<T: Config> Hooks<BlockNumberFor<T>> for Pallet<T> {
+		fn on_runtime_upgrade() -> Weight {
+			if StorageVersion::get::<Pallet<T>>() < StorageVersion::new(1) {
+				<TokenData<T>>::translate_values::<ItemDataVersion1, _>(|v| {
+					Some(<ItemDataVersion2>::from(v))
+				})
+			}
+
+			0
+		}
+	}
 }
 
 pub struct RefungibleHandle<T: Config>(pallet_common::CollectionHandle<T>);
@@ -494,7 +517,6 @@
 				(collection.id, token_id),
 				ItemData {
 					const_data: token.const_data,
-					variable_data: token.variable_data,
 				},
 			);
 			for (user, amount) in token.users.into_iter() {
@@ -643,31 +665,6 @@
 		if let Some(allowance) = allowance {
 			Self::set_allowance_unchecked(collection, from, spender, token, allowance);
 		}
-		Ok(())
-	}
-
-	pub fn set_variable_metadata(
-		collection: &RefungibleHandle<T>,
-		sender: &T::CrossAccountId,
-		token: TokenId,
-		data: BoundedVec<u8, CustomDataLimit>,
-	) -> DispatchResult {
-		collection.check_can_update_meta(
-			sender,
-			&T::CrossAccountId::from_sub(collection.owner.clone()),
-		)?;
-
-		let token_data = <TokenData<T>>::get((collection.id, token));
-
-		// =========
-
-		<TokenData<T>>::insert(
-			(collection.id, token),
-			ItemData {
-				variable_data: data,
-				..token_data
-			},
-		);
 		Ok(())
 	}
 
modifiedpallets/refungible/src/weights.rsdiffbeforeafterboth
--- a/pallets/refungible/src/weights.rs
+++ b/pallets/refungible/src/weights.rs
@@ -53,7 +53,6 @@
 	fn transfer_from_removing() -> Weight;
 	fn transfer_from_creating_removing() -> Weight;
 	fn burn_from() -> Weight;
-	fn set_variable_metadata(b: u32, ) -> Weight;
 }
 
 /// Weights for pallet_refungible using the Substrate node and recommended hardware.
@@ -242,12 +241,6 @@
 		(42_043_000 as Weight)
 			.saturating_add(T::DbWeight::get().reads(5 as Weight))
 			.saturating_add(T::DbWeight::get().writes(7 as Weight))
-	}
-	// Storage: Refungible TokenData (r:1 w:1)
-	fn set_variable_metadata(_b: u32, ) -> Weight {
-		(7_364_000 as Weight)
-			.saturating_add(T::DbWeight::get().reads(1 as Weight))
-			.saturating_add(T::DbWeight::get().writes(1 as Weight))
 	}
 }
 
@@ -436,11 +429,5 @@
 		(42_043_000 as Weight)
 			.saturating_add(RocksDbWeight::get().reads(5 as Weight))
 			.saturating_add(RocksDbWeight::get().writes(7 as Weight))
-	}
-	// Storage: Refungible TokenData (r:1 w:1)
-	fn set_variable_metadata(_b: u32, ) -> Weight {
-		(7_364_000 as Weight)
-			.saturating_add(RocksDbWeight::get().reads(1 as Weight))
-			.saturating_add(RocksDbWeight::get().writes(1 as Weight))
 	}
 }
modifiedpallets/unique/src/benchmarking.rsdiffbeforeafterboth
--- a/pallets/unique/src/benchmarking.rs
+++ b/pallets/unique/src/benchmarking.rs
@@ -168,9 +168,4 @@
 			nesting_rule: None,
 		};
 	}: set_collection_limits(RawOrigin::Signed(caller.clone()), collection, cl)
-
-	set_meta_update_permission_flag {
-		let caller: T::AccountId = account("caller", 0, SEED);
-		let collection = create_nft_collection::<T>(caller.clone())?;
-	}: _(RawOrigin::Signed(caller.clone()), collection, MetaUpdatePermission::Admin)
 }
modifiedpallets/unique/src/lib.rsdiffbeforeafterboth
--- a/pallets/unique/src/lib.rs
+++ b/pallets/unique/src/lib.rs
@@ -35,16 +35,16 @@
 use frame_system::{self as system, ensure_signed};
 use sp_runtime::{sp_std::prelude::Vec};
 use up_data_structs::{
-	CONST_ON_CHAIN_SCHEMA_LIMIT, OFFCHAIN_SCHEMA_LIMIT,
-	MAX_COLLECTION_NAME_LENGTH, MAX_COLLECTION_DESCRIPTION_LENGTH, MAX_TOKEN_PREFIX_LENGTH,
-	AccessMode, CreateItemData, CollectionLimits, CollectionId, CollectionMode, TokenId,
-	SchemaVersion, SponsorshipState, MetaUpdatePermission, CreateCollectionData, CustomDataLimit,
-	CreateItemExData, budget, CollectionField, Property, PropertyKey, PropertyKeyPermission,
+	CONST_ON_CHAIN_SCHEMA_LIMIT, OFFCHAIN_SCHEMA_LIMIT, MAX_COLLECTION_NAME_LENGTH,
+	MAX_COLLECTION_DESCRIPTION_LENGTH, MAX_TOKEN_PREFIX_LENGTH, AccessMode, CreateItemData,
+	CollectionLimits, CollectionId, CollectionMode, TokenId, SchemaVersion, SponsorshipState,
+	CreateCollectionData, CreateItemExData, budget, CollectionField, Property, PropertyKey,
+	PropertyKeyPermission,
 };
 use pallet_evm::account::CrossAccountId;
 use pallet_common::{
-	CollectionHandle, Pallet as PalletCommon, Error as CommonError, CommonWeightInfo,
-	dispatch::dispatch_call, dispatch::CollectionDispatch,
+	CollectionHandle, Pallet as PalletCommon, CommonWeightInfo, dispatch::dispatch_call,
+	dispatch::CollectionDispatch,
 };
 
 #[cfg(feature = "runtime-benchmarks")]
@@ -240,7 +240,9 @@
 
 		/// Variable metadata sponsoring
 		/// Collection id (controlled?2), token id (controlled?2)
+		#[deprecated]
 		pub VariableMetaDataBasket get(fn variable_meta_data_basket): double_map hasher(blake2_128_concat) CollectionId, hasher(blake2_128_concat) TokenId => Option<T::BlockNumber>;
+
 		/// Approval sponsoring
 		pub NftApproveBasket get(fn nft_approve_basket): double_map hasher(blake2_128_concat) CollectionId, hasher(blake2_128_concat) TokenId => Option<T::BlockNumber>;
 		pub FungibleApproveBasket get(fn fungible_approve_basket): double_map hasher(blake2_128_concat) CollectionId, hasher(twox_64_concat) T::AccountId => Option<T::BlockNumber>;
@@ -261,6 +263,14 @@
 			0
 		}
 
+		fn on_runtime_upgrade() -> Weight {
+			let limit = None;
+
+			<VariableMetaDataBasket<T>>::remove_all(limit);
+
+			0
+		}
+
 		/// This method creates a Collection of NFTs. Each Token may have multiple properties encoded as an array of bytes of certain length. The initial owner of the collection is set to the address that signed the transaction and can be changed later.
 		///
 		/// # Permissions
@@ -333,7 +343,6 @@
 			<FungibleTransferBasket<T>>::remove_prefix(collection_id, None);
 			<ReFungibleTransferBasket<T>>::remove_prefix((collection_id,), None);
 
-			<VariableMetaDataBasket<T>>::remove_prefix(collection_id, None);
 			<NftApproveBasket<T>>::remove_prefix(collection_id, None);
 			<FungibleApproveBasket<T>>::remove_prefix(collection_id, None);
 			<RefungibleApproveBasket<T>>::remove_prefix((collection_id,), None);
@@ -929,59 +938,6 @@
 			let budget = budget::Value::new(2);
 
 			dispatch_call::<T, _>(collection_id, |d| d.transfer_from(sender, from, recipient, item_id, value, &budget))
-		}
-
-		/// Set off-chain data schema.
-		///
-		/// # Permissions
-		///
-		/// * Collection Owner
-		/// * Collection Admin
-		///
-		/// # Arguments
-		///
-		/// * collection_id.
-		///
-		/// * schema: String representing the offchain data schema.
-		#[weight = T::CommonWeightInfo::set_variable_metadata(data.len() as u32)]
-		#[transactional]
-		pub fn set_variable_meta_data (
-			origin,
-			collection_id: CollectionId,
-			item_id: TokenId,
-			data: BoundedVec<u8, CustomDataLimit>,
-		) -> DispatchResultWithPostInfo {
-			let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
-
-			dispatch_call::<T, _>(collection_id, |d| d.set_variable_metadata(sender, item_id, data))
-		}
-
-		/// Set meta_update_permission value for particular collection
-		///
-		/// # Permissions
-		///
-		/// * Collection Owner.
-		///
-		/// # Arguments
-		///
-		/// * collection_id: ID of the collection.
-		///
-		/// * value: New flag value.
-		#[weight = <SelfWeightOf<T>>::set_meta_update_permission_flag()]
-		#[transactional]
-		pub fn set_meta_update_permission_flag(origin, collection_id: CollectionId, value: MetaUpdatePermission) -> DispatchResult {
-			let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);
-			let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;
-
-			ensure!(
-				target_collection.meta_update_permission != MetaUpdatePermission::None,
-				<CommonError<T>>::MetadataFlagFrozen,
-			);
-			target_collection.check_is_owner(&sender)?;
-
-			target_collection.meta_update_permission = value;
-
-			target_collection.save()
 		}
 
 		/// Set schema standard
modifiedpallets/unique/src/weights.rsdiffbeforeafterboth
--- a/pallets/unique/src/weights.rs
+++ b/pallets/unique/src/weights.rs
@@ -49,7 +49,6 @@
 	fn set_const_on_chain_schema(b: u32, ) -> Weight;
 	fn set_schema_version() -> Weight;
 	fn set_collection_limits() -> Weight;
-	fn set_meta_update_permission_flag() -> Weight;
 }
 
 /// Weights for pallet_unique using the Substrate node and recommended hardware.
@@ -167,12 +166,6 @@
 	// Storage: Common CollectionById (r:1 w:1)
 	fn set_collection_limits() -> Weight {
 		(15_339_000 as Weight)
-			.saturating_add(T::DbWeight::get().reads(1 as Weight))
-			.saturating_add(T::DbWeight::get().writes(1 as Weight))
-	}
-	// Storage: Common CollectionById (r:1 w:1)
-	fn set_meta_update_permission_flag() -> Weight {
-		(7_214_000 as Weight)
 			.saturating_add(T::DbWeight::get().reads(1 as Weight))
 			.saturating_add(T::DbWeight::get().writes(1 as Weight))
 	}
@@ -292,12 +285,6 @@
 	// Storage: Common CollectionById (r:1 w:1)
 	fn set_collection_limits() -> Weight {
 		(15_339_000 as Weight)
-			.saturating_add(RocksDbWeight::get().reads(1 as Weight))
-			.saturating_add(RocksDbWeight::get().writes(1 as Weight))
-	}
-	// Storage: Common CollectionById (r:1 w:1)
-	fn set_meta_update_permission_flag() -> Weight {
-		(7_214_000 as Weight)
 			.saturating_add(RocksDbWeight::get().reads(1 as Weight))
 			.saturating_add(RocksDbWeight::get().writes(1 as Weight))
 	}
modifiedprimitives/data-structs/src/lib.rsdiffbeforeafterboth
--- a/primitives/data-structs/src/lib.rs
+++ b/primitives/data-structs/src/lib.rs
@@ -22,7 +22,8 @@
 };
 use frame_support::{
 	storage::{bounded_btree_map::BoundedBTreeMap, bounded_btree_set::BoundedBTreeSet},
-	traits::Get, parameter_types,
+	traits::Get,
+	parameter_types,
 };
 
 #[cfg(feature = "serde")]
@@ -40,7 +41,10 @@
 	CollectionInfo, NftInfo, ResourceInfo, PropertyInfo, BaseInfo, PartType, Theme, ThemeProperty,
 };
 pub use rmrk_types::{
-	primitives::{CollectionId as RmrkCollectionId, NftId as RmrkNftId, BaseId as RmrkBaseId, PartId as RmrkPartId, ResourceId as RmrkResourceId},
+	primitives::{
+		CollectionId as RmrkCollectionId, NftId as RmrkNftId, BaseId as RmrkBaseId,
+		PartId as RmrkPartId, ResourceId as RmrkResourceId,
+	},
 	NftChild as RmrkNftChild, AccountIdOrCollectionNftTuple as RmrkAccountIdOrCollectionNftTuple,
 };
 
@@ -85,6 +89,7 @@
 
 // Schema limits
 pub const OFFCHAIN_SCHEMA_LIMIT: u32 = 8192;
+pub const VARIABLE_ON_CHAIN_SCHEMA_LIMIT: u32 = 8192;
 pub const CONST_ON_CHAIN_SCHEMA_LIMIT: u32 = 32768;
 
 pub const COLLECTION_FIELD_LIMIT: u32 = CONST_ON_CHAIN_SCHEMA_LIMIT;
@@ -318,8 +323,12 @@
 	pub limits: CollectionLimitsVersion2,
 
 	#[version(..2)]
+	pub variable_on_chain_schema: BoundedVec<u8, ConstU32<VARIABLE_ON_CHAIN_SCHEMA_LIMIT>>,
+
+	#[version(..2)]
 	pub const_on_chain_schema: BoundedVec<u8, ConstU32<CONST_ON_CHAIN_SCHEMA_LIMIT>>,
 
+	#[version(..2)]
 	pub meta_update_permission: MetaUpdatePermission,
 }
 
@@ -339,7 +348,6 @@
 	pub sponsorship: SponsorshipState<AccountId>,
 	pub limits: CollectionLimits,
 	pub const_on_chain_schema: Vec<u8>,
-	pub meta_update_permission: MetaUpdatePermission,
 	pub token_property_permissions: Vec<PropertyKeyPermission>,
 	pub properties: Vec<Property>,
 }
@@ -365,7 +373,6 @@
 	pub pending_sponsor: Option<AccountId>,
 	pub limits: Option<CollectionLimits>,
 	pub const_on_chain_schema: BoundedVec<u8, ConstU32<CONST_ON_CHAIN_SCHEMA_LIMIT>>,
-	pub meta_update_permission: Option<MetaUpdatePermission>,
 	pub token_property_permissions: CollectionPropertiesPermissionsVec,
 	pub properties: CollectionPropertiesVec,
 }
@@ -376,28 +383,6 @@
 pub type CollectionPropertiesVec =
 	BoundedVec<Property, ConstU32<MAX_COLLECTION_PROPERTIES_ENCODE_LEN>>;
 
-#[derive(Encode, Decode, Debug, Clone, PartialEq, TypeInfo)]
-#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
-pub struct NftItemType<AccountId> {
-	pub owner: AccountId,
-	pub const_data: Vec<u8>,
-	pub variable_data: Vec<u8>,
-}
-
-#[derive(Encode, Decode, Default, Debug, Clone, PartialEq, TypeInfo)]
-#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
-pub struct FungibleItemType {
-	pub value: u128,
-}
-
-#[derive(Encode, Decode, Debug, Clone, PartialEq, TypeInfo)]
-#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
-pub struct ReFungibleItemType<AccountId> {
-	pub owner: Vec<Ownership<AccountId>>,
-	pub const_data: Vec<u8>,
-	pub variable_data: Vec<u8>,
-}
-
 /// All fields are wrapped in `Option`s, where None means chain default
 #[struct_versioning::versioned(version = 2, upper)]
 #[derive(Encode, Decode, Debug, Default, Clone, PartialEq, TypeInfo, MaxEncodedLen)]
@@ -405,6 +390,8 @@
 pub struct CollectionLimits {
 	pub account_token_ownership_limit: Option<u32>,
 	pub sponsored_data_size: Option<u32>,
+
+	/// FIXME should we delete this or repurpose it?
 	/// None - setVariableMetadata is not sponsored
 	/// Some(v) - setVariableMetadata is sponsored
 	///           if there is v block between txs
@@ -502,9 +489,6 @@
 	#[cfg_attr(feature = "serde1", serde(with = "bounded::vec_serde"))]
 	#[derivative(Debug(format_with = "bounded::vec_debug"))]
 	pub const_data: BoundedVec<u8, CustomDataLimit>,
-	#[cfg_attr(feature = "serde1", serde(with = "bounded::vec_serde"))]
-	#[derivative(Debug(format_with = "bounded::vec_debug"))]
-	pub variable_data: BoundedVec<u8, CustomDataLimit>,
 
 	#[cfg_attr(feature = "serde1", serde(with = "bounded::vec_serde"))]
 	#[derivative(Debug(format_with = "bounded::vec_debug"))]
@@ -524,26 +508,16 @@
 	#[cfg_attr(feature = "serde1", serde(with = "bounded::vec_serde"))]
 	#[derivative(Debug(format_with = "bounded::vec_debug"))]
 	pub const_data: BoundedVec<u8, CustomDataLimit>,
-	#[cfg_attr(feature = "serde1", serde(with = "bounded::vec_serde"))]
-	#[derivative(Debug(format_with = "bounded::vec_debug"))]
-	pub variable_data: BoundedVec<u8, CustomDataLimit>,
 	pub pieces: u128,
 }
 
 #[derive(Encode, Decode, Debug, Clone, PartialEq, TypeInfo, MaxEncodedLen)]
-#[cfg_attr(feature = "std", derive(Serialize, Deserialize))]
 pub enum MetaUpdatePermission {
 	ItemOwner,
 	Admin,
 	None,
 }
 
-impl Default for MetaUpdatePermission {
-	fn default() -> Self {
-		Self::ItemOwner
-	}
-}
-
 #[derive(Encode, Decode, MaxEncodedLen, PartialEq, Clone, Debug, TypeInfo)]
 #[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]
 pub enum CreateItemData {
@@ -557,8 +531,6 @@
 pub struct CreateNftExData<CrossAccountId> {
 	#[derivative(Debug(format_with = "bounded::vec_debug"))]
 	pub const_data: BoundedVec<u8, CustomDataLimit>,
-	#[derivative(Debug(format_with = "bounded::vec_debug"))]
-	pub variable_data: BoundedVec<u8, CustomDataLimit>,
 	#[derivative(Debug(format_with = "bounded::vec_debug"))]
 	pub properties: CollectionPropertiesVec,
 	pub owner: CrossAccountId,
@@ -569,8 +541,6 @@
 pub struct CreateRefungibleExData<CrossAccountId> {
 	#[derivative(Debug(format_with = "bounded::vec_debug"))]
 	pub const_data: BoundedVec<u8, CustomDataLimit>,
-	#[derivative(Debug(format_with = "bounded::vec_debug"))]
-	pub variable_data: BoundedVec<u8, CustomDataLimit>,
 	#[derivative(Debug(format_with = "bounded::map_debug"))]
 	pub users: BoundedBTreeMap<CrossAccountId, u128, ConstU32<MAX_ITEMS_PER_BATCH>>,
 }
@@ -598,8 +568,8 @@
 impl CreateItemData {
 	pub fn data_size(&self) -> usize {
 		match self {
-			CreateItemData::NFT(data) => data.variable_data.len() + data.const_data.len(),
-			CreateItemData::ReFungible(data) => data.variable_data.len() + data.const_data.len(),
+			CreateItemData::NFT(data) => data.const_data.len(),
+			CreateItemData::ReFungible(data) => data.const_data.len(),
 			_ => 0,
 		}
 	}
@@ -700,24 +670,65 @@
 	NoSpaceForProperty,
 	PropertyLimitReached,
 	InvalidCharacterInPropertyKey,
+	PropertyKeyIsTooLong,
 	EmptyPropertyKey,
 }
 
-pub trait TrySet: Sized {
+#[derive(Clone, Copy)]
+pub enum PropertyScope {
+	None,
+	Rmrk,
+}
+
+impl PropertyScope {
+	fn apply(self, key: PropertyKey) -> Result<PropertyKey, PropertiesError> {
+		let scope_str: &[u8] = match self {
+			Self::None => return Ok(key),
+			Self::Rmrk => b"rmrk",
+		};
+
+		[scope_str, b":", key.as_slice()]
+			.concat()
+			.try_into()
+			.map_err(|_| PropertiesError::PropertyKeyIsTooLong)
+	}
+}
+
+pub trait TrySetProperty: Sized {
 	type Value;
 
-	fn try_set(&mut self, key: PropertyKey, value: Self::Value) -> Result<(), PropertiesError>;
+	fn try_scoped_set(
+		&mut self,
+		scope: PropertyScope,
+		key: PropertyKey,
+		value: Self::Value,
+	) -> Result<(), PropertiesError>;
 
-	fn try_set_from_iter<I>(&mut self, iter: I) -> Result<(), PropertiesError>
+	fn try_scoped_set_from_iter<I>(
+		&mut self,
+		scope: PropertyScope,
+		iter: I,
+	) -> Result<(), PropertiesError>
 	where
 		I: Iterator<Item = (PropertyKey, Self::Value)>,
 	{
 		for (key, value) in iter {
-			self.try_set(key, value)?;
+			self.try_scoped_set(scope, key, value)?;
 		}
 
 		Ok(())
 	}
+
+	fn try_set(&mut self, key: PropertyKey, value: Self::Value) -> Result<(), PropertiesError> {
+		self.try_scoped_set(PropertyScope::None, key, value)
+	}
+
+	fn try_set_from_iter<I>(&mut self, iter: I) -> Result<(), PropertiesError>
+	where
+		I: Iterator<Item = (PropertyKey, Self::Value)>,
+	{
+		self.try_scoped_set_from_iter(PropertyScope::None, iter)
+	}
 }
 
 #[derive(Encode, Decode, TypeInfo, Derivative, Clone, PartialEq, MaxEncodedLen)]
@@ -751,12 +762,10 @@
 		}
 
 		for byte in key.as_slice().iter() {
-			match char::from_u32(*byte as u32) {
-				Some(ch)
-					if ch.is_ascii_alphanumeric()
-					|| ch == '_'
-					|| ch == '-' => { /* OK */ },
-				_ => return Err(PropertiesError::InvalidCharacterInPropertyKey)
+			let byte = *byte;
+
+			if !byte.is_ascii_alphanumeric() && byte != b'_' && byte != b'-' {
+				return Err(PropertiesError::InvalidCharacterInPropertyKey);
 			}
 		}
 
@@ -764,12 +773,18 @@
 	}
 }
 
-impl<Value> TrySet for PropertiesMap<Value> {
+impl<Value> TrySetProperty for PropertiesMap<Value> {
 	type Value = Value;
 
-	fn try_set(&mut self, key: PropertyKey, value: Self::Value) -> Result<(), PropertiesError> {
+	fn try_scoped_set(
+		&mut self,
+		scope: PropertyScope,
+		key: PropertyKey,
+		value: Self::Value,
+	) -> Result<(), PropertiesError> {
 		Self::check_property_key(&key)?;
 
+		let key = scope.apply(key)?;
 		self.0
 			.try_insert(key, value)
 			.map_err(|_| PropertiesError::PropertyLimitReached)?;
@@ -816,17 +831,22 @@
 	}
 }
 
-impl TrySet for Properties {
+impl TrySetProperty for Properties {
 	type Value = PropertyValue;
 
-	fn try_set(&mut self, key: PropertyKey, value: Self::Value) -> Result<(), PropertiesError> {
+	fn try_scoped_set(
+		&mut self,
+		scope: PropertyScope,
+		key: PropertyKey,
+		value: Self::Value,
+	) -> Result<(), PropertiesError> {
 		let value_len = value.len();
 
 		if self.consumed_space as usize + value_len > self.space_limit as usize {
 			return Err(PropertiesError::NoSpaceForProperty);
 		}
 
-		self.map.try_set(key, value)?;
+		self.map.try_scoped_set(scope, key, value)?;
 
 		self.consumed_space += value_len as u32;
 
@@ -869,34 +889,23 @@
 	pub const RmrkPartsLimit: u32 = 3;
 }
 
-pub type RmrkCollectionInfo<AccountId> = CollectionInfo<
-	RmrkString,
-	BoundedVec<u8, RmrkCollectionSymbolLimit>,
-	AccountId
->;
-pub type RmrkInstanceInfo<AccountId> = NftInfo<
-	AccountId, 
-	Permill,
-	RmrkString
->;
-pub type RmrkResourceInfo = ResourceInfo::<
+pub type RmrkCollectionInfo<AccountId> =
+	CollectionInfo<RmrkString, BoundedVec<u8, RmrkCollectionSymbolLimit>, AccountId>;
+pub type RmrkInstanceInfo<AccountId> = NftInfo<AccountId, Permill, RmrkString>;
+pub type RmrkResourceInfo = ResourceInfo<
 	BoundedVec<u8, RmrkResourceSymbolLimit>,
 	RmrkString,
-	BoundedVec<RmrkPartId, RmrkPartsLimit>
->;
-pub type RmrkPropertyInfo = PropertyInfo<
-	BoundedVec<u8, RmrkKeyLimit>, 
-	BoundedVec<u8, RmrkValueLimit>
+	BoundedVec<RmrkPartId, RmrkPartsLimit>,
 >;
+pub type RmrkPropertyInfo =
+	PropertyInfo<BoundedVec<u8, RmrkKeyLimit>, BoundedVec<u8, RmrkValueLimit>>;
 pub type RmrkBaseInfo<AccountId> = BaseInfo<AccountId, RmrkString>;
-pub type RmrkPartType = PartType<
-	RmrkString,
-	BoundedVec<RmrkCollectionId, RmrkMaxCollectionsEquippablePerPart>
->;
+pub type RmrkPartType =
+	PartType<RmrkString, BoundedVec<RmrkCollectionId, RmrkMaxCollectionsEquippablePerPart>>;
 pub type RmrkTheme = Theme<RmrkString, Vec<ThemeProperty<RmrkString>>>;
 
 pub type RmrkRpcString = Vec<u8>;
 pub type RmrkThemeName = RmrkRpcString;
 pub type RmrkPropertyKey = RmrkRpcString;
 
-type RmrkString = BoundedVec<u8, RmrkStringLimit>;
\ No newline at end of file
+type RmrkString = BoundedVec<u8, RmrkStringLimit>;
modifiedprimitives/rpc/src/lib.rsdiffbeforeafterboth
--- a/primitives/rpc/src/lib.rs
+++ b/primitives/rpc/src/lib.rs
@@ -42,22 +42,25 @@
 		fn token_owner(collection: CollectionId, token: TokenId) -> Result<Option<CrossAccountId>>;
 		fn topmost_token_owner(collection: CollectionId, token: TokenId) -> Result<Option<CrossAccountId>>;
 		fn const_metadata(collection: CollectionId, token: TokenId) -> Result<Vec<u8>>;
-		fn variable_metadata(collection: CollectionId, token: TokenId) -> Result<Vec<u8>>;
 
-		fn collection_properties(collection: CollectionId, properties: Vec<Vec<u8>>) -> Result<Vec<Property>>;
+		fn collection_properties(collection: CollectionId, properties: Option<Vec<Vec<u8>>>) -> Result<Vec<Property>>;
 
 		fn token_properties(
 			collection: CollectionId,
 			token_id: TokenId,
-			properties: Vec<Vec<u8>>
+			properties: Option<Vec<Vec<u8>>>
 		) -> Result<Vec<Property>>;
 
 		fn property_permissions(
 			collection: CollectionId,
-			properties: Vec<Vec<u8>>
+			properties: Option<Vec<Vec<u8>>>
 		) -> Result<Vec<PropertyKeyPermission>>;
 
-		fn token_data(collection: CollectionId, token_id: TokenId, keys: Vec<Vec<u8>>) -> Result<TokenData<CrossAccountId>>;
+		fn token_data(
+			collection: CollectionId,
+			token_id: TokenId,
+			keys: Option<Vec<Vec<u8>>>
+		) -> Result<TokenData<CrossAccountId>>;
 
 		fn total_supply(collection: CollectionId) -> Result<u32>;
 		fn account_balance(collection: CollectionId, account: CrossAccountId) -> Result<u32>;
modifiedruntime/common/src/runtime_apis.rsdiffbeforeafterboth
--- a/runtime/common/src/runtime_apis.rs
+++ b/runtime/common/src/runtime_apis.rs
@@ -32,15 +32,14 @@
                 fn const_metadata(collection: CollectionId, token: TokenId) -> Result<Vec<u8>, DispatchError> {
                     dispatch_unique_runtime!(collection.const_metadata(token))
                 }
-                fn variable_metadata(collection: CollectionId, token: TokenId) -> Result<Vec<u8>, DispatchError> {
-                    dispatch_unique_runtime!(collection.variable_metadata(token))
-                }
 
                 fn collection_properties(
                     collection: CollectionId,
-                    keys: Vec<Vec<u8>>
+                    keys: Option<Vec<Vec<u8>>>
                 ) -> Result<Vec<Property>, DispatchError> {
-                    let keys = pallet_common::Pallet::<Runtime>::bytes_keys_to_property_keys(keys)?;
+                    let keys = keys.map(
+                        |keys| pallet_common::Pallet::<Runtime>::bytes_keys_to_property_keys(keys)
+                    ).transpose()?;
 
                     pallet_common::Pallet::<Runtime>::filter_collection_properties(collection, keys)
                 }
@@ -48,17 +47,22 @@
                 fn token_properties(
                     collection: CollectionId,
                     token_id: TokenId,
-                    keys: Vec<Vec<u8>>
+                    keys: Option<Vec<Vec<u8>>>
                 ) -> Result<Vec<Property>, DispatchError> {
-                    let keys = pallet_common::Pallet::<Runtime>::bytes_keys_to_property_keys(keys)?;
+                    let keys = keys.map(
+                        |keys| pallet_common::Pallet::<Runtime>::bytes_keys_to_property_keys(keys)
+                    ).transpose()?;
+
                     dispatch_unique_runtime!(collection.token_properties(token_id, keys))
                 }
 
                 fn property_permissions(
                     collection: CollectionId,
-                    keys: Vec<Vec<u8>>
+                    keys: Option<Vec<Vec<u8>>>
                 ) -> Result<Vec<PropertyKeyPermission>, DispatchError> {
-                    let keys = pallet_common::Pallet::<Runtime>::bytes_keys_to_property_keys(keys)?;
+                    let keys = keys.map(
+                        |keys| pallet_common::Pallet::<Runtime>::bytes_keys_to_property_keys(keys)
+                    ).transpose()?;
 
                     pallet_common::Pallet::<Runtime>::filter_property_permissions(collection, keys)
                 }
@@ -66,7 +70,7 @@
                 fn token_data(
                     collection: CollectionId,
                     token_id: TokenId,
-                    keys: Vec<Vec<u8>>
+                    keys: Option<Vec<Vec<u8>>>
                 ) -> Result<TokenData<CrossAccountId>, DispatchError> {
                     let token_data = TokenData {
                         const_data: Self::const_metadata(collection, token_id)?,
@@ -232,7 +236,7 @@
                                     })
                                 })
                                 .collect();
-        
+
                             properties
                         }
                         None => {
@@ -253,7 +257,7 @@
                     let token_id = TokenId(nft_id);
 
 		            let properties = pallet_nonfungible::Pallet::<Runtime>::token_properties((collection_id, token_id)); // todo look into usage of nonfungible
-                    
+
                     return Ok(match filter_keys {
                         Some(keys) => {
                             let keys = pallet_common::Pallet::<Runtime>::bytes_keys_to_property_keys(keys)?;
@@ -266,7 +270,7 @@
                                     })
                                 })
                                 .collect();
-        
+
                             properties
                         }
                         None => {
@@ -300,7 +304,7 @@
                     let keys = pallet_common::Pallet::<Runtime>::bytes_keys_to_property_keys(
                         Vec::from([String::from("rmrk:base-type").into_bytes()])
                     )?;
-                    let properties = pallet_common::Pallet::<Runtime>::filter_collection_properties(collection_id, keys)?;
+                    let properties = pallet_common::Pallet::<Runtime>::filter_collection_properties(collection_id, Some(keys))?;
                     //ensure!(properties.len() == 1); // todo make sure it's fine to have ensure in place // no access to errors from here? displace?
 
                     Ok(Some( RmrkBaseInfo {
modifiedruntime/common/src/sponsoring.rsdiffbeforeafterboth
--- a/runtime/common/src/sponsoring.rs
+++ b/runtime/common/src/sponsoring.rs
@@ -21,17 +21,16 @@
 	storage::{StorageMap, StorageDoubleMap, StorageNMap},
 };
 use up_data_structs::{
-	CollectionId, FUNGIBLE_SPONSOR_TRANSFER_TIMEOUT, MetaUpdatePermission,
-	NFT_SPONSOR_TRANSFER_TIMEOUT, REFUNGIBLE_SPONSOR_TRANSFER_TIMEOUT, TokenId, CollectionMode,
-	CreateItemData,
+	CollectionId, FUNGIBLE_SPONSOR_TRANSFER_TIMEOUT, NFT_SPONSOR_TRANSFER_TIMEOUT,
+	REFUNGIBLE_SPONSOR_TRANSFER_TIMEOUT, TokenId, CollectionMode, CreateItemData,
 };
 use sp_runtime::traits::Saturating;
 use pallet_common::{CollectionHandle};
 use pallet_evm::account::CrossAccountId;
 use pallet_unique::{
 	Call as UniqueCall, Config as UniqueConfig, FungibleApproveBasket, RefungibleApproveBasket,
-	NftApproveBasket, VariableMetaDataBasket, CreateItemBasket, ReFungibleTransferBasket,
-	FungibleTransferBasket, NftTransferBasket,
+	NftApproveBasket, CreateItemBasket, ReFungibleTransferBasket, FungibleTransferBasket,
+	NftTransferBasket,
 };
 use pallet_fungible::Config as FungibleConfig;
 use pallet_nonfungible::Config as NonfungibleConfig;
@@ -136,63 +135,6 @@
 	}
 
 	CreateItemBasket::<T>::insert((collection.id, who.as_sub()), block_number);
-
-	Some(())
-}
-
-pub fn withdraw_set_variable_meta_data<T: Config>(
-	who: &T::CrossAccountId,
-	collection: &CollectionHandle<T>,
-	item_id: &TokenId,
-	data: &[u8],
-) -> Option<()> {
-	// TODO: make it work for admins
-	if collection.meta_update_permission != MetaUpdatePermission::ItemOwner {
-		return None;
-	}
-	// preliminary sponsoring correctness check
-	match collection.mode {
-		CollectionMode::NFT => {
-			let owner = pallet_nonfungible::TokenData::<T>::get((collection.id, item_id))?.owner;
-			if !owner.conv_eq(who) {
-				return None;
-			}
-		}
-		CollectionMode::Fungible(_) => {
-			if item_id != &TokenId::default() {
-				return None;
-			}
-			if <pallet_fungible::Balance<T>>::get((collection.id, who)) == 0 {
-				return None;
-			}
-		}
-		CollectionMode::ReFungible => {
-			if !<pallet_refungible::Owned<T>>::get((collection.id, who, item_id)) {
-				return None;
-			}
-		}
-	}
-
-	// Can't sponsor fungible collection, this tx will be rejected
-	// as invalid
-	if matches!(collection.mode, CollectionMode::Fungible(_)) {
-		return None;
-	}
-	if data.len() > collection.limits.sponsored_data_size() as usize {
-		return None;
-	}
-
-	let block_number = <frame_system::Pallet<T>>::block_number() as T::BlockNumber;
-	let limit = collection.limits.sponsored_data_rate_limit()?;
-
-	if let Some(last_tx_block) = VariableMetaDataBasket::<T>::get(collection.id, item_id) {
-		let timeout = last_tx_block + limit.into();
-		if block_number < timeout {
-			return None;
-		}
-	}
-
-	<VariableMetaDataBasket<T>>::insert(collection.id, item_id, block_number);
 
 	Some(())
 }
@@ -290,20 +232,6 @@
 			} => {
 				let (sponsor, collection) = load(*collection_id)?;
 				withdraw_approve::<T>(&collection, who, item_id).map(|()| sponsor)
-			}
-			UniqueCall::set_variable_meta_data {
-				collection_id,
-				item_id,
-				data,
-			} => {
-				let (sponsor, collection) = load(*collection_id)?;
-				withdraw_set_variable_meta_data::<T>(
-					&T::CrossAccountId::from_sub(who.clone()),
-					&collection,
-					item_id,
-					data,
-				)
-				.map(|()| sponsor)
 			}
 			_ => None,
 		}
modifiedruntime/common/src/weights.rsdiffbeforeafterboth
--- a/runtime/common/src/weights.rs
+++ b/runtime/common/src/weights.rs
@@ -86,10 +86,6 @@
 		dispatch_weight::<T>() + max_weight_of!(transfer_from())
 	}
 
-	fn set_variable_metadata(bytes: u32) -> Weight {
-		dispatch_weight::<T>() + max_weight_of!(set_variable_metadata(bytes))
-	}
-
 	fn burn_from() -> Weight {
 		dispatch_weight::<T>() + max_weight_of!(burn_from())
 	}
modifiedruntime/tests/src/tests.rsdiffbeforeafterboth
--- a/runtime/tests/src/tests.rs
+++ b/runtime/tests/src/tests.rs
@@ -18,9 +18,9 @@
 use crate::{Test, TestCrossAccountId, CollectionCreationPrice, Origin, Unique, new_test_ext};
 use up_data_structs::{
 	COLLECTION_NUMBER_LIMIT, CollectionId, CreateItemData, CreateFungibleData, CreateNftData,
-	CreateReFungibleData, MAX_DECIMAL_POINTS, COLLECTION_ADMINS_LIMIT, MetaUpdatePermission,
-	TokenId, MAX_TOKEN_OWNERSHIP, CreateCollectionData, CollectionField, SchemaVersion,
-	CollectionMode, AccessMode,
+	CreateReFungibleData, MAX_DECIMAL_POINTS, COLLECTION_ADMINS_LIMIT, TokenId,
+	MAX_TOKEN_OWNERSHIP, CreateCollectionData, CollectionField, SchemaVersion, CollectionMode,
+	AccessMode,
 };
 use frame_support::{assert_noop, assert_ok, assert_err};
 use sp_std::convert::TryInto;
@@ -47,7 +47,7 @@
 fn default_nft_data() -> CreateNftData {
 	CreateNftData {
 		const_data: vec![1, 2, 3].try_into().unwrap(),
-		variable_data: vec![3, 2, 1].try_into().unwrap(),
+		properties: vec![].try_into().unwrap(),
 	}
 }
 
@@ -58,7 +58,6 @@
 fn default_re_fungible_data() -> CreateReFungibleData {
 	CreateReFungibleData {
 		const_data: vec![1, 2, 3].try_into().unwrap(),
-		variable_data: vec![3, 2, 1].try_into().unwrap(),
 		pieces: 1023,
 	}
 }
@@ -215,7 +214,6 @@
 
 		let item = <pallet_nonfungible::TokenData<Test>>::get((collection_id, 1)).unwrap();
 		assert_eq!(item.const_data, data.const_data.into_inner());
-		assert_eq!(item.variable_data, data.variable_data.into_inner());
 	});
 }
 
@@ -247,7 +245,6 @@
 			))
 			.unwrap();
 			assert_eq!(item.const_data.to_vec(), data.const_data.into_inner());
-			assert_eq!(item.variable_data.to_vec(), data.variable_data.into_inner());
 		}
 	});
 }
@@ -263,7 +260,6 @@
 		let balance =
 			<pallet_refungible::Balance<Test>>::get((collection_id, TokenId(1), account(1)));
 		assert_eq!(item.const_data, data.const_data.into_inner());
-		assert_eq!(item.variable_data, data.variable_data.into_inner());
 		assert_eq!(balance, 1023);
 	});
 }
@@ -299,7 +295,6 @@
 			let balance =
 				<pallet_refungible::Balance<Test>>::get((CollectionId(1), TokenId(1), account(1)));
 			assert_eq!(item.const_data.to_vec(), data.const_data.into_inner());
-			assert_eq!(item.variable_data.to_vec(), data.variable_data.into_inner());
 			assert_eq!(balance, 1023);
 		}
 	});
@@ -413,7 +408,6 @@
 		create_test_item(collection_id, &data.clone().into());
 		let item = <pallet_refungible::TokenData<Test>>::get((collection_id, TokenId(1)));
 		assert_eq!(item.const_data, data.const_data.into_inner());
-		assert_eq!(item.variable_data, data.variable_data.into_inner());
 		assert_eq!(
 			<pallet_refungible::AccountBalance<Test>>::get((collection_id, account(1))),
 			1
@@ -2427,117 +2421,6 @@
 }
 
 #[test]
-fn set_variable_meta_data_on_nft_token_stores_variable_meta_data() {
-	new_test_ext().execute_with(|| {
-		let collection_id = create_test_collection(&CollectionMode::NFT, CollectionId(1));
-
-		let origin1 = Origin::signed(1);
-
-		let data = default_nft_data();
-		create_test_item(CollectionId(1), &data.into());
-
-		let variable_data = b"test data".to_vec();
-		assert_ok!(Unique::set_variable_meta_data(
-			origin1,
-			collection_id,
-			TokenId(1),
-			variable_data.clone().try_into().unwrap()
-		));
-
-		assert_eq!(
-			<pallet_nonfungible::TokenData<Test>>::get((collection_id, 1))
-				.unwrap()
-				.variable_data,
-			variable_data
-		);
-	});
-}
-
-#[test]
-fn set_variable_meta_data_on_re_fungible_token_stores_variable_meta_data() {
-	new_test_ext().execute_with(|| {
-		let collection_id = create_test_collection(&CollectionMode::ReFungible, CollectionId(1));
-
-		let origin1 = Origin::signed(1);
-
-		let data = default_re_fungible_data();
-		create_test_item(collection_id, &data.into());
-
-		let variable_data = b"test data".to_vec();
-		assert_ok!(Unique::set_variable_meta_data(
-			origin1,
-			collection_id,
-			TokenId(1),
-			variable_data.clone().try_into().unwrap()
-		));
-
-		assert_eq!(
-			<pallet_refungible::TokenData<Test>>::get((collection_id, TokenId(1))).variable_data,
-			variable_data
-		);
-	});
-}
-
-#[test]
-fn set_variable_meta_data_on_fungible_token_fails() {
-	new_test_ext().execute_with(|| {
-		let collection_id = create_test_collection(&CollectionMode::Fungible(3), CollectionId(1));
-
-		let origin1 = Origin::signed(1);
-
-		let data = default_fungible_data();
-		create_test_item(collection_id, &data.into());
-
-		let variable_data = b"test data".to_vec();
-		assert_noop!(
-			Unique::set_variable_meta_data(
-				origin1,
-				collection_id,
-				TokenId(0),
-				variable_data.try_into().unwrap()
-			)
-			.map_err(|e| e.error),
-			<pallet_fungible::Error<Test>>::FungibleItemsDontHaveData
-		);
-	});
-}
-
-#[test]
-fn set_variable_meta_data_on_nft_with_item_owner_permission_flag() {
-	new_test_ext().execute_with(|| {
-		//default_limits();
-
-		let collection_id = create_test_collection(&CollectionMode::NFT, CollectionId(1));
-
-		let origin1 = Origin::signed(1);
-
-		let data = default_nft_data();
-		create_test_item(collection_id, &data.into());
-
-		assert_ok!(Unique::set_meta_update_permission_flag(
-			origin1.clone(),
-			collection_id,
-			MetaUpdatePermission::ItemOwner,
-		));
-
-		let variable_data = b"ten chars.".to_vec();
-		assert_ok!(Unique::set_variable_meta_data(
-			origin1,
-			collection_id,
-			TokenId(1),
-			variable_data.clone().try_into().unwrap()
-		));
-
-		assert_eq!(
-			<pallet_nonfungible::TokenData<Test>>::get((collection_id, TokenId(1)))
-				.unwrap()
-				.variable_data,
-			variable_data
-		);
-	});
-}
-
-#[test]
 fn collection_transfer_flag_works() {
 	new_test_ext().execute_with(|| {
 		let origin1 = Origin::signed(1);
@@ -2585,163 +2468,6 @@
 		assert_eq!(
 			<pallet_nonfungible::AccountBalance<Test>>::get((collection_id, account(2))),
 			1
-		);
-	});
-}
-
-#[test]
-fn set_variable_meta_data_on_nft_with_admin_flag() {
-	new_test_ext().execute_with(|| {
-		// default_limits();
-
-		let collection_id =
-			create_test_collection_for_owner(&CollectionMode::NFT, 2, CollectionId(1));
-
-		let origin1 = Origin::signed(1);
-		let origin2 = Origin::signed(2);
-
-		assert_ok!(Unique::set_mint_permission(
-			origin2.clone(),
-			collection_id,
-			true
-		));
-		assert_ok!(Unique::add_to_allow_list(
-			origin2.clone(),
-			collection_id,
-			account(1)
-		));
-
-		assert_ok!(Unique::add_collection_admin(
-			origin2.clone(),
-			collection_id,
-			account(1)
-		));
-
-		let data = default_nft_data();
-		create_test_item(collection_id, &data.into());
-
-		assert_ok!(Unique::set_meta_update_permission_flag(
-			origin2.clone(),
-			collection_id,
-			MetaUpdatePermission::Admin,
-		));
-
-		let variable_data = b"test.".to_vec();
-		assert_ok!(Unique::set_variable_meta_data(
-			origin1,
-			collection_id,
-			TokenId(1),
-			variable_data.clone().try_into().unwrap()
-		));
-
-		assert_eq!(
-			<pallet_nonfungible::TokenData<Test>>::get((collection_id, 1))
-				.unwrap()
-				.variable_data,
-			variable_data
-		);
-	});
-}
-
-#[test]
-fn set_variable_meta_data_on_nft_with_admin_flag_neg() {
-	new_test_ext().execute_with(|| {
-		// default_limits();
-
-		let collection_id =
-			create_test_collection_for_owner(&CollectionMode::NFT, 2, CollectionId(1));
-
-		let origin1 = Origin::signed(1);
-		let origin2 = Origin::signed(2);
-
-		assert_ok!(Unique::set_mint_permission(
-			origin2.clone(),
-			collection_id,
-			true
-		));
-		assert_ok!(Unique::add_to_allow_list(
-			origin2.clone(),
-			collection_id,
-			account(1)
-		));
-
-		let data = default_nft_data();
-		create_test_item(collection_id, &data.into());
-
-		assert_ok!(Unique::set_meta_update_permission_flag(
-			origin2.clone(),
-			collection_id,
-			MetaUpdatePermission::Admin,
-		));
-
-		let variable_data = b"test.".to_vec();
-		assert_noop!(
-			Unique::set_variable_meta_data(
-				origin1,
-				collection_id,
-				TokenId(1),
-				variable_data.try_into().unwrap()
-			)
-			.map_err(|e| e.error),
-			CommonError::<Test>::NoPermission
-		);
-	});
-}
-
-#[test]
-fn set_variable_meta_flag_after_freeze() {
-	new_test_ext().execute_with(|| {
-		// default_limits();
-
-		let collection_id =
-			create_test_collection_for_owner(&CollectionMode::NFT, 2, CollectionId(1));
-
-		let origin2 = Origin::signed(2);
-
-		assert_ok!(Unique::set_meta_update_permission_flag(
-			origin2.clone(),
-			collection_id,
-			MetaUpdatePermission::None,
-		));
-		assert_noop!(
-			Unique::set_meta_update_permission_flag(
-				origin2.clone(),
-				collection_id,
-				MetaUpdatePermission::Admin
-			),
-			CommonError::<Test>::MetadataFlagFrozen
-		);
-	});
-}
-
-#[test]
-fn set_variable_meta_data_on_nft_with_none_flag_neg() {
-	new_test_ext().execute_with(|| {
-		// default_limits();
-
-		let collection_id =
-			create_test_collection_for_owner(&CollectionMode::NFT, 1, CollectionId(1));
-		let origin1 = Origin::signed(1);
-
-		let data = default_nft_data();
-		create_test_item(collection_id, &data.into());
-
-		assert_ok!(Unique::set_meta_update_permission_flag(
-			origin1.clone(),
-			collection_id,
-			MetaUpdatePermission::None,
-		));
-
-		let variable_data = b"test.".to_vec();
-		assert_noop!(
-			Unique::set_variable_meta_data(
-				origin1.clone(),
-				collection_id,
-				TokenId(1),
-				variable_data.try_into().unwrap()
-			)
-			.map_err(|e| e.error),
-			CommonError::<Test>::NoPermission
 		);
 	});
 }
modifiedsmart_contracs/transfer/lib.rsdiffbeforeafterboth
--- a/smart_contracs/transfer/lib.rs
+++ b/smart_contracs/transfer/lib.rs
@@ -58,14 +58,12 @@
 pub enum CreateItemData {
     Nft {
         const_data: Vec<u8>,
-        variable_data: Vec<u8>,
     },
     Fungible {
         value: u128,
     },
     ReFungible {
         const_data: Vec<u8>,
-        variable_data: Vec<u8>,
         pieces: u128,
     },
 }
@@ -88,8 +86,6 @@
     fn approve(spender: DefaultAccountId, collection_id: u32, item_id: u32, amount: u128);
     #[ink(extension = 4, returns_result = false)]
     fn transfer_from(owner: DefaultAccountId, recipient: DefaultAccountId, collection_id: u32, item_id: u32, amount: u128);
-    #[ink(extension = 5, returns_result = false)]
-    fn set_variable_meta_data(collection_id: u32, item_id: u32, data: Vec<u8>);
     #[ink(extension = 6, returns_result = false)]
     fn toggle_allow_list(collection_id: u32, address: DefaultAccountId, allowlisted: bool);
 }
@@ -143,12 +139,6 @@
             let _ = self.env()
                 .extension()
                 .transfer_from(owner, recipient, collection_id, item_id, amount);
-        }
-        #[ink(message)]
-        pub fn set_variable_meta_data(&mut self, collection_id: u32, item_id: u32, data: Vec<u8>) {
-            let _ = self.env()
-                .extension()
-                .set_variable_meta_data(collection_id, item_id, data);
         }
         #[ink(message)]
         pub fn toggle_allow_list(&mut self, collection_id: u32, address: AccountId, allowlisted: bool) {
modifiedtests/package.jsondiffbeforeafterboth
--- a/tests/package.json
+++ b/tests/package.json
@@ -40,7 +40,6 @@
     "testMigrationStructure": "mocha --timeout 9999999 -r ts-node/register ./**/nesting/migration-check.test.ts",
     "testAddCollectionAdmin": "mocha --timeout 9999999 -r ts-node/register ./**/addCollectionAdmin.test.ts",
     "testSetSchemaVersion": "mocha --timeout 9999999 -r ts-node/register ./**/setSchemaVersion.test.ts",
-    "testSetVariableMetaData": "mocha --timeout 9999999 -r ts-node/register ./**/setVariableMetaData.test.ts",
     "testSetCollectionLimits": "mocha --timeout 9999999 -r ts-node/register ./**/setCollectionLimits.test.ts",
     "testSetCollectionSponsor": "mocha --timeout 9999999 -r ts-node/register ./**/setCollectionSponsor.test.ts",
     "testConfirmSponsorship": "mocha --timeout 9999999 -r ts-node/register ./**/confirmSponsorship.test.ts",
modifiedtests/src/contracts.test.tsdiffbeforeafterboth
--- a/tests/src/contracts.test.ts
+++ b/tests/src/contracts.test.ts
@@ -111,7 +111,7 @@
       await addToAllowListExpectSuccess(alice, collectionId, contract.address);
       await addToAllowListExpectSuccess(alice, collectionId, bob.address);
 
-      const transferTx = contract.tx.createItem(value, gasLimit, bob.address, collectionId, {Nft: {const_data: '0x010203', variable_data: '0x020304'}});
+      const transferTx = contract.tx.createItem(value, gasLimit, bob.address, collectionId, {Nft: {const_data: '0x010203'}});
       const events = await submitTransactionAsync(alice, transferTx);
       const result = getGenericResult(events);
       expect(result.success).to.be.true;
@@ -121,7 +121,6 @@
         {
           owner: bob.address,
           constData: '0x010203',
-          variableData: '0x020304',
         },
       ]);
     });
@@ -140,9 +139,9 @@
       await addToAllowListExpectSuccess(alice, collectionId, bob.address);
 
       const transferTx = contract.tx.createMultipleItems(value, gasLimit, bob.address, collectionId, [
-        {Nft: {const_data: '0x010203', variable_data: '0x020304'}},
-        {Nft: {const_data: '0x010204', variable_data: '0x020305'}},
-        {Nft: {const_data: '0x010205', variable_data: '0x020306'}},
+        {Nft: {const_data: '0x010203'}},
+        {Nft: {const_data: '0x010204'}},
+        {Nft: {const_data: '0x010205'}},
       ]);
       const events = await submitTransactionAsync(alice, transferTx);
       const result = getGenericResult(events);
@@ -155,17 +154,14 @@
         {
           Owner: bob.address,
           ConstData: '0x010203',
-          VariableData: '0x020304',
         },
         {
           Owner: bob.address,
           ConstData: '0x010204',
-          VariableData: '0x020305',
         },
         {
           Owner: bob.address,
           ConstData: '0x010205',
-          VariableData: '0x020306',
         },
       ]);
     });
@@ -208,24 +204,6 @@
 
       const token: any = (await api.query.unique.nftItemList(collectionId, tokenId) as any).unwrap();
       expect(token.owner.toString()).to.be.equal(charlie.address);
-    });
-  });
-
-  it('SetVariableMetaData CE', async () => {
-    await usingApi(async api => {
-      const alice = privateKey('//Alice');
-
-      const collectionId = await createCollectionExpectSuccess();
-      const [contract] = await deployTransferContract(api);
-      const tokenId = await createItemExpectSuccess(alice, collectionId, 'NFT', contract.address.toString());
-
-      const transferTx = contract.tx.setVariableMetaData(value, gasLimit, collectionId, tokenId, '0x121314');
-      const events = await submitTransactionAsync(alice, transferTx);
-      const result = getGenericResult(events);
-      expect(result.success).to.be.true;
-
-      const token: any = (await api.query.unique.nftItemList(collectionId, tokenId) as any).unwrap();
-      expect(token.variableData.toString()).to.be.equal('0x121314');
     });
   });
 
modifiedtests/src/createCollection.test.tsdiffbeforeafterboth
--- a/tests/src/createCollection.test.ts
+++ b/tests/src/createCollection.test.ts
@@ -74,7 +74,6 @@
           accountTokenOwnershipLimit: 3,
         },
         constOnChainSchema: '0x333333',
-        metaUpdatePermission: 'Admin',
       });
       const events = await submitTransactionAsync(alice, tx);
       const result = getCreateCollectionResult(events);
@@ -91,7 +90,6 @@
       expect(collection.sponsorship.asUnconfirmed.toString()).to.equal(bob.address);
       expect(collection.limits.accountTokenOwnershipLimit.unwrap().toNumber()).to.equal(3);
       expect(collection.constOnChainSchema.toString()).to.equal('0x333333');
-      expect(collection.metaUpdatePermission.isAdmin).to.be.true;
     });
   });
 });
modifiedtests/src/createMultipleItems.test.tsdiffbeforeafterboth
--- a/tests/src/createMultipleItems.test.ts
+++ b/tests/src/createMultipleItems.test.ts
@@ -30,7 +30,6 @@
   getBalance,
   getTokenOwner,
   getLastTokenId,
-  getVariableMetadata,
   getConstMetadata,
   getCreatedCollectionCount,
   createCollectionWithPropsExpectSuccess,
@@ -47,9 +46,9 @@
       const itemsListIndexBefore = await getLastTokenId(api, collectionId);
       expect(itemsListIndexBefore).to.be.equal(0);
       const alice = privateKey('//Alice');
-      const args = [{Nft: {const_data: '0x31', variable_data: '0x31'}},
-        {Nft: {const_data: '0x32', variable_data: '0x32'}},
-        {Nft: {const_data: '0x33', variable_data: '0x33'}}];
+      const args = [{Nft: {const_data: '0x31'}},
+        {Nft: {const_data: '0x32'}},
+        {Nft: {const_data: '0x33'}}];
       const createMultipleItemsTx = api.tx.unique
         .createMultipleItems(collectionId, normalizeAccountId(alice.address), args);
       await submitTransactionAsync(alice, createMultipleItemsTx);
@@ -63,10 +62,6 @@
       expect(await getConstMetadata(api, collectionId, 1)).to.be.deep.equal([0x31]);
       expect(await getConstMetadata(api, collectionId, 2)).to.be.deep.equal([0x32]);
       expect(await getConstMetadata(api, collectionId, 3)).to.be.deep.equal([0x33]);
-
-      expect(await getVariableMetadata(api, collectionId, 1)).to.be.deep.equal([0x31]);
-      expect(await getVariableMetadata(api, collectionId, 2)).to.be.deep.equal([0x32]);
-      expect(await getVariableMetadata(api, collectionId, 3)).to.be.deep.equal([0x33]);
     });
   });
 
@@ -97,9 +92,9 @@
       expect(itemsListIndexBefore).to.be.equal(0);
       const alice = privateKey('//Alice');
       const args = [
-        {ReFungible: {const_data: [0x31], variable_data: [0x31], pieces: 1}},
-        {ReFungible: {const_data: [0x32], variable_data: [0x32], pieces: 1}},
-        {ReFungible: {const_data: [0x33], variable_data: [0x33], pieces: 1}},
+        {ReFungible: {const_data: [0x31], pieces: 1}},
+        {ReFungible: {const_data: [0x32], pieces: 1}},
+        {ReFungible: {const_data: [0x33], pieces: 1}},
       ];
       const createMultipleItemsTx = api.tx.unique
         .createMultipleItems(collectionId, normalizeAccountId(alice.address), args);
@@ -114,10 +109,6 @@
       expect(await getConstMetadata(api, collectionId, 1)).to.be.deep.equal([0x31]);
       expect(await getConstMetadata(api, collectionId, 2)).to.be.deep.equal([0x32]);
       expect(await getConstMetadata(api, collectionId, 3)).to.be.deep.equal([0x33]);
-
-      expect(await getVariableMetadata(api, collectionId, 1)).to.be.deep.equal([0x31]);
-      expect(await getVariableMetadata(api, collectionId, 2)).to.be.deep.equal([0x32]);
-      expect(await getVariableMetadata(api, collectionId, 3)).to.be.deep.equal([0x33]);
     });
   });
 
@@ -130,8 +121,8 @@
         tokenLimit: 2,
       });
       const args = [
-        {NFT: {const_data: 'A', variable_data: 'A'}},
-        {NFT: {const_data: 'B', variable_data: 'B'}},
+        {NFT: {const_data: 'A'}},
+        {NFT: {const_data: 'B'}},
       ];
       const createMultipleItemsTx = api.tx.unique.createMultipleItems(collectionId, normalizeAccountId(alice.address), args);
       const events = await submitTransactionAsync(alice, createMultipleItemsTx);
@@ -146,9 +137,10 @@
       const itemsListIndexBefore = await getLastTokenId(api, collectionId);
       expect(itemsListIndexBefore).to.be.equal(0);
       const alice = privateKey('//Alice');
-      const args = [{Nft: {const_data: '0x31', variable_data: '0x31'}},
-        {Nft: {const_data: '0x32', variable_data: '0x32'}},
-        {Nft: {const_data: '0x33', variable_data: '0x33'}}];
+      const bob = privateKey('//Bob');
+      const args = [{Nft: {const_data: '0x31'}},
+        {Nft: {const_data: '0x32'}},
+        {Nft: {const_data: '0x33'}}];
       const createMultipleItemsTx = api.tx.unique
         .createMultipleItems(collectionId, normalizeAccountId(alice.address), args);
       await submitTransactionAsync(alice, createMultipleItemsTx);
@@ -156,9 +148,9 @@
       expect(itemsListIndexAfter).to.be.equal(3);
 
       await expect(executeTransaction(
-        api, 
-        alice, 
-        api.tx.unique.setPropertyPermissions(collectionId, [{key: 'k', permission: {mutable: true, collectionAdmin: true, tokenOwner: false}}]), 
+        api,
+        alice,
+        api.tx.unique.setPropertyPermissions(collectionId, [{key: 'k', permission: {mutable: true, collectionAdmin: true, tokenOwner: false}}]),
       )).to.not.be.rejected;
 
       expect(await getTokenOwner(api, collectionId, 1)).to.be.deep.equal(normalizeAccountId(alice.address));
@@ -168,10 +160,6 @@
       expect(await getConstMetadata(api, collectionId, 1)).to.be.deep.equal([0x31]);
       expect(await getConstMetadata(api, collectionId, 2)).to.be.deep.equal([0x32]);
       expect(await getConstMetadata(api, collectionId, 3)).to.be.deep.equal([0x33]);
-
-      expect(await getVariableMetadata(api, collectionId, 1)).to.be.deep.equal([0x31]);
-      expect(await getVariableMetadata(api, collectionId, 2)).to.be.deep.equal([0x32]);
-      expect(await getVariableMetadata(api, collectionId, 3)).to.be.deep.equal([0x33]);
     });
   });
 
@@ -181,9 +169,10 @@
       const itemsListIndexBefore = await getLastTokenId(api, collectionId);
       expect(itemsListIndexBefore).to.be.equal(0);
       const alice = privateKey('//Alice');
-      const args = [{Nft: {const_data: '0x31', variable_data: '0x31'}},
-        {Nft: {const_data: '0x32', variable_data: '0x32'}},
-        {Nft: {const_data: '0x33', variable_data: '0x33'}}];
+      const bob = privateKey('//Bob');
+      const args = [{Nft: {const_data: '0x31'}},
+        {Nft: {const_data: '0x32'}},
+        {Nft: {const_data: '0x33'}}];
       const createMultipleItemsTx = api.tx.unique
         .createMultipleItems(collectionId, normalizeAccountId(alice.address), args);
       await submitTransactionAsync(alice, createMultipleItemsTx);
@@ -191,9 +180,9 @@
       expect(itemsListIndexAfter).to.be.equal(3);
 
       await expect(executeTransaction(
-        api, 
-        alice, 
-        api.tx.unique.setPropertyPermissions(collectionId, [{key: 'k', permission: {mutable: false, collectionAdmin: true, tokenOwner: false}}]), 
+        api,
+        alice,
+        api.tx.unique.setPropertyPermissions(collectionId, [{key: 'k', permission: {mutable: false, collectionAdmin: true, tokenOwner: false}}]),
       )).to.not.be.rejected;
 
       expect(await getTokenOwner(api, collectionId, 1)).to.be.deep.equal(normalizeAccountId(alice.address));
@@ -203,10 +192,6 @@
       expect(await getConstMetadata(api, collectionId, 1)).to.be.deep.equal([0x31]);
       expect(await getConstMetadata(api, collectionId, 2)).to.be.deep.equal([0x32]);
       expect(await getConstMetadata(api, collectionId, 3)).to.be.deep.equal([0x33]);
-
-      expect(await getVariableMetadata(api, collectionId, 1)).to.be.deep.equal([0x31]);
-      expect(await getVariableMetadata(api, collectionId, 2)).to.be.deep.equal([0x32]);
-      expect(await getVariableMetadata(api, collectionId, 3)).to.be.deep.equal([0x33]);
     });
   });
 
@@ -216,9 +201,10 @@
       const itemsListIndexBefore = await getLastTokenId(api, collectionId);
       expect(itemsListIndexBefore).to.be.equal(0);
       const alice = privateKey('//Alice');
-      const args = [{Nft: {const_data: '0x31', variable_data: '0x31'}},
-        {Nft: {const_data: '0x32', variable_data: '0x32'}},
-        {Nft: {const_data: '0x33', variable_data: '0x33'}}];
+      const bob = privateKey('//Bob');
+      const args = [{Nft: {const_data: '0x31'}},
+        {Nft: {const_data: '0x32'}},
+        {Nft: {const_data: '0x33'}}];
       const createMultipleItemsTx = api.tx.unique
         .createMultipleItems(collectionId, normalizeAccountId(alice.address), args);
       await submitTransactionAsync(alice, createMultipleItemsTx);
@@ -226,9 +212,9 @@
       expect(itemsListIndexAfter).to.be.equal(3);
 
       await expect(executeTransaction(
-        api, 
-        alice, 
-        api.tx.unique.setPropertyPermissions(collectionId, [{key: 'k', permission: {mutable: true, collectionAdmin: true, tokenOwner: true}}]), 
+        api,
+        alice,
+        api.tx.unique.setPropertyPermissions(collectionId, [{key: 'k', permission: {mutable: true, collectionAdmin: true, tokenOwner: true}}]),
       )).to.not.be.rejected;
 
       expect(await getTokenOwner(api, collectionId, 1)).to.be.deep.equal(normalizeAccountId(alice.address));
@@ -238,10 +224,6 @@
       expect(await getConstMetadata(api, collectionId, 1)).to.be.deep.equal([0x31]);
       expect(await getConstMetadata(api, collectionId, 2)).to.be.deep.equal([0x32]);
       expect(await getConstMetadata(api, collectionId, 3)).to.be.deep.equal([0x33]);
-
-      expect(await getVariableMetadata(api, collectionId, 1)).to.be.deep.equal([0x31]);
-      expect(await getVariableMetadata(api, collectionId, 2)).to.be.deep.equal([0x32]);
-      expect(await getVariableMetadata(api, collectionId, 3)).to.be.deep.equal([0x33]);
     });
   });
 });
@@ -264,9 +246,9 @@
       const itemsListIndexBefore = await getLastTokenId(api, collectionId);
       expect(itemsListIndexBefore).to.be.equal(0);
       await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
-      const args = [{Nft: {const_data: '0x31', variable_data: '0x31'}},
-        {Nft: {const_data: '0x32', variable_data: '0x32'}},
-        {Nft: {const_data: '0x33', variable_data: '0x33'}}];
+      const args = [{Nft: {const_data: '0x31'}},
+        {Nft: {const_data: '0x32'}},
+        {Nft: {const_data: '0x33'}}];
       const createMultipleItemsTx = api.tx.unique
         .createMultipleItems(collectionId, normalizeAccountId(bob.address), args);
       await submitTransactionAsync(bob, createMultipleItemsTx);
@@ -280,10 +262,6 @@
       expect(await getConstMetadata(api, collectionId, 1)).to.be.deep.equal([0x31]);
       expect(await getConstMetadata(api, collectionId, 2)).to.be.deep.equal([0x32]);
       expect(await getConstMetadata(api, collectionId, 3)).to.be.deep.equal([0x33]);
-
-      expect(await getVariableMetadata(api, collectionId, 1)).to.be.deep.equal([0x31]);
-      expect(await getVariableMetadata(api, collectionId, 2)).to.be.deep.equal([0x32]);
-      expect(await getVariableMetadata(api, collectionId, 3)).to.be.deep.equal([0x33]);
     });
   });
 
@@ -314,9 +292,9 @@
       expect(itemsListIndexBefore).to.be.equal(0);
       await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
       const args = [
-        {ReFungible: {const_data: [0x31], variable_data: [0x31], pieces: 1}},
-        {ReFungible: {const_data: [0x32], variable_data: [0x32], pieces: 1}},
-        {ReFungible: {const_data: [0x33], variable_data: [0x33], pieces: 1}},
+        {ReFungible: {const_data: [0x31], pieces: 1}},
+        {ReFungible: {const_data: [0x32], pieces: 1}},
+        {ReFungible: {const_data: [0x33], pieces: 1}},
       ];
       const createMultipleItemsTx = api.tx.unique
         .createMultipleItems(collectionId, normalizeAccountId(bob.address), args);
@@ -331,10 +309,6 @@
       expect(await getConstMetadata(api, collectionId, 1)).to.be.deep.equal([0x31]);
       expect(await getConstMetadata(api, collectionId, 2)).to.be.deep.equal([0x32]);
       expect(await getConstMetadata(api, collectionId, 3)).to.be.deep.equal([0x33]);
-
-      expect(await getVariableMetadata(api, collectionId, 1)).to.be.deep.equal([0x31]);
-      expect(await getVariableMetadata(api, collectionId, 2)).to.be.deep.equal([0x32]);
-      expect(await getVariableMetadata(api, collectionId, 3)).to.be.deep.equal([0x33]);
     });
   });
 });
@@ -356,9 +330,9 @@
       const collectionId = await createCollectionExpectSuccess();
       const itemsListIndexBefore = await getLastTokenId(api, collectionId);
       expect(itemsListIndexBefore).to.be.equal(0);
-      const args = [{Nft: {const_data: '0x31', variable_data: '0x31'}},
-        {Nft: {const_data: '0x32', variable_data: '0x32'}},
-        {Nft: {const_data: '0x33', variable_data: '0x33'}}];
+      const args = [{Nft: {const_data: '0x31'}},
+        {Nft: {const_data: '0x32'}},
+        {Nft: {const_data: '0x33'}}];
       const createMultipleItemsTx = api.tx.unique
         .createMultipleItems(collectionId, normalizeAccountId(alice.address), args);
       await expect(submitTransactionAsync(bob, createMultipleItemsTx)).to.be.rejected;
@@ -387,9 +361,9 @@
       const itemsListIndexBefore = await getLastTokenId(api, collectionId);
       expect(itemsListIndexBefore).to.be.equal(0);
       const args = [
-        {ReFungible: {const_data: [0x31], variable_data: [0x31], pieces: 1}},
-        {ReFungible: {const_data: [0x32], variable_data: [0x32], pieces: 1}},
-        {ReFungible: {const_data: [0x33], variable_data: [0x33], pieces: 1}},
+        {ReFungible: {const_data: [0x31], pieces: 1}},
+        {ReFungible: {const_data: [0x32], pieces: 1}},
+        {ReFungible: {const_data: [0x33], pieces: 1}},
       ];
       const createMultipleItemsTx = api.tx.unique
         .createMultipleItems(collectionId, normalizeAccountId(alice.address), args);
@@ -412,9 +386,9 @@
       const collectionId = await createCollectionExpectSuccess();
       const alice = privateKey('//Alice');
       const args = [
-        {NFT: {const_data: 'A'.repeat(2049), variable_data: 'A'.repeat(2049)}},
-        {NFT: {const_data: 'B'.repeat(2049), variable_data: 'B'.repeat(2049)}},
-        {NFT: {const_data: 'C'.repeat(2049), variable_data: 'C'.repeat(2049)}},
+        {NFT: {const_data: 'A'.repeat(2049)}},
+        {NFT: {const_data: 'B'.repeat(2049)}},
+        {NFT: {const_data: 'C'.repeat(2049)}},
       ];
       const createMultipleItemsTx = api.tx.unique
         .createMultipleItems(collectionId, normalizeAccountId(alice.address), args);
@@ -424,9 +398,9 @@
       const collectionIdReFungible =
         await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
       const argsReFungible = [
-        {ReFungible: ['1'.repeat(2049), '1'.repeat(2049), 10]},
-        {ReFungible: ['2'.repeat(2049), '2'.repeat(2049), 10]},
-        {ReFungible: ['3'.repeat(2049), '3'.repeat(2049), 10]},
+        {ReFungible: ['1'.repeat(2049), 10]},
+        {ReFungible: ['2'.repeat(2049), 10]},
+        {ReFungible: ['3'.repeat(2049), 10]},
       ];
       const createMultipleItemsTxFungible = api.tx.unique
         .createMultipleItems(collectionIdReFungible, normalizeAccountId(alice.address), argsReFungible);
@@ -449,9 +423,8 @@
     await usingApi(async (api: ApiPromise) => {
       const collectionId = await createCollectionExpectSuccess();
       const args = [
-        {NFT: {const_data: 'A', variable_data: 'A'}},
-        {NFT: {const_data: 'B', variable_data: 'B'.repeat(2049)}},
-        {NFT: {const_data: 'C'.repeat(2049), variable_data: 'C'}},
+        {NFT: {const_data: 'A'}},
+        {NFT: {const_data: 'B'.repeat(2049)}},
       ];
       const createMultipleItemsTx = await api.tx.unique
         .createMultipleItems(collectionId, normalizeAccountId(alice.address), args);
@@ -467,8 +440,8 @@
         tokenLimit: 1,
       });
       const args = [
-        {NFT: {const_data: 'A', variable_data: 'A'}},
-        {NFT: {const_data: 'B', variable_data: 'B'}},
+        {NFT: {const_data: 'A'}},
+        {NFT: {const_data: 'B'}},
       ];
       const createMultipleItemsTx = api.tx.unique.createMultipleItems(collectionId, normalizeAccountId(alice.address), args);
       await expect(submitTransactionExpectFailAsync(alice, createMultipleItemsTx)).to.be.rejected;
@@ -482,10 +455,10 @@
       const itemsListIndexBefore = await getLastTokenId(api, collectionId);
       expect(itemsListIndexBefore).to.be.equal(0);
       await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
-      const args = [{Nft: {const_data: '0x31', variable_data: '0x31'}},
-        {Nft: {const_data: '0x32', variable_data: '0x32'}},
-        {Nft: {const_data: '0x33', variable_data: '0x33'}}];
-      
+      const args = [{Nft: {const_data: '0x31'}},
+        {Nft: {const_data: '0x32'}},
+        {Nft: {const_data: '0x33'}}];
+
       const createMultipleItemsTx = api.tx.unique.createMultipleItems(collectionId, normalizeAccountId(alice.address), args);
 
       const events = await submitTransactionAsync(alice, createMultipleItemsTx);
@@ -493,9 +466,9 @@
 
       for (const elem of result) {
         await expect(executeTransaction(
-          api, 
-          bob, 
-          api.tx.unique.setTokenProperties(elem.collectionId, elem.itemId, [{key: 'key1', value: 'v2'}]), 
+          api,
+          bob,
+          api.tx.unique.setTokenProperties(elem.collectionId, elem.itemId, [{key: 'key1', value: 'v2'}]),
         )).to.be.rejected;
       }
 
@@ -510,10 +483,10 @@
       const itemsListIndexBefore = await getLastTokenId(api, collectionId);
       expect(itemsListIndexBefore).to.be.equal(0);
       await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
-      const args = [{Nft: {const_data: '0x31', variable_data: '0x31'}},
-        {Nft: {const_data: '0x32', variable_data: '0x32'}},
-        {Nft: {const_data: '0x33', variable_data: '0x33'}}];
-      
+      const args = [{Nft: {const_data: '0x31'}},
+        {Nft: {const_data: '0x32'}},
+        {Nft: {const_data: '0x33'}}];
+
       const createMultipleItemsTx = api.tx.unique.createMultipleItems(collectionId, normalizeAccountId(alice.address), args);
 
       const events = await submitTransactionAsync(alice, createMultipleItemsTx);
@@ -521,9 +494,9 @@
 
       for (const elem of result) {
         await expect(executeTransaction(
-          api, 
-          bob, 
-          api.tx.unique.setTokenProperties(elem.collectionId, elem.itemId, [{key: 'key1', value: 'v2'}]), 
+          api,
+          bob,
+          api.tx.unique.setTokenProperties(elem.collectionId, elem.itemId, [{key: 'key1', value: 'v2'}]),
         )).to.be.rejected;
       }
     });
@@ -535,10 +508,10 @@
       const itemsListIndexBefore = await getLastTokenId(api, collectionId);
       await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
       expect(itemsListIndexBefore).to.be.equal(0);
-      const args = [{Nft: {const_data: '0x31', variable_data: '0x31'}},
-        {Nft: {const_data: '0x32', variable_data: '0x32'}},
-        {Nft: {const_data: '0x33', variable_data: '0x33'}}];
-      
+      const args = [{Nft: {const_data: '0x31'}},
+        {Nft: {const_data: '0x32'}},
+        {Nft: {const_data: '0x33'}}];
+
       const createMultipleItemsTx = api.tx.unique.createMultipleItems(collectionId, normalizeAccountId(alice.address), args);
 
       const events = await submitTransactionAsync(alice, createMultipleItemsTx);
@@ -546,9 +519,9 @@
 
       for (const elem of result) {
         await expect(executeTransaction(
-          api, 
-          bob, 
-          api.tx.unique.setTokenProperties(elem.collectionId, elem.itemId, [{key: 'key1', value: 'v2'}]), 
+          api,
+          bob,
+          api.tx.unique.setTokenProperties(elem.collectionId, elem.itemId, [{key: 'key1', value: 'v2'}]),
         )).to.be.rejected;
       }
     });
@@ -562,28 +535,28 @@
       expect(itemsListIndexBefore).to.be.equal(0);
       await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
 
-      const args = [{Nft: {const_data: '0x31', variable_data: '0x31'}},
-        {Nft: {const_data: '0x32', variable_data: '0x32'}},
-        {Nft: {const_data: '0x33', variable_data: '0x33'}}];
-      
+      const args = [{Nft: {const_data: '0x31'}},
+        {Nft: {const_data: '0x32'}},
+        {Nft: {const_data: '0x33'}}];
+
       const createMultipleItemsTx = api.tx.unique.createMultipleItems(collectionId, normalizeAccountId(alice.address), args);
       const events = await submitTransactionAsync(alice, createMultipleItemsTx);
 
       const result = getCreateItemsResult(events);
-      
+
       const prps = [];
-      
+
       for (let i = 0; i < 65; i++) {
         prps.push({key: `key${i}`, value: `value${i}`});
       }
 
       await expect(executeTransaction(api, bob, api.tx.unique.setCollectionProperties(collectionId, prps))).to.be.rejectedWith(/common\.PropertyLimitReached/);
-      
+
       for (const elem of result) {
         await expect(executeTransaction(
-          api, 
-          bob, 
-          api.tx.unique.setTokenProperties(elem.collectionId, elem.itemId, prps), 
+          api,
+          bob,
+          api.tx.unique.setTokenProperties(elem.collectionId, elem.itemId, prps),
         )).to.be.rejected;
       }
     });
@@ -595,10 +568,10 @@
         propPerm:   [{key: 'key1', mutable: true, collectionAdmin: false, tokenOwner: false}]});
       const itemsListIndexBefore = await getLastTokenId(api, collectionId);
       expect(itemsListIndexBefore).to.be.equal(0);
-      const args = [{Nft: {const_data: '0x31', variable_data: '0x31'}},
-        {Nft: {const_data: '0x32', variable_data: '0x32'}},
-        {Nft: {const_data: '0x33', variable_data: '0x33'}}];
-      
+      const args = [{Nft: {const_data: '0x31'}},
+        {Nft: {const_data: '0x32'}},
+        {Nft: {const_data: '0x33'}}];
+
       const createMultipleItemsTx = api.tx.unique.createMultipleItems(collectionId, normalizeAccountId(alice.address), args);
 
       const events = await submitTransactionAsync(alice, createMultipleItemsTx);
@@ -609,9 +582,9 @@
 
       for (const elem of result) {
         await expect(executeTransaction(
-          api, 
-          bob, 
-          api.tx.unique.setTokenProperties(elem.collectionId, elem.itemId, [{key: 'k', value: 'vvvvvv'.repeat(5000)}, {key: 'k2', value: 'vvv'.repeat(5000)}]), 
+          api,
+          bob,
+          api.tx.unique.setTokenProperties(elem.collectionId, elem.itemId, [{key: 'k', value: 'vvvvvv'.repeat(5000)}, {key: 'k2', value: 'vvv'.repeat(5000)}]),
         )).to.be.rejected;
       }
     });
modifiedtests/src/createMultipleItemsEx.test.tsdiffbeforeafterboth
--- a/tests/src/createMultipleItemsEx.test.ts
+++ b/tests/src/createMultipleItemsEx.test.ts
@@ -30,15 +30,12 @@
         {
           owner: {substrate: alice.address},
           constData: '0x0000',
-          variableData: '0x1111',
         }, {
           owner: {substrate: bob.address},
           constData: '0x2222',
-          variableData: '0x3333',
         }, {
           owner: {substrate: charlie.address},
           constData: '0x4444',
-          variableData: '0x5555',
         },
       ];
 
@@ -61,22 +58,19 @@
         {
           owner: {substrate: alice.address},
           constData: '0x0000',
-          variableData: '0x1111',
         }, {
           owner: {substrate: bob.address},
           constData: '0x2222',
-          variableData: '0x3333',
         }, {
           owner: {substrate: charlie.address},
           constData: '0x4444',
-          variableData: '0x5555',
         },
       ];
 
       await expect(executeTransaction(
-        api, 
-        alice, 
-        api.tx.unique.setPropertyPermissions(collection, [{key: 'k', permission: {mutable: true, collectionAdmin: true, tokenOwner: false}}]), 
+        api,
+        alice,
+        api.tx.unique.setPropertyPermissions(collection, [{key: 'k', permission: {mutable: true, collectionAdmin: true, tokenOwner: false}}]),
       )).to.not.be.rejected;
 
       await executeTransaction(api, alice, api.tx.unique.createMultipleItemsEx(collection, {
@@ -98,28 +92,25 @@
         {
           owner: {substrate: alice.address},
           constData: '0x0000',
-          variableData: '0x1111',
         }, {
           owner: {substrate: bob.address},
           constData: '0x2222',
-          variableData: '0x3333',
         }, {
           owner: {substrate: charlie.address},
           constData: '0x4444',
-          variableData: '0x5555',
         },
       ];
       await expect(executeTransaction(
-        api, 
-        alice, 
-        api.tx.unique.setPropertyPermissions(collection, [{key: 'k', permission: {mutable: false, collectionAdmin: true, tokenOwner: false}}]), 
+        api,
+        alice,
+        api.tx.unique.setPropertyPermissions(collection, [{key: 'k', permission: {mutable: false, collectionAdmin: true, tokenOwner: false}}]),
       )).to.not.be.rejected;
 
       await executeTransaction(api, alice, api.tx.unique.createMultipleItemsEx(collection, {
         NFT: data,
       }));
-      
 
+
       const tokens = await api.query.nonfungible.tokenData.entries(collection);
       const json = tokens.map(([, token]) => token.toJSON());
       expect(json).to.be.deep.equal(data);
@@ -136,28 +127,25 @@
         {
           owner: {substrate: alice.address},
           constData: '0x0000',
-          variableData: '0x1111',
         }, {
           owner: {substrate: bob.address},
           constData: '0x2222',
-          variableData: '0x3333',
         }, {
           owner: {substrate: charlie.address},
           constData: '0x4444',
-          variableData: '0x5555',
         },
       ];
       await expect(executeTransaction(
-        api, 
-        alice, 
-        api.tx.unique.setPropertyPermissions(collection, [{key: 'k', permission: {mutable: true, collectionAdmin: true, tokenOwner: true}}]), 
+        api,
+        alice,
+        api.tx.unique.setPropertyPermissions(collection, [{key: 'k', permission: {mutable: true, collectionAdmin: true, tokenOwner: true}}]),
       )).to.not.be.rejected;
 
       await executeTransaction(api, alice, api.tx.unique.createMultipleItemsEx(collection, {
         NFT: data,
       }));
-      
 
+
       const tokens = await api.query.nonfungible.tokenData.entries(collection);
       const json = tokens.map(([, token]) => token.toJSON());
       expect(json).to.be.deep.equal(data);
@@ -184,15 +172,15 @@
 
       const tx = api.tx.unique.createMultipleItemsEx(collection, {NFT: data});
       await executeTransaction(api, alice, tx);
-      
+
       const events = await submitTransactionAsync(alice, tx);
       const result = getCreateItemsResult(events);
-      
+
       for (const elem of result) {
         await expect(executeTransaction(
-          api, 
-          bob, 
-          api.tx.unique.setTokenProperties(elem.collectionId, elem.itemId, [{key: 'key1', value: 'v2'}]), 
+          api,
+          bob,
+          api.tx.unique.setTokenProperties(elem.collectionId, elem.itemId, [{key: 'key1', value: 'v2'}]),
         )).to.be.rejected;
       }
     });
@@ -218,15 +206,15 @@
 
       const tx = api.tx.unique.createMultipleItemsEx(collection, {NFT: data});
       await executeTransaction(api, alice, tx);
-      
+
       const events = await submitTransactionAsync(alice, tx);
       const result = getCreateItemsResult(events);
-      
+
       for (const elem of result) {
         await expect(executeTransaction(
-          api, 
-          bob, 
-          api.tx.unique.setTokenProperties(elem.collectionId, elem.itemId, [{key: 'key1', value: 'v2'}]), 
+          api,
+          bob,
+          api.tx.unique.setTokenProperties(elem.collectionId, elem.itemId, [{key: 'key1', value: 'v2'}]),
         )).to.be.rejected;
       }
     });
@@ -251,15 +239,15 @@
 
       const tx = api.tx.unique.createMultipleItemsEx(collection, {NFT: data});
       await executeTransaction(api, alice, tx);
-      
+
       const events = await submitTransactionAsync(alice, tx);
       const result = getCreateItemsResult(events);
-      
+
       for (const elem of result) {
         await expect(executeTransaction(
-          api, 
-          bob, 
-          api.tx.unique.setTokenProperties(elem.collectionId, elem.itemId, [{key: 'key1', value: 'v2'}]), 
+          api,
+          bob,
+          api.tx.unique.setTokenProperties(elem.collectionId, elem.itemId, [{key: 'key1', value: 'v2'}]),
         )).to.be.rejected;
       }
     });
@@ -284,24 +272,24 @@
 
       const tx = api.tx.unique.createMultipleItemsEx(collection, {NFT: data});
       await executeTransaction(api, alice, tx);
-      
+
       const events = await submitTransactionAsync(alice, tx);
       const result = getCreateItemsResult(events);
 
       const prps = [];
-      
+
       for (let i = 0; i < 65; i++) {
         prps.push({key: `key${i}`, value: `value${i}`});
       }
 
       await expect(executeTransaction(api, bob, api.tx.unique.setCollectionProperties(collection, prps))).to.be.rejectedWith(/common\.PropertyLimitReached/);
 
-      
+
       for (const elem of result) {
         await expect(executeTransaction(
-          api, 
-          bob, 
-          api.tx.unique.setTokenProperties(elem.collectionId, elem.itemId, prps), 
+          api,
+          bob,
+          api.tx.unique.setTokenProperties(elem.collectionId, elem.itemId, prps),
         )).to.be.rejected;
       }
     });
@@ -326,7 +314,7 @@
 
       const tx = api.tx.unique.createMultipleItemsEx(collection, {NFT: data});
       await executeTransaction(api, alice, tx);
-      
+
       const events = await submitTransactionAsync(alice, tx);
       const result = getCreateItemsResult(events);
 
@@ -334,12 +322,12 @@
 
       await expect(executeTransaction(api, bob, api.tx.unique.setCollectionProperties(collection, prps))).to.be.rejectedWith(/common\.NoSpaceForProperty/);
 
-      
+
       for (const elem of result) {
         await expect(executeTransaction(
-          api, 
-          bob, 
-          api.tx.unique.setTokenProperties(elem.collectionId, elem.itemId, prps), 
+          api,
+          bob,
+          api.tx.unique.setTokenProperties(elem.collectionId, elem.itemId, prps),
         )).to.be.rejected;
       }
     });
@@ -355,15 +343,12 @@
         {
           owner: {substrate: alice.address},
           constData: '0x0000',
-          variableData: '0x1111',
         }, {
           owner: {substrate: bob.address},
           constData: '0x2222',
-          variableData: '0x3333',
         }, {
           owner: {substrate: charlie.address},
           constData: '0x4444',
-          variableData: '0x5555',
         },
       ];
 
@@ -386,15 +371,12 @@
         {
           owner: {substrate: alice.address},
           constData: '0x0000',
-          variableData: '0x1111',
         }, {
           owner: {substrate: bob.address},
           constData: '0x2222',
-          variableData: '0x3333',
         }, {
           owner: {substrate: charlie.address},
           constData: '0x4444',
-          variableData: '0x5555',
         },
       ];
 
modifiedtests/src/eth/api/UniqueFungible.soldiffbeforeafterboth
--- a/tests/src/eth/api/UniqueFungible.sol
+++ b/tests/src/eth/api/UniqueFungible.sol
@@ -22,6 +22,12 @@
 	);
 }
 
+// Selector: 79cc6790
+interface ERC20UniqueExtensions is Dummy, ERC165 {
+	// Selector: burnFrom(address,uint256) 79cc6790
+	function burnFrom(address from, uint256 amount) external returns (bool);
+}
+
 // Selector: 942e8b22
 interface ERC20 is Dummy, ERC165, ERC20Events {
 	// Selector: name() 06fdde03
@@ -59,4 +65,28 @@
 		returns (uint256);
 }
 
-interface UniqueFungible is Dummy, ERC165, ERC20 {}
+// Selector: 9b5e29c5
+interface CollectionProperties is Dummy, ERC165 {
+	// Selector: setCollectionProperty(string,bytes) 2f073f66
+	function setCollectionProperty(string memory key, bytes memory value)
+		external;
+
+	// Selector: deleteCollectionProperty(string) 7b7debce
+	function deleteCollectionProperty(string memory key) external;
+
+	// Throws error if key not found
+	//
+	// Selector: collectionProperty(string) cf24fd6d
+	function collectionProperty(string memory key)
+		external
+		view
+		returns (bytes memory);
+}
+
+interface UniqueFungible is
+	Dummy,
+	ERC165,
+	ERC20,
+	ERC20UniqueExtensions,
+	CollectionProperties
+{}
modifiedtests/src/eth/api/UniqueNFT.soldiffbeforeafterboth
--- a/tests/src/eth/api/UniqueNFT.sol
+++ b/tests/src/eth/api/UniqueNFT.sol
@@ -42,6 +42,35 @@
 	event MintingFinished();
 }
 
+// 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 {
 	// Selector: burn(uint256) 42966c68
@@ -162,7 +191,25 @@
 	function totalSupply() external view returns (uint256);
 }
 
-// Selector: e562194d
+// Selector: 9b5e29c5
+interface CollectionProperties is Dummy, ERC165 {
+	// Selector: setCollectionProperty(string,bytes) 2f073f66
+	function setCollectionProperty(string memory key, bytes memory value)
+		external;
+
+	// Selector: deleteCollectionProperty(string) 7b7debce
+	function deleteCollectionProperty(string memory key) external;
+
+	// Throws error if key not found
+	//
+	// Selector: collectionProperty(string) cf24fd6d
+	function collectionProperty(string memory key)
+		external
+		view
+		returns (bytes memory);
+}
+
+// Selector: d74d154f
 interface ERC721UniqueExtensions is Dummy, ERC165 {
 	// Selector: transfer(address,uint256) a9059cbb
 	function transfer(address to, uint256 tokenId) external;
@@ -172,16 +219,7 @@
 
 	// Selector: nextTokenId() 75794a3c
 	function nextTokenId() external view returns (uint256);
-
-	// Selector: setVariableMetadata(uint256,bytes) d4eac26d
-	function setVariableMetadata(uint256 tokenId, bytes memory data) external;
 
-	// Selector: getVariableMetadata(uint256) e6c5ce6f
-	function getVariableMetadata(uint256 tokenId)
-		external
-		view
-		returns (bytes memory);
-
 	// Selector: mintBulk(address,uint256[]) 44a9945e
 	function mintBulk(address to, uint256[] memory tokenIds)
 		external
@@ -201,5 +239,7 @@
 	ERC721Enumerable,
 	ERC721UniqueExtensions,
 	ERC721Mintable,
-	ERC721Burnable
+	ERC721Burnable,
+	CollectionProperties,
+	TokenProperties
 {}
modifiedtests/src/eth/base.test.tsdiffbeforeafterboth
--- a/tests/src/eth/base.test.ts
+++ b/tests/src/eth/base.test.ts
@@ -79,7 +79,7 @@
       minter = createEthAccount(web3);
     });
   });
-  
+
   itWeb3('interfaceID == 0xffffffff always false', async ({web3}) => {
     expect(await contract(web3).methods.supportsInterface('0xffffffff').call()).to.be.false;
   });
@@ -101,7 +101,7 @@
   });
 
   itWeb3('ERC721UniqueExtensions support', async ({web3}) => {
-    expect(await contract(web3).methods.supportsInterface('0xe562194d').call()).to.be.true;
+    expect(await contract(web3).methods.supportsInterface('0xd74d154f').call()).to.be.true;
   });
 
   itWeb3('ERC721Burnable support', async ({web3}) => {
addedtests/src/eth/collectionProperties.test.tsdiffbeforeafterboth
--- /dev/null
+++ b/tests/src/eth/collectionProperties.test.ts
@@ -0,0 +1,54 @@
+import privateKey from '../substrate/privateKey';
+import {addCollectionAdminExpectSuccess, createCollectionExpectSuccess} from '../util/helpers';
+import {collectionIdToAddress, createEthAccount, createEthAccountWithBalance, GAS_ARGS, itWeb3} from './util/helpers';
+import nonFungibleAbi from './nonFungibleAbi.json';
+import {expect} from 'chai';
+import {executeTransaction} from '../substrate/substrate-api';
+
+describe('EVM collection properties', () => {
+  itWeb3('Can be set', async({web3, api}) => {
+    const alice = privateKey('//Alice');
+    const caller = await createEthAccountWithBalance(api, web3);
+    const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
+
+    await addCollectionAdminExpectSuccess(alice, collection, {Ethereum: caller});
+
+    const address = collectionIdToAddress(collection);
+    const contract = new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS});
+
+    await contract.methods.setCollectionProperty('testKey', Buffer.from('testValue')).send({from: caller});
+
+    const [{value}] = (await api.rpc.unique.collectionProperties(collection, ['testKey'])).toHuman()! as any;
+    expect(value).to.equal('testValue');
+  });
+  itWeb3('Can be deleted', async({web3, api}) => {
+    const alice = privateKey('//Alice');
+    const caller = await createEthAccountWithBalance(api, web3);
+    const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
+
+    await executeTransaction(api, alice, api.tx.unique.setCollectionProperties(collection, [{key: 'testKey', value: 'testValue'}]));
+
+    await addCollectionAdminExpectSuccess(alice, collection, {Ethereum: caller});
+
+    const address = collectionIdToAddress(collection);
+    const contract = new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS});
+
+    await contract.methods.deleteCollectionProperty('testKey').send({from: caller});
+
+    const result = (await api.rpc.unique.collectionProperties(collection, ['testKey'])).toJSON()! as any;
+    expect(result.length).to.equal(0);
+  });
+  itWeb3('Can be read', async({web3, api}) => {
+    const alice = privateKey('//Alice');
+    const caller = createEthAccount(web3);
+    const collection = await createCollectionExpectSuccess({mode: {type:'NFT'}});
+
+    await executeTransaction(api, alice, api.tx.unique.setCollectionProperties(collection, [{key: 'testKey', value: 'testValue'}]));
+
+    const address = collectionIdToAddress(collection);
+    const contract = new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS});
+
+    const value = await contract.methods.collectionProperty('testKey').call();
+    expect(value).to.equal(web3.utils.toHex('testValue'));
+  });
+});
modifiedtests/src/eth/nonFungible.test.tsdiffbeforeafterboth
--- a/tests/src/eth/nonFungible.test.ts
+++ b/tests/src/eth/nonFungible.test.ts
@@ -15,7 +15,7 @@
 // along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
 
 import privateKey from '../substrate/privateKey';
-import {approveExpectSuccess, burnItemExpectSuccess, createCollectionExpectSuccess, createItemExpectSuccess, setVariableMetaDataExpectSuccess, transferExpectSuccess, transferFromExpectSuccess, UNIQUE, setMetadataUpdatePermissionFlagExpectSuccess} from '../util/helpers';
+import {approveExpectSuccess, burnItemExpectSuccess, createCollectionExpectSuccess, createItemExpectSuccess, transferExpectSuccess, transferFromExpectSuccess, UNIQUE} from '../util/helpers';
 import {collectionIdToAddress, createEthAccount, createEthAccountWithBalance, GAS_ARGS, itWeb3, normalizeEvents, recordEthFee, recordEvents, subToEth, transferBalanceToEth} from './util/helpers';
 import nonFungibleAbi from './nonFungibleAbi.json';
 import {expect} from 'chai';
@@ -331,41 +331,6 @@
       const balance = await contract.methods.balanceOf(receiver).call();
       expect(+balance).to.equal(1);
     }
-  });
-
-  itWeb3('Can perform getVariableMetadata', async ({web3, api}) => {
-    const collection = await createCollectionExpectSuccess({
-      mode: {type: 'NFT'},
-    });
-    const alice = privateKey('//Alice');
-
-    const owner = await createEthAccountWithBalance(api, web3);
-
-    const item = await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: owner});
-    await setMetadataUpdatePermissionFlagExpectSuccess(alice, collection, 'Admin');
-    await setVariableMetaDataExpectSuccess(alice, collection, item, [1, 2, 3]);
-
-    const address = collectionIdToAddress(collection);
-    const contract = new web3.eth.Contract(nonFungibleAbi as any, address, {from: owner, ...GAS_ARGS});
-
-    expect(await contract.methods.getVariableMetadata(item).call()).to.be.equal('0x010203');
-  });
-
-  itWeb3('Can perform setVariableMetadata', async ({web3, api}) => {
-    const collection = await createCollectionExpectSuccess({
-      mode: {type: 'NFT'},
-    });
-    const alice = privateKey('//Alice');
-
-    const owner = await createEthAccountWithBalance(api, web3);
-
-    const item = await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: owner});
-
-    const address = collectionIdToAddress(collection);
-    const contract = new web3.eth.Contract(nonFungibleAbi as any, address, {from: owner, ...GAS_ARGS});
-
-    expect(await contract.methods.setVariableMetadata(item, '0x010203').send({from: owner}));
-    expect(await contract.methods.getVariableMetadata(item).call()).to.be.equal('0x010203');
   });
 });
 
modifiedtests/src/eth/nonFungibleAbi.jsondiffbeforeafterboth
--- a/tests/src/eth/nonFungibleAbi.json
+++ b/tests/src/eth/nonFungibleAbi.json
@@ -1,614 +1,738 @@
 [
-    {
-        "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": "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": [],
-        "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": "uint256",
-                "name": "tokenId",
-                "type": "uint256"
-            }
-        ],
-        "name": "getVariableMetadata",
-        "outputs": [
-            {
-                "internalType": "bytes",
-                "name": "",
-                "type": "bytes"
-            }
-        ],
-        "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": "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": "uint256",
-                "name": "tokenId",
-                "type": "uint256"
-            },
-            {
-                "internalType": "bytes",
-                "name": "data",
-                "type": "bytes"
-            }
-        ],
-        "name": "setVariableMetadata",
-        "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": "to",
-                "type": "address"
-            },
-            {
-                "internalType": "uint256",
-                "name": "tokenId",
-                "type": "uint256"
-            }
-        ],
-        "name": "transfer",
-        "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": "transferFrom",
-        "outputs": [],
-        "stateMutability": "nonpayable",
-        "type": "function"
-    }
-]
+	{
+		"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": "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": "address",
+				"name": "from",
+				"type": "address"
+			},
+			{
+				"internalType": "uint256",
+				"name": "tokenId",
+				"type": "uint256"
+			}
+		],
+		"name": "burnFrom",
+		"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": [
+			{
+				"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": "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": "string",
+				"name": "key",
+				"type": "string"
+			},
+			{
+				"internalType": "bytes",
+				"name": "value",
+				"type": "bytes"
+			}
+		],
+		"name": "setCollectionProperty",
+		"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": "to",
+				"type": "address"
+			},
+			{
+				"internalType": "uint256",
+				"name": "tokenId",
+				"type": "uint256"
+			}
+		],
+		"name": "transfer",
+		"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": "transferFrom",
+		"outputs": [],
+		"stateMutability": "nonpayable",
+		"type": "function"
+	}
+]
\ No newline at end of file
modifiedtests/src/eth/proxy/UniqueNFTProxy.abidiffbeforeafterboth
--- a/tests/src/eth/proxy/UniqueNFTProxy.abi
+++ b/tests/src/eth/proxy/UniqueNFTProxy.abi
@@ -1 +1 @@
-[{"inputs":[{"internalType":"address","name":"_proxied","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"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":[],"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":"uint256","name":"tokenId","type":"uint256"}],"name":"getVariableMetadata","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"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":"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":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"setVariableMetadata","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"interfaceId","type":"uint32"}],"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":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transfer","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":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}]
\ No newline at end of file
+[{"inputs":[{"internalType":"address","name":"_proxied","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"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":"address","name":"from","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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":"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":"string","name":"key","type":"string"},{"internalType":"string","name":"value","type":"string"}],"name":"setProperty","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":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transfer","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":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}]
\ No newline at end of file
modifiedtests/src/eth/proxy/UniqueNFTProxy.bindiffbeforeafterboth
--- a/tests/src/eth/proxy/UniqueNFTProxy.bin
+++ b/tests/src/eth/proxy/UniqueNFTProxy.bin
@@ -1 +1 @@
-608060405234801561001057600080fd5b5060405161168d38038061168d83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b6115fa806100936000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c806350bb4e7f116100f9578063a22cb46511610097578063d4eac26d11610071578063d4eac26d1461036b578063e6c5ce6f1461037e578063e985e9c514610391578063f4f4b500146103a457600080fd5b8063a22cb46514610332578063a9059cbb14610345578063c87b56dd1461035857600080fd5b806370a08231116100d357806370a082311461030757806375794a3c1461031a5780637d64bcb41461032257806395d89b411461032a57600080fd5b806350bb4e7f146102ce57806360a11672146102e15780636352211e146102f457600080fd5b80632f745c591161016657806342842e0e1161014057806342842e0e1461028257806342966c681461029557806344a9945e146102a85780634f6ccce7146102bb57600080fd5b80632f745c5914610249578063365430061461025c57806340c10f191461026f57600080fd5b806305d2035b146101ae57806306fdde03146101cb578063081812fc146101e0578063095ea7b31461020b57806318160ddd1461022057806323b872dd14610236575b600080fd5b6101b66103b7565b60405190151581526020015b60405180910390f35b6101d3610443565b6040516101c2919061148a565b6101f36101ee366004611277565b6104c3565b6040516001600160a01b0390911681526020016101c2565b61021e61021936600461118c565b610547565b005b6102286105b2565b6040519081526020016101c2565b61021e610244366004610eff565b610639565b61022861025736600461118c565b6106ad565b6101b661026a366004610fac565b610739565b6101b661027d36600461118c565b6107be565b61021e610290366004610eff565b6107f8565b61021e6102a3366004611277565b610839565b6101b66102b63660046110b1565b61089a565b6102286102c9366004611277565b6108cd565b6101b66102dc3660046111b8565b61094b565b61021e6102ef366004610f40565b6109da565b6101f3610302366004611277565b610a49565b610228610315366004610e8c565b610a7b565b610228610aae565b6101b6610afd565b6101d3610b62565b61021e61034036600461115e565b610ba6565b61021e61035336600461118c565b610be0565b6101d3610366366004611277565b610c19565b61021e6103793660046112a9565b610c9b565b6101d361038c366004611277565b610ccd565b6101f361039f366004610ec6565b610cff565b6101b66103b23660046112f0565b610d85565b60008060009054906101000a90046001600160a01b03166001600160a01b03166305d2035b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561040657600080fd5b505afa15801561041a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043e9190611211565b905090565b60008054604080516306fdde0360e01b815290516060936001600160a01b03909316926306fdde039260048082019391829003018186803b15801561048757600080fd5b505afa15801561049b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261043e919081019061122e565b6000805460405163020604bf60e21b8152600481018490526001600160a01b039091169063081812fc906024015b60206040518083038186803b15801561050957600080fd5b505afa15801561051d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105419190610ea9565b92915050565b60005460405163095ea7b360e01b81526001600160a01b038481166004830152602482018490529091169063095ea7b3906044015b600060405180830381600087803b15801561059657600080fd5b505af11580156105aa573d6000803e3d6000fd5b505050505050565b60008060009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561060157600080fd5b505afa158015610615573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043e9190611290565b6000546040516323b872dd60e01b81526001600160a01b038581166004830152848116602483015260448201849052909116906323b872dd906064015b600060405180830381600087803b15801561069057600080fd5b505af11580156106a4573d6000803e3d6000fd5b50505050505050565b60008054604051632f745c5960e01b81526001600160a01b0385811660048301526024820185905290911690632f745c599060440160206040518083038186803b1580156106fa57600080fd5b505afa15801561070e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107329190611290565b9392505050565b60008054604051631b2a180360e11b81526001600160a01b039091169063365430069061076c908690869060040161137f565b602060405180830381600087803b15801561078657600080fd5b505af115801561079a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107329190611211565b600080546040516340c10f1960e01b81526001600160a01b03858116600483015260248201859052909116906340c10f199060440161076c565b600054604051632142170760e11b81526001600160a01b038581166004830152848116602483015260448201849052909116906342842e0e90606401610676565b600054604051630852cd8d60e31b8152600481018390526001600160a01b03909116906342966c6890602401600060405180830381600087803b15801561087f57600080fd5b505af1158015610893573d6000803e3d6000fd5b5050505050565b60008054604051632254ca2f60e11b81526001600160a01b03909116906344a9945e9061076c9086908690600401611404565b60008054604051634f6ccce760e01b8152600481018490526001600160a01b0390911690634f6ccce7906024015b60206040518083038186803b15801561091357600080fd5b505afa158015610927573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105419190611290565b600080546040516350bb4e7f60e01b81526001600160a01b03909116906350bb4e7f906109809087908790879060040161145a565b602060405180830381600087803b15801561099a57600080fd5b505af11580156109ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d29190611211565b949350505050565b6000546040516330508b3960e11b81526001600160a01b03909116906360a1167290610a10908790879087908790600401611342565b600060405180830381600087803b158015610a2a57600080fd5b505af1158015610a3e573d6000803e3d6000fd5b505050505b50505050565b600080546040516331a9108f60e11b8152600481018490526001600160a01b0390911690636352211e906024016104f1565b600080546040516370a0823160e01b81526001600160a01b038481166004830152909116906370a08231906024016108fb565b60008060009054906101000a90046001600160a01b03166001600160a01b03166375794a3c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561060157600080fd5b60008060009054906101000a90046001600160a01b03166001600160a01b0316637d64bcb46040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610b4e57600080fd5b505af115801561041a573d6000803e3d6000fd5b60008054604080516395d89b4160e01b815290516060936001600160a01b03909316926395d89b419260048082019391829003018186803b15801561048757600080fd5b60005460405163a22cb46560e01b81526001600160a01b03848116600483015283151560248301529091169063a22cb4659060440161057c565b60005460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb9060440161057c565b60005460405163c87b56dd60e01b8152600481018390526060916001600160a01b03169063c87b56dd906024015b60006040518083038186803b158015610c5f57600080fd5b505afa158015610c73573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610541919081019061122e565b60005460405163d4eac26d60e01b81526001600160a01b039091169063d4eac26d9061057c908590859060040161149d565b60005460405163e6c5ce6f60e01b8152600481018390526060916001600160a01b03169063e6c5ce6f90602401610c47565b6000805460405163e985e9c560e01b81526001600160a01b03858116600483015284811660248301529091169063e985e9c59060440160206040518083038186803b158015610d4d57600080fd5b505afa158015610d61573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107329190610ea9565b6000805460405162f4f4b560e81b815263ffffffff841660048201526001600160a01b039091169063f4f4b5009060240160206040518083038186803b158015610dce57600080fd5b505afa158015610de2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105419190611211565b6000610e19610e1484611534565b6114df565b9050828152838383011115610e2d57600080fd5b61073283602083018461155c565b600082601f830112610e4c57600080fd5b8135610e5a610e1482611534565b818152846020838601011115610e6f57600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215610e9e57600080fd5b81356107328161159e565b600060208284031215610ebb57600080fd5b81516107328161159e565b60008060408385031215610ed957600080fd5b8235610ee48161159e565b91506020830135610ef48161159e565b809150509250929050565b600080600060608486031215610f1457600080fd5b8335610f1f8161159e565b92506020840135610f2f8161159e565b929592945050506040919091013590565b60008060008060808587031215610f5657600080fd5b8435610f618161159e565b93506020850135610f718161159e565b925060408501359150606085013567ffffffffffffffff811115610f9457600080fd5b610fa087828801610e3b565b91505092959194509250565b60008060408385031215610fbf57600080fd5b8235610fca8161159e565b915060208381013567ffffffffffffffff80821115610fe857600080fd5b818601915086601f830112610ffc57600080fd5b813561100a610e1482611510565b8082825285820191508585018a878560051b880101111561102a57600080fd5b60005b848110156110a05781358681111561104457600080fd5b87016040818e03601f1901121561105a57600080fd5b6110626114b6565b89820135815260408201358881111561107a57600080fd5b6110888f8c83860101610e3b565b828c015250855250928701929087019060010161102d565b50979a909950975050505050505050565b600080604083850312156110c457600080fd5b82356110cf8161159e565b915060208381013567ffffffffffffffff8111156110ec57600080fd5b8401601f810186136110fd57600080fd5b803561110b610e1482611510565b80828252848201915084840189868560051b870101111561112b57600080fd5b600094505b8385101561114e578035835260019490940193918501918501611130565b5080955050505050509250929050565b6000806040838503121561117157600080fd5b823561117c8161159e565b91506020830135610ef4816115b6565b6000806040838503121561119f57600080fd5b82356111aa8161159e565b946020939093013593505050565b6000806000606084860312156111cd57600080fd5b83356111d88161159e565b925060208401359150604084013567ffffffffffffffff8111156111fb57600080fd5b61120786828701610e3b565b9150509250925092565b60006020828403121561122357600080fd5b8151610732816115b6565b60006020828403121561124057600080fd5b815167ffffffffffffffff81111561125757600080fd5b8201601f8101841361126857600080fd5b6109d284825160208401610e06565b60006020828403121561128957600080fd5b5035919050565b6000602082840312156112a257600080fd5b5051919050565b600080604083850312156112bc57600080fd5b82359150602083013567ffffffffffffffff8111156112da57600080fd5b6112e685828601610e3b565b9150509250929050565b60006020828403121561130257600080fd5b813563ffffffff8116811461073257600080fd5b6000815180845261132e81602086016020860161155c565b601f01601f19169290920160200192915050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061137590830184611316565b9695505050505050565b6001600160a01b0383168152604060208083018290528351828401819052600092916060600583901b860181019290860190878301865b828110156113f557888603605f190184528151805187528501518587018890526113e288880182611316565b96505092840192908401906001016113b6565b50939998505050505050505050565b6001600160a01b038316815260406020808301829052835191830182905260009184820191906060850190845b8181101561144d57845183529383019391830191600101611431565b5090979650505050505050565b60018060a01b03841681528260208201526060604082015260006114816060830184611316565b95945050505050565b6020815260006107326020830184611316565b8281526040602082015260006109d26040830184611316565b6040805190810167ffffffffffffffff811182821017156114d9576114d9611588565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561150857611508611588565b604052919050565b600067ffffffffffffffff82111561152a5761152a611588565b5060051b60200190565b600067ffffffffffffffff82111561154e5761154e611588565b50601f01601f191660200190565b60005b8381101561157757818101518382015260200161155f565b83811115610a435750506000910152565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146115b357600080fd5b50565b80151581146115b357600080fdfea2646970667358221220669a75a3efcdc6b60606caa5c7e41cab1d727e89a03fd231d1cda27f4de159a064736f6c63430008070033
\ No newline at end of file
+608060405234801561001057600080fd5b506040516116bb3803806116bb83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b611628806100936000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c80634f6ccce7116100f957806379cc679011610097578063a22cb46511610071578063a22cb46514610399578063a9059cbb146103ac578063c87b56dd146103bf578063e985e9c5146103d257600080fd5b806379cc6790146103765780637d64bcb41461038957806395d89b411461039157600080fd5b806362d9491f116100d357806362d9491f146103355780636352211e1461034857806370a082311461035b57806375794a3c1461036e57600080fd5b80634f6ccce7146102fc57806350bb4e7f1461030f57806360a116721461032257600080fd5b80632f745c591161016657806340c10f191161014057806340c10f19146102b057806342842e0e146102c357806342966c68146102d657806344a9945e146102e957600080fd5b80632f745c5914610277578063342419141461028a578063365430061461029d57600080fd5b8063081812fc116101a2578063081812fc1461020e578063095ea7b31461023957806318160ddd1461024e57806323b872dd1461026457600080fd5b806301ffc9a7146101c957806305d2035b146101f157806306fdde03146101f9575b600080fd5b6101dc6101d7366004610dca565b6103e5565b60405190151581526020015b60405180910390f35b6101dc610462565b6102016104df565b6040516101e89190610e4c565b61022161021c366004610e5f565b610550565b6040516001600160a01b0390911681526020016101e8565b61024c610247366004610e90565b6105bf565b005b61025661062a565b6040519081526020016101e8565b61024c610272366004610ebc565b6106a2565b610256610285366004610e90565b610716565b61024c610298366004610ff3565b610793565b6101dc6102ab36600461104c565b6107f8565b6101dc6102be366004610e90565b61086e565b61024c6102d1366004610ebc565b6108a8565b61024c6102e4366004610e5f565b6108e9565b6101dc6102f736600461114f565b61091a565b61025661030a366004610e5f565b61094d565b6101dc61031d3660046111f5565b6109bc565b61024c61033036600461124e565b610a3c565b61024c6103433660046112ce565b610aab565b610221610356366004610e5f565b610add565b610256610369366004611332565b610b0f565b610256610b42565b61024c610384366004610e90565b610b96565b6101dc610bcf565b610201610c25565b61024c6103a736600461135d565b610c6e565b61024c6103ba366004610e90565b610ca8565b6102016103cd366004610e5f565b610ce1565b6102216103e0366004611396565b610d53565b600080546040516301ffc9a760e01b81526001600160e01b0319841660048201526001600160a01b03909116906301ffc9a790602401602060405180830381865afa158015610438573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045c91906113c4565b92915050565b60008060009054906101000a90046001600160a01b03166001600160a01b03166305d2035b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104da91906113c4565b905090565b60008054604080516306fdde0360e01b815290516060936001600160a01b03909316926306fdde0392600480820193918290030181865afa158015610528573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104da91908101906113e1565b6000805460405163020604bf60e21b8152600481018490526001600160a01b039091169063081812fc906024015b602060405180830381865afa15801561059b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045c9190611458565b60005460405163095ea7b360e01b81526001600160a01b038481166004830152602482018490529091169063095ea7b3906044015b600060405180830381600087803b15801561060e57600080fd5b505af1158015610622573d6000803e3d6000fd5b505050505050565b60008060009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561067e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104da9190611475565b6000546040516323b872dd60e01b81526001600160a01b038581166004830152848116602483015260448201849052909116906323b872dd906064015b600060405180830381600087803b1580156106f957600080fd5b505af115801561070d573d6000803e3d6000fd5b50505050505050565b60008054604051632f745c5960e01b81526001600160a01b0385811660048301526024820185905290911690632f745c5990604401602060405180830381865afa158015610768573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078c9190611475565b9392505050565b600054604051630d09064560e21b81526001600160a01b03909116906334241914906107c3908490600401610e4c565b600060405180830381600087803b1580156107dd57600080fd5b505af11580156107f1573d6000803e3d6000fd5b5050505050565b60008054604051631b2a180360e11b81526001600160a01b039091169063365430069061082b908690869060040161148e565b6020604051808303816000875af115801561084a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078c91906113c4565b600080546040516340c10f1960e01b81526001600160a01b03858116600483015260248201859052909116906340c10f199060440161082b565b600054604051632142170760e11b81526001600160a01b038581166004830152848116602483015260448201849052909116906342842e0e906064016106df565b600054604051630852cd8d60e31b8152600481018390526001600160a01b03909116906342966c68906024016107c3565b60008054604051632254ca2f60e11b81526001600160a01b03909116906344a9945e9061082b9086908690600401611513565b60008054604051634f6ccce760e01b8152600481018490526001600160a01b0390911690634f6ccce7906024015b602060405180830381865afa158015610998573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045c9190611475565b600080546040516350bb4e7f60e01b81526001600160a01b03909116906350bb4e7f906109f190879087908790600401611569565b6020604051808303816000875af1158015610a10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3491906113c4565b949350505050565b6000546040516330508b3960e11b81526001600160a01b03909116906360a1167290610a72908790879087908790600401611590565b600060405180830381600087803b158015610a8c57600080fd5b505af1158015610aa0573d6000803e3d6000fd5b505050505b50505050565b6000546040516362d9491f60e01b81526001600160a01b03909116906362d9491f906105f490859085906004016115cd565b600080546040516331a9108f60e11b8152600481018490526001600160a01b0390911690636352211e9060240161057e565b600080546040516370a0823160e01b81526001600160a01b038481166004830152909116906370a082319060240161097b565b60008060009054906101000a90046001600160a01b03166001600160a01b03166375794a3c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561067e573d6000803e3d6000fd5b60005460405163079cc67960e41b81526001600160a01b03848116600483015260248201849052909116906379cc6790906044016105f4565b60008060009054906101000a90046001600160a01b03166001600160a01b0316637d64bcb46040518163ffffffff1660e01b81526004016020604051808303816000875af11580156104b6573d6000803e3d6000fd5b60008054604080516395d89b4160e01b815290516060936001600160a01b03909316926395d89b4192600480820193918290030181865afa158015610528573d6000803e3d6000fd5b60005460405163a22cb46560e01b81526001600160a01b03848116600483015283151560248301529091169063a22cb465906044016105f4565b60005460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016105f4565b60005460405163c87b56dd60e01b8152600481018390526060916001600160a01b03169063c87b56dd90602401600060405180830381865afa158015610d2b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261045c91908101906113e1565b6000805460405163e985e9c560e01b81526001600160a01b03858116600483015284811660248301529091169063e985e9c590604401602060405180830381865afa158015610da6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078c9190611458565b600060208284031215610ddc57600080fd5b81356001600160e01b03198116811461078c57600080fd5b60005b83811015610e0f578181015183820152602001610df7565b83811115610aa55750506000910152565b60008151808452610e38816020860160208601610df4565b601f01601f19169290920160200192915050565b60208152600061078c6020830184610e20565b600060208284031215610e7157600080fd5b5035919050565b6001600160a01b0381168114610e8d57600080fd5b50565b60008060408385031215610ea357600080fd5b8235610eae81610e78565b946020939093013593505050565b600080600060608486031215610ed157600080fd5b8335610edc81610e78565b92506020840135610eec81610e78565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610f3657610f36610efd565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610f6557610f65610efd565b604052919050565b600067ffffffffffffffff821115610f8757610f87610efd565b50601f01601f191660200190565b6000610fa8610fa384610f6d565b610f3c565b9050828152838383011115610fbc57600080fd5b828260208301376000602084830101529392505050565b600082601f830112610fe457600080fd5b61078c83833560208501610f95565b60006020828403121561100557600080fd5b813567ffffffffffffffff81111561101c57600080fd5b610a3484828501610fd3565b600067ffffffffffffffff82111561104257611042610efd565b5060051b60200190565b600080604080848603121561106057600080fd5b833561106b81610e78565b925060208481013567ffffffffffffffff8082111561108957600080fd5b818701915087601f83011261109d57600080fd5b81356110ab610fa382611028565b81815260059190911b8301840190848101908a8311156110ca57600080fd5b8585015b8381101561113d578035858111156110e65760008081fd5b8601808d03601f19018913156110fc5760008081fd5b611104610f13565b888201358152898201358781111561111c5760008081fd5b61112a8f8b83860101610fd3565b828b0152508452509186019186016110ce565b50809750505050505050509250929050565b6000806040838503121561116257600080fd5b823561116d81610e78565b915060208381013567ffffffffffffffff81111561118a57600080fd5b8401601f8101861361119b57600080fd5b80356111a9610fa382611028565b81815260059190911b820183019083810190888311156111c857600080fd5b928401925b828410156111e6578335825292840192908401906111cd565b80955050505050509250929050565b60008060006060848603121561120a57600080fd5b833561121581610e78565b925060208401359150604084013567ffffffffffffffff81111561123857600080fd5b61124486828701610fd3565b9150509250925092565b6000806000806080858703121561126457600080fd5b843561126f81610e78565b9350602085013561127f81610e78565b925060408501359150606085013567ffffffffffffffff8111156112a257600080fd5b8501601f810187136112b357600080fd5b6112c287823560208401610f95565b91505092959194509250565b600080604083850312156112e157600080fd5b823567ffffffffffffffff808211156112f957600080fd5b61130586838701610fd3565b9350602085013591508082111561131b57600080fd5b5061132885828601610fd3565b9150509250929050565b60006020828403121561134457600080fd5b813561078c81610e78565b8015158114610e8d57600080fd5b6000806040838503121561137057600080fd5b823561137b81610e78565b9150602083013561138b8161134f565b809150509250929050565b600080604083850312156113a957600080fd5b82356113b481610e78565b9150602083013561138b81610e78565b6000602082840312156113d657600080fd5b815161078c8161134f565b6000602082840312156113f357600080fd5b815167ffffffffffffffff81111561140a57600080fd5b8201601f8101841361141b57600080fd5b8051611429610fa382610f6d565b81815285602083850101111561143e57600080fd5b61144f826020830160208601610df4565b95945050505050565b60006020828403121561146a57600080fd5b815161078c81610e78565b60006020828403121561148757600080fd5b5051919050565b6001600160a01b0383168152604060208083018290528351828401819052600092916060600583901b860181019290860190878301865b8281101561150457888603605f190184528151805187528501518587018890526114f188880182610e20565b96505092840192908401906001016114c5565b50939998505050505050505050565b6001600160a01b038316815260406020808301829052835191830182905260009184820191906060850190845b8181101561155c57845183529383019391830191600101611540565b5090979650505050505050565b60018060a01b038416815282602082015260606040820152600061144f6060830184610e20565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906115c390830184610e20565b9695505050505050565b6040815260006115e06040830185610e20565b828103602084015261144f8185610e2056fea26469706673582212205bdf4275f4b714a1029ccfe77c0f9a0e20e121a932e1e5840cace97dfa886da964736f6c634300080d0033
\ No newline at end of file
modifiedtests/src/eth/proxy/UniqueNFTProxy.soldiffbeforeafterboth
--- a/tests/src/eth/proxy/UniqueNFTProxy.sol
+++ b/tests/src/eth/proxy/UniqueNFTProxy.sol
@@ -148,29 +148,17 @@
         return proxied.nextTokenId();
     }
 
-    function supportsInterface(uint32 interfaceId)
+    function burnFrom(address from, uint256 tokenId) external override {
+        return proxied.burnFrom(from, tokenId);
+    }
+
+    function supportsInterface(bytes4 interfaceId)
         external
         view
         override
         returns (bool)
     {
         return proxied.supportsInterface(interfaceId);
-    }
-
-    function setVariableMetadata(uint256 tokenId, bytes memory data)
-        external
-        override
-    {
-        return proxied.setVariableMetadata(tokenId, data);
-    }
-
-    function getVariableMetadata(uint256 tokenId)
-        external
-        view
-        override
-        returns (bytes memory)
-    {
-        return proxied.getVariableMetadata(tokenId);
     }
 
     function mintBulk(address to, uint256[] memory tokenIds)
@@ -188,4 +176,12 @@
     {
         return proxied.mintBulkWithTokenURI(to, tokens);
     }
+
+    function setProperty(string memory key, string memory value) external override {
+        return proxied.setProperty(key, value);
+    }
+
+	function deleteProperty(string memory key) external override {
+        return proxied.deleteProperty(key);
+    }
 }
modifiedtests/src/eth/proxy/nonFungibleProxy.test.tsdiffbeforeafterboth
--- a/tests/src/eth/proxy/nonFungibleProxy.test.ts
+++ b/tests/src/eth/proxy/nonFungibleProxy.test.ts
@@ -15,7 +15,7 @@
 // along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
 
 import privateKey from '../../substrate/privateKey';
-import {createCollectionExpectSuccess, createItemExpectSuccess, setVariableMetaDataExpectSuccess, setMetadataUpdatePermissionFlagExpectSuccess} from '../../util/helpers';
+import {createCollectionExpectSuccess, createItemExpectSuccess} from '../../util/helpers';
 import {collectionIdToAddress, createEthAccount, createEthAccountWithBalance, GAS_ARGS, itWeb3, normalizeEvents} from '../util/helpers';
 import nonFungibleAbi from '../nonFungibleAbi.json';
 import {expect} from 'chai';
@@ -333,36 +333,5 @@
       const balance = await contract.methods.balanceOf(receiver).call();
       expect(+balance).to.equal(1);
     }
-  });
-
-  itWeb3('Can perform getVariableMetadata', async ({web3, api}) => {
-    const collection = await createCollectionExpectSuccess({
-      mode: {type: 'NFT'},
-    });
-    const alice = privateKey('//Alice');
-    const caller = await createEthAccountWithBalance(api, web3);
-
-    const address = collectionIdToAddress(collection);
-    const contract = await proxyWrap(api, web3, new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS}));
-    const item = await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: contract.options.address});
-    await setMetadataUpdatePermissionFlagExpectSuccess(alice, collection, 'Admin');
-    await setVariableMetaDataExpectSuccess(alice, collection, item, [1, 2, 3]);
-
-    expect(await contract.methods.getVariableMetadata(item).call()).to.be.equal('0x010203');
-  });
-
-  itWeb3('Can perform setVariableMetadata', async ({web3, api}) => {
-    const collection = await createCollectionExpectSuccess({
-      mode: {type: 'NFT'},
-    });
-    const alice = privateKey('//Alice');
-    const caller = await createEthAccountWithBalance(api, web3);
-
-    const address = collectionIdToAddress(collection);
-    const contract = await proxyWrap(api, web3, new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS}));
-    const item = await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: contract.options.address});
-
-    expect(await contract.methods.setVariableMetadata(item, '0x010203').send({from: caller}));
-    expect(await contract.methods.getVariableMetadata(item).call()).to.be.equal('0x010203');
   });
 });
addedtests/src/eth/tokenProperties.test.tsdiffbeforeafterboth
--- /dev/null
+++ b/tests/src/eth/tokenProperties.test.ts
@@ -0,0 +1,95 @@
+import privateKey from '../substrate/privateKey';
+import {addCollectionAdminExpectSuccess, createCollectionExpectSuccess, createItemExpectSuccess} from '../util/helpers';
+import {cartesian, collectionIdToAddress, createEthAccount, createEthAccountWithBalance, GAS_ARGS, itWeb3} from './util/helpers';
+import nonFungibleAbi from './nonFungibleAbi.json';
+import {expect} from 'chai';
+import {executeTransaction} from '../substrate/substrate-api';
+
+describe('EVM token properties', () => {
+  itWeb3('Can be reconfigured', async({web3, api}) => {
+    const alice = privateKey('//Alice');
+    const caller = await createEthAccountWithBalance(api, web3);
+    for(const [mutable,collectionAdmin, tokenOwner] of cartesian([], [false, true], [false, true], [false, true])) {
+      const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
+      await addCollectionAdminExpectSuccess(alice, collection, {Ethereum: caller});
+      
+      const address = collectionIdToAddress(collection);
+      const contract = new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS});
+  
+      await contract.methods.setTokenPropertyPermission('testKey', mutable, collectionAdmin, tokenOwner).send({from: caller});
+  
+      const state = (await api.query.common.collectionPropertyPermissions(collection)).toJSON();
+      expect(state).to.be.deep.equal({
+        [web3.utils.toHex('testKey')]: {mutable, collectionAdmin, tokenOwner},
+      });
+    }
+  });
+  itWeb3('Can be set', async({web3, api}) => {
+    const alice = privateKey('//Alice');
+    const caller = await createEthAccountWithBalance(api, web3);
+    const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
+    const token = await createItemExpectSuccess(alice, collection, 'NFT');
+
+    await executeTransaction(api, alice, api.tx.unique.setPropertyPermissions(collection, [{
+      key: 'testKey',
+      permission: {
+        collectionAdmin: true,
+      },
+    }]));
+
+    await addCollectionAdminExpectSuccess(alice, collection, {Ethereum: caller});
+
+    const address = collectionIdToAddress(collection);
+    const contract = new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS});
+
+    await contract.methods.setProperty(token, 'testKey', Buffer.from('testValue')).send({from: caller});
+
+    const [{value}] = (await api.rpc.unique.tokenProperties(collection, token, ['testKey'])).toHuman()! as any;
+    expect(value).to.equal('testValue');
+  });
+  itWeb3('Can be deleted', async({web3, api}) => {
+    const alice = privateKey('//Alice');
+    const caller = await createEthAccountWithBalance(api, web3);
+    const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
+    const token = await createItemExpectSuccess(alice, collection, 'NFT');
+
+    await executeTransaction(api, alice, api.tx.unique.setPropertyPermissions(collection, [{
+      key: 'testKey',
+      permission: {
+        mutable: true,
+        collectionAdmin: true,
+      },
+    }]));
+    await executeTransaction(api, alice, api.tx.unique.setTokenProperties(collection, token, [{key: 'testKey', value: 'testValue'}]));
+
+    await addCollectionAdminExpectSuccess(alice, collection, {Ethereum: caller});
+
+    const address = collectionIdToAddress(collection);
+    const contract = new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS});
+
+    await contract.methods.deleteProperty(token, 'testKey').send({from: caller});
+
+    const result = (await api.rpc.unique.tokenProperties(collection, token, ['testKey'])).toJSON()! as any;
+    expect(result.length).to.equal(0);
+  });
+  itWeb3('Can be read', async({web3, api}) => {
+    const alice = privateKey('//Alice');
+    const caller = createEthAccount(web3);
+    const collection = await createCollectionExpectSuccess({mode: {type:'NFT'}});
+    const token = await createItemExpectSuccess(alice, collection, 'NFT');
+
+    await executeTransaction(api, alice, api.tx.unique.setPropertyPermissions(collection, [{
+      key: 'testKey',
+      permission: {
+        collectionAdmin: true,
+      },
+    }]));
+    await executeTransaction(api, alice, api.tx.unique.setTokenProperties(collection, token, [{key: 'testKey', value: 'testValue'}]));
+
+    const address = collectionIdToAddress(collection);
+    const contract = new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS});
+
+    const value = await contract.methods.property(token, 'testKey').call();
+    expect(value).to.equal(web3.utils.toHex('testValue'));
+  });
+});
modifiedtests/src/eth/util/helpers.tsdiffbeforeafterboth
--- a/tests/src/eth/util/helpers.ts
+++ b/tests/src/eth/util/helpers.ts
@@ -322,3 +322,15 @@
 
   return before - after;
 }
+
+type ElementOf<A> = A extends readonly (infer T)[] ? T : never;
+// I want a fancier api, not a memory efficiency
+export function* cartesian<T extends Array<Array<any>>, R extends Array<any>>(internalRest: [...R], ...args: [...T]): Generator<[...R, ...{[K in keyof T]: ElementOf<T[K]>}]> {
+  if(args.length === 0) {
+    yield internalRest as any;
+    return;
+  }
+  for(const value of args[0]) {
+    yield* cartesian([...internalRest, value], ...args.slice(1)) as any;
+  }
+}
\ No newline at end of file
modifiedtests/src/interfaces/augment-api-errors.tsdiffbeforeafterboth
--- a/tests/src/interfaces/augment-api-errors.ts
+++ b/tests/src/interfaces/augment-api-errors.ts
@@ -137,6 +137,10 @@
        **/
       OwnerPermissionsCantBeReverted: AugmentedError<ApiType>;
       /**
+       * Property key is too long
+       **/
+      PropertyKeyIsTooLong: AugmentedError<ApiType>;
+      /**
        * Tried to store more property keys than allowed
        **/
       PropertyLimitReached: AugmentedError<ApiType>;
@@ -156,10 +160,6 @@
        * Item balance not enough.
        **/
       TokenValueTooLow: AugmentedError<ApiType>;
-      /**
-       * variable_data exceeded data limit.
-       **/
-      TokenVariableDataLimitExceeded: AugmentedError<ApiType>;
       /**
        * Total collections bound exceeded.
        **/
@@ -168,10 +168,6 @@
        * Collection settings not allowing items transferring
        **/
       TransferNotAllowed: AugmentedError<ApiType>;
-      /**
-       * Unable to read array of unbounded keys
-       **/
-      UnableToReadUnboundedKeys: AugmentedError<ApiType>;
       /**
        * Target collection doesn't supports this operation
        **/
modifiedtests/src/interfaces/augment-api-rpc.tsdiffbeforeafterboth
--- a/tests/src/interfaces/augment-api-rpc.ts
+++ b/tests/src/interfaces/augment-api-rpc.ts
@@ -1,7 +1,7 @@
 // Auto-generated via `yarn polkadot-types-from-chain`, do not edit
 /* eslint-disable */
 
-import type { PalletEvmAccountBasicCrossAccountIdRepr, UpDataStructsCollectionLimits, UpDataStructsCollectionStats, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, UpDataStructsRpcCollection, UpDataStructsTokenData } from './unique';
+import type { PalletEvmAccountBasicCrossAccountIdRepr, RmrkTypesBaseInfo, RmrkTypesCollectionInfo, RmrkTypesNftChild, RmrkTypesNftInfo, RmrkTypesPartType, RmrkTypesPropertyInfo, RmrkTypesResourceInfo, RmrkTypesTheme, UpDataStructsCollectionLimits, UpDataStructsCollectionStats, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, UpDataStructsRpcCollection, UpDataStructsTokenData } from './unique';
 import type { AugmentedRpc } from '@polkadot/rpc-core/types';
 import type { Metadata, StorageKey } from '@polkadot/types';
 import type { Bytes, HashMap, Json, Null, Option, Text, U256, U64, Vec, bool, u128, u32, u64 } from '@polkadot/types-codec';
@@ -401,19 +401,19 @@
       /**
        * Get base info
        **/
-      base: AugmentedRpc<(baseId: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Option<RmrkTraitsBaseBaseInfo>>>;
+      base: AugmentedRpc<(baseId: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Option<RmrkTypesBaseInfo>>>;
       /**
        * Get all Base's parts
        **/
-      baseParts: AugmentedRpc<(baseId: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Vec<RmrkTraitsPartPartType>>>;
+      baseParts: AugmentedRpc<(baseId: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Vec<RmrkTypesPartType>>>;
       /**
        * Get collection by id
        **/
-      collectionById: AugmentedRpc<(id: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Option<RmrkTraitsCollectionCollectionInfo>>>;
+      collectionById: AugmentedRpc<(id: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Option<RmrkTypesCollectionInfo>>>;
       /**
        * Get collection properties
        **/
-      collectionProperties: AugmentedRpc<(collectionId: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Vec<RmrkTraitsPropertyPropertyInfo>>>;
+      collectionProperties: AugmentedRpc<(collectionId: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Vec<RmrkTypesPropertyInfo>>>;
       /**
        * Get the latest created collection id
        **/
@@ -421,15 +421,15 @@
       /**
        * Get NFT by collection id and NFT id
        **/
-      nftById: AugmentedRpc<(collectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Option<RmrkTraitsNftNftInfo>>>;
+      nftById: AugmentedRpc<(collectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Option<RmrkTypesNftInfo>>>;
       /**
        * Get NFT children
        **/
-      nftChildren: AugmentedRpc<(collectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Vec<RmrkTraitsNftNftChild>>>;
+      nftChildren: AugmentedRpc<(collectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Vec<RmrkTypesNftChild>>>;
       /**
        * Get NFT properties
        **/
-      nftProperties: AugmentedRpc<(collectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Vec<RmrkTraitsPropertyPropertyInfo>>>;
+      nftProperties: AugmentedRpc<(collectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Vec<RmrkTypesPropertyInfo>>>;
       /**
        * Get NFT resource priorities
        **/
@@ -437,7 +437,7 @@
       /**
        * Get NFT resources
        **/
-      nftResources: AugmentedRpc<(collectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Vec<RmrkTraitsResourceResourceInfo>>>;
+      nftResources: AugmentedRpc<(collectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Vec<RmrkTypesResourceInfo>>>;
       /**
        * Get Base's theme names
        **/
@@ -445,7 +445,7 @@
       /**
        * Get Theme's keys values
        **/
-      themes: AugmentedRpc<(baseId: u32 | AnyNumber | Uint8Array, themeName: Text | string, keys: Option<Vec<Text>> | null | object | string | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Option<RmrkTraitsTheme>>>;
+      themes: AugmentedRpc<(baseId: u32 | AnyNumber | Uint8Array, themeName: Text | string, keys: Option<Vec<Text>> | null | object | string | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Option<RmrkTypesTheme>>>;
     };
     rpc: {
       /**
@@ -659,7 +659,7 @@
       /**
        * Get collection properties
        **/
-      collectionProperties: AugmentedRpc<(collection: u32 | AnyNumber | Uint8Array, propertyKeys: Vec<Text> | (Text | string)[], at?: Hash | string | Uint8Array) => Observable<Vec<UpDataStructsProperty>>>;
+      collectionProperties: AugmentedRpc<(collection: u32 | AnyNumber | Uint8Array, propertyKeys?: Vec<Text> | (Text | string)[], at?: Hash | string | Uint8Array) => Observable<Vec<UpDataStructsProperty>>>;
       /**
        * Get collection stats
        **/
@@ -687,11 +687,11 @@
       /**
        * Get property permissions
        **/
-      propertyPermissions: AugmentedRpc<(collection: u32 | AnyNumber | Uint8Array, propertyKeys: Vec<Text> | (Text | string)[], at?: Hash | string | Uint8Array) => Observable<Vec<UpDataStructsPropertyKeyPermission>>>;
+      propertyPermissions: AugmentedRpc<(collection: u32 | AnyNumber | Uint8Array, propertyKeys?: Vec<Text> | (Text | string)[], at?: Hash | string | Uint8Array) => Observable<Vec<UpDataStructsPropertyKeyPermission>>>;
       /**
        * Get token data
        **/
-      tokenData: AugmentedRpc<(collection: u32 | AnyNumber | Uint8Array, tokenId: u32 | AnyNumber | Uint8Array, propertyKeys: Vec<Text> | (Text | string)[], at?: Hash | string | Uint8Array) => Observable<UpDataStructsTokenData>>;
+      tokenData: AugmentedRpc<(collection: u32 | AnyNumber | Uint8Array, tokenId: u32 | AnyNumber | Uint8Array, propertyKeys?: Vec<Text> | (Text | string)[], at?: Hash | string | Uint8Array) => Observable<UpDataStructsTokenData>>;
       /**
        * Check if token exists
        **/
@@ -703,7 +703,7 @@
       /**
        * Get token properties
        **/
-      tokenProperties: AugmentedRpc<(collection: u32 | AnyNumber | Uint8Array, tokenId: u32 | AnyNumber | Uint8Array, propertyKeys: Vec<Text> | (Text | string)[], at?: Hash | string | Uint8Array) => Observable<Vec<UpDataStructsProperty>>>;
+      tokenProperties: AugmentedRpc<(collection: u32 | AnyNumber | Uint8Array, tokenId: u32 | AnyNumber | Uint8Array, propertyKeys?: Vec<Text> | (Text | string)[], at?: Hash | string | Uint8Array) => Observable<Vec<UpDataStructsProperty>>>;
       /**
        * Get token owner, in case of nested token - find parent recursive
        **/
modifiedtests/src/interfaces/augment-api-tx.tsdiffbeforeafterboth
--- a/tests/src/interfaces/augment-api-tx.ts
+++ b/tests/src/interfaces/augment-api-tx.ts
@@ -5,7 +5,7 @@
 import type { Bytes, Compact, Option, U256, Vec, bool, u128, u16, u32, u64 } from '@polkadot/types-codec';
 import type { AnyNumber, IMethod, ITuple } from '@polkadot/types-codec/types';
 import type { AccountId32, Call, H160, H256, MultiAddress, Perbill } from '@polkadot/types/interfaces/runtime';
-import type { CumulusPrimitivesParachainInherentParachainInherentData, EthereumTransactionTransactionV2, OrmlVestingVestingSchedule, PalletEvmAccountBasicCrossAccountIdRepr, UpDataStructsAccessMode, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCreateCollectionData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsMetaUpdatePermission, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, UpDataStructsSchemaVersion, XcmV1MultiLocation, XcmV2WeightLimit, XcmVersionedMultiAssets, XcmVersionedMultiLocation, XcmVersionedXcm } from '@polkadot/types/lookup';
+import type { CumulusPrimitivesParachainInherentParachainInherentData, EthereumTransactionTransactionV2, OrmlVestingVestingSchedule, PalletEvmAccountBasicCrossAccountIdRepr, UpDataStructsAccessMode, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCreateCollectionData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, UpDataStructsSchemaVersion, XcmV1MultiLocation, XcmV2WeightLimit, XcmVersionedMultiAssets, XcmVersionedMultiLocation, XcmVersionedXcm } from '@polkadot/types/lookup';
 
 declare module '@polkadot/api-base/types/submittable' {
   export interface AugmentedSubmittables<ApiType extends ApiTypes> {
@@ -679,7 +679,7 @@
        * 
        * Prefer it to deprecated [`created_collection`] method
        **/
-      createCollectionEx: AugmentedSubmittable<(data: UpDataStructsCreateCollectionData | { mode?: any; access?: any; name?: any; description?: any; tokenPrefix?: any; offchainSchema?: any; schemaVersion?: any; pendingSponsor?: any; limits?: any; constOnChainSchema?: any; metaUpdatePermission?: any; tokenPropertyPermissions?: any; properties?: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [UpDataStructsCreateCollectionData]>;
+      createCollectionEx: AugmentedSubmittable<(data: UpDataStructsCreateCollectionData | { mode?: any; access?: any; name?: any; description?: any; tokenPrefix?: any; offchainSchema?: any; schemaVersion?: any; pendingSponsor?: any; limits?: any; constOnChainSchema?: any; tokenPropertyPermissions?: any; properties?: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [UpDataStructsCreateCollectionData]>;
       /**
        * This method creates a concrete instance of NFT Collection created with CreateCollection method.
        * 
@@ -809,20 +809,6 @@
        **/
       setConstOnChainSchema: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, schema: Bytes | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, Bytes]>;
       /**
-       * Set meta_update_permission value for particular collection
-       * 
-       * # Permissions
-       * 
-       * * Collection Owner.
-       * 
-       * # Arguments
-       * 
-       * * collection_id: ID of the collection.
-       * 
-       * * value: New flag value.
-       **/
-      setMetaUpdatePermissionFlag: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, value: UpDataStructsMetaUpdatePermission | 'ItemOwner' | 'Admin' | 'None' | number | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, UpDataStructsMetaUpdatePermission]>;
-      /**
        * Allows Anyone to create tokens if:
        * * Allow List is enabled, and
        * * Address is added to allow list, and
@@ -900,21 +886,6 @@
        * * value: New flag value.
        **/
       setTransfersEnabledFlag: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, value: bool | boolean | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, bool]>;
-      /**
-       * Set off-chain data schema.
-       * 
-       * # Permissions
-       * 
-       * * Collection Owner
-       * * Collection Admin
-       * 
-       * # Arguments
-       * 
-       * * collection_id.
-       * 
-       * * schema: String representing the offchain data schema.
-       **/
-      setVariableMetaData: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, itemId: u32 | AnyNumber | Uint8Array, data: Bytes | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, u32, Bytes]>;
       /**
        * Change ownership of the token.
        * 
modifiedtests/src/interfaces/augment-types.tsdiffbeforeafterboth
--- a/tests/src/interfaces/augment-types.ts
+++ b/tests/src/interfaces/augment-types.ts
@@ -1,7 +1,7 @@
 // Auto-generated via `yarn polkadot-types-from-defs`, do not edit
 /* eslint-disable */
 
-import type { CumulusPalletDmpQueueCall, CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueueError, CumulusPalletDmpQueueEvent, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemCall, CumulusPalletParachainSystemError, CumulusPalletParachainSystemEvent, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmCall, CumulusPalletXcmError, CumulusPalletXcmEvent, CumulusPalletXcmpQueueCall, CumulusPalletXcmpQueueError, CumulusPalletXcmpQueueEvent, CumulusPalletXcmpQueueInboundChannelDetails, CumulusPalletXcmpQueueInboundState, CumulusPalletXcmpQueueOutboundChannelDetails, CumulusPalletXcmpQueueOutboundState, CumulusPalletXcmpQueueQueueConfigData, CumulusPrimitivesParachainInherentParachainInherentData, EthbloomBloom, EthereumBlock, EthereumHeader, EthereumLog, EthereumReceiptEip658ReceiptData, EthereumReceiptReceiptV3, EthereumTransactionAccessListItem, EthereumTransactionEip1559Transaction, EthereumTransactionEip2930Transaction, EthereumTransactionLegacyTransaction, EthereumTransactionTransactionAction, EthereumTransactionTransactionSignature, EthereumTransactionTransactionV2, EthereumTypesHashH64, EvmCoreErrorExitError, EvmCoreErrorExitFatal, EvmCoreErrorExitReason, EvmCoreErrorExitRevert, EvmCoreErrorExitSucceed, FpRpcTransactionStatus, FrameSupportPalletId, FrameSupportStorageBoundedBTreeSet, FrameSupportTokensMiscBalanceStatus, FrameSupportWeightsDispatchClass, FrameSupportWeightsDispatchInfo, FrameSupportWeightsPays, FrameSupportWeightsPerDispatchClassU32, FrameSupportWeightsPerDispatchClassU64, FrameSupportWeightsPerDispatchClassWeightsPerClass, FrameSupportWeightsRuntimeDbWeight, FrameSupportWeightsWeightToFeeCoefficient, FrameSystemAccountInfo, FrameSystemCall, FrameSystemError, FrameSystemEvent, FrameSystemEventRecord, FrameSystemExtensionsCheckGenesis, FrameSystemExtensionsCheckNonce, FrameSystemExtensionsCheckSpecVersion, FrameSystemExtensionsCheckWeight, FrameSystemLastRuntimeUpgradeInfo, FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, FrameSystemLimitsWeightsPerClass, FrameSystemPhase, OpalRuntimeRuntime, OrmlVestingModuleCall, OrmlVestingModuleError, OrmlVestingModuleEvent, OrmlVestingVestingSchedule, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesCall, PalletBalancesError, PalletBalancesEvent, PalletBalancesReasons, PalletBalancesReleases, PalletBalancesReserveData, PalletCommonError, PalletCommonEvent, PalletEthereumCall, PalletEthereumError, PalletEthereumEvent, PalletEthereumFakeTransactionFinalizer, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmCall, PalletEvmCoderSubstrateError, PalletEvmContractHelpersError, PalletEvmContractHelpersSponsoringModeT, PalletEvmError, PalletEvmEvent, PalletEvmMigrationCall, PalletEvmMigrationError, PalletFungibleError, PalletInflationCall, PalletNonfungibleError, PalletNonfungibleItemData, PalletRefungibleError, PalletRefungibleItemData, PalletStructureCall, PalletStructureError, PalletStructureEvent, PalletSudoCall, PalletSudoError, PalletSudoEvent, PalletTemplateTransactionPaymentCall, PalletTemplateTransactionPaymentChargeTransactionPayment, PalletTimestampCall, PalletTransactionPaymentReleases, PalletTreasuryCall, PalletTreasuryError, PalletTreasuryEvent, PalletTreasuryProposal, PalletUniqueCall, PalletUniqueError, PalletUniqueRawEvent, PalletXcmCall, PalletXcmError, PalletXcmEvent, PhantomTypeUpDataStructsBaseInfo, PhantomTypeUpDataStructsCollectionInfo, PhantomTypeUpDataStructsNftChild, PhantomTypeUpDataStructsNftInfo, PhantomTypeUpDataStructsPartType, PhantomTypeUpDataStructsPropertyInfo, PhantomTypeUpDataStructsResourceInfo, PhantomTypeUpDataStructsRpcCollection, PhantomTypeUpDataStructsTheme, PhantomTypeUpDataStructsTokenData, PolkadotCorePrimitivesInboundDownwardMessage, PolkadotCorePrimitivesInboundHrmpMessage, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotParachainPrimitivesXcmpMessageFormat, PolkadotPrimitivesV2AbridgedHostConfiguration, PolkadotPrimitivesV2AbridgedHrmpChannel, PolkadotPrimitivesV2PersistedValidationData, PolkadotPrimitivesV2UpgradeRestriction, RmrkTypesAccountIdOrCollectionNftTuple, RmrkTypesBaseInfo, RmrkTypesCollectionInfo, RmrkTypesEquippableList, RmrkTypesFixedPart, RmrkTypesNftChild, RmrkTypesNftInfo, RmrkTypesPartType, RmrkTypesPropertyInfo, RmrkTypesResourceInfo, RmrkTypesRoyaltyInfo, RmrkTypesSlotPart, RmrkTypesTheme, RmrkTypesThemeProperty, SpCoreEcdsaSignature, SpCoreEd25519Signature, SpCoreSr25519Signature, SpRuntimeArithmeticError, SpRuntimeDigest, SpRuntimeDigestDigestItem, SpRuntimeDispatchError, SpRuntimeModuleError, SpRuntimeMultiSignature, SpRuntimeTokenError, SpRuntimeTransactionalError, SpTrieStorageProof, SpVersionRuntimeVersion, UpDataStructsAccessMode, UpDataStructsCollection, UpDataStructsCollectionField, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCollectionStats, UpDataStructsCreateCollectionData, UpDataStructsCreateFungibleData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsCreateNftData, UpDataStructsCreateNftExData, UpDataStructsCreateReFungibleData, UpDataStructsCreateRefungibleExData, UpDataStructsMetaUpdatePermission, UpDataStructsNestingRule, UpDataStructsProperties, UpDataStructsPropertiesMapBoundedVec, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, UpDataStructsPropertyPermission, UpDataStructsRpcCollection, UpDataStructsSchemaVersion, UpDataStructsSponsoringRateLimit, UpDataStructsSponsorshipState, UpDataStructsTokenData, XcmDoubleEncoded, XcmV0Junction, XcmV0JunctionBodyId, XcmV0JunctionBodyPart, XcmV0JunctionNetworkId, XcmV0MultiAsset, XcmV0MultiLocation, XcmV0Order, XcmV0OriginKind, XcmV0Response, XcmV0Xcm, XcmV1Junction, XcmV1MultiAsset, XcmV1MultiLocation, XcmV1MultiassetAssetId, XcmV1MultiassetAssetInstance, XcmV1MultiassetFungibility, XcmV1MultiassetMultiAssetFilter, XcmV1MultiassetMultiAssets, XcmV1MultiassetWildFungibility, XcmV1MultiassetWildMultiAsset, XcmV1MultilocationJunctions, XcmV1Order, XcmV1Response, XcmV1Xcm, XcmV2Instruction, XcmV2Response, XcmV2TraitsError, XcmV2TraitsOutcome, XcmV2WeightLimit, XcmV2Xcm, XcmVersionedMultiAssets, XcmVersionedMultiLocation, XcmVersionedXcm } from './unique';
+import type { CumulusPalletDmpQueueCall, CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueueError, CumulusPalletDmpQueueEvent, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemCall, CumulusPalletParachainSystemError, CumulusPalletParachainSystemEvent, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmCall, CumulusPalletXcmError, CumulusPalletXcmEvent, CumulusPalletXcmpQueueCall, CumulusPalletXcmpQueueError, CumulusPalletXcmpQueueEvent, CumulusPalletXcmpQueueInboundChannelDetails, CumulusPalletXcmpQueueInboundState, CumulusPalletXcmpQueueOutboundChannelDetails, CumulusPalletXcmpQueueOutboundState, CumulusPalletXcmpQueueQueueConfigData, CumulusPrimitivesParachainInherentParachainInherentData, EthbloomBloom, EthereumBlock, EthereumHeader, EthereumLog, EthereumReceiptEip658ReceiptData, EthereumReceiptReceiptV3, EthereumTransactionAccessListItem, EthereumTransactionEip1559Transaction, EthereumTransactionEip2930Transaction, EthereumTransactionLegacyTransaction, EthereumTransactionTransactionAction, EthereumTransactionTransactionSignature, EthereumTransactionTransactionV2, EthereumTypesHashH64, EvmCoreErrorExitError, EvmCoreErrorExitFatal, EvmCoreErrorExitReason, EvmCoreErrorExitRevert, EvmCoreErrorExitSucceed, FpRpcTransactionStatus, FrameSupportPalletId, FrameSupportTokensMiscBalanceStatus, FrameSupportWeightsDispatchClass, FrameSupportWeightsDispatchInfo, FrameSupportWeightsPays, FrameSupportWeightsPerDispatchClassU32, FrameSupportWeightsPerDispatchClassU64, FrameSupportWeightsPerDispatchClassWeightsPerClass, FrameSupportWeightsRuntimeDbWeight, FrameSupportWeightsWeightToFeeCoefficient, FrameSystemAccountInfo, FrameSystemCall, FrameSystemError, FrameSystemEvent, FrameSystemEventRecord, FrameSystemExtensionsCheckGenesis, FrameSystemExtensionsCheckNonce, FrameSystemExtensionsCheckSpecVersion, FrameSystemExtensionsCheckWeight, FrameSystemLastRuntimeUpgradeInfo, FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, FrameSystemLimitsWeightsPerClass, FrameSystemPhase, OpalRuntimeRuntime, OrmlVestingModuleCall, OrmlVestingModuleError, OrmlVestingModuleEvent, OrmlVestingVestingSchedule, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesCall, PalletBalancesError, PalletBalancesEvent, PalletBalancesReasons, PalletBalancesReleases, PalletBalancesReserveData, PalletCommonError, PalletCommonEvent, PalletEthereumCall, PalletEthereumError, PalletEthereumEvent, PalletEthereumFakeTransactionFinalizer, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmCall, PalletEvmCoderSubstrateError, PalletEvmContractHelpersError, PalletEvmContractHelpersSponsoringModeT, PalletEvmError, PalletEvmEvent, PalletEvmMigrationCall, PalletEvmMigrationError, PalletFungibleError, PalletInflationCall, PalletNonfungibleError, PalletNonfungibleItemData, PalletRefungibleError, PalletRefungibleItemData, PalletStructureCall, PalletStructureError, PalletStructureEvent, PalletSudoCall, PalletSudoError, PalletSudoEvent, PalletTemplateTransactionPaymentCall, PalletTemplateTransactionPaymentChargeTransactionPayment, PalletTimestampCall, PalletTransactionPaymentReleases, PalletTreasuryCall, PalletTreasuryError, PalletTreasuryEvent, PalletTreasuryProposal, PalletUniqueCall, PalletUniqueError, PalletUniqueRawEvent, PalletXcmCall, PalletXcmError, PalletXcmEvent, PhantomTypeUpDataStructsBaseInfo, PhantomTypeUpDataStructsCollectionInfo, PhantomTypeUpDataStructsNftChild, PhantomTypeUpDataStructsNftInfo, PhantomTypeUpDataStructsPartType, PhantomTypeUpDataStructsPropertyInfo, PhantomTypeUpDataStructsResourceInfo, PhantomTypeUpDataStructsRpcCollection, PhantomTypeUpDataStructsTheme, PhantomTypeUpDataStructsTokenData, PolkadotCorePrimitivesInboundDownwardMessage, PolkadotCorePrimitivesInboundHrmpMessage, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotParachainPrimitivesXcmpMessageFormat, PolkadotPrimitivesV2AbridgedHostConfiguration, PolkadotPrimitivesV2AbridgedHrmpChannel, PolkadotPrimitivesV2PersistedValidationData, PolkadotPrimitivesV2UpgradeRestriction, RmrkTypesAccountIdOrCollectionNftTuple, RmrkTypesBaseInfo, RmrkTypesCollectionInfo, RmrkTypesEquippableList, RmrkTypesFixedPart, RmrkTypesNftChild, RmrkTypesNftInfo, RmrkTypesPartType, RmrkTypesPropertyInfo, RmrkTypesResourceInfo, RmrkTypesRoyaltyInfo, RmrkTypesSlotPart, RmrkTypesTheme, RmrkTypesThemeProperty, SpCoreEcdsaSignature, SpCoreEd25519Signature, SpCoreSr25519Signature, SpRuntimeArithmeticError, SpRuntimeDigest, SpRuntimeDigestDigestItem, SpRuntimeDispatchError, SpRuntimeModuleError, SpRuntimeMultiSignature, SpRuntimeTokenError, SpRuntimeTransactionalError, SpTrieStorageProof, SpVersionRuntimeVersion, UpDataStructsAccessMode, UpDataStructsCollection, UpDataStructsCollectionField, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCollectionStats, UpDataStructsCreateCollectionData, UpDataStructsCreateFungibleData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsCreateNftData, UpDataStructsCreateNftExData, UpDataStructsCreateReFungibleData, UpDataStructsCreateRefungibleExData, UpDataStructsNestingRule, UpDataStructsProperties, UpDataStructsPropertiesMapBoundedVec, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, UpDataStructsPropertyPermission, UpDataStructsRpcCollection, UpDataStructsSchemaVersion, UpDataStructsSponsoringRateLimit, UpDataStructsSponsorshipState, UpDataStructsTokenData, XcmDoubleEncoded, XcmV0Junction, XcmV0JunctionBodyId, XcmV0JunctionBodyPart, XcmV0JunctionNetworkId, XcmV0MultiAsset, XcmV0MultiLocation, XcmV0Order, XcmV0OriginKind, XcmV0Response, XcmV0Xcm, XcmV1Junction, XcmV1MultiAsset, XcmV1MultiLocation, XcmV1MultiassetAssetId, XcmV1MultiassetAssetInstance, XcmV1MultiassetFungibility, XcmV1MultiassetMultiAssetFilter, XcmV1MultiassetMultiAssets, XcmV1MultiassetWildFungibility, XcmV1MultiassetWildMultiAsset, XcmV1MultilocationJunctions, XcmV1Order, XcmV1Response, XcmV1Xcm, XcmV2Instruction, XcmV2Response, XcmV2TraitsError, XcmV2TraitsOutcome, XcmV2WeightLimit, XcmV2Xcm, XcmVersionedMultiAssets, XcmVersionedMultiLocation, XcmVersionedXcm } from './unique';
 import type { Data, StorageKey } from '@polkadot/types';
 import type { BitVec, Bool, Bytes, I128, I16, I256, I32, I64, I8, Json, Null, Raw, Text, Type, U128, U16, U256, U32, U64, U8, USize, bool, i128, i16, i256, i32, i64, i8, u128, u16, u256, u32, u64, u8, usize } from '@polkadot/types-codec';
 import type { AssetApproval, AssetApprovalKey, AssetBalance, AssetDestroyWitness, AssetDetails, AssetMetadata, TAssetBalance, TAssetDepositBalance } from '@polkadot/types/interfaces/assets';
@@ -478,7 +478,6 @@
     ForkTreePendingChangeNode: ForkTreePendingChangeNode;
     FpRpcTransactionStatus: FpRpcTransactionStatus;
     FrameSupportPalletId: FrameSupportPalletId;
-    FrameSupportStorageBoundedBTreeSet: FrameSupportStorageBoundedBTreeSet;
     FrameSupportTokensMiscBalanceStatus: FrameSupportTokensMiscBalanceStatus;
     FrameSupportWeightsDispatchClass: FrameSupportWeightsDispatchClass;
     FrameSupportWeightsDispatchInfo: FrameSupportWeightsDispatchInfo;
@@ -1204,7 +1203,6 @@
     UpDataStructsCreateNftExData: UpDataStructsCreateNftExData;
     UpDataStructsCreateReFungibleData: UpDataStructsCreateReFungibleData;
     UpDataStructsCreateRefungibleExData: UpDataStructsCreateRefungibleExData;
-    UpDataStructsMetaUpdatePermission: UpDataStructsMetaUpdatePermission;
     UpDataStructsNestingRule: UpDataStructsNestingRule;
     UpDataStructsProperties: UpDataStructsProperties;
     UpDataStructsPropertiesMapBoundedVec: UpDataStructsPropertiesMapBoundedVec;
modifiedtests/src/interfaces/lookup.tsdiffbeforeafterboth
--- a/tests/src/interfaces/lookup.ts
+++ b/tests/src/interfaces/lookup.ts
@@ -1360,15 +1360,6 @@
         itemId: 'u32',
         value: 'u128',
       },
-      set_variable_meta_data: {
-        collectionId: 'u32',
-        itemId: 'u32',
-        data: 'Bytes',
-      },
-      set_meta_update_permission_flag: {
-        collectionId: 'u32',
-        value: 'UpDataStructsMetaUpdatePermission',
-      },
       set_schema_version: {
         collectionId: 'u32',
         version: 'UpDataStructsSchemaVersion',
@@ -1411,7 +1402,6 @@
     pendingSponsor: 'Option<AccountId32>',
     limits: 'Option<UpDataStructsCollectionLimits>',
     constOnChainSchema: 'Bytes',
-    metaUpdatePermission: 'Option<UpDataStructsMetaUpdatePermission>',
     tokenPropertyPermissions: 'Vec<UpDataStructsPropertyKeyPermission>',
     properties: 'Vec<UpDataStructsProperty>'
   },
@@ -1462,20 +1452,14 @@
     }
   },
   /**
-   * Lookup177: up_data_structs::MetaUpdatePermission
+   * Lookup177: up_data_structs::PropertyKeyPermission
    **/
-  UpDataStructsMetaUpdatePermission: {
-    _enum: ['ItemOwner', 'Admin', 'None']
-  },
-  /**
-   * Lookup179: up_data_structs::PropertyKeyPermission
-   **/
   UpDataStructsPropertyKeyPermission: {
     key: 'Bytes',
     permission: 'UpDataStructsPropertyPermission'
   },
   /**
-   * Lookup181: up_data_structs::PropertyPermission
+   * Lookup179: up_data_structs::PropertyPermission
    **/
   UpDataStructsPropertyPermission: {
     mutable: 'bool',
@@ -1483,14 +1467,14 @@
     tokenOwner: 'bool'
   },
   /**
-   * Lookup184: up_data_structs::Property
+   * Lookup182: up_data_structs::Property
    **/
   UpDataStructsProperty: {
     key: 'Bytes',
     value: 'Bytes'
   },
   /**
-   * Lookup186: pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>
+   * Lookup184: pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>
    **/
   PalletEvmAccountBasicCrossAccountIdRepr: {
     _enum: {
@@ -1499,7 +1483,7 @@
     }
   },
   /**
-   * Lookup188: up_data_structs::CreateItemData
+   * Lookup186: up_data_structs::CreateItemData
    **/
   UpDataStructsCreateItemData: {
     _enum: {
@@ -1509,29 +1493,27 @@
     }
   },
   /**
-   * Lookup189: up_data_structs::CreateNftData
+   * Lookup187: up_data_structs::CreateNftData
    **/
   UpDataStructsCreateNftData: {
     constData: 'Bytes',
-    variableData: 'Bytes',
     properties: 'Vec<UpDataStructsProperty>'
   },
   /**
-   * Lookup191: up_data_structs::CreateFungibleData
+   * Lookup189: up_data_structs::CreateFungibleData
    **/
   UpDataStructsCreateFungibleData: {
     value: 'u128'
   },
   /**
-   * Lookup192: up_data_structs::CreateReFungibleData
+   * Lookup190: up_data_structs::CreateReFungibleData
    **/
   UpDataStructsCreateReFungibleData: {
     constData: 'Bytes',
-    variableData: 'Bytes',
     pieces: 'u128'
   },
   /**
-   * Lookup196: up_data_structs::CreateItemExData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
+   * Lookup194: up_data_structs::CreateItemExData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
    **/
   UpDataStructsCreateItemExData: {
     _enum: {
@@ -1542,32 +1524,30 @@
     }
   },
   /**
-   * Lookup198: up_data_structs::CreateNftExData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
+   * Lookup196: up_data_structs::CreateNftExData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
    **/
   UpDataStructsCreateNftExData: {
     constData: 'Bytes',
-    variableData: 'Bytes',
     properties: 'Vec<UpDataStructsProperty>',
     owner: 'PalletEvmAccountBasicCrossAccountIdRepr'
   },
   /**
-   * Lookup205: up_data_structs::CreateRefungibleExData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
+   * Lookup203: up_data_structs::CreateRefungibleExData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
    **/
   UpDataStructsCreateRefungibleExData: {
     constData: 'Bytes',
-    variableData: 'Bytes',
     users: 'BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr, u128>'
   },
   /**
-   * Lookup207: pallet_template_transaction_payment::Call<T>
+   * Lookup205: pallet_template_transaction_payment::Call<T>
    **/
   PalletTemplateTransactionPaymentCall: 'Null',
   /**
-   * Lookup208: pallet_structure::pallet::Call<T>
+   * Lookup206: pallet_structure::pallet::Call<T>
    **/
   PalletStructureCall: 'Null',
   /**
-   * Lookup209: pallet_evm::pallet::Call<T>
+   * Lookup207: pallet_evm::pallet::Call<T>
    **/
   PalletEvmCall: {
     _enum: {
@@ -1610,7 +1590,7 @@
     }
   },
   /**
-   * Lookup215: pallet_ethereum::pallet::Call<T>
+   * Lookup213: pallet_ethereum::pallet::Call<T>
    **/
   PalletEthereumCall: {
     _enum: {
@@ -1620,7 +1600,7 @@
     }
   },
   /**
-   * Lookup216: ethereum::transaction::TransactionV2
+   * Lookup214: ethereum::transaction::TransactionV2
    **/
   EthereumTransactionTransactionV2: {
     _enum: {
@@ -1630,7 +1610,7 @@
     }
   },
   /**
-   * Lookup217: ethereum::transaction::LegacyTransaction
+   * Lookup215: ethereum::transaction::LegacyTransaction
    **/
   EthereumTransactionLegacyTransaction: {
     nonce: 'U256',
@@ -1642,7 +1622,7 @@
     signature: 'EthereumTransactionTransactionSignature'
   },
   /**
-   * Lookup218: ethereum::transaction::TransactionAction
+   * Lookup216: ethereum::transaction::TransactionAction
    **/
   EthereumTransactionTransactionAction: {
     _enum: {
@@ -1651,7 +1631,7 @@
     }
   },
   /**
-   * Lookup219: ethereum::transaction::TransactionSignature
+   * Lookup217: ethereum::transaction::TransactionSignature
    **/
   EthereumTransactionTransactionSignature: {
     v: 'u64',
@@ -1659,7 +1639,7 @@
     s: 'H256'
   },
   /**
-   * Lookup221: ethereum::transaction::EIP2930Transaction
+   * Lookup219: ethereum::transaction::EIP2930Transaction
    **/
   EthereumTransactionEip2930Transaction: {
     chainId: 'u64',
@@ -1675,14 +1655,14 @@
     s: 'H256'
   },
   /**
-   * Lookup223: ethereum::transaction::AccessListItem
+   * Lookup221: ethereum::transaction::AccessListItem
    **/
   EthereumTransactionAccessListItem: {
     address: 'H160',
     storageKeys: 'Vec<H256>'
   },
   /**
-   * Lookup224: ethereum::transaction::EIP1559Transaction
+   * Lookup222: ethereum::transaction::EIP1559Transaction
    **/
   EthereumTransactionEip1559Transaction: {
     chainId: 'u64',
@@ -1699,7 +1679,7 @@
     s: 'H256'
   },
   /**
-   * Lookup225: pallet_evm_migration::pallet::Call<T>
+   * Lookup223: pallet_evm_migration::pallet::Call<T>
    **/
   PalletEvmMigrationCall: {
     _enum: {
@@ -1717,7 +1697,7 @@
     }
   },
   /**
-   * Lookup228: pallet_sudo::pallet::Event<T>
+   * Lookup226: pallet_sudo::pallet::Event<T>
    **/
   PalletSudoEvent: {
     _enum: {
@@ -1733,7 +1713,7 @@
     }
   },
   /**
-   * Lookup230: sp_runtime::DispatchError
+   * Lookup228: sp_runtime::DispatchError
    **/
   SpRuntimeDispatchError: {
     _enum: {
@@ -1750,38 +1730,38 @@
     }
   },
   /**
-   * Lookup231: sp_runtime::ModuleError
+   * Lookup229: sp_runtime::ModuleError
    **/
   SpRuntimeModuleError: {
     index: 'u8',
     error: '[u8;4]'
   },
   /**
-   * Lookup232: sp_runtime::TokenError
+   * Lookup230: sp_runtime::TokenError
    **/
   SpRuntimeTokenError: {
     _enum: ['NoFunds', 'WouldDie', 'BelowMinimum', 'CannotCreate', 'UnknownAsset', 'Frozen', 'Unsupported']
   },
   /**
-   * Lookup233: sp_runtime::ArithmeticError
+   * Lookup231: sp_runtime::ArithmeticError
    **/
   SpRuntimeArithmeticError: {
     _enum: ['Underflow', 'Overflow', 'DivisionByZero']
   },
   /**
-   * Lookup234: sp_runtime::TransactionalError
+   * Lookup232: sp_runtime::TransactionalError
    **/
   SpRuntimeTransactionalError: {
     _enum: ['LimitReached', 'NoLayer']
   },
   /**
-   * Lookup235: pallet_sudo::pallet::Error<T>
+   * Lookup233: pallet_sudo::pallet::Error<T>
    **/
   PalletSudoError: {
     _enum: ['RequireSudo']
   },
   /**
-   * Lookup236: frame_system::AccountInfo<Index, pallet_balances::AccountData<Balance>>
+   * Lookup234: frame_system::AccountInfo<Index, pallet_balances::AccountData<Balance>>
    **/
   FrameSystemAccountInfo: {
     nonce: 'u32',
@@ -1791,7 +1771,7 @@
     data: 'PalletBalancesAccountData'
   },
   /**
-   * Lookup237: frame_support::weights::PerDispatchClass<T>
+   * Lookup235: frame_support::weights::PerDispatchClass<T>
    **/
   FrameSupportWeightsPerDispatchClassU64: {
     normal: 'u64',
@@ -1799,13 +1779,13 @@
     mandatory: 'u64'
   },
   /**
-   * Lookup238: sp_runtime::generic::digest::Digest
+   * Lookup236: sp_runtime::generic::digest::Digest
    **/
   SpRuntimeDigest: {
     logs: 'Vec<SpRuntimeDigestDigestItem>'
   },
   /**
-   * Lookup240: sp_runtime::generic::digest::DigestItem
+   * Lookup238: sp_runtime::generic::digest::DigestItem
    **/
   SpRuntimeDigestDigestItem: {
     _enum: {
@@ -1821,7 +1801,7 @@
     }
   },
   /**
-   * Lookup242: frame_system::EventRecord<opal_runtime::Event, primitive_types::H256>
+   * Lookup240: frame_system::EventRecord<opal_runtime::Event, primitive_types::H256>
    **/
   FrameSystemEventRecord: {
     phase: 'FrameSystemPhase',
@@ -1829,7 +1809,7 @@
     topics: 'Vec<H256>'
   },
   /**
-   * Lookup244: frame_system::pallet::Event<T>
+   * Lookup242: frame_system::pallet::Event<T>
    **/
   FrameSystemEvent: {
     _enum: {
@@ -1857,7 +1837,7 @@
     }
   },
   /**
-   * Lookup245: frame_support::weights::DispatchInfo
+   * Lookup243: frame_support::weights::DispatchInfo
    **/
   FrameSupportWeightsDispatchInfo: {
     weight: 'u64',
@@ -1865,19 +1845,19 @@
     paysFee: 'FrameSupportWeightsPays'
   },
   /**
-   * Lookup246: frame_support::weights::DispatchClass
+   * Lookup244: frame_support::weights::DispatchClass
    **/
   FrameSupportWeightsDispatchClass: {
     _enum: ['Normal', 'Operational', 'Mandatory']
   },
   /**
-   * Lookup247: frame_support::weights::Pays
+   * Lookup245: frame_support::weights::Pays
    **/
   FrameSupportWeightsPays: {
     _enum: ['Yes', 'No']
   },
   /**
-   * Lookup248: orml_vesting::module::Event<T>
+   * Lookup246: orml_vesting::module::Event<T>
    **/
   OrmlVestingModuleEvent: {
     _enum: {
@@ -1896,7 +1876,7 @@
     }
   },
   /**
-   * Lookup249: cumulus_pallet_xcmp_queue::pallet::Event<T>
+   * Lookup247: cumulus_pallet_xcmp_queue::pallet::Event<T>
    **/
   CumulusPalletXcmpQueueEvent: {
     _enum: {
@@ -1911,7 +1891,7 @@
     }
   },
   /**
-   * Lookup250: pallet_xcm::pallet::Event<T>
+   * Lookup248: pallet_xcm::pallet::Event<T>
    **/
   PalletXcmEvent: {
     _enum: {
@@ -1934,7 +1914,7 @@
     }
   },
   /**
-   * Lookup251: xcm::v2::traits::Outcome
+   * Lookup249: xcm::v2::traits::Outcome
    **/
   XcmV2TraitsOutcome: {
     _enum: {
@@ -1944,7 +1924,7 @@
     }
   },
   /**
-   * Lookup253: cumulus_pallet_xcm::pallet::Event<T>
+   * Lookup251: cumulus_pallet_xcm::pallet::Event<T>
    **/
   CumulusPalletXcmEvent: {
     _enum: {
@@ -1954,7 +1934,7 @@
     }
   },
   /**
-   * Lookup254: cumulus_pallet_dmp_queue::pallet::Event<T>
+   * Lookup252: cumulus_pallet_dmp_queue::pallet::Event<T>
    **/
   CumulusPalletDmpQueueEvent: {
     _enum: {
@@ -1967,7 +1947,7 @@
     }
   },
   /**
-   * Lookup255: pallet_unique::RawEvent<sp_core::crypto::AccountId32, pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
+   * Lookup253: pallet_unique::RawEvent<sp_core::crypto::AccountId32, pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
    **/
   PalletUniqueRawEvent: {
     _enum: {
@@ -1988,7 +1968,7 @@
     }
   },
   /**
-   * Lookup256: pallet_common::pallet::Event<T>
+   * Lookup254: pallet_common::pallet::Event<T>
    **/
   PalletCommonEvent: {
     _enum: {
@@ -2006,7 +1986,7 @@
     }
   },
   /**
-   * Lookup257: pallet_structure::pallet::Event<T>
+   * Lookup255: pallet_structure::pallet::Event<T>
    **/
   PalletStructureEvent: {
     _enum: {
@@ -2014,7 +1994,7 @@
     }
   },
   /**
-   * Lookup258: pallet_evm::pallet::Event<T>
+   * Lookup256: pallet_evm::pallet::Event<T>
    **/
   PalletEvmEvent: {
     _enum: {
@@ -2028,7 +2008,7 @@
     }
   },
   /**
-   * Lookup259: ethereum::log::Log
+   * Lookup257: ethereum::log::Log
    **/
   EthereumLog: {
     address: 'H160',
@@ -2036,7 +2016,7 @@
     data: 'Bytes'
   },
   /**
-   * Lookup260: pallet_ethereum::pallet::Event
+   * Lookup258: pallet_ethereum::pallet::Event
    **/
   PalletEthereumEvent: {
     _enum: {
@@ -2044,7 +2024,7 @@
     }
   },
   /**
-   * Lookup261: evm_core::error::ExitReason
+   * Lookup259: evm_core::error::ExitReason
    **/
   EvmCoreErrorExitReason: {
     _enum: {
@@ -2055,13 +2035,13 @@
     }
   },
   /**
-   * Lookup262: evm_core::error::ExitSucceed
+   * Lookup260: evm_core::error::ExitSucceed
    **/
   EvmCoreErrorExitSucceed: {
     _enum: ['Stopped', 'Returned', 'Suicided']
   },
   /**
-   * Lookup263: evm_core::error::ExitError
+   * Lookup261: evm_core::error::ExitError
    **/
   EvmCoreErrorExitError: {
     _enum: {
@@ -2083,13 +2063,13 @@
     }
   },
   /**
-   * Lookup266: evm_core::error::ExitRevert
+   * Lookup264: evm_core::error::ExitRevert
    **/
   EvmCoreErrorExitRevert: {
     _enum: ['Reverted']
   },
   /**
-   * Lookup267: evm_core::error::ExitFatal
+   * Lookup265: evm_core::error::ExitFatal
    **/
   EvmCoreErrorExitFatal: {
     _enum: {
@@ -2100,7 +2080,7 @@
     }
   },
   /**
-   * Lookup268: frame_system::Phase
+   * Lookup266: frame_system::Phase
    **/
   FrameSystemPhase: {
     _enum: {
@@ -2110,14 +2090,14 @@
     }
   },
   /**
-   * Lookup270: frame_system::LastRuntimeUpgradeInfo
+   * Lookup268: frame_system::LastRuntimeUpgradeInfo
    **/
   FrameSystemLastRuntimeUpgradeInfo: {
     specVersion: 'Compact<u32>',
     specName: 'Text'
   },
   /**
-   * Lookup271: frame_system::limits::BlockWeights
+   * Lookup269: frame_system::limits::BlockWeights
    **/
   FrameSystemLimitsBlockWeights: {
     baseBlock: 'u64',
@@ -2125,7 +2105,7 @@
     perClass: 'FrameSupportWeightsPerDispatchClassWeightsPerClass'
   },
   /**
-   * Lookup272: frame_support::weights::PerDispatchClass<frame_system::limits::WeightsPerClass>
+   * Lookup270: frame_support::weights::PerDispatchClass<frame_system::limits::WeightsPerClass>
    **/
   FrameSupportWeightsPerDispatchClassWeightsPerClass: {
     normal: 'FrameSystemLimitsWeightsPerClass',
@@ -2133,7 +2113,7 @@
     mandatory: 'FrameSystemLimitsWeightsPerClass'
   },
   /**
-   * Lookup273: frame_system::limits::WeightsPerClass
+   * Lookup271: frame_system::limits::WeightsPerClass
    **/
   FrameSystemLimitsWeightsPerClass: {
     baseExtrinsic: 'u64',
@@ -2142,13 +2122,13 @@
     reserved: 'Option<u64>'
   },
   /**
-   * Lookup275: frame_system::limits::BlockLength
+   * Lookup273: frame_system::limits::BlockLength
    **/
   FrameSystemLimitsBlockLength: {
     max: 'FrameSupportWeightsPerDispatchClassU32'
   },
   /**
-   * Lookup276: frame_support::weights::PerDispatchClass<T>
+   * Lookup274: frame_support::weights::PerDispatchClass<T>
    **/
   FrameSupportWeightsPerDispatchClassU32: {
     normal: 'u32',
@@ -2156,14 +2136,14 @@
     mandatory: 'u32'
   },
   /**
-   * Lookup277: frame_support::weights::RuntimeDbWeight
+   * Lookup275: frame_support::weights::RuntimeDbWeight
    **/
   FrameSupportWeightsRuntimeDbWeight: {
     read: 'u64',
     write: 'u64'
   },
   /**
-   * Lookup278: sp_version::RuntimeVersion
+   * Lookup276: sp_version::RuntimeVersion
    **/
   SpVersionRuntimeVersion: {
     specName: 'Text',
@@ -2176,19 +2156,19 @@
     stateVersion: 'u8'
   },
   /**
-   * Lookup282: frame_system::pallet::Error<T>
+   * Lookup280: frame_system::pallet::Error<T>
    **/
   FrameSystemError: {
     _enum: ['InvalidSpecName', 'SpecVersionNeedsToIncrease', 'FailedToExtractRuntimeVersion', 'NonDefaultComposite', 'NonZeroRefCount', 'CallFiltered']
   },
   /**
-   * Lookup284: orml_vesting::module::Error<T>
+   * Lookup282: orml_vesting::module::Error<T>
    **/
   OrmlVestingModuleError: {
     _enum: ['ZeroVestingPeriod', 'ZeroVestingPeriodCount', 'InsufficientBalanceToLock', 'TooManyVestingSchedules', 'AmountLow', 'MaxVestingSchedulesExceeded']
   },
   /**
-   * Lookup286: cumulus_pallet_xcmp_queue::InboundChannelDetails
+   * Lookup284: cumulus_pallet_xcmp_queue::InboundChannelDetails
    **/
   CumulusPalletXcmpQueueInboundChannelDetails: {
     sender: 'u32',
@@ -2196,19 +2176,19 @@
     messageMetadata: 'Vec<(u32,PolkadotParachainPrimitivesXcmpMessageFormat)>'
   },
   /**
-   * Lookup287: cumulus_pallet_xcmp_queue::InboundState
+   * Lookup285: cumulus_pallet_xcmp_queue::InboundState
    **/
   CumulusPalletXcmpQueueInboundState: {
     _enum: ['Ok', 'Suspended']
   },
   /**
-   * Lookup290: polkadot_parachain::primitives::XcmpMessageFormat
+   * Lookup288: polkadot_parachain::primitives::XcmpMessageFormat
    **/
   PolkadotParachainPrimitivesXcmpMessageFormat: {
     _enum: ['ConcatenatedVersionedXcm', 'ConcatenatedEncodedBlob', 'Signals']
   },
   /**
-   * Lookup293: cumulus_pallet_xcmp_queue::OutboundChannelDetails
+   * Lookup291: cumulus_pallet_xcmp_queue::OutboundChannelDetails
    **/
   CumulusPalletXcmpQueueOutboundChannelDetails: {
     recipient: 'u32',
@@ -2218,13 +2198,13 @@
     lastIndex: 'u16'
   },
   /**
-   * Lookup294: cumulus_pallet_xcmp_queue::OutboundState
+   * Lookup292: cumulus_pallet_xcmp_queue::OutboundState
    **/
   CumulusPalletXcmpQueueOutboundState: {
     _enum: ['Ok', 'Suspended']
   },
   /**
-   * Lookup296: cumulus_pallet_xcmp_queue::QueueConfigData
+   * Lookup294: cumulus_pallet_xcmp_queue::QueueConfigData
    **/
   CumulusPalletXcmpQueueQueueConfigData: {
     suspendThreshold: 'u32',
@@ -2235,29 +2215,29 @@
     xcmpMaxIndividualWeight: 'u64'
   },
   /**
-   * Lookup298: cumulus_pallet_xcmp_queue::pallet::Error<T>
+   * Lookup296: cumulus_pallet_xcmp_queue::pallet::Error<T>
    **/
   CumulusPalletXcmpQueueError: {
     _enum: ['FailedToSend', 'BadXcmOrigin', 'BadXcm', 'BadOverweightIndex', 'WeightOverLimit']
   },
   /**
-   * Lookup299: pallet_xcm::pallet::Error<T>
+   * Lookup297: pallet_xcm::pallet::Error<T>
    **/
   PalletXcmError: {
     _enum: ['Unreachable', 'SendFailure', 'Filtered', 'UnweighableMessage', 'DestinationNotInvertible', 'Empty', 'CannotReanchor', 'TooManyAssets', 'InvalidOrigin', 'BadVersion', 'BadLocation', 'NoSubscription', 'AlreadySubscribed']
   },
   /**
-   * Lookup300: cumulus_pallet_xcm::pallet::Error<T>
+   * Lookup298: cumulus_pallet_xcm::pallet::Error<T>
    **/
   CumulusPalletXcmError: 'Null',
   /**
-   * Lookup301: cumulus_pallet_dmp_queue::ConfigData
+   * Lookup299: cumulus_pallet_dmp_queue::ConfigData
    **/
   CumulusPalletDmpQueueConfigData: {
     maxIndividual: 'u64'
   },
   /**
-   * Lookup302: cumulus_pallet_dmp_queue::PageIndexData
+   * Lookup300: cumulus_pallet_dmp_queue::PageIndexData
    **/
   CumulusPalletDmpQueuePageIndexData: {
     beginUsed: 'u32',
@@ -2265,19 +2245,19 @@
     overweightCount: 'u64'
   },
   /**
-   * Lookup305: cumulus_pallet_dmp_queue::pallet::Error<T>
+   * Lookup303: cumulus_pallet_dmp_queue::pallet::Error<T>
    **/
   CumulusPalletDmpQueueError: {
     _enum: ['Unknown', 'OverLimit']
   },
   /**
-   * Lookup309: pallet_unique::Error<T>
+   * Lookup307: pallet_unique::Error<T>
    **/
   PalletUniqueError: {
     _enum: ['CollectionDecimalPointLimitExceeded', 'ConfirmUnsetSponsorFail', 'EmptyArgument']
   },
   /**
-   * Lookup310: up_data_structs::Collection<sp_core::crypto::AccountId32>
+   * Lookup308: up_data_structs::Collection<sp_core::crypto::AccountId32>
    **/
   UpDataStructsCollection: {
     owner: 'AccountId32',
@@ -2289,11 +2269,10 @@
     mintMode: 'bool',
     schemaVersion: 'UpDataStructsSchemaVersion',
     sponsorship: 'UpDataStructsSponsorshipState',
-    limits: 'UpDataStructsCollectionLimits',
-    metaUpdatePermission: 'UpDataStructsMetaUpdatePermission'
+    limits: 'UpDataStructsCollectionLimits'
   },
   /**
-   * Lookup311: up_data_structs::SponsorshipState<sp_core::crypto::AccountId32>
+   * Lookup309: up_data_structs::SponsorshipState<sp_core::crypto::AccountId32>
    **/
   UpDataStructsSponsorshipState: {
     _enum: {
@@ -2303,7 +2282,7 @@
     }
   },
   /**
-   * Lookup312: up_data_structs::Properties
+   * Lookup310: up_data_structs::Properties
    **/
   UpDataStructsProperties: {
     map: 'UpDataStructsPropertiesMapBoundedVec',
@@ -2311,21 +2290,21 @@
     spaceLimit: 'u32'
   },
   /**
-   * Lookup313: up_data_structs::PropertiesMap<frame_support::storage::bounded_vec::BoundedVec<T, S>>
+   * Lookup311: up_data_structs::PropertiesMap<frame_support::storage::bounded_vec::BoundedVec<T, S>>
    **/
   UpDataStructsPropertiesMapBoundedVec: 'BTreeMap<Bytes, Bytes>',
   /**
-   * Lookup318: up_data_structs::PropertiesMap<up_data_structs::PropertyPermission>
+   * Lookup316: up_data_structs::PropertiesMap<up_data_structs::PropertyPermission>
    **/
   UpDataStructsPropertiesMapPropertyPermission: 'BTreeMap<Bytes, UpDataStructsPropertyPermission>',
   /**
-   * Lookup324: up_data_structs::CollectionField
+   * Lookup322: up_data_structs::CollectionField
    **/
   UpDataStructsCollectionField: {
     _enum: ['ConstOnChainSchema', 'OffchainSchema']
   },
   /**
-   * Lookup327: up_data_structs::CollectionStats
+   * Lookup325: up_data_structs::CollectionStats
    **/
   UpDataStructsCollectionStats: {
     created: 'u32',
@@ -2333,11 +2312,11 @@
     alive: 'u32'
   },
   /**
-   * Lookup328: PhantomType::up_data_structs<up_data_structs::TokenData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>>
+   * Lookup326: PhantomType::up_data_structs<up_data_structs::TokenData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>>
    **/
-  PhantomTypeUpDataStructsTokenData: '[Lookup329;0]',
+  PhantomTypeUpDataStructsTokenData: '[Lookup327;0]',
   /**
-   * Lookup329: up_data_structs::TokenData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
+   * Lookup327: up_data_structs::TokenData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
    **/
   UpDataStructsTokenData: {
     constData: 'Bytes',
@@ -2345,11 +2324,11 @@
     owner: 'Option<PalletEvmAccountBasicCrossAccountIdRepr>'
   },
   /**
-   * Lookup332: PhantomType::up_data_structs<up_data_structs::RpcCollection<sp_core::crypto::AccountId32>>
+   * Lookup330: PhantomType::up_data_structs<up_data_structs::RpcCollection<sp_core::crypto::AccountId32>>
    **/
-  PhantomTypeUpDataStructsRpcCollection: '[Lookup333;0]',
+  PhantomTypeUpDataStructsRpcCollection: '[Lookup331;0]',
   /**
-   * Lookup333: up_data_structs::RpcCollection<sp_core::crypto::AccountId32>
+   * Lookup331: up_data_structs::RpcCollection<sp_core::crypto::AccountId32>
    **/
   UpDataStructsRpcCollection: {
     owner: 'AccountId32',
@@ -2364,16 +2343,15 @@
     sponsorship: 'UpDataStructsSponsorshipState',
     limits: 'UpDataStructsCollectionLimits',
     constOnChainSchema: 'Bytes',
-    metaUpdatePermission: 'UpDataStructsMetaUpdatePermission',
     tokenPropertyPermissions: 'Vec<UpDataStructsPropertyKeyPermission>',
     properties: 'Vec<UpDataStructsProperty>'
   },
   /**
-   * Lookup335: PhantomType::up_data_structs<rmrk_types::CollectionInfo<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>, sp_core::crypto::AccountId32>>
+   * Lookup333: PhantomType::up_data_structs<rmrk_types::CollectionInfo<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>, sp_core::crypto::AccountId32>>
    **/
-  PhantomTypeUpDataStructsCollectionInfo: '[Lookup336;0]',
+  PhantomTypeUpDataStructsCollectionInfo: '[Lookup334;0]',
   /**
-   * Lookup336: rmrk_types::CollectionInfo<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>, sp_core::crypto::AccountId32>
+   * Lookup334: rmrk_types::CollectionInfo<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>, sp_core::crypto::AccountId32>
    **/
   RmrkTypesCollectionInfo: {
     issuer: 'AccountId32',
@@ -2383,11 +2361,11 @@
     nftsCount: 'u32'
   },
   /**
-   * Lookup340: PhantomType::up_data_structs<rmrk_types::NftInfo<sp_core::crypto::AccountId32, sp_arithmetic::per_things::Permill, frame_support::storage::bounded_vec::BoundedVec<T, S>>>
+   * Lookup338: PhantomType::up_data_structs<rmrk_types::NftInfo<sp_core::crypto::AccountId32, sp_arithmetic::per_things::Permill, frame_support::storage::bounded_vec::BoundedVec<T, S>>>
    **/
-  PhantomTypeUpDataStructsNftInfo: '[Lookup341;0]',
+  PhantomTypeUpDataStructsNftInfo: '[Lookup339;0]',
   /**
-   * Lookup341: rmrk_types::NftInfo<sp_core::crypto::AccountId32, sp_arithmetic::per_things::Permill, frame_support::storage::bounded_vec::BoundedVec<T, S>>
+   * Lookup339: rmrk_types::NftInfo<sp_core::crypto::AccountId32, sp_arithmetic::per_things::Permill, frame_support::storage::bounded_vec::BoundedVec<T, S>>
    **/
   RmrkTypesNftInfo: {
     owner: 'RmrkTypesAccountIdOrCollectionNftTuple',
@@ -2397,7 +2375,7 @@
     pending: 'bool'
   },
   /**
-   * Lookup342: rmrk_types::AccountIdOrCollectionNftTuple<sp_core::crypto::AccountId32>
+   * Lookup340: rmrk_types::AccountIdOrCollectionNftTuple<sp_core::crypto::AccountId32>
    **/
   RmrkTypesAccountIdOrCollectionNftTuple: {
     _enum: {
@@ -2406,18 +2384,18 @@
     }
   },
   /**
-   * Lookup344: rmrk_types::RoyaltyInfo<sp_core::crypto::AccountId32, sp_arithmetic::per_things::Permill>
+   * Lookup342: rmrk_types::RoyaltyInfo<sp_core::crypto::AccountId32, sp_arithmetic::per_things::Permill>
    **/
   RmrkTypesRoyaltyInfo: {
     recipient: 'AccountId32',
     amount: 'Permill'
   },
   /**
-   * Lookup346: PhantomType::up_data_structs<rmrk_types::ResourceInfo<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>>
+   * Lookup344: PhantomType::up_data_structs<rmrk_types::ResourceInfo<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>>
    **/
-  PhantomTypeUpDataStructsResourceInfo: '[Lookup347;0]',
+  PhantomTypeUpDataStructsResourceInfo: '[Lookup345;0]',
   /**
-   * Lookup347: rmrk_types::ResourceInfo<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>
+   * Lookup345: rmrk_types::ResourceInfo<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>
    **/
   RmrkTypesResourceInfo: {
     id: 'Bytes',
@@ -2432,22 +2410,22 @@
     thumb: 'Option<Bytes>'
   },
   /**
-   * Lookup353: PhantomType::up_data_structs<rmrk_types::PropertyInfo<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>>
+   * Lookup351: PhantomType::up_data_structs<rmrk_types::PropertyInfo<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>>
    **/
-  PhantomTypeUpDataStructsPropertyInfo: '[Lookup354;0]',
+  PhantomTypeUpDataStructsPropertyInfo: '[Lookup352;0]',
   /**
-   * Lookup354: rmrk_types::PropertyInfo<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>
+   * Lookup352: rmrk_types::PropertyInfo<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>
    **/
   RmrkTypesPropertyInfo: {
     key: 'Bytes',
     value: 'Bytes'
   },
   /**
-   * Lookup358: PhantomType::up_data_structs<rmrk_types::BaseInfo<sp_core::crypto::AccountId32, frame_support::storage::bounded_vec::BoundedVec<T, S>>>
+   * Lookup356: PhantomType::up_data_structs<rmrk_types::BaseInfo<sp_core::crypto::AccountId32, frame_support::storage::bounded_vec::BoundedVec<T, S>>>
    **/
-  PhantomTypeUpDataStructsBaseInfo: '[Lookup359;0]',
+  PhantomTypeUpDataStructsBaseInfo: '[Lookup357;0]',
   /**
-   * Lookup359: rmrk_types::BaseInfo<sp_core::crypto::AccountId32, frame_support::storage::bounded_vec::BoundedVec<T, S>>
+   * Lookup357: rmrk_types::BaseInfo<sp_core::crypto::AccountId32, frame_support::storage::bounded_vec::BoundedVec<T, S>>
    **/
   RmrkTypesBaseInfo: {
     issuer: 'AccountId32',
@@ -2455,11 +2433,11 @@
     symbol: 'Bytes'
   },
   /**
-   * Lookup361: PhantomType::up_data_structs<rmrk_types::PartType<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>>
+   * Lookup359: PhantomType::up_data_structs<rmrk_types::PartType<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>>
    **/
-  PhantomTypeUpDataStructsPartType: '[Lookup362;0]',
+  PhantomTypeUpDataStructsPartType: '[Lookup360;0]',
   /**
-   * Lookup362: rmrk_types::PartType<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>
+   * Lookup360: rmrk_types::PartType<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>
    **/
   RmrkTypesPartType: {
     _enum: {
@@ -2468,7 +2446,7 @@
     }
   },
   /**
-   * Lookup364: rmrk_types::FixedPart<frame_support::storage::bounded_vec::BoundedVec<T, S>>
+   * Lookup362: rmrk_types::FixedPart<frame_support::storage::bounded_vec::BoundedVec<T, S>>
    **/
   RmrkTypesFixedPart: {
     id: 'u32',
@@ -2476,7 +2454,7 @@
     src: 'Bytes'
   },
   /**
-   * Lookup365: rmrk_types::SlotPart<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>
+   * Lookup363: rmrk_types::SlotPart<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>
    **/
   RmrkTypesSlotPart: {
     id: 'u32',
@@ -2485,7 +2463,7 @@
     z: 'u32'
   },
   /**
-   * Lookup366: rmrk_types::EquippableList<frame_support::storage::bounded_vec::BoundedVec<T, S>>
+   * Lookup364: rmrk_types::EquippableList<frame_support::storage::bounded_vec::BoundedVec<T, S>>
    **/
   RmrkTypesEquippableList: {
     _enum: {
@@ -2495,11 +2473,11 @@
     }
   },
   /**
-   * Lookup368: PhantomType::up_data_structs<rmrk_types::Theme<frame_support::storage::bounded_vec::BoundedVec<T, S>, BoundedPropertyList>>
+   * Lookup366: PhantomType::up_data_structs<rmrk_types::Theme<frame_support::storage::bounded_vec::BoundedVec<T, S>, BoundedPropertyList>>
    **/
-  PhantomTypeUpDataStructsTheme: '[Lookup369;0]',
+  PhantomTypeUpDataStructsTheme: '[Lookup367;0]',
   /**
-   * Lookup369: rmrk_types::Theme<frame_support::storage::bounded_vec::BoundedVec<T, S>, BoundedPropertyList>
+   * Lookup367: rmrk_types::Theme<frame_support::storage::bounded_vec::BoundedVec<T, S>, BoundedPropertyList>
    **/
   RmrkTypesTheme: {
     name: 'Bytes',
@@ -2507,76 +2485,74 @@
     inherit: 'bool'
   },
   /**
-   * Lookup371: rmrk_types::ThemeProperty<frame_support::storage::bounded_vec::BoundedVec<T, S>>
+   * Lookup369: rmrk_types::ThemeProperty<frame_support::storage::bounded_vec::BoundedVec<T, S>>
    **/
   RmrkTypesThemeProperty: {
     key: 'Bytes',
     value: 'Bytes'
   },
   /**
-   * Lookup373: PhantomType::up_data_structs<rmrk_types::NftChild>
+   * Lookup371: PhantomType::up_data_structs<rmrk_types::NftChild>
    **/
-  PhantomTypeUpDataStructsNftChild: '[Lookup374;0]',
+  PhantomTypeUpDataStructsNftChild: '[Lookup372;0]',
   /**
-   * Lookup374: rmrk_types::NftChild
+   * Lookup372: rmrk_types::NftChild
    **/
   RmrkTypesNftChild: {
     collectionId: 'u32',
     nftId: 'u32'
   },
   /**
-   * Lookup376: pallet_common::pallet::Error<T>
+   * Lookup374: pallet_common::pallet::Error<T>
    **/
   PalletCommonError: {
-    _enum: ['CollectionNotFound', 'MustBeTokenOwner', 'NoPermission', 'PublicMintingNotAllowed', 'AddressNotInAllowlist', 'CollectionNameLimitExceeded', 'CollectionDescriptionLimitExceeded', 'CollectionTokenPrefixLimitExceeded', 'TotalCollectionsLimitExceeded', 'TokenVariableDataLimitExceeded', 'CollectionAdminCountExceeded', 'CollectionLimitBoundsExceeded', 'OwnerPermissionsCantBeReverted', 'TransferNotAllowed', 'AccountTokenLimitExceeded', 'CollectionTokenLimitExceeded', 'MetadataFlagFrozen', 'TokenNotFound', 'TokenValueTooLow', 'ApprovedValueTooLow', 'CantApproveMoreThanOwned', 'AddressIsZero', 'UnsupportedOperation', 'NotSufficientFounds', 'NestingIsDisabled', 'OnlyOwnerAllowedToNest', 'SourceCollectionIsNotAllowedToNest', 'CollectionFieldSizeExceeded', 'NoSpaceForProperty', 'PropertyLimitReached', 'UnableToReadUnboundedKeys', 'InvalidCharacterInPropertyKey', 'EmptyPropertyKey']
+    _enum: ['CollectionNotFound', 'MustBeTokenOwner', 'NoPermission', 'PublicMintingNotAllowed', 'AddressNotInAllowlist', 'CollectionNameLimitExceeded', 'CollectionDescriptionLimitExceeded', 'CollectionTokenPrefixLimitExceeded', 'TotalCollectionsLimitExceeded', 'CollectionAdminCountExceeded', 'CollectionLimitBoundsExceeded', 'OwnerPermissionsCantBeReverted', 'TransferNotAllowed', 'AccountTokenLimitExceeded', 'CollectionTokenLimitExceeded', 'MetadataFlagFrozen', 'TokenNotFound', 'TokenValueTooLow', 'ApprovedValueTooLow', 'CantApproveMoreThanOwned', 'AddressIsZero', 'UnsupportedOperation', 'NotSufficientFounds', 'NestingIsDisabled', 'OnlyOwnerAllowedToNest', 'SourceCollectionIsNotAllowedToNest', 'CollectionFieldSizeExceeded', 'NoSpaceForProperty', 'PropertyLimitReached', 'PropertyKeyIsTooLong', 'InvalidCharacterInPropertyKey', 'EmptyPropertyKey']
   },
   /**
-   * Lookup378: pallet_fungible::pallet::Error<T>
+   * Lookup376: pallet_fungible::pallet::Error<T>
    **/
   PalletFungibleError: {
     _enum: ['NotFungibleDataUsedToMintFungibleCollectionToken', 'FungibleItemsHaveNoId', 'FungibleItemsDontHaveData', 'FungibleDisallowsNesting', 'SettingPropertiesNotAllowed']
   },
   /**
-   * Lookup379: pallet_refungible::ItemData
+   * Lookup377: pallet_refungible::ItemData
    **/
   PalletRefungibleItemData: {
-    constData: 'Bytes',
-    variableData: 'Bytes'
+    constData: 'Bytes'
   },
   /**
-   * Lookup383: pallet_refungible::pallet::Error<T>
+   * Lookup381: pallet_refungible::pallet::Error<T>
    **/
   PalletRefungibleError: {
     _enum: ['NotRefungibleDataUsedToMintFungibleCollectionToken', 'WrongRefungiblePieces', 'RefungibleDisallowsNesting', 'SettingPropertiesNotAllowed']
   },
   /**
-   * Lookup384: pallet_nonfungible::ItemData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
+   * Lookup382: pallet_nonfungible::ItemData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
    **/
   PalletNonfungibleItemData: {
     constData: 'Bytes',
-    variableData: 'Bytes',
     owner: 'PalletEvmAccountBasicCrossAccountIdRepr'
   },
   /**
-   * Lookup385: pallet_nonfungible::pallet::Error<T>
+   * Lookup383: pallet_nonfungible::pallet::Error<T>
    **/
   PalletNonfungibleError: {
     _enum: ['NotNonfungibleDataUsedToMintFungibleCollectionToken', 'NonfungibleItemsHaveNoAmount']
   },
   /**
-   * Lookup386: pallet_structure::pallet::Error<T>
+   * Lookup384: pallet_structure::pallet::Error<T>
    **/
   PalletStructureError: {
     _enum: ['OuroborosDetected', 'DepthLimit', 'TokenNotFound']
   },
   /**
-   * Lookup389: pallet_evm::pallet::Error<T>
+   * Lookup387: pallet_evm::pallet::Error<T>
    **/
   PalletEvmError: {
     _enum: ['BalanceLow', 'FeeOverflow', 'PaymentOverflow', 'WithdrawFailed', 'GasPriceTooLow', 'InvalidNonce']
   },
   /**
-   * Lookup392: fp_rpc::TransactionStatus
+   * Lookup390: fp_rpc::TransactionStatus
    **/
   FpRpcTransactionStatus: {
     transactionHash: 'H256',
@@ -2588,11 +2564,11 @@
     logsBloom: 'EthbloomBloom'
   },
   /**
-   * Lookup394: ethbloom::Bloom
+   * Lookup392: ethbloom::Bloom
    **/
   EthbloomBloom: '[u8;256]',
   /**
-   * Lookup396: ethereum::receipt::ReceiptV3
+   * Lookup394: ethereum::receipt::ReceiptV3
    **/
   EthereumReceiptReceiptV3: {
     _enum: {
@@ -2602,7 +2578,7 @@
     }
   },
   /**
-   * Lookup397: ethereum::receipt::EIP658ReceiptData
+   * Lookup395: ethereum::receipt::EIP658ReceiptData
    **/
   EthereumReceiptEip658ReceiptData: {
     statusCode: 'u8',
@@ -2611,7 +2587,7 @@
     logs: 'Vec<EthereumLog>'
   },
   /**
-   * Lookup398: ethereum::block::Block<ethereum::transaction::TransactionV2>
+   * Lookup396: ethereum::block::Block<ethereum::transaction::TransactionV2>
    **/
   EthereumBlock: {
     header: 'EthereumHeader',
@@ -2619,7 +2595,7 @@
     ommers: 'Vec<EthereumHeader>'
   },
   /**
-   * Lookup399: ethereum::header::Header
+   * Lookup397: ethereum::header::Header
    **/
   EthereumHeader: {
     parentHash: 'H256',
@@ -2639,41 +2615,41 @@
     nonce: 'EthereumTypesHashH64'
   },
   /**
-   * Lookup400: ethereum_types::hash::H64
+   * Lookup398: ethereum_types::hash::H64
    **/
   EthereumTypesHashH64: '[u8;8]',
   /**
-   * Lookup405: pallet_ethereum::pallet::Error<T>
+   * Lookup403: pallet_ethereum::pallet::Error<T>
    **/
   PalletEthereumError: {
     _enum: ['InvalidSignature', 'PreLogExists']
   },
   /**
-   * Lookup406: pallet_evm_coder_substrate::pallet::Error<T>
+   * Lookup404: pallet_evm_coder_substrate::pallet::Error<T>
    **/
   PalletEvmCoderSubstrateError: {
     _enum: ['OutOfGas', 'OutOfFund']
   },
   /**
-   * Lookup407: pallet_evm_contract_helpers::SponsoringModeT
+   * Lookup405: pallet_evm_contract_helpers::SponsoringModeT
    **/
   PalletEvmContractHelpersSponsoringModeT: {
     _enum: ['Disabled', 'Allowlisted', 'Generous']
   },
   /**
-   * Lookup409: pallet_evm_contract_helpers::pallet::Error<T>
+   * Lookup407: pallet_evm_contract_helpers::pallet::Error<T>
    **/
   PalletEvmContractHelpersError: {
     _enum: ['NoPermission']
   },
   /**
-   * Lookup410: pallet_evm_migration::pallet::Error<T>
+   * Lookup408: pallet_evm_migration::pallet::Error<T>
    **/
   PalletEvmMigrationError: {
     _enum: ['AccountNotEmpty', 'AccountIsNotMigrating']
   },
   /**
-   * Lookup412: sp_runtime::MultiSignature
+   * Lookup410: sp_runtime::MultiSignature
    **/
   SpRuntimeMultiSignature: {
     _enum: {
@@ -2683,43 +2659,43 @@
     }
   },
   /**
-   * Lookup413: sp_core::ed25519::Signature
+   * Lookup411: sp_core::ed25519::Signature
    **/
   SpCoreEd25519Signature: '[u8;64]',
   /**
-   * Lookup415: sp_core::sr25519::Signature
+   * Lookup413: sp_core::sr25519::Signature
    **/
   SpCoreSr25519Signature: '[u8;64]',
   /**
-   * Lookup416: sp_core::ecdsa::Signature
+   * Lookup414: sp_core::ecdsa::Signature
    **/
   SpCoreEcdsaSignature: '[u8;65]',
   /**
-   * Lookup419: frame_system::extensions::check_spec_version::CheckSpecVersion<T>
+   * Lookup417: frame_system::extensions::check_spec_version::CheckSpecVersion<T>
    **/
   FrameSystemExtensionsCheckSpecVersion: 'Null',
   /**
-   * Lookup420: frame_system::extensions::check_genesis::CheckGenesis<T>
+   * Lookup418: frame_system::extensions::check_genesis::CheckGenesis<T>
    **/
   FrameSystemExtensionsCheckGenesis: 'Null',
   /**
-   * Lookup423: frame_system::extensions::check_nonce::CheckNonce<T>
+   * Lookup421: frame_system::extensions::check_nonce::CheckNonce<T>
    **/
   FrameSystemExtensionsCheckNonce: 'Compact<u32>',
   /**
-   * Lookup424: frame_system::extensions::check_weight::CheckWeight<T>
+   * Lookup422: frame_system::extensions::check_weight::CheckWeight<T>
    **/
   FrameSystemExtensionsCheckWeight: 'Null',
   /**
-   * Lookup425: pallet_template_transaction_payment::ChargeTransactionPayment<opal_runtime::Runtime>
+   * Lookup423: pallet_template_transaction_payment::ChargeTransactionPayment<opal_runtime::Runtime>
    **/
   PalletTemplateTransactionPaymentChargeTransactionPayment: 'Compact<u128>',
   /**
-   * Lookup426: opal_runtime::Runtime
+   * Lookup424: opal_runtime::Runtime
    **/
   OpalRuntimeRuntime: 'Null',
   /**
-   * Lookup427: pallet_ethereum::FakeTransactionFinalizer<opal_runtime::Runtime>
+   * Lookup425: pallet_ethereum::FakeTransactionFinalizer<opal_runtime::Runtime>
    **/
   PalletEthereumFakeTransactionFinalizer: 'Null'
 };
modifiedtests/src/interfaces/registry.tsdiffbeforeafterboth
--- a/tests/src/interfaces/registry.ts
+++ b/tests/src/interfaces/registry.ts
@@ -1,7 +1,7 @@
 // Auto-generated via `yarn polkadot-types-from-defs`, do not edit
 /* eslint-disable */
 
-import type { CumulusPalletDmpQueueCall, CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueueError, CumulusPalletDmpQueueEvent, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemCall, CumulusPalletParachainSystemError, CumulusPalletParachainSystemEvent, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmCall, CumulusPalletXcmError, CumulusPalletXcmEvent, CumulusPalletXcmpQueueCall, CumulusPalletXcmpQueueError, CumulusPalletXcmpQueueEvent, CumulusPalletXcmpQueueInboundChannelDetails, CumulusPalletXcmpQueueInboundState, CumulusPalletXcmpQueueOutboundChannelDetails, CumulusPalletXcmpQueueOutboundState, CumulusPalletXcmpQueueQueueConfigData, CumulusPrimitivesParachainInherentParachainInherentData, EthbloomBloom, EthereumBlock, EthereumHeader, EthereumLog, EthereumReceiptEip658ReceiptData, EthereumReceiptReceiptV3, EthereumTransactionAccessListItem, EthereumTransactionEip1559Transaction, EthereumTransactionEip2930Transaction, EthereumTransactionLegacyTransaction, EthereumTransactionTransactionAction, EthereumTransactionTransactionSignature, EthereumTransactionTransactionV2, EthereumTypesHashH64, EvmCoreErrorExitError, EvmCoreErrorExitFatal, EvmCoreErrorExitReason, EvmCoreErrorExitRevert, EvmCoreErrorExitSucceed, FpRpcTransactionStatus, FrameSupportPalletId, FrameSupportTokensMiscBalanceStatus, FrameSupportWeightsDispatchClass, FrameSupportWeightsDispatchInfo, FrameSupportWeightsPays, FrameSupportWeightsPerDispatchClassU32, FrameSupportWeightsPerDispatchClassU64, FrameSupportWeightsPerDispatchClassWeightsPerClass, FrameSupportWeightsRuntimeDbWeight, FrameSupportWeightsWeightToFeeCoefficient, FrameSystemAccountInfo, FrameSystemCall, FrameSystemError, FrameSystemEvent, FrameSystemEventRecord, FrameSystemExtensionsCheckGenesis, FrameSystemExtensionsCheckNonce, FrameSystemExtensionsCheckSpecVersion, FrameSystemExtensionsCheckWeight, FrameSystemLastRuntimeUpgradeInfo, FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, FrameSystemLimitsWeightsPerClass, FrameSystemPhase, OpalRuntimeRuntime, OrmlVestingModuleCall, OrmlVestingModuleError, OrmlVestingModuleEvent, OrmlVestingVestingSchedule, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesCall, PalletBalancesError, PalletBalancesEvent, PalletBalancesReasons, PalletBalancesReleases, PalletBalancesReserveData, PalletCommonError, PalletCommonEvent, PalletEthereumCall, PalletEthereumError, PalletEthereumEvent, PalletEthereumFakeTransactionFinalizer, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmCall, PalletEvmCoderSubstrateError, PalletEvmContractHelpersError, PalletEvmContractHelpersSponsoringModeT, PalletEvmError, PalletEvmEvent, PalletEvmMigrationCall, PalletEvmMigrationError, PalletFungibleError, PalletInflationCall, PalletNonfungibleError, PalletNonfungibleItemData, PalletRefungibleError, PalletRefungibleItemData, PalletStructureCall, PalletStructureError, PalletStructureEvent, PalletSudoCall, PalletSudoError, PalletSudoEvent, PalletTemplateTransactionPaymentCall, PalletTemplateTransactionPaymentChargeTransactionPayment, PalletTimestampCall, PalletTransactionPaymentReleases, PalletTreasuryCall, PalletTreasuryError, PalletTreasuryEvent, PalletTreasuryProposal, PalletUniqueCall, PalletUniqueError, PalletUniqueRawEvent, PalletXcmCall, PalletXcmError, PalletXcmEvent, PhantomTypeUpDataStructsBaseInfo, PhantomTypeUpDataStructsCollectionInfo, PhantomTypeUpDataStructsNftChild, PhantomTypeUpDataStructsNftInfo, PhantomTypeUpDataStructsPartType, PhantomTypeUpDataStructsPropertyInfo, PhantomTypeUpDataStructsResourceInfo, PhantomTypeUpDataStructsRpcCollection, PhantomTypeUpDataStructsTheme, PhantomTypeUpDataStructsTokenData, PolkadotCorePrimitivesInboundDownwardMessage, PolkadotCorePrimitivesInboundHrmpMessage, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotParachainPrimitivesXcmpMessageFormat, PolkadotPrimitivesV2AbridgedHostConfiguration, PolkadotPrimitivesV2AbridgedHrmpChannel, PolkadotPrimitivesV2PersistedValidationData, PolkadotPrimitivesV2UpgradeRestriction, RmrkTypesAccountIdOrCollectionNftTuple, RmrkTypesBaseInfo, RmrkTypesCollectionInfo, RmrkTypesEquippableList, RmrkTypesFixedPart, RmrkTypesNftChild, RmrkTypesNftInfo, RmrkTypesPartType, RmrkTypesPropertyInfo, RmrkTypesResourceInfo, RmrkTypesRoyaltyInfo, RmrkTypesSlotPart, RmrkTypesTheme, RmrkTypesThemeProperty, SpCoreEcdsaSignature, SpCoreEd25519Signature, SpCoreSr25519Signature, SpRuntimeArithmeticError, SpRuntimeDigest, SpRuntimeDigestDigestItem, SpRuntimeDispatchError, SpRuntimeModuleError, SpRuntimeMultiSignature, SpRuntimeTokenError, SpRuntimeTransactionalError, SpTrieStorageProof, SpVersionRuntimeVersion, UpDataStructsAccessMode, UpDataStructsCollection, UpDataStructsCollectionField, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCollectionStats, UpDataStructsCreateCollectionData, UpDataStructsCreateFungibleData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsCreateNftData, UpDataStructsCreateNftExData, UpDataStructsCreateReFungibleData, UpDataStructsCreateRefungibleExData, UpDataStructsMetaUpdatePermission, UpDataStructsNestingRule, UpDataStructsProperties, UpDataStructsPropertiesMapBoundedVec, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, UpDataStructsPropertyPermission, UpDataStructsRpcCollection, UpDataStructsSchemaVersion, UpDataStructsSponsoringRateLimit, UpDataStructsSponsorshipState, UpDataStructsTokenData, XcmDoubleEncoded, XcmV0Junction, XcmV0JunctionBodyId, XcmV0JunctionBodyPart, XcmV0JunctionNetworkId, XcmV0MultiAsset, XcmV0MultiLocation, XcmV0Order, XcmV0OriginKind, XcmV0Response, XcmV0Xcm, XcmV1Junction, XcmV1MultiAsset, XcmV1MultiLocation, XcmV1MultiassetAssetId, XcmV1MultiassetAssetInstance, XcmV1MultiassetFungibility, XcmV1MultiassetMultiAssetFilter, XcmV1MultiassetMultiAssets, XcmV1MultiassetWildFungibility, XcmV1MultiassetWildMultiAsset, XcmV1MultilocationJunctions, XcmV1Order, XcmV1Response, XcmV1Xcm, XcmV2Instruction, XcmV2Response, XcmV2TraitsError, XcmV2TraitsOutcome, XcmV2WeightLimit, XcmV2Xcm, XcmVersionedMultiAssets, XcmVersionedMultiLocation, XcmVersionedXcm } from '@polkadot/types/lookup';
+import type { CumulusPalletDmpQueueCall, CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueueError, CumulusPalletDmpQueueEvent, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemCall, CumulusPalletParachainSystemError, CumulusPalletParachainSystemEvent, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmCall, CumulusPalletXcmError, CumulusPalletXcmEvent, CumulusPalletXcmpQueueCall, CumulusPalletXcmpQueueError, CumulusPalletXcmpQueueEvent, CumulusPalletXcmpQueueInboundChannelDetails, CumulusPalletXcmpQueueInboundState, CumulusPalletXcmpQueueOutboundChannelDetails, CumulusPalletXcmpQueueOutboundState, CumulusPalletXcmpQueueQueueConfigData, CumulusPrimitivesParachainInherentParachainInherentData, EthbloomBloom, EthereumBlock, EthereumHeader, EthereumLog, EthereumReceiptEip658ReceiptData, EthereumReceiptReceiptV3, EthereumTransactionAccessListItem, EthereumTransactionEip1559Transaction, EthereumTransactionEip2930Transaction, EthereumTransactionLegacyTransaction, EthereumTransactionTransactionAction, EthereumTransactionTransactionSignature, EthereumTransactionTransactionV2, EthereumTypesHashH64, EvmCoreErrorExitError, EvmCoreErrorExitFatal, EvmCoreErrorExitReason, EvmCoreErrorExitRevert, EvmCoreErrorExitSucceed, FpRpcTransactionStatus, FrameSupportPalletId, FrameSupportTokensMiscBalanceStatus, FrameSupportWeightsDispatchClass, FrameSupportWeightsDispatchInfo, FrameSupportWeightsPays, FrameSupportWeightsPerDispatchClassU32, FrameSupportWeightsPerDispatchClassU64, FrameSupportWeightsPerDispatchClassWeightsPerClass, FrameSupportWeightsRuntimeDbWeight, FrameSupportWeightsWeightToFeeCoefficient, FrameSystemAccountInfo, FrameSystemCall, FrameSystemError, FrameSystemEvent, FrameSystemEventRecord, FrameSystemExtensionsCheckGenesis, FrameSystemExtensionsCheckNonce, FrameSystemExtensionsCheckSpecVersion, FrameSystemExtensionsCheckWeight, FrameSystemLastRuntimeUpgradeInfo, FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, FrameSystemLimitsWeightsPerClass, FrameSystemPhase, OpalRuntimeRuntime, OrmlVestingModuleCall, OrmlVestingModuleError, OrmlVestingModuleEvent, OrmlVestingVestingSchedule, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesCall, PalletBalancesError, PalletBalancesEvent, PalletBalancesReasons, PalletBalancesReleases, PalletBalancesReserveData, PalletCommonError, PalletCommonEvent, PalletEthereumCall, PalletEthereumError, PalletEthereumEvent, PalletEthereumFakeTransactionFinalizer, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmCall, PalletEvmCoderSubstrateError, PalletEvmContractHelpersError, PalletEvmContractHelpersSponsoringModeT, PalletEvmError, PalletEvmEvent, PalletEvmMigrationCall, PalletEvmMigrationError, PalletFungibleError, PalletInflationCall, PalletNonfungibleError, PalletNonfungibleItemData, PalletRefungibleError, PalletRefungibleItemData, PalletStructureCall, PalletStructureError, PalletStructureEvent, PalletSudoCall, PalletSudoError, PalletSudoEvent, PalletTemplateTransactionPaymentCall, PalletTemplateTransactionPaymentChargeTransactionPayment, PalletTimestampCall, PalletTransactionPaymentReleases, PalletTreasuryCall, PalletTreasuryError, PalletTreasuryEvent, PalletTreasuryProposal, PalletUniqueCall, PalletUniqueError, PalletUniqueRawEvent, PalletXcmCall, PalletXcmError, PalletXcmEvent, PhantomTypeUpDataStructsBaseInfo, PhantomTypeUpDataStructsCollectionInfo, PhantomTypeUpDataStructsNftChild, PhantomTypeUpDataStructsNftInfo, PhantomTypeUpDataStructsPartType, PhantomTypeUpDataStructsPropertyInfo, PhantomTypeUpDataStructsResourceInfo, PhantomTypeUpDataStructsRpcCollection, PhantomTypeUpDataStructsTheme, PhantomTypeUpDataStructsTokenData, PolkadotCorePrimitivesInboundDownwardMessage, PolkadotCorePrimitivesInboundHrmpMessage, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotParachainPrimitivesXcmpMessageFormat, PolkadotPrimitivesV2AbridgedHostConfiguration, PolkadotPrimitivesV2AbridgedHrmpChannel, PolkadotPrimitivesV2PersistedValidationData, PolkadotPrimitivesV2UpgradeRestriction, RmrkTypesAccountIdOrCollectionNftTuple, RmrkTypesBaseInfo, RmrkTypesCollectionInfo, RmrkTypesEquippableList, RmrkTypesFixedPart, RmrkTypesNftChild, RmrkTypesNftInfo, RmrkTypesPartType, RmrkTypesPropertyInfo, RmrkTypesResourceInfo, RmrkTypesRoyaltyInfo, RmrkTypesSlotPart, RmrkTypesTheme, RmrkTypesThemeProperty, SpCoreEcdsaSignature, SpCoreEd25519Signature, SpCoreSr25519Signature, SpRuntimeArithmeticError, SpRuntimeDigest, SpRuntimeDigestDigestItem, SpRuntimeDispatchError, SpRuntimeModuleError, SpRuntimeMultiSignature, SpRuntimeTokenError, SpRuntimeTransactionalError, SpTrieStorageProof, SpVersionRuntimeVersion, UpDataStructsAccessMode, UpDataStructsCollection, UpDataStructsCollectionField, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCollectionStats, UpDataStructsCreateCollectionData, UpDataStructsCreateFungibleData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsCreateNftData, UpDataStructsCreateNftExData, UpDataStructsCreateReFungibleData, UpDataStructsCreateRefungibleExData, UpDataStructsNestingRule, UpDataStructsProperties, UpDataStructsPropertiesMapBoundedVec, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, UpDataStructsPropertyPermission, UpDataStructsRpcCollection, UpDataStructsSchemaVersion, UpDataStructsSponsoringRateLimit, UpDataStructsSponsorshipState, UpDataStructsTokenData, XcmDoubleEncoded, XcmV0Junction, XcmV0JunctionBodyId, XcmV0JunctionBodyPart, XcmV0JunctionNetworkId, XcmV0MultiAsset, XcmV0MultiLocation, XcmV0Order, XcmV0OriginKind, XcmV0Response, XcmV0Xcm, XcmV1Junction, XcmV1MultiAsset, XcmV1MultiLocation, XcmV1MultiassetAssetId, XcmV1MultiassetAssetInstance, XcmV1MultiassetFungibility, XcmV1MultiassetMultiAssetFilter, XcmV1MultiassetMultiAssets, XcmV1MultiassetWildFungibility, XcmV1MultiassetWildMultiAsset, XcmV1MultilocationJunctions, XcmV1Order, XcmV1Response, XcmV1Xcm, XcmV2Instruction, XcmV2Response, XcmV2TraitsError, XcmV2TraitsOutcome, XcmV2WeightLimit, XcmV2Xcm, XcmVersionedMultiAssets, XcmVersionedMultiLocation, XcmVersionedXcm } from '@polkadot/types/lookup';
 
 declare module '@polkadot/types/types/registry' {
   export interface InterfaceTypes {
@@ -183,7 +183,6 @@
     UpDataStructsCreateNftExData: UpDataStructsCreateNftExData;
     UpDataStructsCreateReFungibleData: UpDataStructsCreateReFungibleData;
     UpDataStructsCreateRefungibleExData: UpDataStructsCreateRefungibleExData;
-    UpDataStructsMetaUpdatePermission: UpDataStructsMetaUpdatePermission;
     UpDataStructsNestingRule: UpDataStructsNestingRule;
     UpDataStructsProperties: UpDataStructsProperties;
     UpDataStructsPropertiesMapBoundedVec: UpDataStructsPropertiesMapBoundedVec;
modifiedtests/src/interfaces/rmrk/definitions.tsdiffbeforeafterboth
--- a/tests/src/interfaces/rmrk/definitions.ts
+++ b/tests/src/interfaces/rmrk/definitions.ts
@@ -33,14 +33,14 @@
     types,
     rpc: {
         lastCollectionIdx: fn('Get the latest created collection id', [], 'u32'),
-        collectionById: fn('Get collection by id', [{name: 'id', type: 'u32'}], 'Option<RmrkTraitsCollectionCollectionInfo>'),
+        collectionById: fn('Get collection by id', [{name: 'id', type: 'u32'}], 'Option<RmrkTypesCollectionInfo>'),
         nftById: fn(
             'Get NFT by collection id and NFT id',
             [
                 {name: 'collectionId', type: 'u32'},
                 {name: 'nftId', type: 'u32'},
             ],
-            'Option<RmrkTraitsNftNftInfo>'
+            'Option<RmrkTypesNftInfo>'
         ),
         accountTokens: fn(
             'Get tokens owned by an account in a collection',
@@ -56,12 +56,12 @@
                 {name: 'collectionId', type: 'u32'},
                 {name: 'nftId', type: 'u32'},
             ],
-            'Vec<RmrkTraitsNftNftChild>'
+            'Vec<RmrkTypesNftChild>'
         ),
         collectionProperties: fn(
             'Get collection properties',
             [{name: 'collectionId', type: 'u32'}],
-            'Vec<RmrkTraitsPropertyPropertyInfo>'
+            'Vec<RmrkTypesPropertyInfo>'
         ),
         nftProperties: fn(
             'Get NFT properties',
@@ -69,7 +69,7 @@
                 {name: 'collectionId', type: 'u32'},
                 {name: 'nftId', type: 'u32'}
             ],
-            'Vec<RmrkTraitsPropertyPropertyInfo>'
+            'Vec<RmrkTypesPropertyInfo>'
         ),
         nftResources: fn(
             'Get NFT resources',
@@ -77,7 +77,7 @@
                 {name: 'collectionId', type: 'u32'},
                 {name: 'nftId', type: 'u32'}
             ],
-            'Vec<RmrkTraitsResourceResourceInfo>'
+            'Vec<RmrkTypesResourceInfo>'
         ),
         nftResourcePriorities: fn(
             'Get NFT resource priorities',
@@ -90,12 +90,12 @@
         base: fn(
             'Get base info',
             [{name: 'baseId', type: 'u32'}],
-            'Option<RmrkTraitsBaseBaseInfo>'
+            'Option<RmrkTypesBaseInfo>'
         ),
         baseParts: fn(
             'Get all Base\'s parts',
             [{name: 'baseId', type: 'u32'}],
-            'Vec<RmrkTraitsPartPartType>'
+            'Vec<RmrkTypesPartType>'
         ),
         themeNames: fn(
             'Get Base\'s theme names',
@@ -109,7 +109,7 @@
                 {name: 'themeName', type: 'String'},
                 {name: 'keys', type: 'Option<Vec<String>>'}
             ],
-            'Option<RmrkTraitsTheme>'
+            'Option<RmrkTypesTheme>'
         )
     }
 };
modifiedtests/src/interfaces/rmrk/types.tsdiffbeforeafterboth
--- a/tests/src/interfaces/rmrk/types.ts
+++ b/tests/src/interfaces/rmrk/types.ts
@@ -446,9 +446,6 @@
 /** @name FrameSupportPalletId */
 export interface FrameSupportPalletId extends U8aFixed {}
 
-/** @name FrameSupportStorageBoundedBTreeSet */
-export interface FrameSupportStorageBoundedBTreeSet extends BTreeSet<u32> {}
-
 /** @name FrameSupportTokensMiscBalanceStatus */
 export interface FrameSupportTokensMiscBalanceStatus extends Enum {
   readonly isFree: boolean;
@@ -875,7 +872,6 @@
   readonly isCollectionDescriptionLimitExceeded: boolean;
   readonly isCollectionTokenPrefixLimitExceeded: boolean;
   readonly isTotalCollectionsLimitExceeded: boolean;
-  readonly isTokenVariableDataLimitExceeded: boolean;
   readonly isCollectionAdminCountExceeded: boolean;
   readonly isCollectionLimitBoundsExceeded: boolean;
   readonly isOwnerPermissionsCantBeReverted: boolean;
@@ -896,10 +892,10 @@
   readonly isCollectionFieldSizeExceeded: boolean;
   readonly isNoSpaceForProperty: boolean;
   readonly isPropertyLimitReached: boolean;
-  readonly isUnableToReadUnboundedKeys: boolean;
+  readonly isPropertyKeyIsTooLong: boolean;
   readonly isInvalidCharacterInPropertyKey: boolean;
   readonly isEmptyPropertyKey: boolean;
-  readonly type: 'CollectionNotFound' | 'MustBeTokenOwner' | 'NoPermission' | 'PublicMintingNotAllowed' | 'AddressNotInAllowlist' | 'CollectionNameLimitExceeded' | 'CollectionDescriptionLimitExceeded' | 'CollectionTokenPrefixLimitExceeded' | 'TotalCollectionsLimitExceeded' | 'TokenVariableDataLimitExceeded' | 'CollectionAdminCountExceeded' | 'CollectionLimitBoundsExceeded' | 'OwnerPermissionsCantBeReverted' | 'TransferNotAllowed' | 'AccountTokenLimitExceeded' | 'CollectionTokenLimitExceeded' | 'MetadataFlagFrozen' | 'TokenNotFound' | 'TokenValueTooLow' | 'ApprovedValueTooLow' | 'CantApproveMoreThanOwned' | 'AddressIsZero' | 'UnsupportedOperation' | 'NotSufficientFounds' | 'NestingIsDisabled' | 'OnlyOwnerAllowedToNest' | 'SourceCollectionIsNotAllowedToNest' | 'CollectionFieldSizeExceeded' | 'NoSpaceForProperty' | 'PropertyLimitReached' | 'UnableToReadUnboundedKeys' | 'InvalidCharacterInPropertyKey' | 'EmptyPropertyKey';
+  readonly type: 'CollectionNotFound' | 'MustBeTokenOwner' | 'NoPermission' | 'PublicMintingNotAllowed' | 'AddressNotInAllowlist' | 'CollectionNameLimitExceeded' | 'CollectionDescriptionLimitExceeded' | 'CollectionTokenPrefixLimitExceeded' | 'TotalCollectionsLimitExceeded' | 'CollectionAdminCountExceeded' | 'CollectionLimitBoundsExceeded' | 'OwnerPermissionsCantBeReverted' | 'TransferNotAllowed' | 'AccountTokenLimitExceeded' | 'CollectionTokenLimitExceeded' | 'MetadataFlagFrozen' | 'TokenNotFound' | 'TokenValueTooLow' | 'ApprovedValueTooLow' | 'CantApproveMoreThanOwned' | 'AddressIsZero' | 'UnsupportedOperation' | 'NotSufficientFounds' | 'NestingIsDisabled' | 'OnlyOwnerAllowedToNest' | 'SourceCollectionIsNotAllowedToNest' | 'CollectionFieldSizeExceeded' | 'NoSpaceForProperty' | 'PropertyLimitReached' | 'PropertyKeyIsTooLong' | 'InvalidCharacterInPropertyKey' | 'EmptyPropertyKey';
 }
 
 /** @name PalletCommonEvent */
@@ -1115,7 +1111,6 @@
 /** @name PalletNonfungibleItemData */
 export interface PalletNonfungibleItemData extends Struct {
   readonly constData: Bytes;
-  readonly variableData: Bytes;
   readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;
 }
 
@@ -1131,7 +1126,6 @@
 /** @name PalletRefungibleItemData */
 export interface PalletRefungibleItemData extends Struct {
   readonly constData: Bytes;
-  readonly variableData: Bytes;
 }
 
 /** @name PalletStructureCall */
@@ -1438,17 +1432,6 @@
     readonly collectionId: u32;
     readonly itemId: u32;
     readonly value: u128;
-  } & Struct;
-  readonly isSetVariableMetaData: boolean;
-  readonly asSetVariableMetaData: {
-    readonly collectionId: u32;
-    readonly itemId: u32;
-    readonly data: Bytes;
-  } & Struct;
-  readonly isSetMetaUpdatePermissionFlag: boolean;
-  readonly asSetMetaUpdatePermissionFlag: {
-    readonly collectionId: u32;
-    readonly value: UpDataStructsMetaUpdatePermission;
   } & Struct;
   readonly isSetSchemaVersion: boolean;
   readonly asSetSchemaVersion: {
@@ -1470,7 +1453,7 @@
     readonly collectionId: u32;
     readonly newLimit: UpDataStructsCollectionLimits;
   } & Struct;
-  readonly type: 'CreateCollection' | 'CreateCollectionEx' | 'DestroyCollection' | 'AddToAllowList' | 'RemoveFromAllowList' | 'SetPublicAccessMode' | 'SetMintPermission' | 'ChangeCollectionOwner' | 'AddCollectionAdmin' | 'RemoveCollectionAdmin' | 'SetCollectionSponsor' | 'ConfirmSponsorship' | 'RemoveCollectionSponsor' | 'CreateItem' | 'CreateMultipleItems' | 'SetCollectionProperties' | 'DeleteCollectionProperties' | 'SetTokenProperties' | 'DeleteTokenProperties' | 'SetPropertyPermissions' | 'CreateMultipleItemsEx' | 'SetTransfersEnabledFlag' | 'BurnItem' | 'BurnFrom' | 'Transfer' | 'Approve' | 'TransferFrom' | 'SetVariableMetaData' | 'SetMetaUpdatePermissionFlag' | 'SetSchemaVersion' | 'SetOffchainSchema' | 'SetConstOnChainSchema' | 'SetCollectionLimits';
+  readonly type: 'CreateCollection' | 'CreateCollectionEx' | 'DestroyCollection' | 'AddToAllowList' | 'RemoveFromAllowList' | 'SetPublicAccessMode' | 'SetMintPermission' | 'ChangeCollectionOwner' | 'AddCollectionAdmin' | 'RemoveCollectionAdmin' | 'SetCollectionSponsor' | 'ConfirmSponsorship' | 'RemoveCollectionSponsor' | 'CreateItem' | 'CreateMultipleItems' | 'SetCollectionProperties' | 'DeleteCollectionProperties' | 'SetTokenProperties' | 'DeleteTokenProperties' | 'SetPropertyPermissions' | 'CreateMultipleItemsEx' | 'SetTransfersEnabledFlag' | 'BurnItem' | 'BurnFrom' | 'Transfer' | 'Approve' | 'TransferFrom' | 'SetSchemaVersion' | 'SetOffchainSchema' | 'SetConstOnChainSchema' | 'SetCollectionLimits';
 }
 
 /** @name PalletUniqueError */
@@ -1632,34 +1615,34 @@
 }
 
 /** @name PhantomTypeUpDataStructsBaseInfo */
-export interface PhantomTypeUpDataStructsBaseInfo extends Vec<Lookup359> {}
+export interface PhantomTypeUpDataStructsBaseInfo extends Vec<Lookup357> {}
 
 /** @name PhantomTypeUpDataStructsCollectionInfo */
-export interface PhantomTypeUpDataStructsCollectionInfo extends Vec<Lookup336> {}
+export interface PhantomTypeUpDataStructsCollectionInfo extends Vec<Lookup334> {}
 
 /** @name PhantomTypeUpDataStructsNftChild */
-export interface PhantomTypeUpDataStructsNftChild extends Vec<Lookup374> {}
+export interface PhantomTypeUpDataStructsNftChild extends Vec<Lookup372> {}
 
 /** @name PhantomTypeUpDataStructsNftInfo */
-export interface PhantomTypeUpDataStructsNftInfo extends Vec<Lookup341> {}
+export interface PhantomTypeUpDataStructsNftInfo extends Vec<Lookup339> {}
 
 /** @name PhantomTypeUpDataStructsPartType */
-export interface PhantomTypeUpDataStructsPartType extends Vec<Lookup362> {}
+export interface PhantomTypeUpDataStructsPartType extends Vec<Lookup360> {}
 
 /** @name PhantomTypeUpDataStructsPropertyInfo */
-export interface PhantomTypeUpDataStructsPropertyInfo extends Vec<Lookup354> {}
+export interface PhantomTypeUpDataStructsPropertyInfo extends Vec<Lookup352> {}
 
 /** @name PhantomTypeUpDataStructsResourceInfo */
-export interface PhantomTypeUpDataStructsResourceInfo extends Vec<Lookup347> {}
+export interface PhantomTypeUpDataStructsResourceInfo extends Vec<Lookup345> {}
 
 /** @name PhantomTypeUpDataStructsRpcCollection */
-export interface PhantomTypeUpDataStructsRpcCollection extends Vec<Lookup333> {}
+export interface PhantomTypeUpDataStructsRpcCollection extends Vec<Lookup331> {}
 
 /** @name PhantomTypeUpDataStructsTheme */
-export interface PhantomTypeUpDataStructsTheme extends Vec<Lookup369> {}
+export interface PhantomTypeUpDataStructsTheme extends Vec<Lookup367> {}
 
 /** @name PhantomTypeUpDataStructsTokenData */
-export interface PhantomTypeUpDataStructsTokenData extends Vec<Lookup329> {}
+export interface PhantomTypeUpDataStructsTokenData extends Vec<Lookup327> {}
 
 /** @name PolkadotCorePrimitivesInboundDownwardMessage */
 export interface PolkadotCorePrimitivesInboundDownwardMessage extends Struct {
@@ -1963,7 +1946,6 @@
   readonly schemaVersion: UpDataStructsSchemaVersion;
   readonly sponsorship: UpDataStructsSponsorshipState;
   readonly limits: UpDataStructsCollectionLimits;
-  readonly metaUpdatePermission: UpDataStructsMetaUpdatePermission;
 }
 
 /** @name UpDataStructsCollectionField */
@@ -2015,7 +1997,6 @@
   readonly pendingSponsor: Option<AccountId32>;
   readonly limits: Option<UpDataStructsCollectionLimits>;
   readonly constOnChainSchema: Bytes;
-  readonly metaUpdatePermission: Option<UpDataStructsMetaUpdatePermission>;
   readonly tokenPropertyPermissions: Vec<UpDataStructsPropertyKeyPermission>;
   readonly properties: Vec<UpDataStructsProperty>;
 }
@@ -2052,14 +2033,12 @@
 /** @name UpDataStructsCreateNftData */
 export interface UpDataStructsCreateNftData extends Struct {
   readonly constData: Bytes;
-  readonly variableData: Bytes;
   readonly properties: Vec<UpDataStructsProperty>;
 }
 
 /** @name UpDataStructsCreateNftExData */
 export interface UpDataStructsCreateNftExData extends Struct {
   readonly constData: Bytes;
-  readonly variableData: Bytes;
   readonly properties: Vec<UpDataStructsProperty>;
   readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;
 }
@@ -2067,31 +2046,21 @@
 /** @name UpDataStructsCreateReFungibleData */
 export interface UpDataStructsCreateReFungibleData extends Struct {
   readonly constData: Bytes;
-  readonly variableData: Bytes;
   readonly pieces: u128;
 }
 
 /** @name UpDataStructsCreateRefungibleExData */
 export interface UpDataStructsCreateRefungibleExData extends Struct {
   readonly constData: Bytes;
-  readonly variableData: Bytes;
   readonly users: BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr, u128>;
 }
 
-/** @name UpDataStructsMetaUpdatePermission */
-export interface UpDataStructsMetaUpdatePermission extends Enum {
-  readonly isItemOwner: boolean;
-  readonly isAdmin: boolean;
-  readonly isNone: boolean;
-  readonly type: 'ItemOwner' | 'Admin' | 'None';
-}
-
 /** @name UpDataStructsNestingRule */
 export interface UpDataStructsNestingRule extends Enum {
   readonly isDisabled: boolean;
   readonly isOwner: boolean;
   readonly isOwnerRestricted: boolean;
-  readonly asOwnerRestricted: FrameSupportStorageBoundedBTreeSet;
+  readonly asOwnerRestricted: BTreeSet<u32>;
   readonly type: 'Disabled' | 'Owner' | 'OwnerRestricted';
 }
 
@@ -2141,7 +2110,6 @@
   readonly sponsorship: UpDataStructsSponsorshipState;
   readonly limits: UpDataStructsCollectionLimits;
   readonly constOnChainSchema: Bytes;
-  readonly metaUpdatePermission: UpDataStructsMetaUpdatePermission;
   readonly tokenPropertyPermissions: Vec<UpDataStructsPropertyKeyPermission>;
   readonly properties: Vec<UpDataStructsProperty>;
 }
modifiedtests/src/interfaces/types-lookup.tsdiffbeforeafterboth
before · tests/src/interfaces/types-lookup.ts
1// Auto-generated via `yarn polkadot-types-from-defs`, do not edit2/* eslint-disable */34declare module '@polkadot/types/lookup' {5  import type { BTreeMap, BTreeSet, Bytes, Compact, Enum, Null, Option, Result, Struct, Text, U256, U8aFixed, Vec, bool, u128, u16, u32, u64, u8 } from '@polkadot/types-codec';6  import type { ITuple } from '@polkadot/types-codec/types';7  import type { AccountId32, Call, H160, H256, MultiAddress, Perbill, Permill } from '@polkadot/types/interfaces/runtime';8  import type { Event } from '@polkadot/types/interfaces/system';910  /** @name PolkadotPrimitivesV2PersistedValidationData (2) */11  export interface PolkadotPrimitivesV2PersistedValidationData extends Struct {12    readonly parentHead: Bytes;13    readonly relayParentNumber: u32;14    readonly relayParentStorageRoot: H256;15    readonly maxPovSize: u32;16  }1718  /** @name PolkadotPrimitivesV2UpgradeRestriction (9) */19  export interface PolkadotPrimitivesV2UpgradeRestriction extends Enum {20    readonly isPresent: boolean;21    readonly type: 'Present';22  }2324  /** @name SpTrieStorageProof (10) */25  export interface SpTrieStorageProof extends Struct {26    readonly trieNodes: BTreeSet<Bytes>;27  }2829  /** @name CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot (13) */30  export interface CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot extends Struct {31    readonly dmqMqcHead: H256;32    readonly relayDispatchQueueSize: ITuple<[u32, u32]>;33    readonly ingressChannels: Vec<ITuple<[u32, PolkadotPrimitivesV2AbridgedHrmpChannel]>>;34    readonly egressChannels: Vec<ITuple<[u32, PolkadotPrimitivesV2AbridgedHrmpChannel]>>;35  }3637  /** @name PolkadotPrimitivesV2AbridgedHrmpChannel (18) */38  export interface PolkadotPrimitivesV2AbridgedHrmpChannel extends Struct {39    readonly maxCapacity: u32;40    readonly maxTotalSize: u32;41    readonly maxMessageSize: u32;42    readonly msgCount: u32;43    readonly totalSize: u32;44    readonly mqcHead: Option<H256>;45  }4647  /** @name PolkadotPrimitivesV2AbridgedHostConfiguration (20) */48  export interface PolkadotPrimitivesV2AbridgedHostConfiguration extends Struct {49    readonly maxCodeSize: u32;50    readonly maxHeadDataSize: u32;51    readonly maxUpwardQueueCount: u32;52    readonly maxUpwardQueueSize: u32;53    readonly maxUpwardMessageSize: u32;54    readonly maxUpwardMessageNumPerCandidate: u32;55    readonly hrmpMaxMessageNumPerCandidate: u32;56    readonly validationUpgradeCooldown: u32;57    readonly validationUpgradeDelay: u32;58  }5960  /** @name PolkadotCorePrimitivesOutboundHrmpMessage (26) */61  export interface PolkadotCorePrimitivesOutboundHrmpMessage extends Struct {62    readonly recipient: u32;63    readonly data: Bytes;64  }6566  /** @name CumulusPalletParachainSystemCall (28) */67  export interface CumulusPalletParachainSystemCall extends Enum {68    readonly isSetValidationData: boolean;69    readonly asSetValidationData: {70      readonly data: CumulusPrimitivesParachainInherentParachainInherentData;71    } & Struct;72    readonly isSudoSendUpwardMessage: boolean;73    readonly asSudoSendUpwardMessage: {74      readonly message: Bytes;75    } & Struct;76    readonly isAuthorizeUpgrade: boolean;77    readonly asAuthorizeUpgrade: {78      readonly codeHash: H256;79    } & Struct;80    readonly isEnactAuthorizedUpgrade: boolean;81    readonly asEnactAuthorizedUpgrade: {82      readonly code: Bytes;83    } & Struct;84    readonly type: 'SetValidationData' | 'SudoSendUpwardMessage' | 'AuthorizeUpgrade' | 'EnactAuthorizedUpgrade';85  }8687  /** @name CumulusPrimitivesParachainInherentParachainInherentData (29) */88  export interface CumulusPrimitivesParachainInherentParachainInherentData extends Struct {89    readonly validationData: PolkadotPrimitivesV2PersistedValidationData;90    readonly relayChainState: SpTrieStorageProof;91    readonly downwardMessages: Vec<PolkadotCorePrimitivesInboundDownwardMessage>;92    readonly horizontalMessages: BTreeMap<u32, Vec<PolkadotCorePrimitivesInboundHrmpMessage>>;93  }9495  /** @name PolkadotCorePrimitivesInboundDownwardMessage (31) */96  export interface PolkadotCorePrimitivesInboundDownwardMessage extends Struct {97    readonly sentAt: u32;98    readonly msg: Bytes;99  }100101  /** @name PolkadotCorePrimitivesInboundHrmpMessage (34) */102  export interface PolkadotCorePrimitivesInboundHrmpMessage extends Struct {103    readonly sentAt: u32;104    readonly data: Bytes;105  }106107  /** @name CumulusPalletParachainSystemEvent (37) */108  export interface CumulusPalletParachainSystemEvent extends Enum {109    readonly isValidationFunctionStored: boolean;110    readonly isValidationFunctionApplied: boolean;111    readonly asValidationFunctionApplied: u32;112    readonly isValidationFunctionDiscarded: boolean;113    readonly isUpgradeAuthorized: boolean;114    readonly asUpgradeAuthorized: H256;115    readonly isDownwardMessagesReceived: boolean;116    readonly asDownwardMessagesReceived: u32;117    readonly isDownwardMessagesProcessed: boolean;118    readonly asDownwardMessagesProcessed: ITuple<[u64, H256]>;119    readonly type: 'ValidationFunctionStored' | 'ValidationFunctionApplied' | 'ValidationFunctionDiscarded' | 'UpgradeAuthorized' | 'DownwardMessagesReceived' | 'DownwardMessagesProcessed';120  }121122  /** @name CumulusPalletParachainSystemError (38) */123  export interface CumulusPalletParachainSystemError extends Enum {124    readonly isOverlappingUpgrades: boolean;125    readonly isProhibitedByPolkadot: boolean;126    readonly isTooBig: boolean;127    readonly isValidationDataNotAvailable: boolean;128    readonly isHostConfigurationNotAvailable: boolean;129    readonly isNotScheduled: boolean;130    readonly isNothingAuthorized: boolean;131    readonly isUnauthorized: boolean;132    readonly type: 'OverlappingUpgrades' | 'ProhibitedByPolkadot' | 'TooBig' | 'ValidationDataNotAvailable' | 'HostConfigurationNotAvailable' | 'NotScheduled' | 'NothingAuthorized' | 'Unauthorized';133  }134135  /** @name PalletBalancesAccountData (41) */136  export interface PalletBalancesAccountData extends Struct {137    readonly free: u128;138    readonly reserved: u128;139    readonly miscFrozen: u128;140    readonly feeFrozen: u128;141  }142143  /** @name PalletBalancesBalanceLock (43) */144  export interface PalletBalancesBalanceLock extends Struct {145    readonly id: U8aFixed;146    readonly amount: u128;147    readonly reasons: PalletBalancesReasons;148  }149150  /** @name PalletBalancesReasons (45) */151  export interface PalletBalancesReasons extends Enum {152    readonly isFee: boolean;153    readonly isMisc: boolean;154    readonly isAll: boolean;155    readonly type: 'Fee' | 'Misc' | 'All';156  }157158  /** @name PalletBalancesReserveData (48) */159  export interface PalletBalancesReserveData extends Struct {160    readonly id: U8aFixed;161    readonly amount: u128;162  }163164  /** @name PalletBalancesReleases (50) */165  export interface PalletBalancesReleases extends Enum {166    readonly isV100: boolean;167    readonly isV200: boolean;168    readonly type: 'V100' | 'V200';169  }170171  /** @name PalletBalancesCall (51) */172  export interface PalletBalancesCall extends Enum {173    readonly isTransfer: boolean;174    readonly asTransfer: {175      readonly dest: MultiAddress;176      readonly value: Compact<u128>;177    } & Struct;178    readonly isSetBalance: boolean;179    readonly asSetBalance: {180      readonly who: MultiAddress;181      readonly newFree: Compact<u128>;182      readonly newReserved: Compact<u128>;183    } & Struct;184    readonly isForceTransfer: boolean;185    readonly asForceTransfer: {186      readonly source: MultiAddress;187      readonly dest: MultiAddress;188      readonly value: Compact<u128>;189    } & Struct;190    readonly isTransferKeepAlive: boolean;191    readonly asTransferKeepAlive: {192      readonly dest: MultiAddress;193      readonly value: Compact<u128>;194    } & Struct;195    readonly isTransferAll: boolean;196    readonly asTransferAll: {197      readonly dest: MultiAddress;198      readonly keepAlive: bool;199    } & Struct;200    readonly isForceUnreserve: boolean;201    readonly asForceUnreserve: {202      readonly who: MultiAddress;203      readonly amount: u128;204    } & Struct;205    readonly type: 'Transfer' | 'SetBalance' | 'ForceTransfer' | 'TransferKeepAlive' | 'TransferAll' | 'ForceUnreserve';206  }207208  /** @name PalletBalancesEvent (57) */209  export interface PalletBalancesEvent extends Enum {210    readonly isEndowed: boolean;211    readonly asEndowed: {212      readonly account: AccountId32;213      readonly freeBalance: u128;214    } & Struct;215    readonly isDustLost: boolean;216    readonly asDustLost: {217      readonly account: AccountId32;218      readonly amount: u128;219    } & Struct;220    readonly isTransfer: boolean;221    readonly asTransfer: {222      readonly from: AccountId32;223      readonly to: AccountId32;224      readonly amount: u128;225    } & Struct;226    readonly isBalanceSet: boolean;227    readonly asBalanceSet: {228      readonly who: AccountId32;229      readonly free: u128;230      readonly reserved: u128;231    } & Struct;232    readonly isReserved: boolean;233    readonly asReserved: {234      readonly who: AccountId32;235      readonly amount: u128;236    } & Struct;237    readonly isUnreserved: boolean;238    readonly asUnreserved: {239      readonly who: AccountId32;240      readonly amount: u128;241    } & Struct;242    readonly isReserveRepatriated: boolean;243    readonly asReserveRepatriated: {244      readonly from: AccountId32;245      readonly to: AccountId32;246      readonly amount: u128;247      readonly destinationStatus: FrameSupportTokensMiscBalanceStatus;248    } & Struct;249    readonly isDeposit: boolean;250    readonly asDeposit: {251      readonly who: AccountId32;252      readonly amount: u128;253    } & Struct;254    readonly isWithdraw: boolean;255    readonly asWithdraw: {256      readonly who: AccountId32;257      readonly amount: u128;258    } & Struct;259    readonly isSlashed: boolean;260    readonly asSlashed: {261      readonly who: AccountId32;262      readonly amount: u128;263    } & Struct;264    readonly type: 'Endowed' | 'DustLost' | 'Transfer' | 'BalanceSet' | 'Reserved' | 'Unreserved' | 'ReserveRepatriated' | 'Deposit' | 'Withdraw' | 'Slashed';265  }266267  /** @name FrameSupportTokensMiscBalanceStatus (58) */268  export interface FrameSupportTokensMiscBalanceStatus extends Enum {269    readonly isFree: boolean;270    readonly isReserved: boolean;271    readonly type: 'Free' | 'Reserved';272  }273274  /** @name PalletBalancesError (59) */275  export interface PalletBalancesError extends Enum {276    readonly isVestingBalance: boolean;277    readonly isLiquidityRestrictions: boolean;278    readonly isInsufficientBalance: boolean;279    readonly isExistentialDeposit: boolean;280    readonly isKeepAlive: boolean;281    readonly isExistingVestingSchedule: boolean;282    readonly isDeadAccount: boolean;283    readonly isTooManyReserves: boolean;284    readonly type: 'VestingBalance' | 'LiquidityRestrictions' | 'InsufficientBalance' | 'ExistentialDeposit' | 'KeepAlive' | 'ExistingVestingSchedule' | 'DeadAccount' | 'TooManyReserves';285  }286287  /** @name PalletTimestampCall (62) */288  export interface PalletTimestampCall extends Enum {289    readonly isSet: boolean;290    readonly asSet: {291      readonly now: Compact<u64>;292    } & Struct;293    readonly type: 'Set';294  }295296  /** @name PalletTransactionPaymentReleases (65) */297  export interface PalletTransactionPaymentReleases extends Enum {298    readonly isV1Ancient: boolean;299    readonly isV2: boolean;300    readonly type: 'V1Ancient' | 'V2';301  }302303  /** @name FrameSupportWeightsWeightToFeeCoefficient (67) */304  export interface FrameSupportWeightsWeightToFeeCoefficient extends Struct {305    readonly coeffInteger: u128;306    readonly coeffFrac: Perbill;307    readonly negative: bool;308    readonly degree: u8;309  }310311  /** @name PalletTreasuryProposal (69) */312  export interface PalletTreasuryProposal extends Struct {313    readonly proposer: AccountId32;314    readonly value: u128;315    readonly beneficiary: AccountId32;316    readonly bond: u128;317  }318319  /** @name PalletTreasuryCall (72) */320  export interface PalletTreasuryCall extends Enum {321    readonly isProposeSpend: boolean;322    readonly asProposeSpend: {323      readonly value: Compact<u128>;324      readonly beneficiary: MultiAddress;325    } & Struct;326    readonly isRejectProposal: boolean;327    readonly asRejectProposal: {328      readonly proposalId: Compact<u32>;329    } & Struct;330    readonly isApproveProposal: boolean;331    readonly asApproveProposal: {332      readonly proposalId: Compact<u32>;333    } & Struct;334    readonly type: 'ProposeSpend' | 'RejectProposal' | 'ApproveProposal';335  }336337  /** @name PalletTreasuryEvent (74) */338  export interface PalletTreasuryEvent extends Enum {339    readonly isProposed: boolean;340    readonly asProposed: {341      readonly proposalIndex: u32;342    } & Struct;343    readonly isSpending: boolean;344    readonly asSpending: {345      readonly budgetRemaining: u128;346    } & Struct;347    readonly isAwarded: boolean;348    readonly asAwarded: {349      readonly proposalIndex: u32;350      readonly award: u128;351      readonly account: AccountId32;352    } & Struct;353    readonly isRejected: boolean;354    readonly asRejected: {355      readonly proposalIndex: u32;356      readonly slashed: u128;357    } & Struct;358    readonly isBurnt: boolean;359    readonly asBurnt: {360      readonly burntFunds: u128;361    } & Struct;362    readonly isRollover: boolean;363    readonly asRollover: {364      readonly rolloverBalance: u128;365    } & Struct;366    readonly isDeposit: boolean;367    readonly asDeposit: {368      readonly value: u128;369    } & Struct;370    readonly type: 'Proposed' | 'Spending' | 'Awarded' | 'Rejected' | 'Burnt' | 'Rollover' | 'Deposit';371  }372373  /** @name FrameSupportPalletId (77) */374  export interface FrameSupportPalletId extends U8aFixed {}375376  /** @name PalletTreasuryError (78) */377  export interface PalletTreasuryError extends Enum {378    readonly isInsufficientProposersBalance: boolean;379    readonly isInvalidIndex: boolean;380    readonly isTooManyApprovals: boolean;381    readonly type: 'InsufficientProposersBalance' | 'InvalidIndex' | 'TooManyApprovals';382  }383384  /** @name PalletSudoCall (79) */385  export interface PalletSudoCall extends Enum {386    readonly isSudo: boolean;387    readonly asSudo: {388      readonly call: Call;389    } & Struct;390    readonly isSudoUncheckedWeight: boolean;391    readonly asSudoUncheckedWeight: {392      readonly call: Call;393      readonly weight: u64;394    } & Struct;395    readonly isSetKey: boolean;396    readonly asSetKey: {397      readonly new_: MultiAddress;398    } & Struct;399    readonly isSudoAs: boolean;400    readonly asSudoAs: {401      readonly who: MultiAddress;402      readonly call: Call;403    } & Struct;404    readonly type: 'Sudo' | 'SudoUncheckedWeight' | 'SetKey' | 'SudoAs';405  }406407  /** @name FrameSystemCall (81) */408  export interface FrameSystemCall extends Enum {409    readonly isFillBlock: boolean;410    readonly asFillBlock: {411      readonly ratio: Perbill;412    } & Struct;413    readonly isRemark: boolean;414    readonly asRemark: {415      readonly remark: Bytes;416    } & Struct;417    readonly isSetHeapPages: boolean;418    readonly asSetHeapPages: {419      readonly pages: u64;420    } & Struct;421    readonly isSetCode: boolean;422    readonly asSetCode: {423      readonly code: Bytes;424    } & Struct;425    readonly isSetCodeWithoutChecks: boolean;426    readonly asSetCodeWithoutChecks: {427      readonly code: Bytes;428    } & Struct;429    readonly isSetStorage: boolean;430    readonly asSetStorage: {431      readonly items: Vec<ITuple<[Bytes, Bytes]>>;432    } & Struct;433    readonly isKillStorage: boolean;434    readonly asKillStorage: {435      readonly keys_: Vec<Bytes>;436    } & Struct;437    readonly isKillPrefix: boolean;438    readonly asKillPrefix: {439      readonly prefix: Bytes;440      readonly subkeys: u32;441    } & Struct;442    readonly isRemarkWithEvent: boolean;443    readonly asRemarkWithEvent: {444      readonly remark: Bytes;445    } & Struct;446    readonly type: 'FillBlock' | 'Remark' | 'SetHeapPages' | 'SetCode' | 'SetCodeWithoutChecks' | 'SetStorage' | 'KillStorage' | 'KillPrefix' | 'RemarkWithEvent';447  }448449  /** @name OrmlVestingModuleCall (84) */450  export interface OrmlVestingModuleCall extends Enum {451    readonly isClaim: boolean;452    readonly isVestedTransfer: boolean;453    readonly asVestedTransfer: {454      readonly dest: MultiAddress;455      readonly schedule: OrmlVestingVestingSchedule;456    } & Struct;457    readonly isUpdateVestingSchedules: boolean;458    readonly asUpdateVestingSchedules: {459      readonly who: MultiAddress;460      readonly vestingSchedules: Vec<OrmlVestingVestingSchedule>;461    } & Struct;462    readonly isClaimFor: boolean;463    readonly asClaimFor: {464      readonly dest: MultiAddress;465    } & Struct;466    readonly type: 'Claim' | 'VestedTransfer' | 'UpdateVestingSchedules' | 'ClaimFor';467  }468469  /** @name OrmlVestingVestingSchedule (85) */470  export interface OrmlVestingVestingSchedule extends Struct {471    readonly start: u32;472    readonly period: u32;473    readonly periodCount: u32;474    readonly perPeriod: Compact<u128>;475  }476477  /** @name CumulusPalletXcmpQueueCall (87) */478  export interface CumulusPalletXcmpQueueCall extends Enum {479    readonly isServiceOverweight: boolean;480    readonly asServiceOverweight: {481      readonly index: u64;482      readonly weightLimit: u64;483    } & Struct;484    readonly isSuspendXcmExecution: boolean;485    readonly isResumeXcmExecution: boolean;486    readonly isUpdateSuspendThreshold: boolean;487    readonly asUpdateSuspendThreshold: {488      readonly new_: u32;489    } & Struct;490    readonly isUpdateDropThreshold: boolean;491    readonly asUpdateDropThreshold: {492      readonly new_: u32;493    } & Struct;494    readonly isUpdateResumeThreshold: boolean;495    readonly asUpdateResumeThreshold: {496      readonly new_: u32;497    } & Struct;498    readonly isUpdateThresholdWeight: boolean;499    readonly asUpdateThresholdWeight: {500      readonly new_: u64;501    } & Struct;502    readonly isUpdateWeightRestrictDecay: boolean;503    readonly asUpdateWeightRestrictDecay: {504      readonly new_: u64;505    } & Struct;506    readonly isUpdateXcmpMaxIndividualWeight: boolean;507    readonly asUpdateXcmpMaxIndividualWeight: {508      readonly new_: u64;509    } & Struct;510    readonly type: 'ServiceOverweight' | 'SuspendXcmExecution' | 'ResumeXcmExecution' | 'UpdateSuspendThreshold' | 'UpdateDropThreshold' | 'UpdateResumeThreshold' | 'UpdateThresholdWeight' | 'UpdateWeightRestrictDecay' | 'UpdateXcmpMaxIndividualWeight';511  }512513  /** @name PalletXcmCall (88) */514  export interface PalletXcmCall extends Enum {515    readonly isSend: boolean;516    readonly asSend: {517      readonly dest: XcmVersionedMultiLocation;518      readonly message: XcmVersionedXcm;519    } & Struct;520    readonly isTeleportAssets: boolean;521    readonly asTeleportAssets: {522      readonly dest: XcmVersionedMultiLocation;523      readonly beneficiary: XcmVersionedMultiLocation;524      readonly assets: XcmVersionedMultiAssets;525      readonly feeAssetItem: u32;526    } & Struct;527    readonly isReserveTransferAssets: boolean;528    readonly asReserveTransferAssets: {529      readonly dest: XcmVersionedMultiLocation;530      readonly beneficiary: XcmVersionedMultiLocation;531      readonly assets: XcmVersionedMultiAssets;532      readonly feeAssetItem: u32;533    } & Struct;534    readonly isExecute: boolean;535    readonly asExecute: {536      readonly message: XcmVersionedXcm;537      readonly maxWeight: u64;538    } & Struct;539    readonly isForceXcmVersion: boolean;540    readonly asForceXcmVersion: {541      readonly location: XcmV1MultiLocation;542      readonly xcmVersion: u32;543    } & Struct;544    readonly isForceDefaultXcmVersion: boolean;545    readonly asForceDefaultXcmVersion: {546      readonly maybeXcmVersion: Option<u32>;547    } & Struct;548    readonly isForceSubscribeVersionNotify: boolean;549    readonly asForceSubscribeVersionNotify: {550      readonly location: XcmVersionedMultiLocation;551    } & Struct;552    readonly isForceUnsubscribeVersionNotify: boolean;553    readonly asForceUnsubscribeVersionNotify: {554      readonly location: XcmVersionedMultiLocation;555    } & Struct;556    readonly isLimitedReserveTransferAssets: boolean;557    readonly asLimitedReserveTransferAssets: {558      readonly dest: XcmVersionedMultiLocation;559      readonly beneficiary: XcmVersionedMultiLocation;560      readonly assets: XcmVersionedMultiAssets;561      readonly feeAssetItem: u32;562      readonly weightLimit: XcmV2WeightLimit;563    } & Struct;564    readonly isLimitedTeleportAssets: boolean;565    readonly asLimitedTeleportAssets: {566      readonly dest: XcmVersionedMultiLocation;567      readonly beneficiary: XcmVersionedMultiLocation;568      readonly assets: XcmVersionedMultiAssets;569      readonly feeAssetItem: u32;570      readonly weightLimit: XcmV2WeightLimit;571    } & Struct;572    readonly type: 'Send' | 'TeleportAssets' | 'ReserveTransferAssets' | 'Execute' | 'ForceXcmVersion' | 'ForceDefaultXcmVersion' | 'ForceSubscribeVersionNotify' | 'ForceUnsubscribeVersionNotify' | 'LimitedReserveTransferAssets' | 'LimitedTeleportAssets';573  }574575  /** @name XcmVersionedMultiLocation (89) */576  export interface XcmVersionedMultiLocation extends Enum {577    readonly isV0: boolean;578    readonly asV0: XcmV0MultiLocation;579    readonly isV1: boolean;580    readonly asV1: XcmV1MultiLocation;581    readonly type: 'V0' | 'V1';582  }583584  /** @name XcmV0MultiLocation (90) */585  export interface XcmV0MultiLocation extends Enum {586    readonly isNull: boolean;587    readonly isX1: boolean;588    readonly asX1: XcmV0Junction;589    readonly isX2: boolean;590    readonly asX2: ITuple<[XcmV0Junction, XcmV0Junction]>;591    readonly isX3: boolean;592    readonly asX3: ITuple<[XcmV0Junction, XcmV0Junction, XcmV0Junction]>;593    readonly isX4: boolean;594    readonly asX4: ITuple<[XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction]>;595    readonly isX5: boolean;596    readonly asX5: ITuple<[XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction]>;597    readonly isX6: boolean;598    readonly asX6: ITuple<[XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction]>;599    readonly isX7: boolean;600    readonly asX7: ITuple<[XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction]>;601    readonly isX8: boolean;602    readonly asX8: ITuple<[XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction]>;603    readonly type: 'Null' | 'X1' | 'X2' | 'X3' | 'X4' | 'X5' | 'X6' | 'X7' | 'X8';604  }605606  /** @name XcmV0Junction (91) */607  export interface XcmV0Junction extends Enum {608    readonly isParent: boolean;609    readonly isParachain: boolean;610    readonly asParachain: Compact<u32>;611    readonly isAccountId32: boolean;612    readonly asAccountId32: {613      readonly network: XcmV0JunctionNetworkId;614      readonly id: U8aFixed;615    } & Struct;616    readonly isAccountIndex64: boolean;617    readonly asAccountIndex64: {618      readonly network: XcmV0JunctionNetworkId;619      readonly index: Compact<u64>;620    } & Struct;621    readonly isAccountKey20: boolean;622    readonly asAccountKey20: {623      readonly network: XcmV0JunctionNetworkId;624      readonly key: U8aFixed;625    } & Struct;626    readonly isPalletInstance: boolean;627    readonly asPalletInstance: u8;628    readonly isGeneralIndex: boolean;629    readonly asGeneralIndex: Compact<u128>;630    readonly isGeneralKey: boolean;631    readonly asGeneralKey: Bytes;632    readonly isOnlyChild: boolean;633    readonly isPlurality: boolean;634    readonly asPlurality: {635      readonly id: XcmV0JunctionBodyId;636      readonly part: XcmV0JunctionBodyPart;637    } & Struct;638    readonly type: 'Parent' | 'Parachain' | 'AccountId32' | 'AccountIndex64' | 'AccountKey20' | 'PalletInstance' | 'GeneralIndex' | 'GeneralKey' | 'OnlyChild' | 'Plurality';639  }640641  /** @name XcmV0JunctionNetworkId (92) */642  export interface XcmV0JunctionNetworkId extends Enum {643    readonly isAny: boolean;644    readonly isNamed: boolean;645    readonly asNamed: Bytes;646    readonly isPolkadot: boolean;647    readonly isKusama: boolean;648    readonly type: 'Any' | 'Named' | 'Polkadot' | 'Kusama';649  }650651  /** @name XcmV0JunctionBodyId (93) */652  export interface XcmV0JunctionBodyId extends Enum {653    readonly isUnit: boolean;654    readonly isNamed: boolean;655    readonly asNamed: Bytes;656    readonly isIndex: boolean;657    readonly asIndex: Compact<u32>;658    readonly isExecutive: boolean;659    readonly isTechnical: boolean;660    readonly isLegislative: boolean;661    readonly isJudicial: boolean;662    readonly type: 'Unit' | 'Named' | 'Index' | 'Executive' | 'Technical' | 'Legislative' | 'Judicial';663  }664665  /** @name XcmV0JunctionBodyPart (94) */666  export interface XcmV0JunctionBodyPart extends Enum {667    readonly isVoice: boolean;668    readonly isMembers: boolean;669    readonly asMembers: {670      readonly count: Compact<u32>;671    } & Struct;672    readonly isFraction: boolean;673    readonly asFraction: {674      readonly nom: Compact<u32>;675      readonly denom: Compact<u32>;676    } & Struct;677    readonly isAtLeastProportion: boolean;678    readonly asAtLeastProportion: {679      readonly nom: Compact<u32>;680      readonly denom: Compact<u32>;681    } & Struct;682    readonly isMoreThanProportion: boolean;683    readonly asMoreThanProportion: {684      readonly nom: Compact<u32>;685      readonly denom: Compact<u32>;686    } & Struct;687    readonly type: 'Voice' | 'Members' | 'Fraction' | 'AtLeastProportion' | 'MoreThanProportion';688  }689690  /** @name XcmV1MultiLocation (95) */691  export interface XcmV1MultiLocation extends Struct {692    readonly parents: u8;693    readonly interior: XcmV1MultilocationJunctions;694  }695696  /** @name XcmV1MultilocationJunctions (96) */697  export interface XcmV1MultilocationJunctions extends Enum {698    readonly isHere: boolean;699    readonly isX1: boolean;700    readonly asX1: XcmV1Junction;701    readonly isX2: boolean;702    readonly asX2: ITuple<[XcmV1Junction, XcmV1Junction]>;703    readonly isX3: boolean;704    readonly asX3: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction]>;705    readonly isX4: boolean;706    readonly asX4: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction]>;707    readonly isX5: boolean;708    readonly asX5: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction]>;709    readonly isX6: boolean;710    readonly asX6: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction]>;711    readonly isX7: boolean;712    readonly asX7: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction]>;713    readonly isX8: boolean;714    readonly asX8: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction]>;715    readonly type: 'Here' | 'X1' | 'X2' | 'X3' | 'X4' | 'X5' | 'X6' | 'X7' | 'X8';716  }717718  /** @name XcmV1Junction (97) */719  export interface XcmV1Junction extends Enum {720    readonly isParachain: boolean;721    readonly asParachain: Compact<u32>;722    readonly isAccountId32: boolean;723    readonly asAccountId32: {724      readonly network: XcmV0JunctionNetworkId;725      readonly id: U8aFixed;726    } & Struct;727    readonly isAccountIndex64: boolean;728    readonly asAccountIndex64: {729      readonly network: XcmV0JunctionNetworkId;730      readonly index: Compact<u64>;731    } & Struct;732    readonly isAccountKey20: boolean;733    readonly asAccountKey20: {734      readonly network: XcmV0JunctionNetworkId;735      readonly key: U8aFixed;736    } & Struct;737    readonly isPalletInstance: boolean;738    readonly asPalletInstance: u8;739    readonly isGeneralIndex: boolean;740    readonly asGeneralIndex: Compact<u128>;741    readonly isGeneralKey: boolean;742    readonly asGeneralKey: Bytes;743    readonly isOnlyChild: boolean;744    readonly isPlurality: boolean;745    readonly asPlurality: {746      readonly id: XcmV0JunctionBodyId;747      readonly part: XcmV0JunctionBodyPart;748    } & Struct;749    readonly type: 'Parachain' | 'AccountId32' | 'AccountIndex64' | 'AccountKey20' | 'PalletInstance' | 'GeneralIndex' | 'GeneralKey' | 'OnlyChild' | 'Plurality';750  }751752  /** @name XcmVersionedXcm (98) */753  export interface XcmVersionedXcm extends Enum {754    readonly isV0: boolean;755    readonly asV0: XcmV0Xcm;756    readonly isV1: boolean;757    readonly asV1: XcmV1Xcm;758    readonly isV2: boolean;759    readonly asV2: XcmV2Xcm;760    readonly type: 'V0' | 'V1' | 'V2';761  }762763  /** @name XcmV0Xcm (99) */764  export interface XcmV0Xcm extends Enum {765    readonly isWithdrawAsset: boolean;766    readonly asWithdrawAsset: {767      readonly assets: Vec<XcmV0MultiAsset>;768      readonly effects: Vec<XcmV0Order>;769    } & Struct;770    readonly isReserveAssetDeposit: boolean;771    readonly asReserveAssetDeposit: {772      readonly assets: Vec<XcmV0MultiAsset>;773      readonly effects: Vec<XcmV0Order>;774    } & Struct;775    readonly isTeleportAsset: boolean;776    readonly asTeleportAsset: {777      readonly assets: Vec<XcmV0MultiAsset>;778      readonly effects: Vec<XcmV0Order>;779    } & Struct;780    readonly isQueryResponse: boolean;781    readonly asQueryResponse: {782      readonly queryId: Compact<u64>;783      readonly response: XcmV0Response;784    } & Struct;785    readonly isTransferAsset: boolean;786    readonly asTransferAsset: {787      readonly assets: Vec<XcmV0MultiAsset>;788      readonly dest: XcmV0MultiLocation;789    } & Struct;790    readonly isTransferReserveAsset: boolean;791    readonly asTransferReserveAsset: {792      readonly assets: Vec<XcmV0MultiAsset>;793      readonly dest: XcmV0MultiLocation;794      readonly effects: Vec<XcmV0Order>;795    } & Struct;796    readonly isTransact: boolean;797    readonly asTransact: {798      readonly originType: XcmV0OriginKind;799      readonly requireWeightAtMost: u64;800      readonly call: XcmDoubleEncoded;801    } & Struct;802    readonly isHrmpNewChannelOpenRequest: boolean;803    readonly asHrmpNewChannelOpenRequest: {804      readonly sender: Compact<u32>;805      readonly maxMessageSize: Compact<u32>;806      readonly maxCapacity: Compact<u32>;807    } & Struct;808    readonly isHrmpChannelAccepted: boolean;809    readonly asHrmpChannelAccepted: {810      readonly recipient: Compact<u32>;811    } & Struct;812    readonly isHrmpChannelClosing: boolean;813    readonly asHrmpChannelClosing: {814      readonly initiator: Compact<u32>;815      readonly sender: Compact<u32>;816      readonly recipient: Compact<u32>;817    } & Struct;818    readonly isRelayedFrom: boolean;819    readonly asRelayedFrom: {820      readonly who: XcmV0MultiLocation;821      readonly message: XcmV0Xcm;822    } & Struct;823    readonly type: 'WithdrawAsset' | 'ReserveAssetDeposit' | 'TeleportAsset' | 'QueryResponse' | 'TransferAsset' | 'TransferReserveAsset' | 'Transact' | 'HrmpNewChannelOpenRequest' | 'HrmpChannelAccepted' | 'HrmpChannelClosing' | 'RelayedFrom';824  }825826  /** @name XcmV0MultiAsset (101) */827  export interface XcmV0MultiAsset extends Enum {828    readonly isNone: boolean;829    readonly isAll: boolean;830    readonly isAllFungible: boolean;831    readonly isAllNonFungible: boolean;832    readonly isAllAbstractFungible: boolean;833    readonly asAllAbstractFungible: {834      readonly id: Bytes;835    } & Struct;836    readonly isAllAbstractNonFungible: boolean;837    readonly asAllAbstractNonFungible: {838      readonly class: Bytes;839    } & Struct;840    readonly isAllConcreteFungible: boolean;841    readonly asAllConcreteFungible: {842      readonly id: XcmV0MultiLocation;843    } & Struct;844    readonly isAllConcreteNonFungible: boolean;845    readonly asAllConcreteNonFungible: {846      readonly class: XcmV0MultiLocation;847    } & Struct;848    readonly isAbstractFungible: boolean;849    readonly asAbstractFungible: {850      readonly id: Bytes;851      readonly amount: Compact<u128>;852    } & Struct;853    readonly isAbstractNonFungible: boolean;854    readonly asAbstractNonFungible: {855      readonly class: Bytes;856      readonly instance: XcmV1MultiassetAssetInstance;857    } & Struct;858    readonly isConcreteFungible: boolean;859    readonly asConcreteFungible: {860      readonly id: XcmV0MultiLocation;861      readonly amount: Compact<u128>;862    } & Struct;863    readonly isConcreteNonFungible: boolean;864    readonly asConcreteNonFungible: {865      readonly class: XcmV0MultiLocation;866      readonly instance: XcmV1MultiassetAssetInstance;867    } & Struct;868    readonly type: 'None' | 'All' | 'AllFungible' | 'AllNonFungible' | 'AllAbstractFungible' | 'AllAbstractNonFungible' | 'AllConcreteFungible' | 'AllConcreteNonFungible' | 'AbstractFungible' | 'AbstractNonFungible' | 'ConcreteFungible' | 'ConcreteNonFungible';869  }870871  /** @name XcmV1MultiassetAssetInstance (102) */872  export interface XcmV1MultiassetAssetInstance extends Enum {873    readonly isUndefined: boolean;874    readonly isIndex: boolean;875    readonly asIndex: Compact<u128>;876    readonly isArray4: boolean;877    readonly asArray4: U8aFixed;878    readonly isArray8: boolean;879    readonly asArray8: U8aFixed;880    readonly isArray16: boolean;881    readonly asArray16: U8aFixed;882    readonly isArray32: boolean;883    readonly asArray32: U8aFixed;884    readonly isBlob: boolean;885    readonly asBlob: Bytes;886    readonly type: 'Undefined' | 'Index' | 'Array4' | 'Array8' | 'Array16' | 'Array32' | 'Blob';887  }888889  /** @name XcmV0Order (106) */890  export interface XcmV0Order extends Enum {891    readonly isNull: boolean;892    readonly isDepositAsset: boolean;893    readonly asDepositAsset: {894      readonly assets: Vec<XcmV0MultiAsset>;895      readonly dest: XcmV0MultiLocation;896    } & Struct;897    readonly isDepositReserveAsset: boolean;898    readonly asDepositReserveAsset: {899      readonly assets: Vec<XcmV0MultiAsset>;900      readonly dest: XcmV0MultiLocation;901      readonly effects: Vec<XcmV0Order>;902    } & Struct;903    readonly isExchangeAsset: boolean;904    readonly asExchangeAsset: {905      readonly give: Vec<XcmV0MultiAsset>;906      readonly receive: Vec<XcmV0MultiAsset>;907    } & Struct;908    readonly isInitiateReserveWithdraw: boolean;909    readonly asInitiateReserveWithdraw: {910      readonly assets: Vec<XcmV0MultiAsset>;911      readonly reserve: XcmV0MultiLocation;912      readonly effects: Vec<XcmV0Order>;913    } & Struct;914    readonly isInitiateTeleport: boolean;915    readonly asInitiateTeleport: {916      readonly assets: Vec<XcmV0MultiAsset>;917      readonly dest: XcmV0MultiLocation;918      readonly effects: Vec<XcmV0Order>;919    } & Struct;920    readonly isQueryHolding: boolean;921    readonly asQueryHolding: {922      readonly queryId: Compact<u64>;923      readonly dest: XcmV0MultiLocation;924      readonly assets: Vec<XcmV0MultiAsset>;925    } & Struct;926    readonly isBuyExecution: boolean;927    readonly asBuyExecution: {928      readonly fees: XcmV0MultiAsset;929      readonly weight: u64;930      readonly debt: u64;931      readonly haltOnError: bool;932      readonly xcm: Vec<XcmV0Xcm>;933    } & Struct;934    readonly type: 'Null' | 'DepositAsset' | 'DepositReserveAsset' | 'ExchangeAsset' | 'InitiateReserveWithdraw' | 'InitiateTeleport' | 'QueryHolding' | 'BuyExecution';935  }936937  /** @name XcmV0Response (108) */938  export interface XcmV0Response extends Enum {939    readonly isAssets: boolean;940    readonly asAssets: Vec<XcmV0MultiAsset>;941    readonly type: 'Assets';942  }943944  /** @name XcmV0OriginKind (109) */945  export interface XcmV0OriginKind extends Enum {946    readonly isNative: boolean;947    readonly isSovereignAccount: boolean;948    readonly isSuperuser: boolean;949    readonly isXcm: boolean;950    readonly type: 'Native' | 'SovereignAccount' | 'Superuser' | 'Xcm';951  }952953  /** @name XcmDoubleEncoded (110) */954  export interface XcmDoubleEncoded extends Struct {955    readonly encoded: Bytes;956  }957958  /** @name XcmV1Xcm (111) */959  export interface XcmV1Xcm extends Enum {960    readonly isWithdrawAsset: boolean;961    readonly asWithdrawAsset: {962      readonly assets: XcmV1MultiassetMultiAssets;963      readonly effects: Vec<XcmV1Order>;964    } & Struct;965    readonly isReserveAssetDeposited: boolean;966    readonly asReserveAssetDeposited: {967      readonly assets: XcmV1MultiassetMultiAssets;968      readonly effects: Vec<XcmV1Order>;969    } & Struct;970    readonly isReceiveTeleportedAsset: boolean;971    readonly asReceiveTeleportedAsset: {972      readonly assets: XcmV1MultiassetMultiAssets;973      readonly effects: Vec<XcmV1Order>;974    } & Struct;975    readonly isQueryResponse: boolean;976    readonly asQueryResponse: {977      readonly queryId: Compact<u64>;978      readonly response: XcmV1Response;979    } & Struct;980    readonly isTransferAsset: boolean;981    readonly asTransferAsset: {982      readonly assets: XcmV1MultiassetMultiAssets;983      readonly beneficiary: XcmV1MultiLocation;984    } & Struct;985    readonly isTransferReserveAsset: boolean;986    readonly asTransferReserveAsset: {987      readonly assets: XcmV1MultiassetMultiAssets;988      readonly dest: XcmV1MultiLocation;989      readonly effects: Vec<XcmV1Order>;990    } & Struct;991    readonly isTransact: boolean;992    readonly asTransact: {993      readonly originType: XcmV0OriginKind;994      readonly requireWeightAtMost: u64;995      readonly call: XcmDoubleEncoded;996    } & Struct;997    readonly isHrmpNewChannelOpenRequest: boolean;998    readonly asHrmpNewChannelOpenRequest: {999      readonly sender: Compact<u32>;1000      readonly maxMessageSize: Compact<u32>;1001      readonly maxCapacity: Compact<u32>;1002    } & Struct;1003    readonly isHrmpChannelAccepted: boolean;1004    readonly asHrmpChannelAccepted: {1005      readonly recipient: Compact<u32>;1006    } & Struct;1007    readonly isHrmpChannelClosing: boolean;1008    readonly asHrmpChannelClosing: {1009      readonly initiator: Compact<u32>;1010      readonly sender: Compact<u32>;1011      readonly recipient: Compact<u32>;1012    } & Struct;1013    readonly isRelayedFrom: boolean;1014    readonly asRelayedFrom: {1015      readonly who: XcmV1MultilocationJunctions;1016      readonly message: XcmV1Xcm;1017    } & Struct;1018    readonly isSubscribeVersion: boolean;1019    readonly asSubscribeVersion: {1020      readonly queryId: Compact<u64>;1021      readonly maxResponseWeight: Compact<u64>;1022    } & Struct;1023    readonly isUnsubscribeVersion: boolean;1024    readonly type: 'WithdrawAsset' | 'ReserveAssetDeposited' | 'ReceiveTeleportedAsset' | 'QueryResponse' | 'TransferAsset' | 'TransferReserveAsset' | 'Transact' | 'HrmpNewChannelOpenRequest' | 'HrmpChannelAccepted' | 'HrmpChannelClosing' | 'RelayedFrom' | 'SubscribeVersion' | 'UnsubscribeVersion';1025  }10261027  /** @name XcmV1MultiassetMultiAssets (112) */1028  export interface XcmV1MultiassetMultiAssets extends Vec<XcmV1MultiAsset> {}10291030  /** @name XcmV1MultiAsset (114) */1031  export interface XcmV1MultiAsset extends Struct {1032    readonly id: XcmV1MultiassetAssetId;1033    readonly fun: XcmV1MultiassetFungibility;1034  }10351036  /** @name XcmV1MultiassetAssetId (115) */1037  export interface XcmV1MultiassetAssetId extends Enum {1038    readonly isConcrete: boolean;1039    readonly asConcrete: XcmV1MultiLocation;1040    readonly isAbstract: boolean;1041    readonly asAbstract: Bytes;1042    readonly type: 'Concrete' | 'Abstract';1043  }10441045  /** @name XcmV1MultiassetFungibility (116) */1046  export interface XcmV1MultiassetFungibility extends Enum {1047    readonly isFungible: boolean;1048    readonly asFungible: Compact<u128>;1049    readonly isNonFungible: boolean;1050    readonly asNonFungible: XcmV1MultiassetAssetInstance;1051    readonly type: 'Fungible' | 'NonFungible';1052  }10531054  /** @name XcmV1Order (118) */1055  export interface XcmV1Order extends Enum {1056    readonly isNoop: boolean;1057    readonly isDepositAsset: boolean;1058    readonly asDepositAsset: {1059      readonly assets: XcmV1MultiassetMultiAssetFilter;1060      readonly maxAssets: u32;1061      readonly beneficiary: XcmV1MultiLocation;1062    } & Struct;1063    readonly isDepositReserveAsset: boolean;1064    readonly asDepositReserveAsset: {1065      readonly assets: XcmV1MultiassetMultiAssetFilter;1066      readonly maxAssets: u32;1067      readonly dest: XcmV1MultiLocation;1068      readonly effects: Vec<XcmV1Order>;1069    } & Struct;1070    readonly isExchangeAsset: boolean;1071    readonly asExchangeAsset: {1072      readonly give: XcmV1MultiassetMultiAssetFilter;1073      readonly receive: XcmV1MultiassetMultiAssets;1074    } & Struct;1075    readonly isInitiateReserveWithdraw: boolean;1076    readonly asInitiateReserveWithdraw: {1077      readonly assets: XcmV1MultiassetMultiAssetFilter;1078      readonly reserve: XcmV1MultiLocation;1079      readonly effects: Vec<XcmV1Order>;1080    } & Struct;1081    readonly isInitiateTeleport: boolean;1082    readonly asInitiateTeleport: {1083      readonly assets: XcmV1MultiassetMultiAssetFilter;1084      readonly dest: XcmV1MultiLocation;1085      readonly effects: Vec<XcmV1Order>;1086    } & Struct;1087    readonly isQueryHolding: boolean;1088    readonly asQueryHolding: {1089      readonly queryId: Compact<u64>;1090      readonly dest: XcmV1MultiLocation;1091      readonly assets: XcmV1MultiassetMultiAssetFilter;1092    } & Struct;1093    readonly isBuyExecution: boolean;1094    readonly asBuyExecution: {1095      readonly fees: XcmV1MultiAsset;1096      readonly weight: u64;1097      readonly debt: u64;1098      readonly haltOnError: bool;1099      readonly instructions: Vec<XcmV1Xcm>;1100    } & Struct;1101    readonly type: 'Noop' | 'DepositAsset' | 'DepositReserveAsset' | 'ExchangeAsset' | 'InitiateReserveWithdraw' | 'InitiateTeleport' | 'QueryHolding' | 'BuyExecution';1102  }11031104  /** @name XcmV1MultiassetMultiAssetFilter (119) */1105  export interface XcmV1MultiassetMultiAssetFilter extends Enum {1106    readonly isDefinite: boolean;1107    readonly asDefinite: XcmV1MultiassetMultiAssets;1108    readonly isWild: boolean;1109    readonly asWild: XcmV1MultiassetWildMultiAsset;1110    readonly type: 'Definite' | 'Wild';1111  }11121113  /** @name XcmV1MultiassetWildMultiAsset (120) */1114  export interface XcmV1MultiassetWildMultiAsset extends Enum {1115    readonly isAll: boolean;1116    readonly isAllOf: boolean;1117    readonly asAllOf: {1118      readonly id: XcmV1MultiassetAssetId;1119      readonly fun: XcmV1MultiassetWildFungibility;1120    } & Struct;1121    readonly type: 'All' | 'AllOf';1122  }11231124  /** @name XcmV1MultiassetWildFungibility (121) */1125  export interface XcmV1MultiassetWildFungibility extends Enum {1126    readonly isFungible: boolean;1127    readonly isNonFungible: boolean;1128    readonly type: 'Fungible' | 'NonFungible';1129  }11301131  /** @name XcmV1Response (123) */1132  export interface XcmV1Response extends Enum {1133    readonly isAssets: boolean;1134    readonly asAssets: XcmV1MultiassetMultiAssets;1135    readonly isVersion: boolean;1136    readonly asVersion: u32;1137    readonly type: 'Assets' | 'Version';1138  }11391140  /** @name XcmV2Xcm (124) */1141  export interface XcmV2Xcm extends Vec<XcmV2Instruction> {}11421143  /** @name XcmV2Instruction (126) */1144  export interface XcmV2Instruction extends Enum {1145    readonly isWithdrawAsset: boolean;1146    readonly asWithdrawAsset: XcmV1MultiassetMultiAssets;1147    readonly isReserveAssetDeposited: boolean;1148    readonly asReserveAssetDeposited: XcmV1MultiassetMultiAssets;1149    readonly isReceiveTeleportedAsset: boolean;1150    readonly asReceiveTeleportedAsset: XcmV1MultiassetMultiAssets;1151    readonly isQueryResponse: boolean;1152    readonly asQueryResponse: {1153      readonly queryId: Compact<u64>;1154      readonly response: XcmV2Response;1155      readonly maxWeight: Compact<u64>;1156    } & Struct;1157    readonly isTransferAsset: boolean;1158    readonly asTransferAsset: {1159      readonly assets: XcmV1MultiassetMultiAssets;1160      readonly beneficiary: XcmV1MultiLocation;1161    } & Struct;1162    readonly isTransferReserveAsset: boolean;1163    readonly asTransferReserveAsset: {1164      readonly assets: XcmV1MultiassetMultiAssets;1165      readonly dest: XcmV1MultiLocation;1166      readonly xcm: XcmV2Xcm;1167    } & Struct;1168    readonly isTransact: boolean;1169    readonly asTransact: {1170      readonly originType: XcmV0OriginKind;1171      readonly requireWeightAtMost: Compact<u64>;1172      readonly call: XcmDoubleEncoded;1173    } & Struct;1174    readonly isHrmpNewChannelOpenRequest: boolean;1175    readonly asHrmpNewChannelOpenRequest: {1176      readonly sender: Compact<u32>;1177      readonly maxMessageSize: Compact<u32>;1178      readonly maxCapacity: Compact<u32>;1179    } & Struct;1180    readonly isHrmpChannelAccepted: boolean;1181    readonly asHrmpChannelAccepted: {1182      readonly recipient: Compact<u32>;1183    } & Struct;1184    readonly isHrmpChannelClosing: boolean;1185    readonly asHrmpChannelClosing: {1186      readonly initiator: Compact<u32>;1187      readonly sender: Compact<u32>;1188      readonly recipient: Compact<u32>;1189    } & Struct;1190    readonly isClearOrigin: boolean;1191    readonly isDescendOrigin: boolean;1192    readonly asDescendOrigin: XcmV1MultilocationJunctions;1193    readonly isReportError: boolean;1194    readonly asReportError: {1195      readonly queryId: Compact<u64>;1196      readonly dest: XcmV1MultiLocation;1197      readonly maxResponseWeight: Compact<u64>;1198    } & Struct;1199    readonly isDepositAsset: boolean;1200    readonly asDepositAsset: {1201      readonly assets: XcmV1MultiassetMultiAssetFilter;1202      readonly maxAssets: Compact<u32>;1203      readonly beneficiary: XcmV1MultiLocation;1204    } & Struct;1205    readonly isDepositReserveAsset: boolean;1206    readonly asDepositReserveAsset: {1207      readonly assets: XcmV1MultiassetMultiAssetFilter;1208      readonly maxAssets: Compact<u32>;1209      readonly dest: XcmV1MultiLocation;1210      readonly xcm: XcmV2Xcm;1211    } & Struct;1212    readonly isExchangeAsset: boolean;1213    readonly asExchangeAsset: {1214      readonly give: XcmV1MultiassetMultiAssetFilter;1215      readonly receive: XcmV1MultiassetMultiAssets;1216    } & Struct;1217    readonly isInitiateReserveWithdraw: boolean;1218    readonly asInitiateReserveWithdraw: {1219      readonly assets: XcmV1MultiassetMultiAssetFilter;1220      readonly reserve: XcmV1MultiLocation;1221      readonly xcm: XcmV2Xcm;1222    } & Struct;1223    readonly isInitiateTeleport: boolean;1224    readonly asInitiateTeleport: {1225      readonly assets: XcmV1MultiassetMultiAssetFilter;1226      readonly dest: XcmV1MultiLocation;1227      readonly xcm: XcmV2Xcm;1228    } & Struct;1229    readonly isQueryHolding: boolean;1230    readonly asQueryHolding: {1231      readonly queryId: Compact<u64>;1232      readonly dest: XcmV1MultiLocation;1233      readonly assets: XcmV1MultiassetMultiAssetFilter;1234      readonly maxResponseWeight: Compact<u64>;1235    } & Struct;1236    readonly isBuyExecution: boolean;1237    readonly asBuyExecution: {1238      readonly fees: XcmV1MultiAsset;1239      readonly weightLimit: XcmV2WeightLimit;1240    } & Struct;1241    readonly isRefundSurplus: boolean;1242    readonly isSetErrorHandler: boolean;1243    readonly asSetErrorHandler: XcmV2Xcm;1244    readonly isSetAppendix: boolean;1245    readonly asSetAppendix: XcmV2Xcm;1246    readonly isClearError: boolean;1247    readonly isClaimAsset: boolean;1248    readonly asClaimAsset: {1249      readonly assets: XcmV1MultiassetMultiAssets;1250      readonly ticket: XcmV1MultiLocation;1251    } & Struct;1252    readonly isTrap: boolean;1253    readonly asTrap: Compact<u64>;1254    readonly isSubscribeVersion: boolean;1255    readonly asSubscribeVersion: {1256      readonly queryId: Compact<u64>;1257      readonly maxResponseWeight: Compact<u64>;1258    } & Struct;1259    readonly isUnsubscribeVersion: boolean;1260    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';1261  }12621263  /** @name XcmV2Response (127) */1264  export interface XcmV2Response extends Enum {1265    readonly isNull: boolean;1266    readonly isAssets: boolean;1267    readonly asAssets: XcmV1MultiassetMultiAssets;1268    readonly isExecutionResult: boolean;1269    readonly asExecutionResult: Option<ITuple<[u32, XcmV2TraitsError]>>;1270    readonly isVersion: boolean;1271    readonly asVersion: u32;1272    readonly type: 'Null' | 'Assets' | 'ExecutionResult' | 'Version';1273  }12741275  /** @name XcmV2TraitsError (130) */1276  export interface XcmV2TraitsError extends Enum {1277    readonly isOverflow: boolean;1278    readonly isUnimplemented: boolean;1279    readonly isUntrustedReserveLocation: boolean;1280    readonly isUntrustedTeleportLocation: boolean;1281    readonly isMultiLocationFull: boolean;1282    readonly isMultiLocationNotInvertible: boolean;1283    readonly isBadOrigin: boolean;1284    readonly isInvalidLocation: boolean;1285    readonly isAssetNotFound: boolean;1286    readonly isFailedToTransactAsset: boolean;1287    readonly isNotWithdrawable: boolean;1288    readonly isLocationCannotHold: boolean;1289    readonly isExceedsMaxMessageSize: boolean;1290    readonly isDestinationUnsupported: boolean;1291    readonly isTransport: boolean;1292    readonly isUnroutable: boolean;1293    readonly isUnknownClaim: boolean;1294    readonly isFailedToDecode: boolean;1295    readonly isMaxWeightInvalid: boolean;1296    readonly isNotHoldingFees: boolean;1297    readonly isTooExpensive: boolean;1298    readonly isTrap: boolean;1299    readonly asTrap: u64;1300    readonly isUnhandledXcmVersion: boolean;1301    readonly isWeightLimitReached: boolean;1302    readonly asWeightLimitReached: u64;1303    readonly isBarrier: boolean;1304    readonly isWeightNotComputable: boolean;1305    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';1306  }13071308  /** @name XcmV2WeightLimit (131) */1309  export interface XcmV2WeightLimit extends Enum {1310    readonly isUnlimited: boolean;1311    readonly isLimited: boolean;1312    readonly asLimited: Compact<u64>;1313    readonly type: 'Unlimited' | 'Limited';1314  }13151316  /** @name XcmVersionedMultiAssets (132) */1317  export interface XcmVersionedMultiAssets extends Enum {1318    readonly isV0: boolean;1319    readonly asV0: Vec<XcmV0MultiAsset>;1320    readonly isV1: boolean;1321    readonly asV1: XcmV1MultiassetMultiAssets;1322    readonly type: 'V0' | 'V1';1323  }13241325  /** @name CumulusPalletXcmCall (147) */1326  export type CumulusPalletXcmCall = Null;13271328  /** @name CumulusPalletDmpQueueCall (148) */1329  export interface CumulusPalletDmpQueueCall extends Enum {1330    readonly isServiceOverweight: boolean;1331    readonly asServiceOverweight: {1332      readonly index: u64;1333      readonly weightLimit: u64;1334    } & Struct;1335    readonly type: 'ServiceOverweight';1336  }13371338  /** @name PalletInflationCall (149) */1339  export interface PalletInflationCall extends Enum {1340    readonly isStartInflation: boolean;1341    readonly asStartInflation: {1342      readonly inflationStartRelayBlock: u32;1343    } & Struct;1344    readonly type: 'StartInflation';1345  }13461347  /** @name PalletUniqueCall (150) */1348  export interface PalletUniqueCall extends Enum {1349    readonly isCreateCollection: boolean;1350    readonly asCreateCollection: {1351      readonly collectionName: Vec<u16>;1352      readonly collectionDescription: Vec<u16>;1353      readonly tokenPrefix: Bytes;1354      readonly mode: UpDataStructsCollectionMode;1355    } & Struct;1356    readonly isCreateCollectionEx: boolean;1357    readonly asCreateCollectionEx: {1358      readonly data: UpDataStructsCreateCollectionData;1359    } & Struct;1360    readonly isDestroyCollection: boolean;1361    readonly asDestroyCollection: {1362      readonly collectionId: u32;1363    } & Struct;1364    readonly isAddToAllowList: boolean;1365    readonly asAddToAllowList: {1366      readonly collectionId: u32;1367      readonly address: PalletEvmAccountBasicCrossAccountIdRepr;1368    } & Struct;1369    readonly isRemoveFromAllowList: boolean;1370    readonly asRemoveFromAllowList: {1371      readonly collectionId: u32;1372      readonly address: PalletEvmAccountBasicCrossAccountIdRepr;1373    } & Struct;1374    readonly isSetPublicAccessMode: boolean;1375    readonly asSetPublicAccessMode: {1376      readonly collectionId: u32;1377      readonly mode: UpDataStructsAccessMode;1378    } & Struct;1379    readonly isSetMintPermission: boolean;1380    readonly asSetMintPermission: {1381      readonly collectionId: u32;1382      readonly mintPermission: bool;1383    } & Struct;1384    readonly isChangeCollectionOwner: boolean;1385    readonly asChangeCollectionOwner: {1386      readonly collectionId: u32;1387      readonly newOwner: AccountId32;1388    } & Struct;1389    readonly isAddCollectionAdmin: boolean;1390    readonly asAddCollectionAdmin: {1391      readonly collectionId: u32;1392      readonly newAdminId: PalletEvmAccountBasicCrossAccountIdRepr;1393    } & Struct;1394    readonly isRemoveCollectionAdmin: boolean;1395    readonly asRemoveCollectionAdmin: {1396      readonly collectionId: u32;1397      readonly accountId: PalletEvmAccountBasicCrossAccountIdRepr;1398    } & Struct;1399    readonly isSetCollectionSponsor: boolean;1400    readonly asSetCollectionSponsor: {1401      readonly collectionId: u32;1402      readonly newSponsor: AccountId32;1403    } & Struct;1404    readonly isConfirmSponsorship: boolean;1405    readonly asConfirmSponsorship: {1406      readonly collectionId: u32;1407    } & Struct;1408    readonly isRemoveCollectionSponsor: boolean;1409    readonly asRemoveCollectionSponsor: {1410      readonly collectionId: u32;1411    } & Struct;1412    readonly isCreateItem: boolean;1413    readonly asCreateItem: {1414      readonly collectionId: u32;1415      readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;1416      readonly data: UpDataStructsCreateItemData;1417    } & Struct;1418    readonly isCreateMultipleItems: boolean;1419    readonly asCreateMultipleItems: {1420      readonly collectionId: u32;1421      readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;1422      readonly itemsData: Vec<UpDataStructsCreateItemData>;1423    } & Struct;1424    readonly isSetCollectionProperties: boolean;1425    readonly asSetCollectionProperties: {1426      readonly collectionId: u32;1427      readonly properties: Vec<UpDataStructsProperty>;1428    } & Struct;1429    readonly isDeleteCollectionProperties: boolean;1430    readonly asDeleteCollectionProperties: {1431      readonly collectionId: u32;1432      readonly propertyKeys: Vec<Bytes>;1433    } & Struct;1434    readonly isSetTokenProperties: boolean;1435    readonly asSetTokenProperties: {1436      readonly collectionId: u32;1437      readonly tokenId: u32;1438      readonly properties: Vec<UpDataStructsProperty>;1439    } & Struct;1440    readonly isDeleteTokenProperties: boolean;1441    readonly asDeleteTokenProperties: {1442      readonly collectionId: u32;1443      readonly tokenId: u32;1444      readonly propertyKeys: Vec<Bytes>;1445    } & Struct;1446    readonly isSetPropertyPermissions: boolean;1447    readonly asSetPropertyPermissions: {1448      readonly collectionId: u32;1449      readonly propertyPermissions: Vec<UpDataStructsPropertyKeyPermission>;1450    } & Struct;1451    readonly isCreateMultipleItemsEx: boolean;1452    readonly asCreateMultipleItemsEx: {1453      readonly collectionId: u32;1454      readonly data: UpDataStructsCreateItemExData;1455    } & Struct;1456    readonly isSetTransfersEnabledFlag: boolean;1457    readonly asSetTransfersEnabledFlag: {1458      readonly collectionId: u32;1459      readonly value: bool;1460    } & Struct;1461    readonly isBurnItem: boolean;1462    readonly asBurnItem: {1463      readonly collectionId: u32;1464      readonly itemId: u32;1465      readonly value: u128;1466    } & Struct;1467    readonly isBurnFrom: boolean;1468    readonly asBurnFrom: {1469      readonly collectionId: u32;1470      readonly from: PalletEvmAccountBasicCrossAccountIdRepr;1471      readonly itemId: u32;1472      readonly value: u128;1473    } & Struct;1474    readonly isTransfer: boolean;1475    readonly asTransfer: {1476      readonly recipient: PalletEvmAccountBasicCrossAccountIdRepr;1477      readonly collectionId: u32;1478      readonly itemId: u32;1479      readonly value: u128;1480    } & Struct;1481    readonly isApprove: boolean;1482    readonly asApprove: {1483      readonly spender: PalletEvmAccountBasicCrossAccountIdRepr;1484      readonly collectionId: u32;1485      readonly itemId: u32;1486      readonly amount: u128;1487    } & Struct;1488    readonly isTransferFrom: boolean;1489    readonly asTransferFrom: {1490      readonly from: PalletEvmAccountBasicCrossAccountIdRepr;1491      readonly recipient: PalletEvmAccountBasicCrossAccountIdRepr;1492      readonly collectionId: u32;1493      readonly itemId: u32;1494      readonly value: u128;1495    } & Struct;1496    readonly isSetVariableMetaData: boolean;1497    readonly asSetVariableMetaData: {1498      readonly collectionId: u32;1499      readonly itemId: u32;1500      readonly data: Bytes;1501    } & Struct;1502    readonly isSetMetaUpdatePermissionFlag: boolean;1503    readonly asSetMetaUpdatePermissionFlag: {1504      readonly collectionId: u32;1505      readonly value: UpDataStructsMetaUpdatePermission;1506    } & Struct;1507    readonly isSetSchemaVersion: boolean;1508    readonly asSetSchemaVersion: {1509      readonly collectionId: u32;1510      readonly version: UpDataStructsSchemaVersion;1511    } & Struct;1512    readonly isSetOffchainSchema: boolean;1513    readonly asSetOffchainSchema: {1514      readonly collectionId: u32;1515      readonly schema: Bytes;1516    } & Struct;1517    readonly isSetConstOnChainSchema: boolean;1518    readonly asSetConstOnChainSchema: {1519      readonly collectionId: u32;1520      readonly schema: Bytes;1521    } & Struct;1522    readonly isSetCollectionLimits: boolean;1523    readonly asSetCollectionLimits: {1524      readonly collectionId: u32;1525      readonly newLimit: UpDataStructsCollectionLimits;1526    } & Struct;1527    readonly type: 'CreateCollection' | 'CreateCollectionEx' | 'DestroyCollection' | 'AddToAllowList' | 'RemoveFromAllowList' | 'SetPublicAccessMode' | 'SetMintPermission' | 'ChangeCollectionOwner' | 'AddCollectionAdmin' | 'RemoveCollectionAdmin' | 'SetCollectionSponsor' | 'ConfirmSponsorship' | 'RemoveCollectionSponsor' | 'CreateItem' | 'CreateMultipleItems' | 'SetCollectionProperties' | 'DeleteCollectionProperties' | 'SetTokenProperties' | 'DeleteTokenProperties' | 'SetPropertyPermissions' | 'CreateMultipleItemsEx' | 'SetTransfersEnabledFlag' | 'BurnItem' | 'BurnFrom' | 'Transfer' | 'Approve' | 'TransferFrom' | 'SetVariableMetaData' | 'SetMetaUpdatePermissionFlag' | 'SetSchemaVersion' | 'SetOffchainSchema' | 'SetConstOnChainSchema' | 'SetCollectionLimits';1528  }15291530  /** @name UpDataStructsCollectionMode (156) */1531  export interface UpDataStructsCollectionMode extends Enum {1532    readonly isNft: boolean;1533    readonly isFungible: boolean;1534    readonly asFungible: u8;1535    readonly isReFungible: boolean;1536    readonly type: 'Nft' | 'Fungible' | 'ReFungible';1537  }15381539  /** @name UpDataStructsCreateCollectionData (157) */1540  export interface UpDataStructsCreateCollectionData extends Struct {1541    readonly mode: UpDataStructsCollectionMode;1542    readonly access: Option<UpDataStructsAccessMode>;1543    readonly name: Vec<u16>;1544    readonly description: Vec<u16>;1545    readonly tokenPrefix: Bytes;1546    readonly offchainSchema: Bytes;1547    readonly schemaVersion: Option<UpDataStructsSchemaVersion>;1548    readonly pendingSponsor: Option<AccountId32>;1549    readonly limits: Option<UpDataStructsCollectionLimits>;1550    readonly constOnChainSchema: Bytes;1551    readonly metaUpdatePermission: Option<UpDataStructsMetaUpdatePermission>;1552    readonly tokenPropertyPermissions: Vec<UpDataStructsPropertyKeyPermission>;1553    readonly properties: Vec<UpDataStructsProperty>;1554  }15551556  /** @name UpDataStructsAccessMode (159) */1557  export interface UpDataStructsAccessMode extends Enum {1558    readonly isNormal: boolean;1559    readonly isAllowList: boolean;1560    readonly type: 'Normal' | 'AllowList';1561  }15621563  /** @name UpDataStructsSchemaVersion (162) */1564  export interface UpDataStructsSchemaVersion extends Enum {1565    readonly isImageURL: boolean;1566    readonly isUnique: boolean;1567    readonly type: 'ImageURL' | 'Unique';1568  }15691570  /** @name UpDataStructsCollectionLimits (165) */1571  export interface UpDataStructsCollectionLimits extends Struct {1572    readonly accountTokenOwnershipLimit: Option<u32>;1573    readonly sponsoredDataSize: Option<u32>;1574    readonly sponsoredDataRateLimit: Option<UpDataStructsSponsoringRateLimit>;1575    readonly tokenLimit: Option<u32>;1576    readonly sponsorTransferTimeout: Option<u32>;1577    readonly sponsorApproveTimeout: Option<u32>;1578    readonly ownerCanTransfer: Option<bool>;1579    readonly ownerCanDestroy: Option<bool>;1580    readonly transfersEnabled: Option<bool>;1581    readonly nestingRule: Option<UpDataStructsNestingRule>;1582  }15831584  /** @name UpDataStructsSponsoringRateLimit (167) */1585  export interface UpDataStructsSponsoringRateLimit extends Enum {1586    readonly isSponsoringDisabled: boolean;1587    readonly isBlocks: boolean;1588    readonly asBlocks: u32;1589    readonly type: 'SponsoringDisabled' | 'Blocks';1590  }15911592  /** @name UpDataStructsNestingRule (170) */1593  export interface UpDataStructsNestingRule extends Enum {1594    readonly isDisabled: boolean;1595    readonly isOwner: boolean;1596    readonly isOwnerRestricted: boolean;1597    readonly asOwnerRestricted: BTreeSet<u32>;1598    readonly type: 'Disabled' | 'Owner' | 'OwnerRestricted';1599  }16001601  /** @name UpDataStructsMetaUpdatePermission (177) */1602  export interface UpDataStructsMetaUpdatePermission extends Enum {1603    readonly isItemOwner: boolean;1604    readonly isAdmin: boolean;1605    readonly isNone: boolean;1606    readonly type: 'ItemOwner' | 'Admin' | 'None';1607  }16081609  /** @name UpDataStructsPropertyKeyPermission (179) */1610  export interface UpDataStructsPropertyKeyPermission extends Struct {1611    readonly key: Bytes;1612    readonly permission: UpDataStructsPropertyPermission;1613  }16141615  /** @name UpDataStructsPropertyPermission (181) */1616  export interface UpDataStructsPropertyPermission extends Struct {1617    readonly mutable: bool;1618    readonly collectionAdmin: bool;1619    readonly tokenOwner: bool;1620  }16211622  /** @name UpDataStructsProperty (184) */1623  export interface UpDataStructsProperty extends Struct {1624    readonly key: Bytes;1625    readonly value: Bytes;1626  }16271628  /** @name PalletEvmAccountBasicCrossAccountIdRepr (186) */1629  export interface PalletEvmAccountBasicCrossAccountIdRepr extends Enum {1630    readonly isSubstrate: boolean;1631    readonly asSubstrate: AccountId32;1632    readonly isEthereum: boolean;1633    readonly asEthereum: H160;1634    readonly type: 'Substrate' | 'Ethereum';1635  }16361637  /** @name UpDataStructsCreateItemData (188) */1638  export interface UpDataStructsCreateItemData extends Enum {1639    readonly isNft: boolean;1640    readonly asNft: UpDataStructsCreateNftData;1641    readonly isFungible: boolean;1642    readonly asFungible: UpDataStructsCreateFungibleData;1643    readonly isReFungible: boolean;1644    readonly asReFungible: UpDataStructsCreateReFungibleData;1645    readonly type: 'Nft' | 'Fungible' | 'ReFungible';1646  }16471648  /** @name UpDataStructsCreateNftData (189) */1649  export interface UpDataStructsCreateNftData extends Struct {1650    readonly constData: Bytes;1651    readonly variableData: Bytes;1652    readonly properties: Vec<UpDataStructsProperty>;1653  }16541655  /** @name UpDataStructsCreateFungibleData (191) */1656  export interface UpDataStructsCreateFungibleData extends Struct {1657    readonly value: u128;1658  }16591660  /** @name UpDataStructsCreateReFungibleData (192) */1661  export interface UpDataStructsCreateReFungibleData extends Struct {1662    readonly constData: Bytes;1663    readonly variableData: Bytes;1664    readonly pieces: u128;1665  }16661667  /** @name UpDataStructsCreateItemExData (196) */1668  export interface UpDataStructsCreateItemExData extends Enum {1669    readonly isNft: boolean;1670    readonly asNft: Vec<UpDataStructsCreateNftExData>;1671    readonly isFungible: boolean;1672    readonly asFungible: BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr, u128>;1673    readonly isRefungibleMultipleItems: boolean;1674    readonly asRefungibleMultipleItems: Vec<UpDataStructsCreateRefungibleExData>;1675    readonly isRefungibleMultipleOwners: boolean;1676    readonly asRefungibleMultipleOwners: UpDataStructsCreateRefungibleExData;1677    readonly type: 'Nft' | 'Fungible' | 'RefungibleMultipleItems' | 'RefungibleMultipleOwners';1678  }16791680  /** @name UpDataStructsCreateNftExData (198) */1681  export interface UpDataStructsCreateNftExData extends Struct {1682    readonly constData: Bytes;1683    readonly variableData: Bytes;1684    readonly properties: Vec<UpDataStructsProperty>;1685    readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;1686  }16871688  /** @name UpDataStructsCreateRefungibleExData (205) */1689  export interface UpDataStructsCreateRefungibleExData extends Struct {1690    readonly constData: Bytes;1691    readonly variableData: Bytes;1692    readonly users: BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr, u128>;1693  }16941695  /** @name PalletTemplateTransactionPaymentCall (207) */1696  export type PalletTemplateTransactionPaymentCall = Null;16971698  /** @name PalletStructureCall (208) */1699  export type PalletStructureCall = Null;17001701  /** @name PalletEvmCall (209) */1702  export interface PalletEvmCall extends Enum {1703    readonly isWithdraw: boolean;1704    readonly asWithdraw: {1705      readonly address: H160;1706      readonly value: u128;1707    } & Struct;1708    readonly isCall: boolean;1709    readonly asCall: {1710      readonly source: H160;1711      readonly target: H160;1712      readonly input: Bytes;1713      readonly value: U256;1714      readonly gasLimit: u64;1715      readonly maxFeePerGas: U256;1716      readonly maxPriorityFeePerGas: Option<U256>;1717      readonly nonce: Option<U256>;1718      readonly accessList: Vec<ITuple<[H160, Vec<H256>]>>;1719    } & Struct;1720    readonly isCreate: boolean;1721    readonly asCreate: {1722      readonly source: H160;1723      readonly init: Bytes;1724      readonly value: U256;1725      readonly gasLimit: u64;1726      readonly maxFeePerGas: U256;1727      readonly maxPriorityFeePerGas: Option<U256>;1728      readonly nonce: Option<U256>;1729      readonly accessList: Vec<ITuple<[H160, Vec<H256>]>>;1730    } & Struct;1731    readonly isCreate2: boolean;1732    readonly asCreate2: {1733      readonly source: H160;1734      readonly init: Bytes;1735      readonly salt: H256;1736      readonly value: U256;1737      readonly gasLimit: u64;1738      readonly maxFeePerGas: U256;1739      readonly maxPriorityFeePerGas: Option<U256>;1740      readonly nonce: Option<U256>;1741      readonly accessList: Vec<ITuple<[H160, Vec<H256>]>>;1742    } & Struct;1743    readonly type: 'Withdraw' | 'Call' | 'Create' | 'Create2';1744  }17451746  /** @name PalletEthereumCall (215) */1747  export interface PalletEthereumCall extends Enum {1748    readonly isTransact: boolean;1749    readonly asTransact: {1750      readonly transaction: EthereumTransactionTransactionV2;1751    } & Struct;1752    readonly type: 'Transact';1753  }17541755  /** @name EthereumTransactionTransactionV2 (216) */1756  export interface EthereumTransactionTransactionV2 extends Enum {1757    readonly isLegacy: boolean;1758    readonly asLegacy: EthereumTransactionLegacyTransaction;1759    readonly isEip2930: boolean;1760    readonly asEip2930: EthereumTransactionEip2930Transaction;1761    readonly isEip1559: boolean;1762    readonly asEip1559: EthereumTransactionEip1559Transaction;1763    readonly type: 'Legacy' | 'Eip2930' | 'Eip1559';1764  }17651766  /** @name EthereumTransactionLegacyTransaction (217) */1767  export interface EthereumTransactionLegacyTransaction extends Struct {1768    readonly nonce: U256;1769    readonly gasPrice: U256;1770    readonly gasLimit: U256;1771    readonly action: EthereumTransactionTransactionAction;1772    readonly value: U256;1773    readonly input: Bytes;1774    readonly signature: EthereumTransactionTransactionSignature;1775  }17761777  /** @name EthereumTransactionTransactionAction (218) */1778  export interface EthereumTransactionTransactionAction extends Enum {1779    readonly isCall: boolean;1780    readonly asCall: H160;1781    readonly isCreate: boolean;1782    readonly type: 'Call' | 'Create';1783  }17841785  /** @name EthereumTransactionTransactionSignature (219) */1786  export interface EthereumTransactionTransactionSignature extends Struct {1787    readonly v: u64;1788    readonly r: H256;1789    readonly s: H256;1790  }17911792  /** @name EthereumTransactionEip2930Transaction (221) */1793  export interface EthereumTransactionEip2930Transaction extends Struct {1794    readonly chainId: u64;1795    readonly nonce: U256;1796    readonly gasPrice: U256;1797    readonly gasLimit: U256;1798    readonly action: EthereumTransactionTransactionAction;1799    readonly value: U256;1800    readonly input: Bytes;1801    readonly accessList: Vec<EthereumTransactionAccessListItem>;1802    readonly oddYParity: bool;1803    readonly r: H256;1804    readonly s: H256;1805  }18061807  /** @name EthereumTransactionAccessListItem (223) */1808  export interface EthereumTransactionAccessListItem extends Struct {1809    readonly address: H160;1810    readonly storageKeys: Vec<H256>;1811  }18121813  /** @name EthereumTransactionEip1559Transaction (224) */1814  export interface EthereumTransactionEip1559Transaction extends Struct {1815    readonly chainId: u64;1816    readonly nonce: U256;1817    readonly maxPriorityFeePerGas: U256;1818    readonly maxFeePerGas: U256;1819    readonly gasLimit: U256;1820    readonly action: EthereumTransactionTransactionAction;1821    readonly value: U256;1822    readonly input: Bytes;1823    readonly accessList: Vec<EthereumTransactionAccessListItem>;1824    readonly oddYParity: bool;1825    readonly r: H256;1826    readonly s: H256;1827  }18281829  /** @name PalletEvmMigrationCall (225) */1830  export interface PalletEvmMigrationCall extends Enum {1831    readonly isBegin: boolean;1832    readonly asBegin: {1833      readonly address: H160;1834    } & Struct;1835    readonly isSetData: boolean;1836    readonly asSetData: {1837      readonly address: H160;1838      readonly data: Vec<ITuple<[H256, H256]>>;1839    } & Struct;1840    readonly isFinish: boolean;1841    readonly asFinish: {1842      readonly address: H160;1843      readonly code: Bytes;1844    } & Struct;1845    readonly type: 'Begin' | 'SetData' | 'Finish';1846  }18471848  /** @name PalletSudoEvent (228) */1849  export interface PalletSudoEvent extends Enum {1850    readonly isSudid: boolean;1851    readonly asSudid: {1852      readonly sudoResult: Result<Null, SpRuntimeDispatchError>;1853    } & Struct;1854    readonly isKeyChanged: boolean;1855    readonly asKeyChanged: {1856      readonly oldSudoer: Option<AccountId32>;1857    } & Struct;1858    readonly isSudoAsDone: boolean;1859    readonly asSudoAsDone: {1860      readonly sudoResult: Result<Null, SpRuntimeDispatchError>;1861    } & Struct;1862    readonly type: 'Sudid' | 'KeyChanged' | 'SudoAsDone';1863  }18641865  /** @name SpRuntimeDispatchError (230) */1866  export interface SpRuntimeDispatchError extends Enum {1867    readonly isOther: boolean;1868    readonly isCannotLookup: boolean;1869    readonly isBadOrigin: boolean;1870    readonly isModule: boolean;1871    readonly asModule: SpRuntimeModuleError;1872    readonly isConsumerRemaining: boolean;1873    readonly isNoProviders: boolean;1874    readonly isTooManyConsumers: boolean;1875    readonly isToken: boolean;1876    readonly asToken: SpRuntimeTokenError;1877    readonly isArithmetic: boolean;1878    readonly asArithmetic: SpRuntimeArithmeticError;1879    readonly isTransactional: boolean;1880    readonly asTransactional: SpRuntimeTransactionalError;1881    readonly type: 'Other' | 'CannotLookup' | 'BadOrigin' | 'Module' | 'ConsumerRemaining' | 'NoProviders' | 'TooManyConsumers' | 'Token' | 'Arithmetic' | 'Transactional';1882  }18831884  /** @name SpRuntimeModuleError (231) */1885  export interface SpRuntimeModuleError extends Struct {1886    readonly index: u8;1887    readonly error: U8aFixed;1888  }18891890  /** @name SpRuntimeTokenError (232) */1891  export interface SpRuntimeTokenError extends Enum {1892    readonly isNoFunds: boolean;1893    readonly isWouldDie: boolean;1894    readonly isBelowMinimum: boolean;1895    readonly isCannotCreate: boolean;1896    readonly isUnknownAsset: boolean;1897    readonly isFrozen: boolean;1898    readonly isUnsupported: boolean;1899    readonly type: 'NoFunds' | 'WouldDie' | 'BelowMinimum' | 'CannotCreate' | 'UnknownAsset' | 'Frozen' | 'Unsupported';1900  }19011902  /** @name SpRuntimeArithmeticError (233) */1903  export interface SpRuntimeArithmeticError extends Enum {1904    readonly isUnderflow: boolean;1905    readonly isOverflow: boolean;1906    readonly isDivisionByZero: boolean;1907    readonly type: 'Underflow' | 'Overflow' | 'DivisionByZero';1908  }19091910  /** @name SpRuntimeTransactionalError (234) */1911  export interface SpRuntimeTransactionalError extends Enum {1912    readonly isLimitReached: boolean;1913    readonly isNoLayer: boolean;1914    readonly type: 'LimitReached' | 'NoLayer';1915  }19161917  /** @name PalletSudoError (235) */1918  export interface PalletSudoError extends Enum {1919    readonly isRequireSudo: boolean;1920    readonly type: 'RequireSudo';1921  }19221923  /** @name FrameSystemAccountInfo (236) */1924  export interface FrameSystemAccountInfo extends Struct {1925    readonly nonce: u32;1926    readonly consumers: u32;1927    readonly providers: u32;1928    readonly sufficients: u32;1929    readonly data: PalletBalancesAccountData;1930  }19311932  /** @name FrameSupportWeightsPerDispatchClassU64 (237) */1933  export interface FrameSupportWeightsPerDispatchClassU64 extends Struct {1934    readonly normal: u64;1935    readonly operational: u64;1936    readonly mandatory: u64;1937  }19381939  /** @name SpRuntimeDigest (238) */1940  export interface SpRuntimeDigest extends Struct {1941    readonly logs: Vec<SpRuntimeDigestDigestItem>;1942  }19431944  /** @name SpRuntimeDigestDigestItem (240) */1945  export interface SpRuntimeDigestDigestItem extends Enum {1946    readonly isOther: boolean;1947    readonly asOther: Bytes;1948    readonly isConsensus: boolean;1949    readonly asConsensus: ITuple<[U8aFixed, Bytes]>;1950    readonly isSeal: boolean;1951    readonly asSeal: ITuple<[U8aFixed, Bytes]>;1952    readonly isPreRuntime: boolean;1953    readonly asPreRuntime: ITuple<[U8aFixed, Bytes]>;1954    readonly isRuntimeEnvironmentUpdated: boolean;1955    readonly type: 'Other' | 'Consensus' | 'Seal' | 'PreRuntime' | 'RuntimeEnvironmentUpdated';1956  }19571958  /** @name FrameSystemEventRecord (242) */1959  export interface FrameSystemEventRecord extends Struct {1960    readonly phase: FrameSystemPhase;1961    readonly event: Event;1962    readonly topics: Vec<H256>;1963  }19641965  /** @name FrameSystemEvent (244) */1966  export interface FrameSystemEvent extends Enum {1967    readonly isExtrinsicSuccess: boolean;1968    readonly asExtrinsicSuccess: {1969      readonly dispatchInfo: FrameSupportWeightsDispatchInfo;1970    } & Struct;1971    readonly isExtrinsicFailed: boolean;1972    readonly asExtrinsicFailed: {1973      readonly dispatchError: SpRuntimeDispatchError;1974      readonly dispatchInfo: FrameSupportWeightsDispatchInfo;1975    } & Struct;1976    readonly isCodeUpdated: boolean;1977    readonly isNewAccount: boolean;1978    readonly asNewAccount: {1979      readonly account: AccountId32;1980    } & Struct;1981    readonly isKilledAccount: boolean;1982    readonly asKilledAccount: {1983      readonly account: AccountId32;1984    } & Struct;1985    readonly isRemarked: boolean;1986    readonly asRemarked: {1987      readonly sender: AccountId32;1988      readonly hash_: H256;1989    } & Struct;1990    readonly type: 'ExtrinsicSuccess' | 'ExtrinsicFailed' | 'CodeUpdated' | 'NewAccount' | 'KilledAccount' | 'Remarked';1991  }19921993  /** @name FrameSupportWeightsDispatchInfo (245) */1994  export interface FrameSupportWeightsDispatchInfo extends Struct {1995    readonly weight: u64;1996    readonly class: FrameSupportWeightsDispatchClass;1997    readonly paysFee: FrameSupportWeightsPays;1998  }19992000  /** @name FrameSupportWeightsDispatchClass (246) */2001  export interface FrameSupportWeightsDispatchClass extends Enum {2002    readonly isNormal: boolean;2003    readonly isOperational: boolean;2004    readonly isMandatory: boolean;2005    readonly type: 'Normal' | 'Operational' | 'Mandatory';2006  }20072008  /** @name FrameSupportWeightsPays (247) */2009  export interface FrameSupportWeightsPays extends Enum {2010    readonly isYes: boolean;2011    readonly isNo: boolean;2012    readonly type: 'Yes' | 'No';2013  }20142015  /** @name OrmlVestingModuleEvent (248) */2016  export interface OrmlVestingModuleEvent extends Enum {2017    readonly isVestingScheduleAdded: boolean;2018    readonly asVestingScheduleAdded: {2019      readonly from: AccountId32;2020      readonly to: AccountId32;2021      readonly vestingSchedule: OrmlVestingVestingSchedule;2022    } & Struct;2023    readonly isClaimed: boolean;2024    readonly asClaimed: {2025      readonly who: AccountId32;2026      readonly amount: u128;2027    } & Struct;2028    readonly isVestingSchedulesUpdated: boolean;2029    readonly asVestingSchedulesUpdated: {2030      readonly who: AccountId32;2031    } & Struct;2032    readonly type: 'VestingScheduleAdded' | 'Claimed' | 'VestingSchedulesUpdated';2033  }20342035  /** @name CumulusPalletXcmpQueueEvent (249) */2036  export interface CumulusPalletXcmpQueueEvent extends Enum {2037    readonly isSuccess: boolean;2038    readonly asSuccess: Option<H256>;2039    readonly isFail: boolean;2040    readonly asFail: ITuple<[Option<H256>, XcmV2TraitsError]>;2041    readonly isBadVersion: boolean;2042    readonly asBadVersion: Option<H256>;2043    readonly isBadFormat: boolean;2044    readonly asBadFormat: Option<H256>;2045    readonly isUpwardMessageSent: boolean;2046    readonly asUpwardMessageSent: Option<H256>;2047    readonly isXcmpMessageSent: boolean;2048    readonly asXcmpMessageSent: Option<H256>;2049    readonly isOverweightEnqueued: boolean;2050    readonly asOverweightEnqueued: ITuple<[u32, u32, u64, u64]>;2051    readonly isOverweightServiced: boolean;2052    readonly asOverweightServiced: ITuple<[u64, u64]>;2053    readonly type: 'Success' | 'Fail' | 'BadVersion' | 'BadFormat' | 'UpwardMessageSent' | 'XcmpMessageSent' | 'OverweightEnqueued' | 'OverweightServiced';2054  }20552056  /** @name PalletXcmEvent (250) */2057  export interface PalletXcmEvent extends Enum {2058    readonly isAttempted: boolean;2059    readonly asAttempted: XcmV2TraitsOutcome;2060    readonly isSent: boolean;2061    readonly asSent: ITuple<[XcmV1MultiLocation, XcmV1MultiLocation, XcmV2Xcm]>;2062    readonly isUnexpectedResponse: boolean;2063    readonly asUnexpectedResponse: ITuple<[XcmV1MultiLocation, u64]>;2064    readonly isResponseReady: boolean;2065    readonly asResponseReady: ITuple<[u64, XcmV2Response]>;2066    readonly isNotified: boolean;2067    readonly asNotified: ITuple<[u64, u8, u8]>;2068    readonly isNotifyOverweight: boolean;2069    readonly asNotifyOverweight: ITuple<[u64, u8, u8, u64, u64]>;2070    readonly isNotifyDispatchError: boolean;2071    readonly asNotifyDispatchError: ITuple<[u64, u8, u8]>;2072    readonly isNotifyDecodeFailed: boolean;2073    readonly asNotifyDecodeFailed: ITuple<[u64, u8, u8]>;2074    readonly isInvalidResponder: boolean;2075    readonly asInvalidResponder: ITuple<[XcmV1MultiLocation, u64, Option<XcmV1MultiLocation>]>;2076    readonly isInvalidResponderVersion: boolean;2077    readonly asInvalidResponderVersion: ITuple<[XcmV1MultiLocation, u64]>;2078    readonly isResponseTaken: boolean;2079    readonly asResponseTaken: u64;2080    readonly isAssetsTrapped: boolean;2081    readonly asAssetsTrapped: ITuple<[H256, XcmV1MultiLocation, XcmVersionedMultiAssets]>;2082    readonly isVersionChangeNotified: boolean;2083    readonly asVersionChangeNotified: ITuple<[XcmV1MultiLocation, u32]>;2084    readonly isSupportedVersionChanged: boolean;2085    readonly asSupportedVersionChanged: ITuple<[XcmV1MultiLocation, u32]>;2086    readonly isNotifyTargetSendFail: boolean;2087    readonly asNotifyTargetSendFail: ITuple<[XcmV1MultiLocation, u64, XcmV2TraitsError]>;2088    readonly isNotifyTargetMigrationFail: boolean;2089    readonly asNotifyTargetMigrationFail: ITuple<[XcmVersionedMultiLocation, u64]>;2090    readonly type: 'Attempted' | 'Sent' | 'UnexpectedResponse' | 'ResponseReady' | 'Notified' | 'NotifyOverweight' | 'NotifyDispatchError' | 'NotifyDecodeFailed' | 'InvalidResponder' | 'InvalidResponderVersion' | 'ResponseTaken' | 'AssetsTrapped' | 'VersionChangeNotified' | 'SupportedVersionChanged' | 'NotifyTargetSendFail' | 'NotifyTargetMigrationFail';2091  }20922093  /** @name XcmV2TraitsOutcome (251) */2094  export interface XcmV2TraitsOutcome extends Enum {2095    readonly isComplete: boolean;2096    readonly asComplete: u64;2097    readonly isIncomplete: boolean;2098    readonly asIncomplete: ITuple<[u64, XcmV2TraitsError]>;2099    readonly isError: boolean;2100    readonly asError: XcmV2TraitsError;2101    readonly type: 'Complete' | 'Incomplete' | 'Error';2102  }21032104  /** @name CumulusPalletXcmEvent (253) */2105  export interface CumulusPalletXcmEvent extends Enum {2106    readonly isInvalidFormat: boolean;2107    readonly asInvalidFormat: U8aFixed;2108    readonly isUnsupportedVersion: boolean;2109    readonly asUnsupportedVersion: U8aFixed;2110    readonly isExecutedDownward: boolean;2111    readonly asExecutedDownward: ITuple<[U8aFixed, XcmV2TraitsOutcome]>;2112    readonly type: 'InvalidFormat' | 'UnsupportedVersion' | 'ExecutedDownward';2113  }21142115  /** @name CumulusPalletDmpQueueEvent (254) */2116  export interface CumulusPalletDmpQueueEvent extends Enum {2117    readonly isInvalidFormat: boolean;2118    readonly asInvalidFormat: U8aFixed;2119    readonly isUnsupportedVersion: boolean;2120    readonly asUnsupportedVersion: U8aFixed;2121    readonly isExecutedDownward: boolean;2122    readonly asExecutedDownward: ITuple<[U8aFixed, XcmV2TraitsOutcome]>;2123    readonly isWeightExhausted: boolean;2124    readonly asWeightExhausted: ITuple<[U8aFixed, u64, u64]>;2125    readonly isOverweightEnqueued: boolean;2126    readonly asOverweightEnqueued: ITuple<[U8aFixed, u64, u64]>;2127    readonly isOverweightServiced: boolean;2128    readonly asOverweightServiced: ITuple<[u64, u64]>;2129    readonly type: 'InvalidFormat' | 'UnsupportedVersion' | 'ExecutedDownward' | 'WeightExhausted' | 'OverweightEnqueued' | 'OverweightServiced';2130  }21312132  /** @name PalletUniqueRawEvent (255) */2133  export interface PalletUniqueRawEvent extends Enum {2134    readonly isCollectionSponsorRemoved: boolean;2135    readonly asCollectionSponsorRemoved: u32;2136    readonly isCollectionAdminAdded: boolean;2137    readonly asCollectionAdminAdded: ITuple<[u32, PalletEvmAccountBasicCrossAccountIdRepr]>;2138    readonly isCollectionOwnedChanged: boolean;2139    readonly asCollectionOwnedChanged: ITuple<[u32, AccountId32]>;2140    readonly isCollectionSponsorSet: boolean;2141    readonly asCollectionSponsorSet: ITuple<[u32, AccountId32]>;2142    readonly isConstOnChainSchemaSet: boolean;2143    readonly asConstOnChainSchemaSet: u32;2144    readonly isSponsorshipConfirmed: boolean;2145    readonly asSponsorshipConfirmed: ITuple<[u32, AccountId32]>;2146    readonly isCollectionAdminRemoved: boolean;2147    readonly asCollectionAdminRemoved: ITuple<[u32, PalletEvmAccountBasicCrossAccountIdRepr]>;2148    readonly isAllowListAddressRemoved: boolean;2149    readonly asAllowListAddressRemoved: ITuple<[u32, PalletEvmAccountBasicCrossAccountIdRepr]>;2150    readonly isAllowListAddressAdded: boolean;2151    readonly asAllowListAddressAdded: ITuple<[u32, PalletEvmAccountBasicCrossAccountIdRepr]>;2152    readonly isCollectionLimitSet: boolean;2153    readonly asCollectionLimitSet: u32;2154    readonly isMintPermissionSet: boolean;2155    readonly asMintPermissionSet: u32;2156    readonly isOffchainSchemaSet: boolean;2157    readonly asOffchainSchemaSet: u32;2158    readonly isPublicAccessModeSet: boolean;2159    readonly asPublicAccessModeSet: ITuple<[u32, UpDataStructsAccessMode]>;2160    readonly isSchemaVersionSet: boolean;2161    readonly asSchemaVersionSet: u32;2162    readonly type: 'CollectionSponsorRemoved' | 'CollectionAdminAdded' | 'CollectionOwnedChanged' | 'CollectionSponsorSet' | 'ConstOnChainSchemaSet' | 'SponsorshipConfirmed' | 'CollectionAdminRemoved' | 'AllowListAddressRemoved' | 'AllowListAddressAdded' | 'CollectionLimitSet' | 'MintPermissionSet' | 'OffchainSchemaSet' | 'PublicAccessModeSet' | 'SchemaVersionSet';2163  }21642165  /** @name PalletCommonEvent (256) */2166  export interface PalletCommonEvent extends Enum {2167    readonly isCollectionCreated: boolean;2168    readonly asCollectionCreated: ITuple<[u32, u8, AccountId32]>;2169    readonly isCollectionDestroyed: boolean;2170    readonly asCollectionDestroyed: u32;2171    readonly isItemCreated: boolean;2172    readonly asItemCreated: ITuple<[u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, u128]>;2173    readonly isItemDestroyed: boolean;2174    readonly asItemDestroyed: ITuple<[u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, u128]>;2175    readonly isTransfer: boolean;2176    readonly asTransfer: ITuple<[u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr, u128]>;2177    readonly isApproved: boolean;2178    readonly asApproved: ITuple<[u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr, u128]>;2179    readonly isCollectionPropertySet: boolean;2180    readonly asCollectionPropertySet: ITuple<[u32, Bytes]>;2181    readonly isCollectionPropertyDeleted: boolean;2182    readonly asCollectionPropertyDeleted: ITuple<[u32, Bytes]>;2183    readonly isTokenPropertySet: boolean;2184    readonly asTokenPropertySet: ITuple<[u32, u32, Bytes]>;2185    readonly isTokenPropertyDeleted: boolean;2186    readonly asTokenPropertyDeleted: ITuple<[u32, u32, Bytes]>;2187    readonly isPropertyPermissionSet: boolean;2188    readonly asPropertyPermissionSet: ITuple<[u32, Bytes]>;2189    readonly type: 'CollectionCreated' | 'CollectionDestroyed' | 'ItemCreated' | 'ItemDestroyed' | 'Transfer' | 'Approved' | 'CollectionPropertySet' | 'CollectionPropertyDeleted' | 'TokenPropertySet' | 'TokenPropertyDeleted' | 'PropertyPermissionSet';2190  }21912192  /** @name PalletStructureEvent (257) */2193  export interface PalletStructureEvent extends Enum {2194    readonly isExecuted: boolean;2195    readonly asExecuted: Result<Null, SpRuntimeDispatchError>;2196    readonly type: 'Executed';2197  }21982199  /** @name PalletEvmEvent (258) */2200  export interface PalletEvmEvent extends Enum {2201    readonly isLog: boolean;2202    readonly asLog: EthereumLog;2203    readonly isCreated: boolean;2204    readonly asCreated: H160;2205    readonly isCreatedFailed: boolean;2206    readonly asCreatedFailed: H160;2207    readonly isExecuted: boolean;2208    readonly asExecuted: H160;2209    readonly isExecutedFailed: boolean;2210    readonly asExecutedFailed: H160;2211    readonly isBalanceDeposit: boolean;2212    readonly asBalanceDeposit: ITuple<[AccountId32, H160, U256]>;2213    readonly isBalanceWithdraw: boolean;2214    readonly asBalanceWithdraw: ITuple<[AccountId32, H160, U256]>;2215    readonly type: 'Log' | 'Created' | 'CreatedFailed' | 'Executed' | 'ExecutedFailed' | 'BalanceDeposit' | 'BalanceWithdraw';2216  }22172218  /** @name EthereumLog (259) */2219  export interface EthereumLog extends Struct {2220    readonly address: H160;2221    readonly topics: Vec<H256>;2222    readonly data: Bytes;2223  }22242225  /** @name PalletEthereumEvent (260) */2226  export interface PalletEthereumEvent extends Enum {2227    readonly isExecuted: boolean;2228    readonly asExecuted: ITuple<[H160, H160, H256, EvmCoreErrorExitReason]>;2229    readonly type: 'Executed';2230  }22312232  /** @name EvmCoreErrorExitReason (261) */2233  export interface EvmCoreErrorExitReason extends Enum {2234    readonly isSucceed: boolean;2235    readonly asSucceed: EvmCoreErrorExitSucceed;2236    readonly isError: boolean;2237    readonly asError: EvmCoreErrorExitError;2238    readonly isRevert: boolean;2239    readonly asRevert: EvmCoreErrorExitRevert;2240    readonly isFatal: boolean;2241    readonly asFatal: EvmCoreErrorExitFatal;2242    readonly type: 'Succeed' | 'Error' | 'Revert' | 'Fatal';2243  }22442245  /** @name EvmCoreErrorExitSucceed (262) */2246  export interface EvmCoreErrorExitSucceed extends Enum {2247    readonly isStopped: boolean;2248    readonly isReturned: boolean;2249    readonly isSuicided: boolean;2250    readonly type: 'Stopped' | 'Returned' | 'Suicided';2251  }22522253  /** @name EvmCoreErrorExitError (263) */2254  export interface EvmCoreErrorExitError extends Enum {2255    readonly isStackUnderflow: boolean;2256    readonly isStackOverflow: boolean;2257    readonly isInvalidJump: boolean;2258    readonly isInvalidRange: boolean;2259    readonly isDesignatedInvalid: boolean;2260    readonly isCallTooDeep: boolean;2261    readonly isCreateCollision: boolean;2262    readonly isCreateContractLimit: boolean;2263    readonly isOutOfOffset: boolean;2264    readonly isOutOfGas: boolean;2265    readonly isOutOfFund: boolean;2266    readonly isPcUnderflow: boolean;2267    readonly isCreateEmpty: boolean;2268    readonly isOther: boolean;2269    readonly asOther: Text;2270    readonly isInvalidCode: boolean;2271    readonly type: 'StackUnderflow' | 'StackOverflow' | 'InvalidJump' | 'InvalidRange' | 'DesignatedInvalid' | 'CallTooDeep' | 'CreateCollision' | 'CreateContractLimit' | 'OutOfOffset' | 'OutOfGas' | 'OutOfFund' | 'PcUnderflow' | 'CreateEmpty' | 'Other' | 'InvalidCode';2272  }22732274  /** @name EvmCoreErrorExitRevert (266) */2275  export interface EvmCoreErrorExitRevert extends Enum {2276    readonly isReverted: boolean;2277    readonly type: 'Reverted';2278  }22792280  /** @name EvmCoreErrorExitFatal (267) */2281  export interface EvmCoreErrorExitFatal extends Enum {2282    readonly isNotSupported: boolean;2283    readonly isUnhandledInterrupt: boolean;2284    readonly isCallErrorAsFatal: boolean;2285    readonly asCallErrorAsFatal: EvmCoreErrorExitError;2286    readonly isOther: boolean;2287    readonly asOther: Text;2288    readonly type: 'NotSupported' | 'UnhandledInterrupt' | 'CallErrorAsFatal' | 'Other';2289  }22902291  /** @name FrameSystemPhase (268) */2292  export interface FrameSystemPhase extends Enum {2293    readonly isApplyExtrinsic: boolean;2294    readonly asApplyExtrinsic: u32;2295    readonly isFinalization: boolean;2296    readonly isInitialization: boolean;2297    readonly type: 'ApplyExtrinsic' | 'Finalization' | 'Initialization';2298  }22992300  /** @name FrameSystemLastRuntimeUpgradeInfo (270) */2301  export interface FrameSystemLastRuntimeUpgradeInfo extends Struct {2302    readonly specVersion: Compact<u32>;2303    readonly specName: Text;2304  }23052306  /** @name FrameSystemLimitsBlockWeights (271) */2307  export interface FrameSystemLimitsBlockWeights extends Struct {2308    readonly baseBlock: u64;2309    readonly maxBlock: u64;2310    readonly perClass: FrameSupportWeightsPerDispatchClassWeightsPerClass;2311  }23122313  /** @name FrameSupportWeightsPerDispatchClassWeightsPerClass (272) */2314  export interface FrameSupportWeightsPerDispatchClassWeightsPerClass extends Struct {2315    readonly normal: FrameSystemLimitsWeightsPerClass;2316    readonly operational: FrameSystemLimitsWeightsPerClass;2317    readonly mandatory: FrameSystemLimitsWeightsPerClass;2318  }23192320  /** @name FrameSystemLimitsWeightsPerClass (273) */2321  export interface FrameSystemLimitsWeightsPerClass extends Struct {2322    readonly baseExtrinsic: u64;2323    readonly maxExtrinsic: Option<u64>;2324    readonly maxTotal: Option<u64>;2325    readonly reserved: Option<u64>;2326  }23272328  /** @name FrameSystemLimitsBlockLength (275) */2329  export interface FrameSystemLimitsBlockLength extends Struct {2330    readonly max: FrameSupportWeightsPerDispatchClassU32;2331  }23322333  /** @name FrameSupportWeightsPerDispatchClassU32 (276) */2334  export interface FrameSupportWeightsPerDispatchClassU32 extends Struct {2335    readonly normal: u32;2336    readonly operational: u32;2337    readonly mandatory: u32;2338  }23392340  /** @name FrameSupportWeightsRuntimeDbWeight (277) */2341  export interface FrameSupportWeightsRuntimeDbWeight extends Struct {2342    readonly read: u64;2343    readonly write: u64;2344  }23452346  /** @name SpVersionRuntimeVersion (278) */2347  export interface SpVersionRuntimeVersion extends Struct {2348    readonly specName: Text;2349    readonly implName: Text;2350    readonly authoringVersion: u32;2351    readonly specVersion: u32;2352    readonly implVersion: u32;2353    readonly apis: Vec<ITuple<[U8aFixed, u32]>>;2354    readonly transactionVersion: u32;2355    readonly stateVersion: u8;2356  }23572358  /** @name FrameSystemError (282) */2359  export interface FrameSystemError extends Enum {2360    readonly isInvalidSpecName: boolean;2361    readonly isSpecVersionNeedsToIncrease: boolean;2362    readonly isFailedToExtractRuntimeVersion: boolean;2363    readonly isNonDefaultComposite: boolean;2364    readonly isNonZeroRefCount: boolean;2365    readonly isCallFiltered: boolean;2366    readonly type: 'InvalidSpecName' | 'SpecVersionNeedsToIncrease' | 'FailedToExtractRuntimeVersion' | 'NonDefaultComposite' | 'NonZeroRefCount' | 'CallFiltered';2367  }23682369  /** @name OrmlVestingModuleError (284) */2370  export interface OrmlVestingModuleError extends Enum {2371    readonly isZeroVestingPeriod: boolean;2372    readonly isZeroVestingPeriodCount: boolean;2373    readonly isInsufficientBalanceToLock: boolean;2374    readonly isTooManyVestingSchedules: boolean;2375    readonly isAmountLow: boolean;2376    readonly isMaxVestingSchedulesExceeded: boolean;2377    readonly type: 'ZeroVestingPeriod' | 'ZeroVestingPeriodCount' | 'InsufficientBalanceToLock' | 'TooManyVestingSchedules' | 'AmountLow' | 'MaxVestingSchedulesExceeded';2378  }23792380  /** @name CumulusPalletXcmpQueueInboundChannelDetails (286) */2381  export interface CumulusPalletXcmpQueueInboundChannelDetails extends Struct {2382    readonly sender: u32;2383    readonly state: CumulusPalletXcmpQueueInboundState;2384    readonly messageMetadata: Vec<ITuple<[u32, PolkadotParachainPrimitivesXcmpMessageFormat]>>;2385  }23862387  /** @name CumulusPalletXcmpQueueInboundState (287) */2388  export interface CumulusPalletXcmpQueueInboundState extends Enum {2389    readonly isOk: boolean;2390    readonly isSuspended: boolean;2391    readonly type: 'Ok' | 'Suspended';2392  }23932394  /** @name PolkadotParachainPrimitivesXcmpMessageFormat (290) */2395  export interface PolkadotParachainPrimitivesXcmpMessageFormat extends Enum {2396    readonly isConcatenatedVersionedXcm: boolean;2397    readonly isConcatenatedEncodedBlob: boolean;2398    readonly isSignals: boolean;2399    readonly type: 'ConcatenatedVersionedXcm' | 'ConcatenatedEncodedBlob' | 'Signals';2400  }24012402  /** @name CumulusPalletXcmpQueueOutboundChannelDetails (293) */2403  export interface CumulusPalletXcmpQueueOutboundChannelDetails extends Struct {2404    readonly recipient: u32;2405    readonly state: CumulusPalletXcmpQueueOutboundState;2406    readonly signalsExist: bool;2407    readonly firstIndex: u16;2408    readonly lastIndex: u16;2409  }24102411  /** @name CumulusPalletXcmpQueueOutboundState (294) */2412  export interface CumulusPalletXcmpQueueOutboundState extends Enum {2413    readonly isOk: boolean;2414    readonly isSuspended: boolean;2415    readonly type: 'Ok' | 'Suspended';2416  }24172418  /** @name CumulusPalletXcmpQueueQueueConfigData (296) */2419  export interface CumulusPalletXcmpQueueQueueConfigData extends Struct {2420    readonly suspendThreshold: u32;2421    readonly dropThreshold: u32;2422    readonly resumeThreshold: u32;2423    readonly thresholdWeight: u64;2424    readonly weightRestrictDecay: u64;2425    readonly xcmpMaxIndividualWeight: u64;2426  }24272428  /** @name CumulusPalletXcmpQueueError (298) */2429  export interface CumulusPalletXcmpQueueError extends Enum {2430    readonly isFailedToSend: boolean;2431    readonly isBadXcmOrigin: boolean;2432    readonly isBadXcm: boolean;2433    readonly isBadOverweightIndex: boolean;2434    readonly isWeightOverLimit: boolean;2435    readonly type: 'FailedToSend' | 'BadXcmOrigin' | 'BadXcm' | 'BadOverweightIndex' | 'WeightOverLimit';2436  }24372438  /** @name PalletXcmError (299) */2439  export interface PalletXcmError extends Enum {2440    readonly isUnreachable: boolean;2441    readonly isSendFailure: boolean;2442    readonly isFiltered: boolean;2443    readonly isUnweighableMessage: boolean;2444    readonly isDestinationNotInvertible: boolean;2445    readonly isEmpty: boolean;2446    readonly isCannotReanchor: boolean;2447    readonly isTooManyAssets: boolean;2448    readonly isInvalidOrigin: boolean;2449    readonly isBadVersion: boolean;2450    readonly isBadLocation: boolean;2451    readonly isNoSubscription: boolean;2452    readonly isAlreadySubscribed: boolean;2453    readonly type: 'Unreachable' | 'SendFailure' | 'Filtered' | 'UnweighableMessage' | 'DestinationNotInvertible' | 'Empty' | 'CannotReanchor' | 'TooManyAssets' | 'InvalidOrigin' | 'BadVersion' | 'BadLocation' | 'NoSubscription' | 'AlreadySubscribed';2454  }24552456  /** @name CumulusPalletXcmError (300) */2457  export type CumulusPalletXcmError = Null;24582459  /** @name CumulusPalletDmpQueueConfigData (301) */2460  export interface CumulusPalletDmpQueueConfigData extends Struct {2461    readonly maxIndividual: u64;2462  }24632464  /** @name CumulusPalletDmpQueuePageIndexData (302) */2465  export interface CumulusPalletDmpQueuePageIndexData extends Struct {2466    readonly beginUsed: u32;2467    readonly endUsed: u32;2468    readonly overweightCount: u64;2469  }24702471  /** @name CumulusPalletDmpQueueError (305) */2472  export interface CumulusPalletDmpQueueError extends Enum {2473    readonly isUnknown: boolean;2474    readonly isOverLimit: boolean;2475    readonly type: 'Unknown' | 'OverLimit';2476  }24772478  /** @name PalletUniqueError (309) */2479  export interface PalletUniqueError extends Enum {2480    readonly isCollectionDecimalPointLimitExceeded: boolean;2481    readonly isConfirmUnsetSponsorFail: boolean;2482    readonly isEmptyArgument: boolean;2483    readonly type: 'CollectionDecimalPointLimitExceeded' | 'ConfirmUnsetSponsorFail' | 'EmptyArgument';2484  }24852486  /** @name UpDataStructsCollection (310) */2487  export interface UpDataStructsCollection extends Struct {2488    readonly owner: AccountId32;2489    readonly mode: UpDataStructsCollectionMode;2490    readonly access: UpDataStructsAccessMode;2491    readonly name: Vec<u16>;2492    readonly description: Vec<u16>;2493    readonly tokenPrefix: Bytes;2494    readonly mintMode: bool;2495    readonly schemaVersion: UpDataStructsSchemaVersion;2496    readonly sponsorship: UpDataStructsSponsorshipState;2497    readonly limits: UpDataStructsCollectionLimits;2498    readonly metaUpdatePermission: UpDataStructsMetaUpdatePermission;2499  }25002501  /** @name UpDataStructsSponsorshipState (311) */2502  export interface UpDataStructsSponsorshipState extends Enum {2503    readonly isDisabled: boolean;2504    readonly isUnconfirmed: boolean;2505    readonly asUnconfirmed: AccountId32;2506    readonly isConfirmed: boolean;2507    readonly asConfirmed: AccountId32;2508    readonly type: 'Disabled' | 'Unconfirmed' | 'Confirmed';2509  }25102511  /** @name UpDataStructsProperties (312) */2512  export interface UpDataStructsProperties extends Struct {2513    readonly map: UpDataStructsPropertiesMapBoundedVec;2514    readonly consumedSpace: u32;2515    readonly spaceLimit: u32;2516  }25172518  /** @name UpDataStructsPropertiesMapBoundedVec (313) */2519  export interface UpDataStructsPropertiesMapBoundedVec extends BTreeMap<Bytes, Bytes> {}25202521  /** @name UpDataStructsPropertiesMapPropertyPermission (318) */2522  export interface UpDataStructsPropertiesMapPropertyPermission extends BTreeMap<Bytes, UpDataStructsPropertyPermission> {}25232524  /** @name UpDataStructsCollectionField (324) */2525  export interface UpDataStructsCollectionField extends Enum {2526    readonly isConstOnChainSchema: boolean;2527    readonly isOffchainSchema: boolean;2528    readonly type: 'ConstOnChainSchema' | 'OffchainSchema';2529  }25302531  /** @name UpDataStructsCollectionStats (327) */2532  export interface UpDataStructsCollectionStats extends Struct {2533    readonly created: u32;2534    readonly destroyed: u32;2535    readonly alive: u32;2536  }25372538  /** @name PhantomTypeUpDataStructsTokenData (328) */2539  export interface PhantomTypeUpDataStructsTokenData extends Vec<UpDataStructsTokenData> {}25402541  /** @name UpDataStructsTokenData (329) */2542  export interface UpDataStructsTokenData extends Struct {2543    readonly constData: Bytes;2544    readonly properties: Vec<UpDataStructsProperty>;2545    readonly owner: Option<PalletEvmAccountBasicCrossAccountIdRepr>;2546  }25472548  /** @name PhantomTypeUpDataStructsRpcCollection (332) */2549  export interface PhantomTypeUpDataStructsRpcCollection extends Vec<UpDataStructsRpcCollection> {}25502551  /** @name UpDataStructsRpcCollection (333) */2552  export interface UpDataStructsRpcCollection extends Struct {2553    readonly owner: AccountId32;2554    readonly mode: UpDataStructsCollectionMode;2555    readonly access: UpDataStructsAccessMode;2556    readonly name: Vec<u16>;2557    readonly description: Vec<u16>;2558    readonly tokenPrefix: Bytes;2559    readonly mintMode: bool;2560    readonly offchainSchema: Bytes;2561    readonly schemaVersion: UpDataStructsSchemaVersion;2562    readonly sponsorship: UpDataStructsSponsorshipState;2563    readonly limits: UpDataStructsCollectionLimits;2564    readonly constOnChainSchema: Bytes;2565    readonly metaUpdatePermission: UpDataStructsMetaUpdatePermission;2566    readonly tokenPropertyPermissions: Vec<UpDataStructsPropertyKeyPermission>;2567    readonly properties: Vec<UpDataStructsProperty>;2568  }25692570  /** @name PhantomTypeUpDataStructsCollectionInfo (335) */2571  export interface PhantomTypeUpDataStructsCollectionInfo extends Vec<RmrkTypesCollectionInfo> {}25722573  /** @name RmrkTypesCollectionInfo (336) */2574  export interface RmrkTypesCollectionInfo extends Struct {2575    readonly issuer: AccountId32;2576    readonly metadata: Bytes;2577    readonly max: Option<u32>;2578    readonly symbol: Bytes;2579    readonly nftsCount: u32;2580  }25812582  /** @name PhantomTypeUpDataStructsNftInfo (340) */2583  export interface PhantomTypeUpDataStructsNftInfo extends Vec<RmrkTypesNftInfo> {}25842585  /** @name RmrkTypesNftInfo (341) */2586  export interface RmrkTypesNftInfo extends Struct {2587    readonly owner: RmrkTypesAccountIdOrCollectionNftTuple;2588    readonly royalty: Option<RmrkTypesRoyaltyInfo>;2589    readonly metadata: Bytes;2590    readonly equipped: bool;2591    readonly pending: bool;2592  }25932594  /** @name RmrkTypesAccountIdOrCollectionNftTuple (342) */2595  export interface RmrkTypesAccountIdOrCollectionNftTuple extends Enum {2596    readonly isAccountId: boolean;2597    readonly asAccountId: AccountId32;2598    readonly isCollectionAndNftTuple: boolean;2599    readonly asCollectionAndNftTuple: ITuple<[u32, u32]>;2600    readonly type: 'AccountId' | 'CollectionAndNftTuple';2601  }26022603  /** @name RmrkTypesRoyaltyInfo (344) */2604  export interface RmrkTypesRoyaltyInfo extends Struct {2605    readonly recipient: AccountId32;2606    readonly amount: Permill;2607  }26082609  /** @name PhantomTypeUpDataStructsResourceInfo (346) */2610  export interface PhantomTypeUpDataStructsResourceInfo extends Vec<RmrkTypesResourceInfo> {}26112612  /** @name RmrkTypesResourceInfo (347) */2613  export interface RmrkTypesResourceInfo extends Struct {2614    readonly id: Bytes;2615    readonly pending: bool;2616    readonly pendingRemoval: bool;2617    readonly parts: Option<Vec<u32>>;2618    readonly base: Option<u32>;2619    readonly src: Option<Bytes>;2620    readonly metadata: Option<Bytes>;2621    readonly slot: Option<u32>;2622    readonly license: Option<Bytes>;2623    readonly thumb: Option<Bytes>;2624  }26252626  /** @name PhantomTypeUpDataStructsPropertyInfo (353) */2627  export interface PhantomTypeUpDataStructsPropertyInfo extends Vec<RmrkTypesPropertyInfo> {}26282629  /** @name RmrkTypesPropertyInfo (354) */2630  export interface RmrkTypesPropertyInfo extends Struct {2631    readonly key: Bytes;2632    readonly value: Bytes;2633  }26342635  /** @name PhantomTypeUpDataStructsBaseInfo (358) */2636  export interface PhantomTypeUpDataStructsBaseInfo extends Vec<RmrkTypesBaseInfo> {}26372638  /** @name RmrkTypesBaseInfo (359) */2639  export interface RmrkTypesBaseInfo extends Struct {2640    readonly issuer: AccountId32;2641    readonly baseType: Bytes;2642    readonly symbol: Bytes;2643  }26442645  /** @name PhantomTypeUpDataStructsPartType (361) */2646  export interface PhantomTypeUpDataStructsPartType extends Vec<RmrkTypesPartType> {}26472648  /** @name RmrkTypesPartType (362) */2649  export interface RmrkTypesPartType extends Enum {2650    readonly isFixedPart: boolean;2651    readonly asFixedPart: RmrkTypesFixedPart;2652    readonly isSlotPart: boolean;2653    readonly asSlotPart: RmrkTypesSlotPart;2654    readonly type: 'FixedPart' | 'SlotPart';2655  }26562657  /** @name RmrkTypesFixedPart (364) */2658  export interface RmrkTypesFixedPart extends Struct {2659    readonly id: u32;2660    readonly z: u32;2661    readonly src: Bytes;2662  }26632664  /** @name RmrkTypesSlotPart (365) */2665  export interface RmrkTypesSlotPart extends Struct {2666    readonly id: u32;2667    readonly equippable: RmrkTypesEquippableList;2668    readonly src: Bytes;2669    readonly z: u32;2670  }26712672  /** @name RmrkTypesEquippableList (366) */2673  export interface RmrkTypesEquippableList extends Enum {2674    readonly isAll: boolean;2675    readonly isEmpty: boolean;2676    readonly isCustom: boolean;2677    readonly asCustom: Vec<u32>;2678    readonly type: 'All' | 'Empty' | 'Custom';2679  }26802681  /** @name PhantomTypeUpDataStructsTheme (368) */2682  export interface PhantomTypeUpDataStructsTheme extends Vec<RmrkTypesTheme> {}26832684  /** @name RmrkTypesTheme (369) */2685  export interface RmrkTypesTheme extends Struct {2686    readonly name: Bytes;2687    readonly properties: Vec<RmrkTypesThemeProperty>;2688    readonly inherit: bool;2689  }26902691  /** @name RmrkTypesThemeProperty (371) */2692  export interface RmrkTypesThemeProperty extends Struct {2693    readonly key: Bytes;2694    readonly value: Bytes;2695  }26962697  /** @name PhantomTypeUpDataStructsNftChild (373) */2698  export interface PhantomTypeUpDataStructsNftChild extends Vec<RmrkTypesNftChild> {}26992700  /** @name RmrkTypesNftChild (374) */2701  export interface RmrkTypesNftChild extends Struct {2702    readonly collectionId: u32;2703    readonly nftId: u32;2704  }27052706  /** @name PalletCommonError (376) */2707  export interface PalletCommonError extends Enum {2708    readonly isCollectionNotFound: boolean;2709    readonly isMustBeTokenOwner: boolean;2710    readonly isNoPermission: boolean;2711    readonly isPublicMintingNotAllowed: boolean;2712    readonly isAddressNotInAllowlist: boolean;2713    readonly isCollectionNameLimitExceeded: boolean;2714    readonly isCollectionDescriptionLimitExceeded: boolean;2715    readonly isCollectionTokenPrefixLimitExceeded: boolean;2716    readonly isTotalCollectionsLimitExceeded: boolean;2717    readonly isTokenVariableDataLimitExceeded: boolean;2718    readonly isCollectionAdminCountExceeded: boolean;2719    readonly isCollectionLimitBoundsExceeded: boolean;2720    readonly isOwnerPermissionsCantBeReverted: boolean;2721    readonly isTransferNotAllowed: boolean;2722    readonly isAccountTokenLimitExceeded: boolean;2723    readonly isCollectionTokenLimitExceeded: boolean;2724    readonly isMetadataFlagFrozen: boolean;2725    readonly isTokenNotFound: boolean;2726    readonly isTokenValueTooLow: boolean;2727    readonly isApprovedValueTooLow: boolean;2728    readonly isCantApproveMoreThanOwned: boolean;2729    readonly isAddressIsZero: boolean;2730    readonly isUnsupportedOperation: boolean;2731    readonly isNotSufficientFounds: boolean;2732    readonly isNestingIsDisabled: boolean;2733    readonly isOnlyOwnerAllowedToNest: boolean;2734    readonly isSourceCollectionIsNotAllowedToNest: boolean;2735    readonly isCollectionFieldSizeExceeded: boolean;2736    readonly isNoSpaceForProperty: boolean;2737    readonly isPropertyLimitReached: boolean;2738    readonly isUnableToReadUnboundedKeys: boolean;2739    readonly isInvalidCharacterInPropertyKey: boolean;2740    readonly isEmptyPropertyKey: boolean;2741    readonly type: 'CollectionNotFound' | 'MustBeTokenOwner' | 'NoPermission' | 'PublicMintingNotAllowed' | 'AddressNotInAllowlist' | 'CollectionNameLimitExceeded' | 'CollectionDescriptionLimitExceeded' | 'CollectionTokenPrefixLimitExceeded' | 'TotalCollectionsLimitExceeded' | 'TokenVariableDataLimitExceeded' | 'CollectionAdminCountExceeded' | 'CollectionLimitBoundsExceeded' | 'OwnerPermissionsCantBeReverted' | 'TransferNotAllowed' | 'AccountTokenLimitExceeded' | 'CollectionTokenLimitExceeded' | 'MetadataFlagFrozen' | 'TokenNotFound' | 'TokenValueTooLow' | 'ApprovedValueTooLow' | 'CantApproveMoreThanOwned' | 'AddressIsZero' | 'UnsupportedOperation' | 'NotSufficientFounds' | 'NestingIsDisabled' | 'OnlyOwnerAllowedToNest' | 'SourceCollectionIsNotAllowedToNest' | 'CollectionFieldSizeExceeded' | 'NoSpaceForProperty' | 'PropertyLimitReached' | 'UnableToReadUnboundedKeys' | 'InvalidCharacterInPropertyKey' | 'EmptyPropertyKey';2742  }27432744  /** @name PalletFungibleError (378) */2745  export interface PalletFungibleError extends Enum {2746    readonly isNotFungibleDataUsedToMintFungibleCollectionToken: boolean;2747    readonly isFungibleItemsHaveNoId: boolean;2748    readonly isFungibleItemsDontHaveData: boolean;2749    readonly isFungibleDisallowsNesting: boolean;2750    readonly isSettingPropertiesNotAllowed: boolean;2751    readonly type: 'NotFungibleDataUsedToMintFungibleCollectionToken' | 'FungibleItemsHaveNoId' | 'FungibleItemsDontHaveData' | 'FungibleDisallowsNesting' | 'SettingPropertiesNotAllowed';2752  }27532754  /** @name PalletRefungibleItemData (379) */2755  export interface PalletRefungibleItemData extends Struct {2756    readonly constData: Bytes;2757    readonly variableData: Bytes;2758  }27592760  /** @name PalletRefungibleError (383) */2761  export interface PalletRefungibleError extends Enum {2762    readonly isNotRefungibleDataUsedToMintFungibleCollectionToken: boolean;2763    readonly isWrongRefungiblePieces: boolean;2764    readonly isRefungibleDisallowsNesting: boolean;2765    readonly isSettingPropertiesNotAllowed: boolean;2766    readonly type: 'NotRefungibleDataUsedToMintFungibleCollectionToken' | 'WrongRefungiblePieces' | 'RefungibleDisallowsNesting' | 'SettingPropertiesNotAllowed';2767  }27682769  /** @name PalletNonfungibleItemData (384) */2770  export interface PalletNonfungibleItemData extends Struct {2771    readonly constData: Bytes;2772    readonly variableData: Bytes;2773    readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;2774  }27752776  /** @name PalletNonfungibleError (385) */2777  export interface PalletNonfungibleError extends Enum {2778    readonly isNotNonfungibleDataUsedToMintFungibleCollectionToken: boolean;2779    readonly isNonfungibleItemsHaveNoAmount: boolean;2780    readonly type: 'NotNonfungibleDataUsedToMintFungibleCollectionToken' | 'NonfungibleItemsHaveNoAmount';2781  }27822783  /** @name PalletStructureError (386) */2784  export interface PalletStructureError extends Enum {2785    readonly isOuroborosDetected: boolean;2786    readonly isDepthLimit: boolean;2787    readonly isTokenNotFound: boolean;2788    readonly type: 'OuroborosDetected' | 'DepthLimit' | 'TokenNotFound';2789  }27902791  /** @name PalletEvmError (389) */2792  export interface PalletEvmError extends Enum {2793    readonly isBalanceLow: boolean;2794    readonly isFeeOverflow: boolean;2795    readonly isPaymentOverflow: boolean;2796    readonly isWithdrawFailed: boolean;2797    readonly isGasPriceTooLow: boolean;2798    readonly isInvalidNonce: boolean;2799    readonly type: 'BalanceLow' | 'FeeOverflow' | 'PaymentOverflow' | 'WithdrawFailed' | 'GasPriceTooLow' | 'InvalidNonce';2800  }28012802  /** @name FpRpcTransactionStatus (392) */2803  export interface FpRpcTransactionStatus extends Struct {2804    readonly transactionHash: H256;2805    readonly transactionIndex: u32;2806    readonly from: H160;2807    readonly to: Option<H160>;2808    readonly contractAddress: Option<H160>;2809    readonly logs: Vec<EthereumLog>;2810    readonly logsBloom: EthbloomBloom;2811  }28122813  /** @name EthbloomBloom (394) */2814  export interface EthbloomBloom extends U8aFixed {}28152816  /** @name EthereumReceiptReceiptV3 (396) */2817  export interface EthereumReceiptReceiptV3 extends Enum {2818    readonly isLegacy: boolean;2819    readonly asLegacy: EthereumReceiptEip658ReceiptData;2820    readonly isEip2930: boolean;2821    readonly asEip2930: EthereumReceiptEip658ReceiptData;2822    readonly isEip1559: boolean;2823    readonly asEip1559: EthereumReceiptEip658ReceiptData;2824    readonly type: 'Legacy' | 'Eip2930' | 'Eip1559';2825  }28262827  /** @name EthereumReceiptEip658ReceiptData (397) */2828  export interface EthereumReceiptEip658ReceiptData extends Struct {2829    readonly statusCode: u8;2830    readonly usedGas: U256;2831    readonly logsBloom: EthbloomBloom;2832    readonly logs: Vec<EthereumLog>;2833  }28342835  /** @name EthereumBlock (398) */2836  export interface EthereumBlock extends Struct {2837    readonly header: EthereumHeader;2838    readonly transactions: Vec<EthereumTransactionTransactionV2>;2839    readonly ommers: Vec<EthereumHeader>;2840  }28412842  /** @name EthereumHeader (399) */2843  export interface EthereumHeader extends Struct {2844    readonly parentHash: H256;2845    readonly ommersHash: H256;2846    readonly beneficiary: H160;2847    readonly stateRoot: H256;2848    readonly transactionsRoot: H256;2849    readonly receiptsRoot: H256;2850    readonly logsBloom: EthbloomBloom;2851    readonly difficulty: U256;2852    readonly number: U256;2853    readonly gasLimit: U256;2854    readonly gasUsed: U256;2855    readonly timestamp: u64;2856    readonly extraData: Bytes;2857    readonly mixHash: H256;2858    readonly nonce: EthereumTypesHashH64;2859  }28602861  /** @name EthereumTypesHashH64 (400) */2862  export interface EthereumTypesHashH64 extends U8aFixed {}28632864  /** @name PalletEthereumError (405) */2865  export interface PalletEthereumError extends Enum {2866    readonly isInvalidSignature: boolean;2867    readonly isPreLogExists: boolean;2868    readonly type: 'InvalidSignature' | 'PreLogExists';2869  }28702871  /** @name PalletEvmCoderSubstrateError (406) */2872  export interface PalletEvmCoderSubstrateError extends Enum {2873    readonly isOutOfGas: boolean;2874    readonly isOutOfFund: boolean;2875    readonly type: 'OutOfGas' | 'OutOfFund';2876  }28772878  /** @name PalletEvmContractHelpersSponsoringModeT (407) */2879  export interface PalletEvmContractHelpersSponsoringModeT extends Enum {2880    readonly isDisabled: boolean;2881    readonly isAllowlisted: boolean;2882    readonly isGenerous: boolean;2883    readonly type: 'Disabled' | 'Allowlisted' | 'Generous';2884  }28852886  /** @name PalletEvmContractHelpersError (409) */2887  export interface PalletEvmContractHelpersError extends Enum {2888    readonly isNoPermission: boolean;2889    readonly type: 'NoPermission';2890  }28912892  /** @name PalletEvmMigrationError (410) */2893  export interface PalletEvmMigrationError extends Enum {2894    readonly isAccountNotEmpty: boolean;2895    readonly isAccountIsNotMigrating: boolean;2896    readonly type: 'AccountNotEmpty' | 'AccountIsNotMigrating';2897  }28982899  /** @name SpRuntimeMultiSignature (412) */2900  export interface SpRuntimeMultiSignature extends Enum {2901    readonly isEd25519: boolean;2902    readonly asEd25519: SpCoreEd25519Signature;2903    readonly isSr25519: boolean;2904    readonly asSr25519: SpCoreSr25519Signature;2905    readonly isEcdsa: boolean;2906    readonly asEcdsa: SpCoreEcdsaSignature;2907    readonly type: 'Ed25519' | 'Sr25519' | 'Ecdsa';2908  }29092910  /** @name SpCoreEd25519Signature (413) */2911  export interface SpCoreEd25519Signature extends U8aFixed {}29122913  /** @name SpCoreSr25519Signature (415) */2914  export interface SpCoreSr25519Signature extends U8aFixed {}29152916  /** @name SpCoreEcdsaSignature (416) */2917  export interface SpCoreEcdsaSignature extends U8aFixed {}29182919  /** @name FrameSystemExtensionsCheckSpecVersion (419) */2920  export type FrameSystemExtensionsCheckSpecVersion = Null;29212922  /** @name FrameSystemExtensionsCheckGenesis (420) */2923  export type FrameSystemExtensionsCheckGenesis = Null;29242925  /** @name FrameSystemExtensionsCheckNonce (423) */2926  export interface FrameSystemExtensionsCheckNonce extends Compact<u32> {}29272928  /** @name FrameSystemExtensionsCheckWeight (424) */2929  export type FrameSystemExtensionsCheckWeight = Null;29302931  /** @name PalletTemplateTransactionPaymentChargeTransactionPayment (425) */2932  export interface PalletTemplateTransactionPaymentChargeTransactionPayment extends Compact<u128> {}29332934  /** @name OpalRuntimeRuntime (426) */2935  export type OpalRuntimeRuntime = Null;29362937  /** @name PalletEthereumFakeTransactionFinalizer (427) */2938  export type PalletEthereumFakeTransactionFinalizer = Null;29392940} // declare module
after · tests/src/interfaces/types-lookup.ts
1// Auto-generated via `yarn polkadot-types-from-defs`, do not edit2/* eslint-disable */34declare module '@polkadot/types/lookup' {5  import type { BTreeMap, BTreeSet, Bytes, Compact, Enum, Null, Option, Result, Struct, Text, U256, U8aFixed, Vec, bool, u128, u16, u32, u64, u8 } from '@polkadot/types-codec';6  import type { ITuple } from '@polkadot/types-codec/types';7  import type { AccountId32, Call, H160, H256, MultiAddress, Perbill, Permill } from '@polkadot/types/interfaces/runtime';8  import type { Event } from '@polkadot/types/interfaces/system';910  /** @name PolkadotPrimitivesV2PersistedValidationData (2) */11  export interface PolkadotPrimitivesV2PersistedValidationData extends Struct {12    readonly parentHead: Bytes;13    readonly relayParentNumber: u32;14    readonly relayParentStorageRoot: H256;15    readonly maxPovSize: u32;16  }1718  /** @name PolkadotPrimitivesV2UpgradeRestriction (9) */19  export interface PolkadotPrimitivesV2UpgradeRestriction extends Enum {20    readonly isPresent: boolean;21    readonly type: 'Present';22  }2324  /** @name SpTrieStorageProof (10) */25  export interface SpTrieStorageProof extends Struct {26    readonly trieNodes: BTreeSet<Bytes>;27  }2829  /** @name CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot (13) */30  export interface CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot extends Struct {31    readonly dmqMqcHead: H256;32    readonly relayDispatchQueueSize: ITuple<[u32, u32]>;33    readonly ingressChannels: Vec<ITuple<[u32, PolkadotPrimitivesV2AbridgedHrmpChannel]>>;34    readonly egressChannels: Vec<ITuple<[u32, PolkadotPrimitivesV2AbridgedHrmpChannel]>>;35  }3637  /** @name PolkadotPrimitivesV2AbridgedHrmpChannel (18) */38  export interface PolkadotPrimitivesV2AbridgedHrmpChannel extends Struct {39    readonly maxCapacity: u32;40    readonly maxTotalSize: u32;41    readonly maxMessageSize: u32;42    readonly msgCount: u32;43    readonly totalSize: u32;44    readonly mqcHead: Option<H256>;45  }4647  /** @name PolkadotPrimitivesV2AbridgedHostConfiguration (20) */48  export interface PolkadotPrimitivesV2AbridgedHostConfiguration extends Struct {49    readonly maxCodeSize: u32;50    readonly maxHeadDataSize: u32;51    readonly maxUpwardQueueCount: u32;52    readonly maxUpwardQueueSize: u32;53    readonly maxUpwardMessageSize: u32;54    readonly maxUpwardMessageNumPerCandidate: u32;55    readonly hrmpMaxMessageNumPerCandidate: u32;56    readonly validationUpgradeCooldown: u32;57    readonly validationUpgradeDelay: u32;58  }5960  /** @name PolkadotCorePrimitivesOutboundHrmpMessage (26) */61  export interface PolkadotCorePrimitivesOutboundHrmpMessage extends Struct {62    readonly recipient: u32;63    readonly data: Bytes;64  }6566  /** @name CumulusPalletParachainSystemCall (28) */67  export interface CumulusPalletParachainSystemCall extends Enum {68    readonly isSetValidationData: boolean;69    readonly asSetValidationData: {70      readonly data: CumulusPrimitivesParachainInherentParachainInherentData;71    } & Struct;72    readonly isSudoSendUpwardMessage: boolean;73    readonly asSudoSendUpwardMessage: {74      readonly message: Bytes;75    } & Struct;76    readonly isAuthorizeUpgrade: boolean;77    readonly asAuthorizeUpgrade: {78      readonly codeHash: H256;79    } & Struct;80    readonly isEnactAuthorizedUpgrade: boolean;81    readonly asEnactAuthorizedUpgrade: {82      readonly code: Bytes;83    } & Struct;84    readonly type: 'SetValidationData' | 'SudoSendUpwardMessage' | 'AuthorizeUpgrade' | 'EnactAuthorizedUpgrade';85  }8687  /** @name CumulusPrimitivesParachainInherentParachainInherentData (29) */88  export interface CumulusPrimitivesParachainInherentParachainInherentData extends Struct {89    readonly validationData: PolkadotPrimitivesV2PersistedValidationData;90    readonly relayChainState: SpTrieStorageProof;91    readonly downwardMessages: Vec<PolkadotCorePrimitivesInboundDownwardMessage>;92    readonly horizontalMessages: BTreeMap<u32, Vec<PolkadotCorePrimitivesInboundHrmpMessage>>;93  }9495  /** @name PolkadotCorePrimitivesInboundDownwardMessage (31) */96  export interface PolkadotCorePrimitivesInboundDownwardMessage extends Struct {97    readonly sentAt: u32;98    readonly msg: Bytes;99  }100101  /** @name PolkadotCorePrimitivesInboundHrmpMessage (34) */102  export interface PolkadotCorePrimitivesInboundHrmpMessage extends Struct {103    readonly sentAt: u32;104    readonly data: Bytes;105  }106107  /** @name CumulusPalletParachainSystemEvent (37) */108  export interface CumulusPalletParachainSystemEvent extends Enum {109    readonly isValidationFunctionStored: boolean;110    readonly isValidationFunctionApplied: boolean;111    readonly asValidationFunctionApplied: u32;112    readonly isValidationFunctionDiscarded: boolean;113    readonly isUpgradeAuthorized: boolean;114    readonly asUpgradeAuthorized: H256;115    readonly isDownwardMessagesReceived: boolean;116    readonly asDownwardMessagesReceived: u32;117    readonly isDownwardMessagesProcessed: boolean;118    readonly asDownwardMessagesProcessed: ITuple<[u64, H256]>;119    readonly type: 'ValidationFunctionStored' | 'ValidationFunctionApplied' | 'ValidationFunctionDiscarded' | 'UpgradeAuthorized' | 'DownwardMessagesReceived' | 'DownwardMessagesProcessed';120  }121122  /** @name CumulusPalletParachainSystemError (38) */123  export interface CumulusPalletParachainSystemError extends Enum {124    readonly isOverlappingUpgrades: boolean;125    readonly isProhibitedByPolkadot: boolean;126    readonly isTooBig: boolean;127    readonly isValidationDataNotAvailable: boolean;128    readonly isHostConfigurationNotAvailable: boolean;129    readonly isNotScheduled: boolean;130    readonly isNothingAuthorized: boolean;131    readonly isUnauthorized: boolean;132    readonly type: 'OverlappingUpgrades' | 'ProhibitedByPolkadot' | 'TooBig' | 'ValidationDataNotAvailable' | 'HostConfigurationNotAvailable' | 'NotScheduled' | 'NothingAuthorized' | 'Unauthorized';133  }134135  /** @name PalletBalancesAccountData (41) */136  export interface PalletBalancesAccountData extends Struct {137    readonly free: u128;138    readonly reserved: u128;139    readonly miscFrozen: u128;140    readonly feeFrozen: u128;141  }142143  /** @name PalletBalancesBalanceLock (43) */144  export interface PalletBalancesBalanceLock extends Struct {145    readonly id: U8aFixed;146    readonly amount: u128;147    readonly reasons: PalletBalancesReasons;148  }149150  /** @name PalletBalancesReasons (45) */151  export interface PalletBalancesReasons extends Enum {152    readonly isFee: boolean;153    readonly isMisc: boolean;154    readonly isAll: boolean;155    readonly type: 'Fee' | 'Misc' | 'All';156  }157158  /** @name PalletBalancesReserveData (48) */159  export interface PalletBalancesReserveData extends Struct {160    readonly id: U8aFixed;161    readonly amount: u128;162  }163164  /** @name PalletBalancesReleases (50) */165  export interface PalletBalancesReleases extends Enum {166    readonly isV100: boolean;167    readonly isV200: boolean;168    readonly type: 'V100' | 'V200';169  }170171  /** @name PalletBalancesCall (51) */172  export interface PalletBalancesCall extends Enum {173    readonly isTransfer: boolean;174    readonly asTransfer: {175      readonly dest: MultiAddress;176      readonly value: Compact<u128>;177    } & Struct;178    readonly isSetBalance: boolean;179    readonly asSetBalance: {180      readonly who: MultiAddress;181      readonly newFree: Compact<u128>;182      readonly newReserved: Compact<u128>;183    } & Struct;184    readonly isForceTransfer: boolean;185    readonly asForceTransfer: {186      readonly source: MultiAddress;187      readonly dest: MultiAddress;188      readonly value: Compact<u128>;189    } & Struct;190    readonly isTransferKeepAlive: boolean;191    readonly asTransferKeepAlive: {192      readonly dest: MultiAddress;193      readonly value: Compact<u128>;194    } & Struct;195    readonly isTransferAll: boolean;196    readonly asTransferAll: {197      readonly dest: MultiAddress;198      readonly keepAlive: bool;199    } & Struct;200    readonly isForceUnreserve: boolean;201    readonly asForceUnreserve: {202      readonly who: MultiAddress;203      readonly amount: u128;204    } & Struct;205    readonly type: 'Transfer' | 'SetBalance' | 'ForceTransfer' | 'TransferKeepAlive' | 'TransferAll' | 'ForceUnreserve';206  }207208  /** @name PalletBalancesEvent (57) */209  export interface PalletBalancesEvent extends Enum {210    readonly isEndowed: boolean;211    readonly asEndowed: {212      readonly account: AccountId32;213      readonly freeBalance: u128;214    } & Struct;215    readonly isDustLost: boolean;216    readonly asDustLost: {217      readonly account: AccountId32;218      readonly amount: u128;219    } & Struct;220    readonly isTransfer: boolean;221    readonly asTransfer: {222      readonly from: AccountId32;223      readonly to: AccountId32;224      readonly amount: u128;225    } & Struct;226    readonly isBalanceSet: boolean;227    readonly asBalanceSet: {228      readonly who: AccountId32;229      readonly free: u128;230      readonly reserved: u128;231    } & Struct;232    readonly isReserved: boolean;233    readonly asReserved: {234      readonly who: AccountId32;235      readonly amount: u128;236    } & Struct;237    readonly isUnreserved: boolean;238    readonly asUnreserved: {239      readonly who: AccountId32;240      readonly amount: u128;241    } & Struct;242    readonly isReserveRepatriated: boolean;243    readonly asReserveRepatriated: {244      readonly from: AccountId32;245      readonly to: AccountId32;246      readonly amount: u128;247      readonly destinationStatus: FrameSupportTokensMiscBalanceStatus;248    } & Struct;249    readonly isDeposit: boolean;250    readonly asDeposit: {251      readonly who: AccountId32;252      readonly amount: u128;253    } & Struct;254    readonly isWithdraw: boolean;255    readonly asWithdraw: {256      readonly who: AccountId32;257      readonly amount: u128;258    } & Struct;259    readonly isSlashed: boolean;260    readonly asSlashed: {261      readonly who: AccountId32;262      readonly amount: u128;263    } & Struct;264    readonly type: 'Endowed' | 'DustLost' | 'Transfer' | 'BalanceSet' | 'Reserved' | 'Unreserved' | 'ReserveRepatriated' | 'Deposit' | 'Withdraw' | 'Slashed';265  }266267  /** @name FrameSupportTokensMiscBalanceStatus (58) */268  export interface FrameSupportTokensMiscBalanceStatus extends Enum {269    readonly isFree: boolean;270    readonly isReserved: boolean;271    readonly type: 'Free' | 'Reserved';272  }273274  /** @name PalletBalancesError (59) */275  export interface PalletBalancesError extends Enum {276    readonly isVestingBalance: boolean;277    readonly isLiquidityRestrictions: boolean;278    readonly isInsufficientBalance: boolean;279    readonly isExistentialDeposit: boolean;280    readonly isKeepAlive: boolean;281    readonly isExistingVestingSchedule: boolean;282    readonly isDeadAccount: boolean;283    readonly isTooManyReserves: boolean;284    readonly type: 'VestingBalance' | 'LiquidityRestrictions' | 'InsufficientBalance' | 'ExistentialDeposit' | 'KeepAlive' | 'ExistingVestingSchedule' | 'DeadAccount' | 'TooManyReserves';285  }286287  /** @name PalletTimestampCall (62) */288  export interface PalletTimestampCall extends Enum {289    readonly isSet: boolean;290    readonly asSet: {291      readonly now: Compact<u64>;292    } & Struct;293    readonly type: 'Set';294  }295296  /** @name PalletTransactionPaymentReleases (65) */297  export interface PalletTransactionPaymentReleases extends Enum {298    readonly isV1Ancient: boolean;299    readonly isV2: boolean;300    readonly type: 'V1Ancient' | 'V2';301  }302303  /** @name FrameSupportWeightsWeightToFeeCoefficient (67) */304  export interface FrameSupportWeightsWeightToFeeCoefficient extends Struct {305    readonly coeffInteger: u128;306    readonly coeffFrac: Perbill;307    readonly negative: bool;308    readonly degree: u8;309  }310311  /** @name PalletTreasuryProposal (69) */312  export interface PalletTreasuryProposal extends Struct {313    readonly proposer: AccountId32;314    readonly value: u128;315    readonly beneficiary: AccountId32;316    readonly bond: u128;317  }318319  /** @name PalletTreasuryCall (72) */320  export interface PalletTreasuryCall extends Enum {321    readonly isProposeSpend: boolean;322    readonly asProposeSpend: {323      readonly value: Compact<u128>;324      readonly beneficiary: MultiAddress;325    } & Struct;326    readonly isRejectProposal: boolean;327    readonly asRejectProposal: {328      readonly proposalId: Compact<u32>;329    } & Struct;330    readonly isApproveProposal: boolean;331    readonly asApproveProposal: {332      readonly proposalId: Compact<u32>;333    } & Struct;334    readonly type: 'ProposeSpend' | 'RejectProposal' | 'ApproveProposal';335  }336337  /** @name PalletTreasuryEvent (74) */338  export interface PalletTreasuryEvent extends Enum {339    readonly isProposed: boolean;340    readonly asProposed: {341      readonly proposalIndex: u32;342    } & Struct;343    readonly isSpending: boolean;344    readonly asSpending: {345      readonly budgetRemaining: u128;346    } & Struct;347    readonly isAwarded: boolean;348    readonly asAwarded: {349      readonly proposalIndex: u32;350      readonly award: u128;351      readonly account: AccountId32;352    } & Struct;353    readonly isRejected: boolean;354    readonly asRejected: {355      readonly proposalIndex: u32;356      readonly slashed: u128;357    } & Struct;358    readonly isBurnt: boolean;359    readonly asBurnt: {360      readonly burntFunds: u128;361    } & Struct;362    readonly isRollover: boolean;363    readonly asRollover: {364      readonly rolloverBalance: u128;365    } & Struct;366    readonly isDeposit: boolean;367    readonly asDeposit: {368      readonly value: u128;369    } & Struct;370    readonly type: 'Proposed' | 'Spending' | 'Awarded' | 'Rejected' | 'Burnt' | 'Rollover' | 'Deposit';371  }372373  /** @name FrameSupportPalletId (77) */374  export interface FrameSupportPalletId extends U8aFixed {}375376  /** @name PalletTreasuryError (78) */377  export interface PalletTreasuryError extends Enum {378    readonly isInsufficientProposersBalance: boolean;379    readonly isInvalidIndex: boolean;380    readonly isTooManyApprovals: boolean;381    readonly type: 'InsufficientProposersBalance' | 'InvalidIndex' | 'TooManyApprovals';382  }383384  /** @name PalletSudoCall (79) */385  export interface PalletSudoCall extends Enum {386    readonly isSudo: boolean;387    readonly asSudo: {388      readonly call: Call;389    } & Struct;390    readonly isSudoUncheckedWeight: boolean;391    readonly asSudoUncheckedWeight: {392      readonly call: Call;393      readonly weight: u64;394    } & Struct;395    readonly isSetKey: boolean;396    readonly asSetKey: {397      readonly new_: MultiAddress;398    } & Struct;399    readonly isSudoAs: boolean;400    readonly asSudoAs: {401      readonly who: MultiAddress;402      readonly call: Call;403    } & Struct;404    readonly type: 'Sudo' | 'SudoUncheckedWeight' | 'SetKey' | 'SudoAs';405  }406407  /** @name FrameSystemCall (81) */408  export interface FrameSystemCall extends Enum {409    readonly isFillBlock: boolean;410    readonly asFillBlock: {411      readonly ratio: Perbill;412    } & Struct;413    readonly isRemark: boolean;414    readonly asRemark: {415      readonly remark: Bytes;416    } & Struct;417    readonly isSetHeapPages: boolean;418    readonly asSetHeapPages: {419      readonly pages: u64;420    } & Struct;421    readonly isSetCode: boolean;422    readonly asSetCode: {423      readonly code: Bytes;424    } & Struct;425    readonly isSetCodeWithoutChecks: boolean;426    readonly asSetCodeWithoutChecks: {427      readonly code: Bytes;428    } & Struct;429    readonly isSetStorage: boolean;430    readonly asSetStorage: {431      readonly items: Vec<ITuple<[Bytes, Bytes]>>;432    } & Struct;433    readonly isKillStorage: boolean;434    readonly asKillStorage: {435      readonly keys_: Vec<Bytes>;436    } & Struct;437    readonly isKillPrefix: boolean;438    readonly asKillPrefix: {439      readonly prefix: Bytes;440      readonly subkeys: u32;441    } & Struct;442    readonly isRemarkWithEvent: boolean;443    readonly asRemarkWithEvent: {444      readonly remark: Bytes;445    } & Struct;446    readonly type: 'FillBlock' | 'Remark' | 'SetHeapPages' | 'SetCode' | 'SetCodeWithoutChecks' | 'SetStorage' | 'KillStorage' | 'KillPrefix' | 'RemarkWithEvent';447  }448449  /** @name OrmlVestingModuleCall (84) */450  export interface OrmlVestingModuleCall extends Enum {451    readonly isClaim: boolean;452    readonly isVestedTransfer: boolean;453    readonly asVestedTransfer: {454      readonly dest: MultiAddress;455      readonly schedule: OrmlVestingVestingSchedule;456    } & Struct;457    readonly isUpdateVestingSchedules: boolean;458    readonly asUpdateVestingSchedules: {459      readonly who: MultiAddress;460      readonly vestingSchedules: Vec<OrmlVestingVestingSchedule>;461    } & Struct;462    readonly isClaimFor: boolean;463    readonly asClaimFor: {464      readonly dest: MultiAddress;465    } & Struct;466    readonly type: 'Claim' | 'VestedTransfer' | 'UpdateVestingSchedules' | 'ClaimFor';467  }468469  /** @name OrmlVestingVestingSchedule (85) */470  export interface OrmlVestingVestingSchedule extends Struct {471    readonly start: u32;472    readonly period: u32;473    readonly periodCount: u32;474    readonly perPeriod: Compact<u128>;475  }476477  /** @name CumulusPalletXcmpQueueCall (87) */478  export interface CumulusPalletXcmpQueueCall extends Enum {479    readonly isServiceOverweight: boolean;480    readonly asServiceOverweight: {481      readonly index: u64;482      readonly weightLimit: u64;483    } & Struct;484    readonly isSuspendXcmExecution: boolean;485    readonly isResumeXcmExecution: boolean;486    readonly isUpdateSuspendThreshold: boolean;487    readonly asUpdateSuspendThreshold: {488      readonly new_: u32;489    } & Struct;490    readonly isUpdateDropThreshold: boolean;491    readonly asUpdateDropThreshold: {492      readonly new_: u32;493    } & Struct;494    readonly isUpdateResumeThreshold: boolean;495    readonly asUpdateResumeThreshold: {496      readonly new_: u32;497    } & Struct;498    readonly isUpdateThresholdWeight: boolean;499    readonly asUpdateThresholdWeight: {500      readonly new_: u64;501    } & Struct;502    readonly isUpdateWeightRestrictDecay: boolean;503    readonly asUpdateWeightRestrictDecay: {504      readonly new_: u64;505    } & Struct;506    readonly isUpdateXcmpMaxIndividualWeight: boolean;507    readonly asUpdateXcmpMaxIndividualWeight: {508      readonly new_: u64;509    } & Struct;510    readonly type: 'ServiceOverweight' | 'SuspendXcmExecution' | 'ResumeXcmExecution' | 'UpdateSuspendThreshold' | 'UpdateDropThreshold' | 'UpdateResumeThreshold' | 'UpdateThresholdWeight' | 'UpdateWeightRestrictDecay' | 'UpdateXcmpMaxIndividualWeight';511  }512513  /** @name PalletXcmCall (88) */514  export interface PalletXcmCall extends Enum {515    readonly isSend: boolean;516    readonly asSend: {517      readonly dest: XcmVersionedMultiLocation;518      readonly message: XcmVersionedXcm;519    } & Struct;520    readonly isTeleportAssets: boolean;521    readonly asTeleportAssets: {522      readonly dest: XcmVersionedMultiLocation;523      readonly beneficiary: XcmVersionedMultiLocation;524      readonly assets: XcmVersionedMultiAssets;525      readonly feeAssetItem: u32;526    } & Struct;527    readonly isReserveTransferAssets: boolean;528    readonly asReserveTransferAssets: {529      readonly dest: XcmVersionedMultiLocation;530      readonly beneficiary: XcmVersionedMultiLocation;531      readonly assets: XcmVersionedMultiAssets;532      readonly feeAssetItem: u32;533    } & Struct;534    readonly isExecute: boolean;535    readonly asExecute: {536      readonly message: XcmVersionedXcm;537      readonly maxWeight: u64;538    } & Struct;539    readonly isForceXcmVersion: boolean;540    readonly asForceXcmVersion: {541      readonly location: XcmV1MultiLocation;542      readonly xcmVersion: u32;543    } & Struct;544    readonly isForceDefaultXcmVersion: boolean;545    readonly asForceDefaultXcmVersion: {546      readonly maybeXcmVersion: Option<u32>;547    } & Struct;548    readonly isForceSubscribeVersionNotify: boolean;549    readonly asForceSubscribeVersionNotify: {550      readonly location: XcmVersionedMultiLocation;551    } & Struct;552    readonly isForceUnsubscribeVersionNotify: boolean;553    readonly asForceUnsubscribeVersionNotify: {554      readonly location: XcmVersionedMultiLocation;555    } & Struct;556    readonly isLimitedReserveTransferAssets: boolean;557    readonly asLimitedReserveTransferAssets: {558      readonly dest: XcmVersionedMultiLocation;559      readonly beneficiary: XcmVersionedMultiLocation;560      readonly assets: XcmVersionedMultiAssets;561      readonly feeAssetItem: u32;562      readonly weightLimit: XcmV2WeightLimit;563    } & Struct;564    readonly isLimitedTeleportAssets: boolean;565    readonly asLimitedTeleportAssets: {566      readonly dest: XcmVersionedMultiLocation;567      readonly beneficiary: XcmVersionedMultiLocation;568      readonly assets: XcmVersionedMultiAssets;569      readonly feeAssetItem: u32;570      readonly weightLimit: XcmV2WeightLimit;571    } & Struct;572    readonly type: 'Send' | 'TeleportAssets' | 'ReserveTransferAssets' | 'Execute' | 'ForceXcmVersion' | 'ForceDefaultXcmVersion' | 'ForceSubscribeVersionNotify' | 'ForceUnsubscribeVersionNotify' | 'LimitedReserveTransferAssets' | 'LimitedTeleportAssets';573  }574575  /** @name XcmVersionedMultiLocation (89) */576  export interface XcmVersionedMultiLocation extends Enum {577    readonly isV0: boolean;578    readonly asV0: XcmV0MultiLocation;579    readonly isV1: boolean;580    readonly asV1: XcmV1MultiLocation;581    readonly type: 'V0' | 'V1';582  }583584  /** @name XcmV0MultiLocation (90) */585  export interface XcmV0MultiLocation extends Enum {586    readonly isNull: boolean;587    readonly isX1: boolean;588    readonly asX1: XcmV0Junction;589    readonly isX2: boolean;590    readonly asX2: ITuple<[XcmV0Junction, XcmV0Junction]>;591    readonly isX3: boolean;592    readonly asX3: ITuple<[XcmV0Junction, XcmV0Junction, XcmV0Junction]>;593    readonly isX4: boolean;594    readonly asX4: ITuple<[XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction]>;595    readonly isX5: boolean;596    readonly asX5: ITuple<[XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction]>;597    readonly isX6: boolean;598    readonly asX6: ITuple<[XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction]>;599    readonly isX7: boolean;600    readonly asX7: ITuple<[XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction]>;601    readonly isX8: boolean;602    readonly asX8: ITuple<[XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction, XcmV0Junction]>;603    readonly type: 'Null' | 'X1' | 'X2' | 'X3' | 'X4' | 'X5' | 'X6' | 'X7' | 'X8';604  }605606  /** @name XcmV0Junction (91) */607  export interface XcmV0Junction extends Enum {608    readonly isParent: boolean;609    readonly isParachain: boolean;610    readonly asParachain: Compact<u32>;611    readonly isAccountId32: boolean;612    readonly asAccountId32: {613      readonly network: XcmV0JunctionNetworkId;614      readonly id: U8aFixed;615    } & Struct;616    readonly isAccountIndex64: boolean;617    readonly asAccountIndex64: {618      readonly network: XcmV0JunctionNetworkId;619      readonly index: Compact<u64>;620    } & Struct;621    readonly isAccountKey20: boolean;622    readonly asAccountKey20: {623      readonly network: XcmV0JunctionNetworkId;624      readonly key: U8aFixed;625    } & Struct;626    readonly isPalletInstance: boolean;627    readonly asPalletInstance: u8;628    readonly isGeneralIndex: boolean;629    readonly asGeneralIndex: Compact<u128>;630    readonly isGeneralKey: boolean;631    readonly asGeneralKey: Bytes;632    readonly isOnlyChild: boolean;633    readonly isPlurality: boolean;634    readonly asPlurality: {635      readonly id: XcmV0JunctionBodyId;636      readonly part: XcmV0JunctionBodyPart;637    } & Struct;638    readonly type: 'Parent' | 'Parachain' | 'AccountId32' | 'AccountIndex64' | 'AccountKey20' | 'PalletInstance' | 'GeneralIndex' | 'GeneralKey' | 'OnlyChild' | 'Plurality';639  }640641  /** @name XcmV0JunctionNetworkId (92) */642  export interface XcmV0JunctionNetworkId extends Enum {643    readonly isAny: boolean;644    readonly isNamed: boolean;645    readonly asNamed: Bytes;646    readonly isPolkadot: boolean;647    readonly isKusama: boolean;648    readonly type: 'Any' | 'Named' | 'Polkadot' | 'Kusama';649  }650651  /** @name XcmV0JunctionBodyId (93) */652  export interface XcmV0JunctionBodyId extends Enum {653    readonly isUnit: boolean;654    readonly isNamed: boolean;655    readonly asNamed: Bytes;656    readonly isIndex: boolean;657    readonly asIndex: Compact<u32>;658    readonly isExecutive: boolean;659    readonly isTechnical: boolean;660    readonly isLegislative: boolean;661    readonly isJudicial: boolean;662    readonly type: 'Unit' | 'Named' | 'Index' | 'Executive' | 'Technical' | 'Legislative' | 'Judicial';663  }664665  /** @name XcmV0JunctionBodyPart (94) */666  export interface XcmV0JunctionBodyPart extends Enum {667    readonly isVoice: boolean;668    readonly isMembers: boolean;669    readonly asMembers: {670      readonly count: Compact<u32>;671    } & Struct;672    readonly isFraction: boolean;673    readonly asFraction: {674      readonly nom: Compact<u32>;675      readonly denom: Compact<u32>;676    } & Struct;677    readonly isAtLeastProportion: boolean;678    readonly asAtLeastProportion: {679      readonly nom: Compact<u32>;680      readonly denom: Compact<u32>;681    } & Struct;682    readonly isMoreThanProportion: boolean;683    readonly asMoreThanProportion: {684      readonly nom: Compact<u32>;685      readonly denom: Compact<u32>;686    } & Struct;687    readonly type: 'Voice' | 'Members' | 'Fraction' | 'AtLeastProportion' | 'MoreThanProportion';688  }689690  /** @name XcmV1MultiLocation (95) */691  export interface XcmV1MultiLocation extends Struct {692    readonly parents: u8;693    readonly interior: XcmV1MultilocationJunctions;694  }695696  /** @name XcmV1MultilocationJunctions (96) */697  export interface XcmV1MultilocationJunctions extends Enum {698    readonly isHere: boolean;699    readonly isX1: boolean;700    readonly asX1: XcmV1Junction;701    readonly isX2: boolean;702    readonly asX2: ITuple<[XcmV1Junction, XcmV1Junction]>;703    readonly isX3: boolean;704    readonly asX3: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction]>;705    readonly isX4: boolean;706    readonly asX4: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction]>;707    readonly isX5: boolean;708    readonly asX5: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction]>;709    readonly isX6: boolean;710    readonly asX6: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction]>;711    readonly isX7: boolean;712    readonly asX7: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction]>;713    readonly isX8: boolean;714    readonly asX8: ITuple<[XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction, XcmV1Junction]>;715    readonly type: 'Here' | 'X1' | 'X2' | 'X3' | 'X4' | 'X5' | 'X6' | 'X7' | 'X8';716  }717718  /** @name XcmV1Junction (97) */719  export interface XcmV1Junction extends Enum {720    readonly isParachain: boolean;721    readonly asParachain: Compact<u32>;722    readonly isAccountId32: boolean;723    readonly asAccountId32: {724      readonly network: XcmV0JunctionNetworkId;725      readonly id: U8aFixed;726    } & Struct;727    readonly isAccountIndex64: boolean;728    readonly asAccountIndex64: {729      readonly network: XcmV0JunctionNetworkId;730      readonly index: Compact<u64>;731    } & Struct;732    readonly isAccountKey20: boolean;733    readonly asAccountKey20: {734      readonly network: XcmV0JunctionNetworkId;735      readonly key: U8aFixed;736    } & Struct;737    readonly isPalletInstance: boolean;738    readonly asPalletInstance: u8;739    readonly isGeneralIndex: boolean;740    readonly asGeneralIndex: Compact<u128>;741    readonly isGeneralKey: boolean;742    readonly asGeneralKey: Bytes;743    readonly isOnlyChild: boolean;744    readonly isPlurality: boolean;745    readonly asPlurality: {746      readonly id: XcmV0JunctionBodyId;747      readonly part: XcmV0JunctionBodyPart;748    } & Struct;749    readonly type: 'Parachain' | 'AccountId32' | 'AccountIndex64' | 'AccountKey20' | 'PalletInstance' | 'GeneralIndex' | 'GeneralKey' | 'OnlyChild' | 'Plurality';750  }751752  /** @name XcmVersionedXcm (98) */753  export interface XcmVersionedXcm extends Enum {754    readonly isV0: boolean;755    readonly asV0: XcmV0Xcm;756    readonly isV1: boolean;757    readonly asV1: XcmV1Xcm;758    readonly isV2: boolean;759    readonly asV2: XcmV2Xcm;760    readonly type: 'V0' | 'V1' | 'V2';761  }762763  /** @name XcmV0Xcm (99) */764  export interface XcmV0Xcm extends Enum {765    readonly isWithdrawAsset: boolean;766    readonly asWithdrawAsset: {767      readonly assets: Vec<XcmV0MultiAsset>;768      readonly effects: Vec<XcmV0Order>;769    } & Struct;770    readonly isReserveAssetDeposit: boolean;771    readonly asReserveAssetDeposit: {772      readonly assets: Vec<XcmV0MultiAsset>;773      readonly effects: Vec<XcmV0Order>;774    } & Struct;775    readonly isTeleportAsset: boolean;776    readonly asTeleportAsset: {777      readonly assets: Vec<XcmV0MultiAsset>;778      readonly effects: Vec<XcmV0Order>;779    } & Struct;780    readonly isQueryResponse: boolean;781    readonly asQueryResponse: {782      readonly queryId: Compact<u64>;783      readonly response: XcmV0Response;784    } & Struct;785    readonly isTransferAsset: boolean;786    readonly asTransferAsset: {787      readonly assets: Vec<XcmV0MultiAsset>;788      readonly dest: XcmV0MultiLocation;789    } & Struct;790    readonly isTransferReserveAsset: boolean;791    readonly asTransferReserveAsset: {792      readonly assets: Vec<XcmV0MultiAsset>;793      readonly dest: XcmV0MultiLocation;794      readonly effects: Vec<XcmV0Order>;795    } & Struct;796    readonly isTransact: boolean;797    readonly asTransact: {798      readonly originType: XcmV0OriginKind;799      readonly requireWeightAtMost: u64;800      readonly call: XcmDoubleEncoded;801    } & Struct;802    readonly isHrmpNewChannelOpenRequest: boolean;803    readonly asHrmpNewChannelOpenRequest: {804      readonly sender: Compact<u32>;805      readonly maxMessageSize: Compact<u32>;806      readonly maxCapacity: Compact<u32>;807    } & Struct;808    readonly isHrmpChannelAccepted: boolean;809    readonly asHrmpChannelAccepted: {810      readonly recipient: Compact<u32>;811    } & Struct;812    readonly isHrmpChannelClosing: boolean;813    readonly asHrmpChannelClosing: {814      readonly initiator: Compact<u32>;815      readonly sender: Compact<u32>;816      readonly recipient: Compact<u32>;817    } & Struct;818    readonly isRelayedFrom: boolean;819    readonly asRelayedFrom: {820      readonly who: XcmV0MultiLocation;821      readonly message: XcmV0Xcm;822    } & Struct;823    readonly type: 'WithdrawAsset' | 'ReserveAssetDeposit' | 'TeleportAsset' | 'QueryResponse' | 'TransferAsset' | 'TransferReserveAsset' | 'Transact' | 'HrmpNewChannelOpenRequest' | 'HrmpChannelAccepted' | 'HrmpChannelClosing' | 'RelayedFrom';824  }825826  /** @name XcmV0MultiAsset (101) */827  export interface XcmV0MultiAsset extends Enum {828    readonly isNone: boolean;829    readonly isAll: boolean;830    readonly isAllFungible: boolean;831    readonly isAllNonFungible: boolean;832    readonly isAllAbstractFungible: boolean;833    readonly asAllAbstractFungible: {834      readonly id: Bytes;835    } & Struct;836    readonly isAllAbstractNonFungible: boolean;837    readonly asAllAbstractNonFungible: {838      readonly class: Bytes;839    } & Struct;840    readonly isAllConcreteFungible: boolean;841    readonly asAllConcreteFungible: {842      readonly id: XcmV0MultiLocation;843    } & Struct;844    readonly isAllConcreteNonFungible: boolean;845    readonly asAllConcreteNonFungible: {846      readonly class: XcmV0MultiLocation;847    } & Struct;848    readonly isAbstractFungible: boolean;849    readonly asAbstractFungible: {850      readonly id: Bytes;851      readonly amount: Compact<u128>;852    } & Struct;853    readonly isAbstractNonFungible: boolean;854    readonly asAbstractNonFungible: {855      readonly class: Bytes;856      readonly instance: XcmV1MultiassetAssetInstance;857    } & Struct;858    readonly isConcreteFungible: boolean;859    readonly asConcreteFungible: {860      readonly id: XcmV0MultiLocation;861      readonly amount: Compact<u128>;862    } & Struct;863    readonly isConcreteNonFungible: boolean;864    readonly asConcreteNonFungible: {865      readonly class: XcmV0MultiLocation;866      readonly instance: XcmV1MultiassetAssetInstance;867    } & Struct;868    readonly type: 'None' | 'All' | 'AllFungible' | 'AllNonFungible' | 'AllAbstractFungible' | 'AllAbstractNonFungible' | 'AllConcreteFungible' | 'AllConcreteNonFungible' | 'AbstractFungible' | 'AbstractNonFungible' | 'ConcreteFungible' | 'ConcreteNonFungible';869  }870871  /** @name XcmV1MultiassetAssetInstance (102) */872  export interface XcmV1MultiassetAssetInstance extends Enum {873    readonly isUndefined: boolean;874    readonly isIndex: boolean;875    readonly asIndex: Compact<u128>;876    readonly isArray4: boolean;877    readonly asArray4: U8aFixed;878    readonly isArray8: boolean;879    readonly asArray8: U8aFixed;880    readonly isArray16: boolean;881    readonly asArray16: U8aFixed;882    readonly isArray32: boolean;883    readonly asArray32: U8aFixed;884    readonly isBlob: boolean;885    readonly asBlob: Bytes;886    readonly type: 'Undefined' | 'Index' | 'Array4' | 'Array8' | 'Array16' | 'Array32' | 'Blob';887  }888889  /** @name XcmV0Order (106) */890  export interface XcmV0Order extends Enum {891    readonly isNull: boolean;892    readonly isDepositAsset: boolean;893    readonly asDepositAsset: {894      readonly assets: Vec<XcmV0MultiAsset>;895      readonly dest: XcmV0MultiLocation;896    } & Struct;897    readonly isDepositReserveAsset: boolean;898    readonly asDepositReserveAsset: {899      readonly assets: Vec<XcmV0MultiAsset>;900      readonly dest: XcmV0MultiLocation;901      readonly effects: Vec<XcmV0Order>;902    } & Struct;903    readonly isExchangeAsset: boolean;904    readonly asExchangeAsset: {905      readonly give: Vec<XcmV0MultiAsset>;906      readonly receive: Vec<XcmV0MultiAsset>;907    } & Struct;908    readonly isInitiateReserveWithdraw: boolean;909    readonly asInitiateReserveWithdraw: {910      readonly assets: Vec<XcmV0MultiAsset>;911      readonly reserve: XcmV0MultiLocation;912      readonly effects: Vec<XcmV0Order>;913    } & Struct;914    readonly isInitiateTeleport: boolean;915    readonly asInitiateTeleport: {916      readonly assets: Vec<XcmV0MultiAsset>;917      readonly dest: XcmV0MultiLocation;918      readonly effects: Vec<XcmV0Order>;919    } & Struct;920    readonly isQueryHolding: boolean;921    readonly asQueryHolding: {922      readonly queryId: Compact<u64>;923      readonly dest: XcmV0MultiLocation;924      readonly assets: Vec<XcmV0MultiAsset>;925    } & Struct;926    readonly isBuyExecution: boolean;927    readonly asBuyExecution: {928      readonly fees: XcmV0MultiAsset;929      readonly weight: u64;930      readonly debt: u64;931      readonly haltOnError: bool;932      readonly xcm: Vec<XcmV0Xcm>;933    } & Struct;934    readonly type: 'Null' | 'DepositAsset' | 'DepositReserveAsset' | 'ExchangeAsset' | 'InitiateReserveWithdraw' | 'InitiateTeleport' | 'QueryHolding' | 'BuyExecution';935  }936937  /** @name XcmV0Response (108) */938  export interface XcmV0Response extends Enum {939    readonly isAssets: boolean;940    readonly asAssets: Vec<XcmV0MultiAsset>;941    readonly type: 'Assets';942  }943944  /** @name XcmV0OriginKind (109) */945  export interface XcmV0OriginKind extends Enum {946    readonly isNative: boolean;947    readonly isSovereignAccount: boolean;948    readonly isSuperuser: boolean;949    readonly isXcm: boolean;950    readonly type: 'Native' | 'SovereignAccount' | 'Superuser' | 'Xcm';951  }952953  /** @name XcmDoubleEncoded (110) */954  export interface XcmDoubleEncoded extends Struct {955    readonly encoded: Bytes;956  }957958  /** @name XcmV1Xcm (111) */959  export interface XcmV1Xcm extends Enum {960    readonly isWithdrawAsset: boolean;961    readonly asWithdrawAsset: {962      readonly assets: XcmV1MultiassetMultiAssets;963      readonly effects: Vec<XcmV1Order>;964    } & Struct;965    readonly isReserveAssetDeposited: boolean;966    readonly asReserveAssetDeposited: {967      readonly assets: XcmV1MultiassetMultiAssets;968      readonly effects: Vec<XcmV1Order>;969    } & Struct;970    readonly isReceiveTeleportedAsset: boolean;971    readonly asReceiveTeleportedAsset: {972      readonly assets: XcmV1MultiassetMultiAssets;973      readonly effects: Vec<XcmV1Order>;974    } & Struct;975    readonly isQueryResponse: boolean;976    readonly asQueryResponse: {977      readonly queryId: Compact<u64>;978      readonly response: XcmV1Response;979    } & Struct;980    readonly isTransferAsset: boolean;981    readonly asTransferAsset: {982      readonly assets: XcmV1MultiassetMultiAssets;983      readonly beneficiary: XcmV1MultiLocation;984    } & Struct;985    readonly isTransferReserveAsset: boolean;986    readonly asTransferReserveAsset: {987      readonly assets: XcmV1MultiassetMultiAssets;988      readonly dest: XcmV1MultiLocation;989      readonly effects: Vec<XcmV1Order>;990    } & Struct;991    readonly isTransact: boolean;992    readonly asTransact: {993      readonly originType: XcmV0OriginKind;994      readonly requireWeightAtMost: u64;995      readonly call: XcmDoubleEncoded;996    } & Struct;997    readonly isHrmpNewChannelOpenRequest: boolean;998    readonly asHrmpNewChannelOpenRequest: {999      readonly sender: Compact<u32>;1000      readonly maxMessageSize: Compact<u32>;1001      readonly maxCapacity: Compact<u32>;1002    } & Struct;1003    readonly isHrmpChannelAccepted: boolean;1004    readonly asHrmpChannelAccepted: {1005      readonly recipient: Compact<u32>;1006    } & Struct;1007    readonly isHrmpChannelClosing: boolean;1008    readonly asHrmpChannelClosing: {1009      readonly initiator: Compact<u32>;1010      readonly sender: Compact<u32>;1011      readonly recipient: Compact<u32>;1012    } & Struct;1013    readonly isRelayedFrom: boolean;1014    readonly asRelayedFrom: {1015      readonly who: XcmV1MultilocationJunctions;1016      readonly message: XcmV1Xcm;1017    } & Struct;1018    readonly isSubscribeVersion: boolean;1019    readonly asSubscribeVersion: {1020      readonly queryId: Compact<u64>;1021      readonly maxResponseWeight: Compact<u64>;1022    } & Struct;1023    readonly isUnsubscribeVersion: boolean;1024    readonly type: 'WithdrawAsset' | 'ReserveAssetDeposited' | 'ReceiveTeleportedAsset' | 'QueryResponse' | 'TransferAsset' | 'TransferReserveAsset' | 'Transact' | 'HrmpNewChannelOpenRequest' | 'HrmpChannelAccepted' | 'HrmpChannelClosing' | 'RelayedFrom' | 'SubscribeVersion' | 'UnsubscribeVersion';1025  }10261027  /** @name XcmV1MultiassetMultiAssets (112) */1028  export interface XcmV1MultiassetMultiAssets extends Vec<XcmV1MultiAsset> {}10291030  /** @name XcmV1MultiAsset (114) */1031  export interface XcmV1MultiAsset extends Struct {1032    readonly id: XcmV1MultiassetAssetId;1033    readonly fun: XcmV1MultiassetFungibility;1034  }10351036  /** @name XcmV1MultiassetAssetId (115) */1037  export interface XcmV1MultiassetAssetId extends Enum {1038    readonly isConcrete: boolean;1039    readonly asConcrete: XcmV1MultiLocation;1040    readonly isAbstract: boolean;1041    readonly asAbstract: Bytes;1042    readonly type: 'Concrete' | 'Abstract';1043  }10441045  /** @name XcmV1MultiassetFungibility (116) */1046  export interface XcmV1MultiassetFungibility extends Enum {1047    readonly isFungible: boolean;1048    readonly asFungible: Compact<u128>;1049    readonly isNonFungible: boolean;1050    readonly asNonFungible: XcmV1MultiassetAssetInstance;1051    readonly type: 'Fungible' | 'NonFungible';1052  }10531054  /** @name XcmV1Order (118) */1055  export interface XcmV1Order extends Enum {1056    readonly isNoop: boolean;1057    readonly isDepositAsset: boolean;1058    readonly asDepositAsset: {1059      readonly assets: XcmV1MultiassetMultiAssetFilter;1060      readonly maxAssets: u32;1061      readonly beneficiary: XcmV1MultiLocation;1062    } & Struct;1063    readonly isDepositReserveAsset: boolean;1064    readonly asDepositReserveAsset: {1065      readonly assets: XcmV1MultiassetMultiAssetFilter;1066      readonly maxAssets: u32;1067      readonly dest: XcmV1MultiLocation;1068      readonly effects: Vec<XcmV1Order>;1069    } & Struct;1070    readonly isExchangeAsset: boolean;1071    readonly asExchangeAsset: {1072      readonly give: XcmV1MultiassetMultiAssetFilter;1073      readonly receive: XcmV1MultiassetMultiAssets;1074    } & Struct;1075    readonly isInitiateReserveWithdraw: boolean;1076    readonly asInitiateReserveWithdraw: {1077      readonly assets: XcmV1MultiassetMultiAssetFilter;1078      readonly reserve: XcmV1MultiLocation;1079      readonly effects: Vec<XcmV1Order>;1080    } & Struct;1081    readonly isInitiateTeleport: boolean;1082    readonly asInitiateTeleport: {1083      readonly assets: XcmV1MultiassetMultiAssetFilter;1084      readonly dest: XcmV1MultiLocation;1085      readonly effects: Vec<XcmV1Order>;1086    } & Struct;1087    readonly isQueryHolding: boolean;1088    readonly asQueryHolding: {1089      readonly queryId: Compact<u64>;1090      readonly dest: XcmV1MultiLocation;1091      readonly assets: XcmV1MultiassetMultiAssetFilter;1092    } & Struct;1093    readonly isBuyExecution: boolean;1094    readonly asBuyExecution: {1095      readonly fees: XcmV1MultiAsset;1096      readonly weight: u64;1097      readonly debt: u64;1098      readonly haltOnError: bool;1099      readonly instructions: Vec<XcmV1Xcm>;1100    } & Struct;1101    readonly type: 'Noop' | 'DepositAsset' | 'DepositReserveAsset' | 'ExchangeAsset' | 'InitiateReserveWithdraw' | 'InitiateTeleport' | 'QueryHolding' | 'BuyExecution';1102  }11031104  /** @name XcmV1MultiassetMultiAssetFilter (119) */1105  export interface XcmV1MultiassetMultiAssetFilter extends Enum {1106    readonly isDefinite: boolean;1107    readonly asDefinite: XcmV1MultiassetMultiAssets;1108    readonly isWild: boolean;1109    readonly asWild: XcmV1MultiassetWildMultiAsset;1110    readonly type: 'Definite' | 'Wild';1111  }11121113  /** @name XcmV1MultiassetWildMultiAsset (120) */1114  export interface XcmV1MultiassetWildMultiAsset extends Enum {1115    readonly isAll: boolean;1116    readonly isAllOf: boolean;1117    readonly asAllOf: {1118      readonly id: XcmV1MultiassetAssetId;1119      readonly fun: XcmV1MultiassetWildFungibility;1120    } & Struct;1121    readonly type: 'All' | 'AllOf';1122  }11231124  /** @name XcmV1MultiassetWildFungibility (121) */1125  export interface XcmV1MultiassetWildFungibility extends Enum {1126    readonly isFungible: boolean;1127    readonly isNonFungible: boolean;1128    readonly type: 'Fungible' | 'NonFungible';1129  }11301131  /** @name XcmV1Response (123) */1132  export interface XcmV1Response extends Enum {1133    readonly isAssets: boolean;1134    readonly asAssets: XcmV1MultiassetMultiAssets;1135    readonly isVersion: boolean;1136    readonly asVersion: u32;1137    readonly type: 'Assets' | 'Version';1138  }11391140  /** @name XcmV2Xcm (124) */1141  export interface XcmV2Xcm extends Vec<XcmV2Instruction> {}11421143  /** @name XcmV2Instruction (126) */1144  export interface XcmV2Instruction extends Enum {1145    readonly isWithdrawAsset: boolean;1146    readonly asWithdrawAsset: XcmV1MultiassetMultiAssets;1147    readonly isReserveAssetDeposited: boolean;1148    readonly asReserveAssetDeposited: XcmV1MultiassetMultiAssets;1149    readonly isReceiveTeleportedAsset: boolean;1150    readonly asReceiveTeleportedAsset: XcmV1MultiassetMultiAssets;1151    readonly isQueryResponse: boolean;1152    readonly asQueryResponse: {1153      readonly queryId: Compact<u64>;1154      readonly response: XcmV2Response;1155      readonly maxWeight: Compact<u64>;1156    } & Struct;1157    readonly isTransferAsset: boolean;1158    readonly asTransferAsset: {1159      readonly assets: XcmV1MultiassetMultiAssets;1160      readonly beneficiary: XcmV1MultiLocation;1161    } & Struct;1162    readonly isTransferReserveAsset: boolean;1163    readonly asTransferReserveAsset: {1164      readonly assets: XcmV1MultiassetMultiAssets;1165      readonly dest: XcmV1MultiLocation;1166      readonly xcm: XcmV2Xcm;1167    } & Struct;1168    readonly isTransact: boolean;1169    readonly asTransact: {1170      readonly originType: XcmV0OriginKind;1171      readonly requireWeightAtMost: Compact<u64>;1172      readonly call: XcmDoubleEncoded;1173    } & Struct;1174    readonly isHrmpNewChannelOpenRequest: boolean;1175    readonly asHrmpNewChannelOpenRequest: {1176      readonly sender: Compact<u32>;1177      readonly maxMessageSize: Compact<u32>;1178      readonly maxCapacity: Compact<u32>;1179    } & Struct;1180    readonly isHrmpChannelAccepted: boolean;1181    readonly asHrmpChannelAccepted: {1182      readonly recipient: Compact<u32>;1183    } & Struct;1184    readonly isHrmpChannelClosing: boolean;1185    readonly asHrmpChannelClosing: {1186      readonly initiator: Compact<u32>;1187      readonly sender: Compact<u32>;1188      readonly recipient: Compact<u32>;1189    } & Struct;1190    readonly isClearOrigin: boolean;1191    readonly isDescendOrigin: boolean;1192    readonly asDescendOrigin: XcmV1MultilocationJunctions;1193    readonly isReportError: boolean;1194    readonly asReportError: {1195      readonly queryId: Compact<u64>;1196      readonly dest: XcmV1MultiLocation;1197      readonly maxResponseWeight: Compact<u64>;1198    } & Struct;1199    readonly isDepositAsset: boolean;1200    readonly asDepositAsset: {1201      readonly assets: XcmV1MultiassetMultiAssetFilter;1202      readonly maxAssets: Compact<u32>;1203      readonly beneficiary: XcmV1MultiLocation;1204    } & Struct;1205    readonly isDepositReserveAsset: boolean;1206    readonly asDepositReserveAsset: {1207      readonly assets: XcmV1MultiassetMultiAssetFilter;1208      readonly maxAssets: Compact<u32>;1209      readonly dest: XcmV1MultiLocation;1210      readonly xcm: XcmV2Xcm;1211    } & Struct;1212    readonly isExchangeAsset: boolean;1213    readonly asExchangeAsset: {1214      readonly give: XcmV1MultiassetMultiAssetFilter;1215      readonly receive: XcmV1MultiassetMultiAssets;1216    } & Struct;1217    readonly isInitiateReserveWithdraw: boolean;1218    readonly asInitiateReserveWithdraw: {1219      readonly assets: XcmV1MultiassetMultiAssetFilter;1220      readonly reserve: XcmV1MultiLocation;1221      readonly xcm: XcmV2Xcm;1222    } & Struct;1223    readonly isInitiateTeleport: boolean;1224    readonly asInitiateTeleport: {1225      readonly assets: XcmV1MultiassetMultiAssetFilter;1226      readonly dest: XcmV1MultiLocation;1227      readonly xcm: XcmV2Xcm;1228    } & Struct;1229    readonly isQueryHolding: boolean;1230    readonly asQueryHolding: {1231      readonly queryId: Compact<u64>;1232      readonly dest: XcmV1MultiLocation;1233      readonly assets: XcmV1MultiassetMultiAssetFilter;1234      readonly maxResponseWeight: Compact<u64>;1235    } & Struct;1236    readonly isBuyExecution: boolean;1237    readonly asBuyExecution: {1238      readonly fees: XcmV1MultiAsset;1239      readonly weightLimit: XcmV2WeightLimit;1240    } & Struct;1241    readonly isRefundSurplus: boolean;1242    readonly isSetErrorHandler: boolean;1243    readonly asSetErrorHandler: XcmV2Xcm;1244    readonly isSetAppendix: boolean;1245    readonly asSetAppendix: XcmV2Xcm;1246    readonly isClearError: boolean;1247    readonly isClaimAsset: boolean;1248    readonly asClaimAsset: {1249      readonly assets: XcmV1MultiassetMultiAssets;1250      readonly ticket: XcmV1MultiLocation;1251    } & Struct;1252    readonly isTrap: boolean;1253    readonly asTrap: Compact<u64>;1254    readonly isSubscribeVersion: boolean;1255    readonly asSubscribeVersion: {1256      readonly queryId: Compact<u64>;1257      readonly maxResponseWeight: Compact<u64>;1258    } & Struct;1259    readonly isUnsubscribeVersion: boolean;1260    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';1261  }12621263  /** @name XcmV2Response (127) */1264  export interface XcmV2Response extends Enum {1265    readonly isNull: boolean;1266    readonly isAssets: boolean;1267    readonly asAssets: XcmV1MultiassetMultiAssets;1268    readonly isExecutionResult: boolean;1269    readonly asExecutionResult: Option<ITuple<[u32, XcmV2TraitsError]>>;1270    readonly isVersion: boolean;1271    readonly asVersion: u32;1272    readonly type: 'Null' | 'Assets' | 'ExecutionResult' | 'Version';1273  }12741275  /** @name XcmV2TraitsError (130) */1276  export interface XcmV2TraitsError extends Enum {1277    readonly isOverflow: boolean;1278    readonly isUnimplemented: boolean;1279    readonly isUntrustedReserveLocation: boolean;1280    readonly isUntrustedTeleportLocation: boolean;1281    readonly isMultiLocationFull: boolean;1282    readonly isMultiLocationNotInvertible: boolean;1283    readonly isBadOrigin: boolean;1284    readonly isInvalidLocation: boolean;1285    readonly isAssetNotFound: boolean;1286    readonly isFailedToTransactAsset: boolean;1287    readonly isNotWithdrawable: boolean;1288    readonly isLocationCannotHold: boolean;1289    readonly isExceedsMaxMessageSize: boolean;1290    readonly isDestinationUnsupported: boolean;1291    readonly isTransport: boolean;1292    readonly isUnroutable: boolean;1293    readonly isUnknownClaim: boolean;1294    readonly isFailedToDecode: boolean;1295    readonly isMaxWeightInvalid: boolean;1296    readonly isNotHoldingFees: boolean;1297    readonly isTooExpensive: boolean;1298    readonly isTrap: boolean;1299    readonly asTrap: u64;1300    readonly isUnhandledXcmVersion: boolean;1301    readonly isWeightLimitReached: boolean;1302    readonly asWeightLimitReached: u64;1303    readonly isBarrier: boolean;1304    readonly isWeightNotComputable: boolean;1305    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';1306  }13071308  /** @name XcmV2WeightLimit (131) */1309  export interface XcmV2WeightLimit extends Enum {1310    readonly isUnlimited: boolean;1311    readonly isLimited: boolean;1312    readonly asLimited: Compact<u64>;1313    readonly type: 'Unlimited' | 'Limited';1314  }13151316  /** @name XcmVersionedMultiAssets (132) */1317  export interface XcmVersionedMultiAssets extends Enum {1318    readonly isV0: boolean;1319    readonly asV0: Vec<XcmV0MultiAsset>;1320    readonly isV1: boolean;1321    readonly asV1: XcmV1MultiassetMultiAssets;1322    readonly type: 'V0' | 'V1';1323  }13241325  /** @name CumulusPalletXcmCall (147) */1326  export type CumulusPalletXcmCall = Null;13271328  /** @name CumulusPalletDmpQueueCall (148) */1329  export interface CumulusPalletDmpQueueCall extends Enum {1330    readonly isServiceOverweight: boolean;1331    readonly asServiceOverweight: {1332      readonly index: u64;1333      readonly weightLimit: u64;1334    } & Struct;1335    readonly type: 'ServiceOverweight';1336  }13371338  /** @name PalletInflationCall (149) */1339  export interface PalletInflationCall extends Enum {1340    readonly isStartInflation: boolean;1341    readonly asStartInflation: {1342      readonly inflationStartRelayBlock: u32;1343    } & Struct;1344    readonly type: 'StartInflation';1345  }13461347  /** @name PalletUniqueCall (150) */1348  export interface PalletUniqueCall extends Enum {1349    readonly isCreateCollection: boolean;1350    readonly asCreateCollection: {1351      readonly collectionName: Vec<u16>;1352      readonly collectionDescription: Vec<u16>;1353      readonly tokenPrefix: Bytes;1354      readonly mode: UpDataStructsCollectionMode;1355    } & Struct;1356    readonly isCreateCollectionEx: boolean;1357    readonly asCreateCollectionEx: {1358      readonly data: UpDataStructsCreateCollectionData;1359    } & Struct;1360    readonly isDestroyCollection: boolean;1361    readonly asDestroyCollection: {1362      readonly collectionId: u32;1363    } & Struct;1364    readonly isAddToAllowList: boolean;1365    readonly asAddToAllowList: {1366      readonly collectionId: u32;1367      readonly address: PalletEvmAccountBasicCrossAccountIdRepr;1368    } & Struct;1369    readonly isRemoveFromAllowList: boolean;1370    readonly asRemoveFromAllowList: {1371      readonly collectionId: u32;1372      readonly address: PalletEvmAccountBasicCrossAccountIdRepr;1373    } & Struct;1374    readonly isSetPublicAccessMode: boolean;1375    readonly asSetPublicAccessMode: {1376      readonly collectionId: u32;1377      readonly mode: UpDataStructsAccessMode;1378    } & Struct;1379    readonly isSetMintPermission: boolean;1380    readonly asSetMintPermission: {1381      readonly collectionId: u32;1382      readonly mintPermission: bool;1383    } & Struct;1384    readonly isChangeCollectionOwner: boolean;1385    readonly asChangeCollectionOwner: {1386      readonly collectionId: u32;1387      readonly newOwner: AccountId32;1388    } & Struct;1389    readonly isAddCollectionAdmin: boolean;1390    readonly asAddCollectionAdmin: {1391      readonly collectionId: u32;1392      readonly newAdminId: PalletEvmAccountBasicCrossAccountIdRepr;1393    } & Struct;1394    readonly isRemoveCollectionAdmin: boolean;1395    readonly asRemoveCollectionAdmin: {1396      readonly collectionId: u32;1397      readonly accountId: PalletEvmAccountBasicCrossAccountIdRepr;1398    } & Struct;1399    readonly isSetCollectionSponsor: boolean;1400    readonly asSetCollectionSponsor: {1401      readonly collectionId: u32;1402      readonly newSponsor: AccountId32;1403    } & Struct;1404    readonly isConfirmSponsorship: boolean;1405    readonly asConfirmSponsorship: {1406      readonly collectionId: u32;1407    } & Struct;1408    readonly isRemoveCollectionSponsor: boolean;1409    readonly asRemoveCollectionSponsor: {1410      readonly collectionId: u32;1411    } & Struct;1412    readonly isCreateItem: boolean;1413    readonly asCreateItem: {1414      readonly collectionId: u32;1415      readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;1416      readonly data: UpDataStructsCreateItemData;1417    } & Struct;1418    readonly isCreateMultipleItems: boolean;1419    readonly asCreateMultipleItems: {1420      readonly collectionId: u32;1421      readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;1422      readonly itemsData: Vec<UpDataStructsCreateItemData>;1423    } & Struct;1424    readonly isSetCollectionProperties: boolean;1425    readonly asSetCollectionProperties: {1426      readonly collectionId: u32;1427      readonly properties: Vec<UpDataStructsProperty>;1428    } & Struct;1429    readonly isDeleteCollectionProperties: boolean;1430    readonly asDeleteCollectionProperties: {1431      readonly collectionId: u32;1432      readonly propertyKeys: Vec<Bytes>;1433    } & Struct;1434    readonly isSetTokenProperties: boolean;1435    readonly asSetTokenProperties: {1436      readonly collectionId: u32;1437      readonly tokenId: u32;1438      readonly properties: Vec<UpDataStructsProperty>;1439    } & Struct;1440    readonly isDeleteTokenProperties: boolean;1441    readonly asDeleteTokenProperties: {1442      readonly collectionId: u32;1443      readonly tokenId: u32;1444      readonly propertyKeys: Vec<Bytes>;1445    } & Struct;1446    readonly isSetPropertyPermissions: boolean;1447    readonly asSetPropertyPermissions: {1448      readonly collectionId: u32;1449      readonly propertyPermissions: Vec<UpDataStructsPropertyKeyPermission>;1450    } & Struct;1451    readonly isCreateMultipleItemsEx: boolean;1452    readonly asCreateMultipleItemsEx: {1453      readonly collectionId: u32;1454      readonly data: UpDataStructsCreateItemExData;1455    } & Struct;1456    readonly isSetTransfersEnabledFlag: boolean;1457    readonly asSetTransfersEnabledFlag: {1458      readonly collectionId: u32;1459      readonly value: bool;1460    } & Struct;1461    readonly isBurnItem: boolean;1462    readonly asBurnItem: {1463      readonly collectionId: u32;1464      readonly itemId: u32;1465      readonly value: u128;1466    } & Struct;1467    readonly isBurnFrom: boolean;1468    readonly asBurnFrom: {1469      readonly collectionId: u32;1470      readonly from: PalletEvmAccountBasicCrossAccountIdRepr;1471      readonly itemId: u32;1472      readonly value: u128;1473    } & Struct;1474    readonly isTransfer: boolean;1475    readonly asTransfer: {1476      readonly recipient: PalletEvmAccountBasicCrossAccountIdRepr;1477      readonly collectionId: u32;1478      readonly itemId: u32;1479      readonly value: u128;1480    } & Struct;1481    readonly isApprove: boolean;1482    readonly asApprove: {1483      readonly spender: PalletEvmAccountBasicCrossAccountIdRepr;1484      readonly collectionId: u32;1485      readonly itemId: u32;1486      readonly amount: u128;1487    } & Struct;1488    readonly isTransferFrom: boolean;1489    readonly asTransferFrom: {1490      readonly from: PalletEvmAccountBasicCrossAccountIdRepr;1491      readonly recipient: PalletEvmAccountBasicCrossAccountIdRepr;1492      readonly collectionId: u32;1493      readonly itemId: u32;1494      readonly value: u128;1495    } & Struct;1496    readonly isSetSchemaVersion: boolean;1497    readonly asSetSchemaVersion: {1498      readonly collectionId: u32;1499      readonly version: UpDataStructsSchemaVersion;1500    } & Struct;1501    readonly isSetOffchainSchema: boolean;1502    readonly asSetOffchainSchema: {1503      readonly collectionId: u32;1504      readonly schema: Bytes;1505    } & Struct;1506    readonly isSetConstOnChainSchema: boolean;1507    readonly asSetConstOnChainSchema: {1508      readonly collectionId: u32;1509      readonly schema: Bytes;1510    } & Struct;1511    readonly isSetCollectionLimits: boolean;1512    readonly asSetCollectionLimits: {1513      readonly collectionId: u32;1514      readonly newLimit: UpDataStructsCollectionLimits;1515    } & Struct;1516    readonly type: 'CreateCollection' | 'CreateCollectionEx' | 'DestroyCollection' | 'AddToAllowList' | 'RemoveFromAllowList' | 'SetPublicAccessMode' | 'SetMintPermission' | 'ChangeCollectionOwner' | 'AddCollectionAdmin' | 'RemoveCollectionAdmin' | 'SetCollectionSponsor' | 'ConfirmSponsorship' | 'RemoveCollectionSponsor' | 'CreateItem' | 'CreateMultipleItems' | 'SetCollectionProperties' | 'DeleteCollectionProperties' | 'SetTokenProperties' | 'DeleteTokenProperties' | 'SetPropertyPermissions' | 'CreateMultipleItemsEx' | 'SetTransfersEnabledFlag' | 'BurnItem' | 'BurnFrom' | 'Transfer' | 'Approve' | 'TransferFrom' | 'SetSchemaVersion' | 'SetOffchainSchema' | 'SetConstOnChainSchema' | 'SetCollectionLimits';1517  }15181519  /** @name UpDataStructsCollectionMode (156) */1520  export interface UpDataStructsCollectionMode extends Enum {1521    readonly isNft: boolean;1522    readonly isFungible: boolean;1523    readonly asFungible: u8;1524    readonly isReFungible: boolean;1525    readonly type: 'Nft' | 'Fungible' | 'ReFungible';1526  }15271528  /** @name UpDataStructsCreateCollectionData (157) */1529  export interface UpDataStructsCreateCollectionData extends Struct {1530    readonly mode: UpDataStructsCollectionMode;1531    readonly access: Option<UpDataStructsAccessMode>;1532    readonly name: Vec<u16>;1533    readonly description: Vec<u16>;1534    readonly tokenPrefix: Bytes;1535    readonly offchainSchema: Bytes;1536    readonly schemaVersion: Option<UpDataStructsSchemaVersion>;1537    readonly pendingSponsor: Option<AccountId32>;1538    readonly limits: Option<UpDataStructsCollectionLimits>;1539    readonly constOnChainSchema: Bytes;1540    readonly tokenPropertyPermissions: Vec<UpDataStructsPropertyKeyPermission>;1541    readonly properties: Vec<UpDataStructsProperty>;1542  }15431544  /** @name UpDataStructsAccessMode (159) */1545  export interface UpDataStructsAccessMode extends Enum {1546    readonly isNormal: boolean;1547    readonly isAllowList: boolean;1548    readonly type: 'Normal' | 'AllowList';1549  }15501551  /** @name UpDataStructsSchemaVersion (162) */1552  export interface UpDataStructsSchemaVersion extends Enum {1553    readonly isImageURL: boolean;1554    readonly isUnique: boolean;1555    readonly type: 'ImageURL' | 'Unique';1556  }15571558  /** @name UpDataStructsCollectionLimits (165) */1559  export interface UpDataStructsCollectionLimits extends Struct {1560    readonly accountTokenOwnershipLimit: Option<u32>;1561    readonly sponsoredDataSize: Option<u32>;1562    readonly sponsoredDataRateLimit: Option<UpDataStructsSponsoringRateLimit>;1563    readonly tokenLimit: Option<u32>;1564    readonly sponsorTransferTimeout: Option<u32>;1565    readonly sponsorApproveTimeout: Option<u32>;1566    readonly ownerCanTransfer: Option<bool>;1567    readonly ownerCanDestroy: Option<bool>;1568    readonly transfersEnabled: Option<bool>;1569    readonly nestingRule: Option<UpDataStructsNestingRule>;1570  }15711572  /** @name UpDataStructsSponsoringRateLimit (167) */1573  export interface UpDataStructsSponsoringRateLimit extends Enum {1574    readonly isSponsoringDisabled: boolean;1575    readonly isBlocks: boolean;1576    readonly asBlocks: u32;1577    readonly type: 'SponsoringDisabled' | 'Blocks';1578  }15791580  /** @name UpDataStructsNestingRule (170) */1581  export interface UpDataStructsNestingRule extends Enum {1582    readonly isDisabled: boolean;1583    readonly isOwner: boolean;1584    readonly isOwnerRestricted: boolean;1585    readonly asOwnerRestricted: BTreeSet<u32>;1586    readonly type: 'Disabled' | 'Owner' | 'OwnerRestricted';1587  }15881589  /** @name UpDataStructsPropertyKeyPermission (177) */1590  export interface UpDataStructsPropertyKeyPermission extends Struct {1591    readonly key: Bytes;1592    readonly permission: UpDataStructsPropertyPermission;1593  }15941595  /** @name UpDataStructsPropertyPermission (179) */1596  export interface UpDataStructsPropertyPermission extends Struct {1597    readonly mutable: bool;1598    readonly collectionAdmin: bool;1599    readonly tokenOwner: bool;1600  }16011602  /** @name UpDataStructsProperty (182) */1603  export interface UpDataStructsProperty extends Struct {1604    readonly key: Bytes;1605    readonly value: Bytes;1606  }16071608  /** @name PalletEvmAccountBasicCrossAccountIdRepr (184) */1609  export interface PalletEvmAccountBasicCrossAccountIdRepr extends Enum {1610    readonly isSubstrate: boolean;1611    readonly asSubstrate: AccountId32;1612    readonly isEthereum: boolean;1613    readonly asEthereum: H160;1614    readonly type: 'Substrate' | 'Ethereum';1615  }16161617  /** @name UpDataStructsCreateItemData (186) */1618  export interface UpDataStructsCreateItemData extends Enum {1619    readonly isNft: boolean;1620    readonly asNft: UpDataStructsCreateNftData;1621    readonly isFungible: boolean;1622    readonly asFungible: UpDataStructsCreateFungibleData;1623    readonly isReFungible: boolean;1624    readonly asReFungible: UpDataStructsCreateReFungibleData;1625    readonly type: 'Nft' | 'Fungible' | 'ReFungible';1626  }16271628  /** @name UpDataStructsCreateNftData (187) */1629  export interface UpDataStructsCreateNftData extends Struct {1630    readonly constData: Bytes;1631    readonly properties: Vec<UpDataStructsProperty>;1632  }16331634  /** @name UpDataStructsCreateFungibleData (189) */1635  export interface UpDataStructsCreateFungibleData extends Struct {1636    readonly value: u128;1637  }16381639  /** @name UpDataStructsCreateReFungibleData (190) */1640  export interface UpDataStructsCreateReFungibleData extends Struct {1641    readonly constData: Bytes;1642    readonly pieces: u128;1643  }16441645  /** @name UpDataStructsCreateItemExData (194) */1646  export interface UpDataStructsCreateItemExData extends Enum {1647    readonly isNft: boolean;1648    readonly asNft: Vec<UpDataStructsCreateNftExData>;1649    readonly isFungible: boolean;1650    readonly asFungible: BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr, u128>;1651    readonly isRefungibleMultipleItems: boolean;1652    readonly asRefungibleMultipleItems: Vec<UpDataStructsCreateRefungibleExData>;1653    readonly isRefungibleMultipleOwners: boolean;1654    readonly asRefungibleMultipleOwners: UpDataStructsCreateRefungibleExData;1655    readonly type: 'Nft' | 'Fungible' | 'RefungibleMultipleItems' | 'RefungibleMultipleOwners';1656  }16571658  /** @name UpDataStructsCreateNftExData (196) */1659  export interface UpDataStructsCreateNftExData extends Struct {1660    readonly constData: Bytes;1661    readonly properties: Vec<UpDataStructsProperty>;1662    readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;1663  }16641665  /** @name UpDataStructsCreateRefungibleExData (203) */1666  export interface UpDataStructsCreateRefungibleExData extends Struct {1667    readonly constData: Bytes;1668    readonly users: BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr, u128>;1669  }16701671  /** @name PalletTemplateTransactionPaymentCall (205) */1672  export type PalletTemplateTransactionPaymentCall = Null;16731674  /** @name PalletStructureCall (206) */1675  export type PalletStructureCall = Null;16761677  /** @name PalletEvmCall (207) */1678  export interface PalletEvmCall extends Enum {1679    readonly isWithdraw: boolean;1680    readonly asWithdraw: {1681      readonly address: H160;1682      readonly value: u128;1683    } & Struct;1684    readonly isCall: boolean;1685    readonly asCall: {1686      readonly source: H160;1687      readonly target: H160;1688      readonly input: Bytes;1689      readonly value: U256;1690      readonly gasLimit: u64;1691      readonly maxFeePerGas: U256;1692      readonly maxPriorityFeePerGas: Option<U256>;1693      readonly nonce: Option<U256>;1694      readonly accessList: Vec<ITuple<[H160, Vec<H256>]>>;1695    } & Struct;1696    readonly isCreate: boolean;1697    readonly asCreate: {1698      readonly source: H160;1699      readonly init: Bytes;1700      readonly value: U256;1701      readonly gasLimit: u64;1702      readonly maxFeePerGas: U256;1703      readonly maxPriorityFeePerGas: Option<U256>;1704      readonly nonce: Option<U256>;1705      readonly accessList: Vec<ITuple<[H160, Vec<H256>]>>;1706    } & Struct;1707    readonly isCreate2: boolean;1708    readonly asCreate2: {1709      readonly source: H160;1710      readonly init: Bytes;1711      readonly salt: H256;1712      readonly value: U256;1713      readonly gasLimit: u64;1714      readonly maxFeePerGas: U256;1715      readonly maxPriorityFeePerGas: Option<U256>;1716      readonly nonce: Option<U256>;1717      readonly accessList: Vec<ITuple<[H160, Vec<H256>]>>;1718    } & Struct;1719    readonly type: 'Withdraw' | 'Call' | 'Create' | 'Create2';1720  }17211722  /** @name PalletEthereumCall (213) */1723  export interface PalletEthereumCall extends Enum {1724    readonly isTransact: boolean;1725    readonly asTransact: {1726      readonly transaction: EthereumTransactionTransactionV2;1727    } & Struct;1728    readonly type: 'Transact';1729  }17301731  /** @name EthereumTransactionTransactionV2 (214) */1732  export interface EthereumTransactionTransactionV2 extends Enum {1733    readonly isLegacy: boolean;1734    readonly asLegacy: EthereumTransactionLegacyTransaction;1735    readonly isEip2930: boolean;1736    readonly asEip2930: EthereumTransactionEip2930Transaction;1737    readonly isEip1559: boolean;1738    readonly asEip1559: EthereumTransactionEip1559Transaction;1739    readonly type: 'Legacy' | 'Eip2930' | 'Eip1559';1740  }17411742  /** @name EthereumTransactionLegacyTransaction (215) */1743  export interface EthereumTransactionLegacyTransaction extends Struct {1744    readonly nonce: U256;1745    readonly gasPrice: U256;1746    readonly gasLimit: U256;1747    readonly action: EthereumTransactionTransactionAction;1748    readonly value: U256;1749    readonly input: Bytes;1750    readonly signature: EthereumTransactionTransactionSignature;1751  }17521753  /** @name EthereumTransactionTransactionAction (216) */1754  export interface EthereumTransactionTransactionAction extends Enum {1755    readonly isCall: boolean;1756    readonly asCall: H160;1757    readonly isCreate: boolean;1758    readonly type: 'Call' | 'Create';1759  }17601761  /** @name EthereumTransactionTransactionSignature (217) */1762  export interface EthereumTransactionTransactionSignature extends Struct {1763    readonly v: u64;1764    readonly r: H256;1765    readonly s: H256;1766  }17671768  /** @name EthereumTransactionEip2930Transaction (219) */1769  export interface EthereumTransactionEip2930Transaction extends Struct {1770    readonly chainId: u64;1771    readonly nonce: U256;1772    readonly gasPrice: U256;1773    readonly gasLimit: U256;1774    readonly action: EthereumTransactionTransactionAction;1775    readonly value: U256;1776    readonly input: Bytes;1777    readonly accessList: Vec<EthereumTransactionAccessListItem>;1778    readonly oddYParity: bool;1779    readonly r: H256;1780    readonly s: H256;1781  }17821783  /** @name EthereumTransactionAccessListItem (221) */1784  export interface EthereumTransactionAccessListItem extends Struct {1785    readonly address: H160;1786    readonly storageKeys: Vec<H256>;1787  }17881789  /** @name EthereumTransactionEip1559Transaction (222) */1790  export interface EthereumTransactionEip1559Transaction extends Struct {1791    readonly chainId: u64;1792    readonly nonce: U256;1793    readonly maxPriorityFeePerGas: U256;1794    readonly maxFeePerGas: U256;1795    readonly gasLimit: U256;1796    readonly action: EthereumTransactionTransactionAction;1797    readonly value: U256;1798    readonly input: Bytes;1799    readonly accessList: Vec<EthereumTransactionAccessListItem>;1800    readonly oddYParity: bool;1801    readonly r: H256;1802    readonly s: H256;1803  }18041805  /** @name PalletEvmMigrationCall (223) */1806  export interface PalletEvmMigrationCall extends Enum {1807    readonly isBegin: boolean;1808    readonly asBegin: {1809      readonly address: H160;1810    } & Struct;1811    readonly isSetData: boolean;1812    readonly asSetData: {1813      readonly address: H160;1814      readonly data: Vec<ITuple<[H256, H256]>>;1815    } & Struct;1816    readonly isFinish: boolean;1817    readonly asFinish: {1818      readonly address: H160;1819      readonly code: Bytes;1820    } & Struct;1821    readonly type: 'Begin' | 'SetData' | 'Finish';1822  }18231824  /** @name PalletSudoEvent (226) */1825  export interface PalletSudoEvent extends Enum {1826    readonly isSudid: boolean;1827    readonly asSudid: {1828      readonly sudoResult: Result<Null, SpRuntimeDispatchError>;1829    } & Struct;1830    readonly isKeyChanged: boolean;1831    readonly asKeyChanged: {1832      readonly oldSudoer: Option<AccountId32>;1833    } & Struct;1834    readonly isSudoAsDone: boolean;1835    readonly asSudoAsDone: {1836      readonly sudoResult: Result<Null, SpRuntimeDispatchError>;1837    } & Struct;1838    readonly type: 'Sudid' | 'KeyChanged' | 'SudoAsDone';1839  }18401841  /** @name SpRuntimeDispatchError (228) */1842  export interface SpRuntimeDispatchError extends Enum {1843    readonly isOther: boolean;1844    readonly isCannotLookup: boolean;1845    readonly isBadOrigin: boolean;1846    readonly isModule: boolean;1847    readonly asModule: SpRuntimeModuleError;1848    readonly isConsumerRemaining: boolean;1849    readonly isNoProviders: boolean;1850    readonly isTooManyConsumers: boolean;1851    readonly isToken: boolean;1852    readonly asToken: SpRuntimeTokenError;1853    readonly isArithmetic: boolean;1854    readonly asArithmetic: SpRuntimeArithmeticError;1855    readonly isTransactional: boolean;1856    readonly asTransactional: SpRuntimeTransactionalError;1857    readonly type: 'Other' | 'CannotLookup' | 'BadOrigin' | 'Module' | 'ConsumerRemaining' | 'NoProviders' | 'TooManyConsumers' | 'Token' | 'Arithmetic' | 'Transactional';1858  }18591860  /** @name SpRuntimeModuleError (229) */1861  export interface SpRuntimeModuleError extends Struct {1862    readonly index: u8;1863    readonly error: U8aFixed;1864  }18651866  /** @name SpRuntimeTokenError (230) */1867  export interface SpRuntimeTokenError extends Enum {1868    readonly isNoFunds: boolean;1869    readonly isWouldDie: boolean;1870    readonly isBelowMinimum: boolean;1871    readonly isCannotCreate: boolean;1872    readonly isUnknownAsset: boolean;1873    readonly isFrozen: boolean;1874    readonly isUnsupported: boolean;1875    readonly type: 'NoFunds' | 'WouldDie' | 'BelowMinimum' | 'CannotCreate' | 'UnknownAsset' | 'Frozen' | 'Unsupported';1876  }18771878  /** @name SpRuntimeArithmeticError (231) */1879  export interface SpRuntimeArithmeticError extends Enum {1880    readonly isUnderflow: boolean;1881    readonly isOverflow: boolean;1882    readonly isDivisionByZero: boolean;1883    readonly type: 'Underflow' | 'Overflow' | 'DivisionByZero';1884  }18851886  /** @name SpRuntimeTransactionalError (232) */1887  export interface SpRuntimeTransactionalError extends Enum {1888    readonly isLimitReached: boolean;1889    readonly isNoLayer: boolean;1890    readonly type: 'LimitReached' | 'NoLayer';1891  }18921893  /** @name PalletSudoError (233) */1894  export interface PalletSudoError extends Enum {1895    readonly isRequireSudo: boolean;1896    readonly type: 'RequireSudo';1897  }18981899  /** @name FrameSystemAccountInfo (234) */1900  export interface FrameSystemAccountInfo extends Struct {1901    readonly nonce: u32;1902    readonly consumers: u32;1903    readonly providers: u32;1904    readonly sufficients: u32;1905    readonly data: PalletBalancesAccountData;1906  }19071908  /** @name FrameSupportWeightsPerDispatchClassU64 (235) */1909  export interface FrameSupportWeightsPerDispatchClassU64 extends Struct {1910    readonly normal: u64;1911    readonly operational: u64;1912    readonly mandatory: u64;1913  }19141915  /** @name SpRuntimeDigest (236) */1916  export interface SpRuntimeDigest extends Struct {1917    readonly logs: Vec<SpRuntimeDigestDigestItem>;1918  }19191920  /** @name SpRuntimeDigestDigestItem (238) */1921  export interface SpRuntimeDigestDigestItem extends Enum {1922    readonly isOther: boolean;1923    readonly asOther: Bytes;1924    readonly isConsensus: boolean;1925    readonly asConsensus: ITuple<[U8aFixed, Bytes]>;1926    readonly isSeal: boolean;1927    readonly asSeal: ITuple<[U8aFixed, Bytes]>;1928    readonly isPreRuntime: boolean;1929    readonly asPreRuntime: ITuple<[U8aFixed, Bytes]>;1930    readonly isRuntimeEnvironmentUpdated: boolean;1931    readonly type: 'Other' | 'Consensus' | 'Seal' | 'PreRuntime' | 'RuntimeEnvironmentUpdated';1932  }19331934  /** @name FrameSystemEventRecord (240) */1935  export interface FrameSystemEventRecord extends Struct {1936    readonly phase: FrameSystemPhase;1937    readonly event: Event;1938    readonly topics: Vec<H256>;1939  }19401941  /** @name FrameSystemEvent (242) */1942  export interface FrameSystemEvent extends Enum {1943    readonly isExtrinsicSuccess: boolean;1944    readonly asExtrinsicSuccess: {1945      readonly dispatchInfo: FrameSupportWeightsDispatchInfo;1946    } & Struct;1947    readonly isExtrinsicFailed: boolean;1948    readonly asExtrinsicFailed: {1949      readonly dispatchError: SpRuntimeDispatchError;1950      readonly dispatchInfo: FrameSupportWeightsDispatchInfo;1951    } & Struct;1952    readonly isCodeUpdated: boolean;1953    readonly isNewAccount: boolean;1954    readonly asNewAccount: {1955      readonly account: AccountId32;1956    } & Struct;1957    readonly isKilledAccount: boolean;1958    readonly asKilledAccount: {1959      readonly account: AccountId32;1960    } & Struct;1961    readonly isRemarked: boolean;1962    readonly asRemarked: {1963      readonly sender: AccountId32;1964      readonly hash_: H256;1965    } & Struct;1966    readonly type: 'ExtrinsicSuccess' | 'ExtrinsicFailed' | 'CodeUpdated' | 'NewAccount' | 'KilledAccount' | 'Remarked';1967  }19681969  /** @name FrameSupportWeightsDispatchInfo (243) */1970  export interface FrameSupportWeightsDispatchInfo extends Struct {1971    readonly weight: u64;1972    readonly class: FrameSupportWeightsDispatchClass;1973    readonly paysFee: FrameSupportWeightsPays;1974  }19751976  /** @name FrameSupportWeightsDispatchClass (244) */1977  export interface FrameSupportWeightsDispatchClass extends Enum {1978    readonly isNormal: boolean;1979    readonly isOperational: boolean;1980    readonly isMandatory: boolean;1981    readonly type: 'Normal' | 'Operational' | 'Mandatory';1982  }19831984  /** @name FrameSupportWeightsPays (245) */1985  export interface FrameSupportWeightsPays extends Enum {1986    readonly isYes: boolean;1987    readonly isNo: boolean;1988    readonly type: 'Yes' | 'No';1989  }19901991  /** @name OrmlVestingModuleEvent (246) */1992  export interface OrmlVestingModuleEvent extends Enum {1993    readonly isVestingScheduleAdded: boolean;1994    readonly asVestingScheduleAdded: {1995      readonly from: AccountId32;1996      readonly to: AccountId32;1997      readonly vestingSchedule: OrmlVestingVestingSchedule;1998    } & Struct;1999    readonly isClaimed: boolean;2000    readonly asClaimed: {2001      readonly who: AccountId32;2002      readonly amount: u128;2003    } & Struct;2004    readonly isVestingSchedulesUpdated: boolean;2005    readonly asVestingSchedulesUpdated: {2006      readonly who: AccountId32;2007    } & Struct;2008    readonly type: 'VestingScheduleAdded' | 'Claimed' | 'VestingSchedulesUpdated';2009  }20102011  /** @name CumulusPalletXcmpQueueEvent (247) */2012  export interface CumulusPalletXcmpQueueEvent extends Enum {2013    readonly isSuccess: boolean;2014    readonly asSuccess: Option<H256>;2015    readonly isFail: boolean;2016    readonly asFail: ITuple<[Option<H256>, XcmV2TraitsError]>;2017    readonly isBadVersion: boolean;2018    readonly asBadVersion: Option<H256>;2019    readonly isBadFormat: boolean;2020    readonly asBadFormat: Option<H256>;2021    readonly isUpwardMessageSent: boolean;2022    readonly asUpwardMessageSent: Option<H256>;2023    readonly isXcmpMessageSent: boolean;2024    readonly asXcmpMessageSent: Option<H256>;2025    readonly isOverweightEnqueued: boolean;2026    readonly asOverweightEnqueued: ITuple<[u32, u32, u64, u64]>;2027    readonly isOverweightServiced: boolean;2028    readonly asOverweightServiced: ITuple<[u64, u64]>;2029    readonly type: 'Success' | 'Fail' | 'BadVersion' | 'BadFormat' | 'UpwardMessageSent' | 'XcmpMessageSent' | 'OverweightEnqueued' | 'OverweightServiced';2030  }20312032  /** @name PalletXcmEvent (248) */2033  export interface PalletXcmEvent extends Enum {2034    readonly isAttempted: boolean;2035    readonly asAttempted: XcmV2TraitsOutcome;2036    readonly isSent: boolean;2037    readonly asSent: ITuple<[XcmV1MultiLocation, XcmV1MultiLocation, XcmV2Xcm]>;2038    readonly isUnexpectedResponse: boolean;2039    readonly asUnexpectedResponse: ITuple<[XcmV1MultiLocation, u64]>;2040    readonly isResponseReady: boolean;2041    readonly asResponseReady: ITuple<[u64, XcmV2Response]>;2042    readonly isNotified: boolean;2043    readonly asNotified: ITuple<[u64, u8, u8]>;2044    readonly isNotifyOverweight: boolean;2045    readonly asNotifyOverweight: ITuple<[u64, u8, u8, u64, u64]>;2046    readonly isNotifyDispatchError: boolean;2047    readonly asNotifyDispatchError: ITuple<[u64, u8, u8]>;2048    readonly isNotifyDecodeFailed: boolean;2049    readonly asNotifyDecodeFailed: ITuple<[u64, u8, u8]>;2050    readonly isInvalidResponder: boolean;2051    readonly asInvalidResponder: ITuple<[XcmV1MultiLocation, u64, Option<XcmV1MultiLocation>]>;2052    readonly isInvalidResponderVersion: boolean;2053    readonly asInvalidResponderVersion: ITuple<[XcmV1MultiLocation, u64]>;2054    readonly isResponseTaken: boolean;2055    readonly asResponseTaken: u64;2056    readonly isAssetsTrapped: boolean;2057    readonly asAssetsTrapped: ITuple<[H256, XcmV1MultiLocation, XcmVersionedMultiAssets]>;2058    readonly isVersionChangeNotified: boolean;2059    readonly asVersionChangeNotified: ITuple<[XcmV1MultiLocation, u32]>;2060    readonly isSupportedVersionChanged: boolean;2061    readonly asSupportedVersionChanged: ITuple<[XcmV1MultiLocation, u32]>;2062    readonly isNotifyTargetSendFail: boolean;2063    readonly asNotifyTargetSendFail: ITuple<[XcmV1MultiLocation, u64, XcmV2TraitsError]>;2064    readonly isNotifyTargetMigrationFail: boolean;2065    readonly asNotifyTargetMigrationFail: ITuple<[XcmVersionedMultiLocation, u64]>;2066    readonly type: 'Attempted' | 'Sent' | 'UnexpectedResponse' | 'ResponseReady' | 'Notified' | 'NotifyOverweight' | 'NotifyDispatchError' | 'NotifyDecodeFailed' | 'InvalidResponder' | 'InvalidResponderVersion' | 'ResponseTaken' | 'AssetsTrapped' | 'VersionChangeNotified' | 'SupportedVersionChanged' | 'NotifyTargetSendFail' | 'NotifyTargetMigrationFail';2067  }20682069  /** @name XcmV2TraitsOutcome (249) */2070  export interface XcmV2TraitsOutcome extends Enum {2071    readonly isComplete: boolean;2072    readonly asComplete: u64;2073    readonly isIncomplete: boolean;2074    readonly asIncomplete: ITuple<[u64, XcmV2TraitsError]>;2075    readonly isError: boolean;2076    readonly asError: XcmV2TraitsError;2077    readonly type: 'Complete' | 'Incomplete' | 'Error';2078  }20792080  /** @name CumulusPalletXcmEvent (251) */2081  export interface CumulusPalletXcmEvent extends Enum {2082    readonly isInvalidFormat: boolean;2083    readonly asInvalidFormat: U8aFixed;2084    readonly isUnsupportedVersion: boolean;2085    readonly asUnsupportedVersion: U8aFixed;2086    readonly isExecutedDownward: boolean;2087    readonly asExecutedDownward: ITuple<[U8aFixed, XcmV2TraitsOutcome]>;2088    readonly type: 'InvalidFormat' | 'UnsupportedVersion' | 'ExecutedDownward';2089  }20902091  /** @name CumulusPalletDmpQueueEvent (252) */2092  export interface CumulusPalletDmpQueueEvent extends Enum {2093    readonly isInvalidFormat: boolean;2094    readonly asInvalidFormat: U8aFixed;2095    readonly isUnsupportedVersion: boolean;2096    readonly asUnsupportedVersion: U8aFixed;2097    readonly isExecutedDownward: boolean;2098    readonly asExecutedDownward: ITuple<[U8aFixed, XcmV2TraitsOutcome]>;2099    readonly isWeightExhausted: boolean;2100    readonly asWeightExhausted: ITuple<[U8aFixed, u64, u64]>;2101    readonly isOverweightEnqueued: boolean;2102    readonly asOverweightEnqueued: ITuple<[U8aFixed, u64, u64]>;2103    readonly isOverweightServiced: boolean;2104    readonly asOverweightServiced: ITuple<[u64, u64]>;2105    readonly type: 'InvalidFormat' | 'UnsupportedVersion' | 'ExecutedDownward' | 'WeightExhausted' | 'OverweightEnqueued' | 'OverweightServiced';2106  }21072108  /** @name PalletUniqueRawEvent (253) */2109  export interface PalletUniqueRawEvent extends Enum {2110    readonly isCollectionSponsorRemoved: boolean;2111    readonly asCollectionSponsorRemoved: u32;2112    readonly isCollectionAdminAdded: boolean;2113    readonly asCollectionAdminAdded: ITuple<[u32, PalletEvmAccountBasicCrossAccountIdRepr]>;2114    readonly isCollectionOwnedChanged: boolean;2115    readonly asCollectionOwnedChanged: ITuple<[u32, AccountId32]>;2116    readonly isCollectionSponsorSet: boolean;2117    readonly asCollectionSponsorSet: ITuple<[u32, AccountId32]>;2118    readonly isConstOnChainSchemaSet: boolean;2119    readonly asConstOnChainSchemaSet: u32;2120    readonly isSponsorshipConfirmed: boolean;2121    readonly asSponsorshipConfirmed: ITuple<[u32, AccountId32]>;2122    readonly isCollectionAdminRemoved: boolean;2123    readonly asCollectionAdminRemoved: ITuple<[u32, PalletEvmAccountBasicCrossAccountIdRepr]>;2124    readonly isAllowListAddressRemoved: boolean;2125    readonly asAllowListAddressRemoved: ITuple<[u32, PalletEvmAccountBasicCrossAccountIdRepr]>;2126    readonly isAllowListAddressAdded: boolean;2127    readonly asAllowListAddressAdded: ITuple<[u32, PalletEvmAccountBasicCrossAccountIdRepr]>;2128    readonly isCollectionLimitSet: boolean;2129    readonly asCollectionLimitSet: u32;2130    readonly isMintPermissionSet: boolean;2131    readonly asMintPermissionSet: u32;2132    readonly isOffchainSchemaSet: boolean;2133    readonly asOffchainSchemaSet: u32;2134    readonly isPublicAccessModeSet: boolean;2135    readonly asPublicAccessModeSet: ITuple<[u32, UpDataStructsAccessMode]>;2136    readonly isSchemaVersionSet: boolean;2137    readonly asSchemaVersionSet: u32;2138    readonly type: 'CollectionSponsorRemoved' | 'CollectionAdminAdded' | 'CollectionOwnedChanged' | 'CollectionSponsorSet' | 'ConstOnChainSchemaSet' | 'SponsorshipConfirmed' | 'CollectionAdminRemoved' | 'AllowListAddressRemoved' | 'AllowListAddressAdded' | 'CollectionLimitSet' | 'MintPermissionSet' | 'OffchainSchemaSet' | 'PublicAccessModeSet' | 'SchemaVersionSet';2139  }21402141  /** @name PalletCommonEvent (254) */2142  export interface PalletCommonEvent extends Enum {2143    readonly isCollectionCreated: boolean;2144    readonly asCollectionCreated: ITuple<[u32, u8, AccountId32]>;2145    readonly isCollectionDestroyed: boolean;2146    readonly asCollectionDestroyed: u32;2147    readonly isItemCreated: boolean;2148    readonly asItemCreated: ITuple<[u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, u128]>;2149    readonly isItemDestroyed: boolean;2150    readonly asItemDestroyed: ITuple<[u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, u128]>;2151    readonly isTransfer: boolean;2152    readonly asTransfer: ITuple<[u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr, u128]>;2153    readonly isApproved: boolean;2154    readonly asApproved: ITuple<[u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr, u128]>;2155    readonly isCollectionPropertySet: boolean;2156    readonly asCollectionPropertySet: ITuple<[u32, Bytes]>;2157    readonly isCollectionPropertyDeleted: boolean;2158    readonly asCollectionPropertyDeleted: ITuple<[u32, Bytes]>;2159    readonly isTokenPropertySet: boolean;2160    readonly asTokenPropertySet: ITuple<[u32, u32, Bytes]>;2161    readonly isTokenPropertyDeleted: boolean;2162    readonly asTokenPropertyDeleted: ITuple<[u32, u32, Bytes]>;2163    readonly isPropertyPermissionSet: boolean;2164    readonly asPropertyPermissionSet: ITuple<[u32, Bytes]>;2165    readonly type: 'CollectionCreated' | 'CollectionDestroyed' | 'ItemCreated' | 'ItemDestroyed' | 'Transfer' | 'Approved' | 'CollectionPropertySet' | 'CollectionPropertyDeleted' | 'TokenPropertySet' | 'TokenPropertyDeleted' | 'PropertyPermissionSet';2166  }21672168  /** @name PalletStructureEvent (255) */2169  export interface PalletStructureEvent extends Enum {2170    readonly isExecuted: boolean;2171    readonly asExecuted: Result<Null, SpRuntimeDispatchError>;2172    readonly type: 'Executed';2173  }21742175  /** @name PalletEvmEvent (256) */2176  export interface PalletEvmEvent extends Enum {2177    readonly isLog: boolean;2178    readonly asLog: EthereumLog;2179    readonly isCreated: boolean;2180    readonly asCreated: H160;2181    readonly isCreatedFailed: boolean;2182    readonly asCreatedFailed: H160;2183    readonly isExecuted: boolean;2184    readonly asExecuted: H160;2185    readonly isExecutedFailed: boolean;2186    readonly asExecutedFailed: H160;2187    readonly isBalanceDeposit: boolean;2188    readonly asBalanceDeposit: ITuple<[AccountId32, H160, U256]>;2189    readonly isBalanceWithdraw: boolean;2190    readonly asBalanceWithdraw: ITuple<[AccountId32, H160, U256]>;2191    readonly type: 'Log' | 'Created' | 'CreatedFailed' | 'Executed' | 'ExecutedFailed' | 'BalanceDeposit' | 'BalanceWithdraw';2192  }21932194  /** @name EthereumLog (257) */2195  export interface EthereumLog extends Struct {2196    readonly address: H160;2197    readonly topics: Vec<H256>;2198    readonly data: Bytes;2199  }22002201  /** @name PalletEthereumEvent (258) */2202  export interface PalletEthereumEvent extends Enum {2203    readonly isExecuted: boolean;2204    readonly asExecuted: ITuple<[H160, H160, H256, EvmCoreErrorExitReason]>;2205    readonly type: 'Executed';2206  }22072208  /** @name EvmCoreErrorExitReason (259) */2209  export interface EvmCoreErrorExitReason extends Enum {2210    readonly isSucceed: boolean;2211    readonly asSucceed: EvmCoreErrorExitSucceed;2212    readonly isError: boolean;2213    readonly asError: EvmCoreErrorExitError;2214    readonly isRevert: boolean;2215    readonly asRevert: EvmCoreErrorExitRevert;2216    readonly isFatal: boolean;2217    readonly asFatal: EvmCoreErrorExitFatal;2218    readonly type: 'Succeed' | 'Error' | 'Revert' | 'Fatal';2219  }22202221  /** @name EvmCoreErrorExitSucceed (260) */2222  export interface EvmCoreErrorExitSucceed extends Enum {2223    readonly isStopped: boolean;2224    readonly isReturned: boolean;2225    readonly isSuicided: boolean;2226    readonly type: 'Stopped' | 'Returned' | 'Suicided';2227  }22282229  /** @name EvmCoreErrorExitError (261) */2230  export interface EvmCoreErrorExitError extends Enum {2231    readonly isStackUnderflow: boolean;2232    readonly isStackOverflow: boolean;2233    readonly isInvalidJump: boolean;2234    readonly isInvalidRange: boolean;2235    readonly isDesignatedInvalid: boolean;2236    readonly isCallTooDeep: boolean;2237    readonly isCreateCollision: boolean;2238    readonly isCreateContractLimit: boolean;2239    readonly isOutOfOffset: boolean;2240    readonly isOutOfGas: boolean;2241    readonly isOutOfFund: boolean;2242    readonly isPcUnderflow: boolean;2243    readonly isCreateEmpty: boolean;2244    readonly isOther: boolean;2245    readonly asOther: Text;2246    readonly isInvalidCode: boolean;2247    readonly type: 'StackUnderflow' | 'StackOverflow' | 'InvalidJump' | 'InvalidRange' | 'DesignatedInvalid' | 'CallTooDeep' | 'CreateCollision' | 'CreateContractLimit' | 'OutOfOffset' | 'OutOfGas' | 'OutOfFund' | 'PcUnderflow' | 'CreateEmpty' | 'Other' | 'InvalidCode';2248  }22492250  /** @name EvmCoreErrorExitRevert (264) */2251  export interface EvmCoreErrorExitRevert extends Enum {2252    readonly isReverted: boolean;2253    readonly type: 'Reverted';2254  }22552256  /** @name EvmCoreErrorExitFatal (265) */2257  export interface EvmCoreErrorExitFatal extends Enum {2258    readonly isNotSupported: boolean;2259    readonly isUnhandledInterrupt: boolean;2260    readonly isCallErrorAsFatal: boolean;2261    readonly asCallErrorAsFatal: EvmCoreErrorExitError;2262    readonly isOther: boolean;2263    readonly asOther: Text;2264    readonly type: 'NotSupported' | 'UnhandledInterrupt' | 'CallErrorAsFatal' | 'Other';2265  }22662267  /** @name FrameSystemPhase (266) */2268  export interface FrameSystemPhase extends Enum {2269    readonly isApplyExtrinsic: boolean;2270    readonly asApplyExtrinsic: u32;2271    readonly isFinalization: boolean;2272    readonly isInitialization: boolean;2273    readonly type: 'ApplyExtrinsic' | 'Finalization' | 'Initialization';2274  }22752276  /** @name FrameSystemLastRuntimeUpgradeInfo (268) */2277  export interface FrameSystemLastRuntimeUpgradeInfo extends Struct {2278    readonly specVersion: Compact<u32>;2279    readonly specName: Text;2280  }22812282  /** @name FrameSystemLimitsBlockWeights (269) */2283  export interface FrameSystemLimitsBlockWeights extends Struct {2284    readonly baseBlock: u64;2285    readonly maxBlock: u64;2286    readonly perClass: FrameSupportWeightsPerDispatchClassWeightsPerClass;2287  }22882289  /** @name FrameSupportWeightsPerDispatchClassWeightsPerClass (270) */2290  export interface FrameSupportWeightsPerDispatchClassWeightsPerClass extends Struct {2291    readonly normal: FrameSystemLimitsWeightsPerClass;2292    readonly operational: FrameSystemLimitsWeightsPerClass;2293    readonly mandatory: FrameSystemLimitsWeightsPerClass;2294  }22952296  /** @name FrameSystemLimitsWeightsPerClass (271) */2297  export interface FrameSystemLimitsWeightsPerClass extends Struct {2298    readonly baseExtrinsic: u64;2299    readonly maxExtrinsic: Option<u64>;2300    readonly maxTotal: Option<u64>;2301    readonly reserved: Option<u64>;2302  }23032304  /** @name FrameSystemLimitsBlockLength (273) */2305  export interface FrameSystemLimitsBlockLength extends Struct {2306    readonly max: FrameSupportWeightsPerDispatchClassU32;2307  }23082309  /** @name FrameSupportWeightsPerDispatchClassU32 (274) */2310  export interface FrameSupportWeightsPerDispatchClassU32 extends Struct {2311    readonly normal: u32;2312    readonly operational: u32;2313    readonly mandatory: u32;2314  }23152316  /** @name FrameSupportWeightsRuntimeDbWeight (275) */2317  export interface FrameSupportWeightsRuntimeDbWeight extends Struct {2318    readonly read: u64;2319    readonly write: u64;2320  }23212322  /** @name SpVersionRuntimeVersion (276) */2323  export interface SpVersionRuntimeVersion extends Struct {2324    readonly specName: Text;2325    readonly implName: Text;2326    readonly authoringVersion: u32;2327    readonly specVersion: u32;2328    readonly implVersion: u32;2329    readonly apis: Vec<ITuple<[U8aFixed, u32]>>;2330    readonly transactionVersion: u32;2331    readonly stateVersion: u8;2332  }23332334  /** @name FrameSystemError (280) */2335  export interface FrameSystemError extends Enum {2336    readonly isInvalidSpecName: boolean;2337    readonly isSpecVersionNeedsToIncrease: boolean;2338    readonly isFailedToExtractRuntimeVersion: boolean;2339    readonly isNonDefaultComposite: boolean;2340    readonly isNonZeroRefCount: boolean;2341    readonly isCallFiltered: boolean;2342    readonly type: 'InvalidSpecName' | 'SpecVersionNeedsToIncrease' | 'FailedToExtractRuntimeVersion' | 'NonDefaultComposite' | 'NonZeroRefCount' | 'CallFiltered';2343  }23442345  /** @name OrmlVestingModuleError (282) */2346  export interface OrmlVestingModuleError extends Enum {2347    readonly isZeroVestingPeriod: boolean;2348    readonly isZeroVestingPeriodCount: boolean;2349    readonly isInsufficientBalanceToLock: boolean;2350    readonly isTooManyVestingSchedules: boolean;2351    readonly isAmountLow: boolean;2352    readonly isMaxVestingSchedulesExceeded: boolean;2353    readonly type: 'ZeroVestingPeriod' | 'ZeroVestingPeriodCount' | 'InsufficientBalanceToLock' | 'TooManyVestingSchedules' | 'AmountLow' | 'MaxVestingSchedulesExceeded';2354  }23552356  /** @name CumulusPalletXcmpQueueInboundChannelDetails (284) */2357  export interface CumulusPalletXcmpQueueInboundChannelDetails extends Struct {2358    readonly sender: u32;2359    readonly state: CumulusPalletXcmpQueueInboundState;2360    readonly messageMetadata: Vec<ITuple<[u32, PolkadotParachainPrimitivesXcmpMessageFormat]>>;2361  }23622363  /** @name CumulusPalletXcmpQueueInboundState (285) */2364  export interface CumulusPalletXcmpQueueInboundState extends Enum {2365    readonly isOk: boolean;2366    readonly isSuspended: boolean;2367    readonly type: 'Ok' | 'Suspended';2368  }23692370  /** @name PolkadotParachainPrimitivesXcmpMessageFormat (288) */2371  export interface PolkadotParachainPrimitivesXcmpMessageFormat extends Enum {2372    readonly isConcatenatedVersionedXcm: boolean;2373    readonly isConcatenatedEncodedBlob: boolean;2374    readonly isSignals: boolean;2375    readonly type: 'ConcatenatedVersionedXcm' | 'ConcatenatedEncodedBlob' | 'Signals';2376  }23772378  /** @name CumulusPalletXcmpQueueOutboundChannelDetails (291) */2379  export interface CumulusPalletXcmpQueueOutboundChannelDetails extends Struct {2380    readonly recipient: u32;2381    readonly state: CumulusPalletXcmpQueueOutboundState;2382    readonly signalsExist: bool;2383    readonly firstIndex: u16;2384    readonly lastIndex: u16;2385  }23862387  /** @name CumulusPalletXcmpQueueOutboundState (292) */2388  export interface CumulusPalletXcmpQueueOutboundState extends Enum {2389    readonly isOk: boolean;2390    readonly isSuspended: boolean;2391    readonly type: 'Ok' | 'Suspended';2392  }23932394  /** @name CumulusPalletXcmpQueueQueueConfigData (294) */2395  export interface CumulusPalletXcmpQueueQueueConfigData extends Struct {2396    readonly suspendThreshold: u32;2397    readonly dropThreshold: u32;2398    readonly resumeThreshold: u32;2399    readonly thresholdWeight: u64;2400    readonly weightRestrictDecay: u64;2401    readonly xcmpMaxIndividualWeight: u64;2402  }24032404  /** @name CumulusPalletXcmpQueueError (296) */2405  export interface CumulusPalletXcmpQueueError extends Enum {2406    readonly isFailedToSend: boolean;2407    readonly isBadXcmOrigin: boolean;2408    readonly isBadXcm: boolean;2409    readonly isBadOverweightIndex: boolean;2410    readonly isWeightOverLimit: boolean;2411    readonly type: 'FailedToSend' | 'BadXcmOrigin' | 'BadXcm' | 'BadOverweightIndex' | 'WeightOverLimit';2412  }24132414  /** @name PalletXcmError (297) */2415  export interface PalletXcmError extends Enum {2416    readonly isUnreachable: boolean;2417    readonly isSendFailure: boolean;2418    readonly isFiltered: boolean;2419    readonly isUnweighableMessage: boolean;2420    readonly isDestinationNotInvertible: boolean;2421    readonly isEmpty: boolean;2422    readonly isCannotReanchor: boolean;2423    readonly isTooManyAssets: boolean;2424    readonly isInvalidOrigin: boolean;2425    readonly isBadVersion: boolean;2426    readonly isBadLocation: boolean;2427    readonly isNoSubscription: boolean;2428    readonly isAlreadySubscribed: boolean;2429    readonly type: 'Unreachable' | 'SendFailure' | 'Filtered' | 'UnweighableMessage' | 'DestinationNotInvertible' | 'Empty' | 'CannotReanchor' | 'TooManyAssets' | 'InvalidOrigin' | 'BadVersion' | 'BadLocation' | 'NoSubscription' | 'AlreadySubscribed';2430  }24312432  /** @name CumulusPalletXcmError (298) */2433  export type CumulusPalletXcmError = Null;24342435  /** @name CumulusPalletDmpQueueConfigData (299) */2436  export interface CumulusPalletDmpQueueConfigData extends Struct {2437    readonly maxIndividual: u64;2438  }24392440  /** @name CumulusPalletDmpQueuePageIndexData (300) */2441  export interface CumulusPalletDmpQueuePageIndexData extends Struct {2442    readonly beginUsed: u32;2443    readonly endUsed: u32;2444    readonly overweightCount: u64;2445  }24462447  /** @name CumulusPalletDmpQueueError (303) */2448  export interface CumulusPalletDmpQueueError extends Enum {2449    readonly isUnknown: boolean;2450    readonly isOverLimit: boolean;2451    readonly type: 'Unknown' | 'OverLimit';2452  }24532454  /** @name PalletUniqueError (307) */2455  export interface PalletUniqueError extends Enum {2456    readonly isCollectionDecimalPointLimitExceeded: boolean;2457    readonly isConfirmUnsetSponsorFail: boolean;2458    readonly isEmptyArgument: boolean;2459    readonly type: 'CollectionDecimalPointLimitExceeded' | 'ConfirmUnsetSponsorFail' | 'EmptyArgument';2460  }24612462  /** @name UpDataStructsCollection (308) */2463  export interface UpDataStructsCollection extends Struct {2464    readonly owner: AccountId32;2465    readonly mode: UpDataStructsCollectionMode;2466    readonly access: UpDataStructsAccessMode;2467    readonly name: Vec<u16>;2468    readonly description: Vec<u16>;2469    readonly tokenPrefix: Bytes;2470    readonly mintMode: bool;2471    readonly schemaVersion: UpDataStructsSchemaVersion;2472    readonly sponsorship: UpDataStructsSponsorshipState;2473    readonly limits: UpDataStructsCollectionLimits;2474  }24752476  /** @name UpDataStructsSponsorshipState (309) */2477  export interface UpDataStructsSponsorshipState extends Enum {2478    readonly isDisabled: boolean;2479    readonly isUnconfirmed: boolean;2480    readonly asUnconfirmed: AccountId32;2481    readonly isConfirmed: boolean;2482    readonly asConfirmed: AccountId32;2483    readonly type: 'Disabled' | 'Unconfirmed' | 'Confirmed';2484  }24852486  /** @name UpDataStructsProperties (310) */2487  export interface UpDataStructsProperties extends Struct {2488    readonly map: UpDataStructsPropertiesMapBoundedVec;2489    readonly consumedSpace: u32;2490    readonly spaceLimit: u32;2491  }24922493  /** @name UpDataStructsPropertiesMapBoundedVec (311) */2494  export interface UpDataStructsPropertiesMapBoundedVec extends BTreeMap<Bytes, Bytes> {}24952496  /** @name UpDataStructsPropertiesMapPropertyPermission (316) */2497  export interface UpDataStructsPropertiesMapPropertyPermission extends BTreeMap<Bytes, UpDataStructsPropertyPermission> {}24982499  /** @name UpDataStructsCollectionField (322) */2500  export interface UpDataStructsCollectionField extends Enum {2501    readonly isConstOnChainSchema: boolean;2502    readonly isOffchainSchema: boolean;2503    readonly type: 'ConstOnChainSchema' | 'OffchainSchema';2504  }25052506  /** @name UpDataStructsCollectionStats (325) */2507  export interface UpDataStructsCollectionStats extends Struct {2508    readonly created: u32;2509    readonly destroyed: u32;2510    readonly alive: u32;2511  }25122513  /** @name PhantomTypeUpDataStructsTokenData (326) */2514  export interface PhantomTypeUpDataStructsTokenData extends Vec<UpDataStructsTokenData> {}25152516  /** @name UpDataStructsTokenData (327) */2517  export interface UpDataStructsTokenData extends Struct {2518    readonly constData: Bytes;2519    readonly properties: Vec<UpDataStructsProperty>;2520    readonly owner: Option<PalletEvmAccountBasicCrossAccountIdRepr>;2521  }25222523  /** @name PhantomTypeUpDataStructsRpcCollection (330) */2524  export interface PhantomTypeUpDataStructsRpcCollection extends Vec<UpDataStructsRpcCollection> {}25252526  /** @name UpDataStructsRpcCollection (331) */2527  export interface UpDataStructsRpcCollection extends Struct {2528    readonly owner: AccountId32;2529    readonly mode: UpDataStructsCollectionMode;2530    readonly access: UpDataStructsAccessMode;2531    readonly name: Vec<u16>;2532    readonly description: Vec<u16>;2533    readonly tokenPrefix: Bytes;2534    readonly mintMode: bool;2535    readonly offchainSchema: Bytes;2536    readonly schemaVersion: UpDataStructsSchemaVersion;2537    readonly sponsorship: UpDataStructsSponsorshipState;2538    readonly limits: UpDataStructsCollectionLimits;2539    readonly constOnChainSchema: Bytes;2540    readonly tokenPropertyPermissions: Vec<UpDataStructsPropertyKeyPermission>;2541    readonly properties: Vec<UpDataStructsProperty>;2542  }25432544  /** @name PhantomTypeUpDataStructsCollectionInfo (333) */2545  export interface PhantomTypeUpDataStructsCollectionInfo extends Vec<RmrkTypesCollectionInfo> {}25462547  /** @name RmrkTypesCollectionInfo (334) */2548  export interface RmrkTypesCollectionInfo extends Struct {2549    readonly issuer: AccountId32;2550    readonly metadata: Bytes;2551    readonly max: Option<u32>;2552    readonly symbol: Bytes;2553    readonly nftsCount: u32;2554  }25552556  /** @name PhantomTypeUpDataStructsNftInfo (338) */2557  export interface PhantomTypeUpDataStructsNftInfo extends Vec<RmrkTypesNftInfo> {}25582559  /** @name RmrkTypesNftInfo (339) */2560  export interface RmrkTypesNftInfo extends Struct {2561    readonly owner: RmrkTypesAccountIdOrCollectionNftTuple;2562    readonly royalty: Option<RmrkTypesRoyaltyInfo>;2563    readonly metadata: Bytes;2564    readonly equipped: bool;2565    readonly pending: bool;2566  }25672568  /** @name RmrkTypesAccountIdOrCollectionNftTuple (340) */2569  export interface RmrkTypesAccountIdOrCollectionNftTuple extends Enum {2570    readonly isAccountId: boolean;2571    readonly asAccountId: AccountId32;2572    readonly isCollectionAndNftTuple: boolean;2573    readonly asCollectionAndNftTuple: ITuple<[u32, u32]>;2574    readonly type: 'AccountId' | 'CollectionAndNftTuple';2575  }25762577  /** @name RmrkTypesRoyaltyInfo (342) */2578  export interface RmrkTypesRoyaltyInfo extends Struct {2579    readonly recipient: AccountId32;2580    readonly amount: Permill;2581  }25822583  /** @name PhantomTypeUpDataStructsResourceInfo (344) */2584  export interface PhantomTypeUpDataStructsResourceInfo extends Vec<RmrkTypesResourceInfo> {}25852586  /** @name RmrkTypesResourceInfo (345) */2587  export interface RmrkTypesResourceInfo extends Struct {2588    readonly id: Bytes;2589    readonly pending: bool;2590    readonly pendingRemoval: bool;2591    readonly parts: Option<Vec<u32>>;2592    readonly base: Option<u32>;2593    readonly src: Option<Bytes>;2594    readonly metadata: Option<Bytes>;2595    readonly slot: Option<u32>;2596    readonly license: Option<Bytes>;2597    readonly thumb: Option<Bytes>;2598  }25992600  /** @name PhantomTypeUpDataStructsPropertyInfo (351) */2601  export interface PhantomTypeUpDataStructsPropertyInfo extends Vec<RmrkTypesPropertyInfo> {}26022603  /** @name RmrkTypesPropertyInfo (352) */2604  export interface RmrkTypesPropertyInfo extends Struct {2605    readonly key: Bytes;2606    readonly value: Bytes;2607  }26082609  /** @name PhantomTypeUpDataStructsBaseInfo (356) */2610  export interface PhantomTypeUpDataStructsBaseInfo extends Vec<RmrkTypesBaseInfo> {}26112612  /** @name RmrkTypesBaseInfo (357) */2613  export interface RmrkTypesBaseInfo extends Struct {2614    readonly issuer: AccountId32;2615    readonly baseType: Bytes;2616    readonly symbol: Bytes;2617  }26182619  /** @name PhantomTypeUpDataStructsPartType (359) */2620  export interface PhantomTypeUpDataStructsPartType extends Vec<RmrkTypesPartType> {}26212622  /** @name RmrkTypesPartType (360) */2623  export interface RmrkTypesPartType extends Enum {2624    readonly isFixedPart: boolean;2625    readonly asFixedPart: RmrkTypesFixedPart;2626    readonly isSlotPart: boolean;2627    readonly asSlotPart: RmrkTypesSlotPart;2628    readonly type: 'FixedPart' | 'SlotPart';2629  }26302631  /** @name RmrkTypesFixedPart (362) */2632  export interface RmrkTypesFixedPart extends Struct {2633    readonly id: u32;2634    readonly z: u32;2635    readonly src: Bytes;2636  }26372638  /** @name RmrkTypesSlotPart (363) */2639  export interface RmrkTypesSlotPart extends Struct {2640    readonly id: u32;2641    readonly equippable: RmrkTypesEquippableList;2642    readonly src: Bytes;2643    readonly z: u32;2644  }26452646  /** @name RmrkTypesEquippableList (364) */2647  export interface RmrkTypesEquippableList extends Enum {2648    readonly isAll: boolean;2649    readonly isEmpty: boolean;2650    readonly isCustom: boolean;2651    readonly asCustom: Vec<u32>;2652    readonly type: 'All' | 'Empty' | 'Custom';2653  }26542655  /** @name PhantomTypeUpDataStructsTheme (366) */2656  export interface PhantomTypeUpDataStructsTheme extends Vec<RmrkTypesTheme> {}26572658  /** @name RmrkTypesTheme (367) */2659  export interface RmrkTypesTheme extends Struct {2660    readonly name: Bytes;2661    readonly properties: Vec<RmrkTypesThemeProperty>;2662    readonly inherit: bool;2663  }26642665  /** @name RmrkTypesThemeProperty (369) */2666  export interface RmrkTypesThemeProperty extends Struct {2667    readonly key: Bytes;2668    readonly value: Bytes;2669  }26702671  /** @name PhantomTypeUpDataStructsNftChild (371) */2672  export interface PhantomTypeUpDataStructsNftChild extends Vec<RmrkTypesNftChild> {}26732674  /** @name RmrkTypesNftChild (372) */2675  export interface RmrkTypesNftChild extends Struct {2676    readonly collectionId: u32;2677    readonly nftId: u32;2678  }26792680  /** @name PalletCommonError (374) */2681  export interface PalletCommonError extends Enum {2682    readonly isCollectionNotFound: boolean;2683    readonly isMustBeTokenOwner: boolean;2684    readonly isNoPermission: boolean;2685    readonly isPublicMintingNotAllowed: boolean;2686    readonly isAddressNotInAllowlist: boolean;2687    readonly isCollectionNameLimitExceeded: boolean;2688    readonly isCollectionDescriptionLimitExceeded: boolean;2689    readonly isCollectionTokenPrefixLimitExceeded: boolean;2690    readonly isTotalCollectionsLimitExceeded: boolean;2691    readonly isCollectionAdminCountExceeded: boolean;2692    readonly isCollectionLimitBoundsExceeded: boolean;2693    readonly isOwnerPermissionsCantBeReverted: boolean;2694    readonly isTransferNotAllowed: boolean;2695    readonly isAccountTokenLimitExceeded: boolean;2696    readonly isCollectionTokenLimitExceeded: boolean;2697    readonly isMetadataFlagFrozen: boolean;2698    readonly isTokenNotFound: boolean;2699    readonly isTokenValueTooLow: boolean;2700    readonly isApprovedValueTooLow: boolean;2701    readonly isCantApproveMoreThanOwned: boolean;2702    readonly isAddressIsZero: boolean;2703    readonly isUnsupportedOperation: boolean;2704    readonly isNotSufficientFounds: boolean;2705    readonly isNestingIsDisabled: boolean;2706    readonly isOnlyOwnerAllowedToNest: boolean;2707    readonly isSourceCollectionIsNotAllowedToNest: boolean;2708    readonly isCollectionFieldSizeExceeded: boolean;2709    readonly isNoSpaceForProperty: boolean;2710    readonly isPropertyLimitReached: boolean;2711    readonly isPropertyKeyIsTooLong: boolean;2712    readonly isInvalidCharacterInPropertyKey: boolean;2713    readonly isEmptyPropertyKey: boolean;2714    readonly type: 'CollectionNotFound' | 'MustBeTokenOwner' | 'NoPermission' | 'PublicMintingNotAllowed' | 'AddressNotInAllowlist' | 'CollectionNameLimitExceeded' | 'CollectionDescriptionLimitExceeded' | 'CollectionTokenPrefixLimitExceeded' | 'TotalCollectionsLimitExceeded' | 'CollectionAdminCountExceeded' | 'CollectionLimitBoundsExceeded' | 'OwnerPermissionsCantBeReverted' | 'TransferNotAllowed' | 'AccountTokenLimitExceeded' | 'CollectionTokenLimitExceeded' | 'MetadataFlagFrozen' | 'TokenNotFound' | 'TokenValueTooLow' | 'ApprovedValueTooLow' | 'CantApproveMoreThanOwned' | 'AddressIsZero' | 'UnsupportedOperation' | 'NotSufficientFounds' | 'NestingIsDisabled' | 'OnlyOwnerAllowedToNest' | 'SourceCollectionIsNotAllowedToNest' | 'CollectionFieldSizeExceeded' | 'NoSpaceForProperty' | 'PropertyLimitReached' | 'PropertyKeyIsTooLong' | 'InvalidCharacterInPropertyKey' | 'EmptyPropertyKey';2715  }27162717  /** @name PalletFungibleError (376) */2718  export interface PalletFungibleError extends Enum {2719    readonly isNotFungibleDataUsedToMintFungibleCollectionToken: boolean;2720    readonly isFungibleItemsHaveNoId: boolean;2721    readonly isFungibleItemsDontHaveData: boolean;2722    readonly isFungibleDisallowsNesting: boolean;2723    readonly isSettingPropertiesNotAllowed: boolean;2724    readonly type: 'NotFungibleDataUsedToMintFungibleCollectionToken' | 'FungibleItemsHaveNoId' | 'FungibleItemsDontHaveData' | 'FungibleDisallowsNesting' | 'SettingPropertiesNotAllowed';2725  }27262727  /** @name PalletRefungibleItemData (377) */2728  export interface PalletRefungibleItemData extends Struct {2729    readonly constData: Bytes;2730  }27312732  /** @name PalletRefungibleError (381) */2733  export interface PalletRefungibleError extends Enum {2734    readonly isNotRefungibleDataUsedToMintFungibleCollectionToken: boolean;2735    readonly isWrongRefungiblePieces: boolean;2736    readonly isRefungibleDisallowsNesting: boolean;2737    readonly isSettingPropertiesNotAllowed: boolean;2738    readonly type: 'NotRefungibleDataUsedToMintFungibleCollectionToken' | 'WrongRefungiblePieces' | 'RefungibleDisallowsNesting' | 'SettingPropertiesNotAllowed';2739  }27402741  /** @name PalletNonfungibleItemData (382) */2742  export interface PalletNonfungibleItemData extends Struct {2743    readonly constData: Bytes;2744    readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;2745  }27462747  /** @name PalletNonfungibleError (383) */2748  export interface PalletNonfungibleError extends Enum {2749    readonly isNotNonfungibleDataUsedToMintFungibleCollectionToken: boolean;2750    readonly isNonfungibleItemsHaveNoAmount: boolean;2751    readonly type: 'NotNonfungibleDataUsedToMintFungibleCollectionToken' | 'NonfungibleItemsHaveNoAmount';2752  }27532754  /** @name PalletStructureError (384) */2755  export interface PalletStructureError extends Enum {2756    readonly isOuroborosDetected: boolean;2757    readonly isDepthLimit: boolean;2758    readonly isTokenNotFound: boolean;2759    readonly type: 'OuroborosDetected' | 'DepthLimit' | 'TokenNotFound';2760  }27612762  /** @name PalletEvmError (387) */2763  export interface PalletEvmError extends Enum {2764    readonly isBalanceLow: boolean;2765    readonly isFeeOverflow: boolean;2766    readonly isPaymentOverflow: boolean;2767    readonly isWithdrawFailed: boolean;2768    readonly isGasPriceTooLow: boolean;2769    readonly isInvalidNonce: boolean;2770    readonly type: 'BalanceLow' | 'FeeOverflow' | 'PaymentOverflow' | 'WithdrawFailed' | 'GasPriceTooLow' | 'InvalidNonce';2771  }27722773  /** @name FpRpcTransactionStatus (390) */2774  export interface FpRpcTransactionStatus extends Struct {2775    readonly transactionHash: H256;2776    readonly transactionIndex: u32;2777    readonly from: H160;2778    readonly to: Option<H160>;2779    readonly contractAddress: Option<H160>;2780    readonly logs: Vec<EthereumLog>;2781    readonly logsBloom: EthbloomBloom;2782  }27832784  /** @name EthbloomBloom (392) */2785  export interface EthbloomBloom extends U8aFixed {}27862787  /** @name EthereumReceiptReceiptV3 (394) */2788  export interface EthereumReceiptReceiptV3 extends Enum {2789    readonly isLegacy: boolean;2790    readonly asLegacy: EthereumReceiptEip658ReceiptData;2791    readonly isEip2930: boolean;2792    readonly asEip2930: EthereumReceiptEip658ReceiptData;2793    readonly isEip1559: boolean;2794    readonly asEip1559: EthereumReceiptEip658ReceiptData;2795    readonly type: 'Legacy' | 'Eip2930' | 'Eip1559';2796  }27972798  /** @name EthereumReceiptEip658ReceiptData (395) */2799  export interface EthereumReceiptEip658ReceiptData extends Struct {2800    readonly statusCode: u8;2801    readonly usedGas: U256;2802    readonly logsBloom: EthbloomBloom;2803    readonly logs: Vec<EthereumLog>;2804  }28052806  /** @name EthereumBlock (396) */2807  export interface EthereumBlock extends Struct {2808    readonly header: EthereumHeader;2809    readonly transactions: Vec<EthereumTransactionTransactionV2>;2810    readonly ommers: Vec<EthereumHeader>;2811  }28122813  /** @name EthereumHeader (397) */2814  export interface EthereumHeader extends Struct {2815    readonly parentHash: H256;2816    readonly ommersHash: H256;2817    readonly beneficiary: H160;2818    readonly stateRoot: H256;2819    readonly transactionsRoot: H256;2820    readonly receiptsRoot: H256;2821    readonly logsBloom: EthbloomBloom;2822    readonly difficulty: U256;2823    readonly number: U256;2824    readonly gasLimit: U256;2825    readonly gasUsed: U256;2826    readonly timestamp: u64;2827    readonly extraData: Bytes;2828    readonly mixHash: H256;2829    readonly nonce: EthereumTypesHashH64;2830  }28312832  /** @name EthereumTypesHashH64 (398) */2833  export interface EthereumTypesHashH64 extends U8aFixed {}28342835  /** @name PalletEthereumError (403) */2836  export interface PalletEthereumError extends Enum {2837    readonly isInvalidSignature: boolean;2838    readonly isPreLogExists: boolean;2839    readonly type: 'InvalidSignature' | 'PreLogExists';2840  }28412842  /** @name PalletEvmCoderSubstrateError (404) */2843  export interface PalletEvmCoderSubstrateError extends Enum {2844    readonly isOutOfGas: boolean;2845    readonly isOutOfFund: boolean;2846    readonly type: 'OutOfGas' | 'OutOfFund';2847  }28482849  /** @name PalletEvmContractHelpersSponsoringModeT (405) */2850  export interface PalletEvmContractHelpersSponsoringModeT extends Enum {2851    readonly isDisabled: boolean;2852    readonly isAllowlisted: boolean;2853    readonly isGenerous: boolean;2854    readonly type: 'Disabled' | 'Allowlisted' | 'Generous';2855  }28562857  /** @name PalletEvmContractHelpersError (407) */2858  export interface PalletEvmContractHelpersError extends Enum {2859    readonly isNoPermission: boolean;2860    readonly type: 'NoPermission';2861  }28622863  /** @name PalletEvmMigrationError (408) */2864  export interface PalletEvmMigrationError extends Enum {2865    readonly isAccountNotEmpty: boolean;2866    readonly isAccountIsNotMigrating: boolean;2867    readonly type: 'AccountNotEmpty' | 'AccountIsNotMigrating';2868  }28692870  /** @name SpRuntimeMultiSignature (410) */2871  export interface SpRuntimeMultiSignature extends Enum {2872    readonly isEd25519: boolean;2873    readonly asEd25519: SpCoreEd25519Signature;2874    readonly isSr25519: boolean;2875    readonly asSr25519: SpCoreSr25519Signature;2876    readonly isEcdsa: boolean;2877    readonly asEcdsa: SpCoreEcdsaSignature;2878    readonly type: 'Ed25519' | 'Sr25519' | 'Ecdsa';2879  }28802881  /** @name SpCoreEd25519Signature (411) */2882  export interface SpCoreEd25519Signature extends U8aFixed {}28832884  /** @name SpCoreSr25519Signature (413) */2885  export interface SpCoreSr25519Signature extends U8aFixed {}28862887  /** @name SpCoreEcdsaSignature (414) */2888  export interface SpCoreEcdsaSignature extends U8aFixed {}28892890  /** @name FrameSystemExtensionsCheckSpecVersion (417) */2891  export type FrameSystemExtensionsCheckSpecVersion = Null;28922893  /** @name FrameSystemExtensionsCheckGenesis (418) */2894  export type FrameSystemExtensionsCheckGenesis = Null;28952896  /** @name FrameSystemExtensionsCheckNonce (421) */2897  export interface FrameSystemExtensionsCheckNonce extends Compact<u32> {}28982899  /** @name FrameSystemExtensionsCheckWeight (422) */2900  export type FrameSystemExtensionsCheckWeight = Null;29012902  /** @name PalletTemplateTransactionPaymentChargeTransactionPayment (423) */2903  export interface PalletTemplateTransactionPaymentChargeTransactionPayment extends Compact<u128> {}29042905  /** @name OpalRuntimeRuntime (424) */2906  export type OpalRuntimeRuntime = Null;29072908  /** @name PalletEthereumFakeTransactionFinalizer (425) */2909  export type PalletEthereumFakeTransactionFinalizer = Null;29102911} // declare module
modifiedtests/src/interfaces/unique/definitions.tsdiffbeforeafterboth
--- a/tests/src/interfaces/unique/definitions.ts
+++ b/tests/src/interfaces/unique/definitions.ts
@@ -26,7 +26,7 @@
 
 const collectionParam = {name: 'collection', type: 'u32'};
 const tokenParam = {name: 'tokenId', type: 'u32'};
-const propertyKeysParam = {name: 'propertyKeys', type: 'Vec<String>'};
+const propertyKeysParam = {name: 'propertyKeys', type: 'Vec<String>', isOptional: true};
 const crossAccountParam = (name = 'account') => ({name, type: CROSS_ACCOUNT_ID_TYPE});
 const atParam = {name: 'at', type: 'Hash', isOptional: true};
 
modifiedtests/src/interfaces/unique/types.tsdiffbeforeafterboth
--- a/tests/src/interfaces/unique/types.ts
+++ b/tests/src/interfaces/unique/types.ts
@@ -446,9 +446,6 @@
 /** @name FrameSupportPalletId */
 export interface FrameSupportPalletId extends U8aFixed {}
 
-/** @name FrameSupportStorageBoundedBTreeSet */
-export interface FrameSupportStorageBoundedBTreeSet extends BTreeSet<u32> {}
-
 /** @name FrameSupportTokensMiscBalanceStatus */
 export interface FrameSupportTokensMiscBalanceStatus extends Enum {
   readonly isFree: boolean;
@@ -875,7 +872,6 @@
   readonly isCollectionDescriptionLimitExceeded: boolean;
   readonly isCollectionTokenPrefixLimitExceeded: boolean;
   readonly isTotalCollectionsLimitExceeded: boolean;
-  readonly isTokenVariableDataLimitExceeded: boolean;
   readonly isCollectionAdminCountExceeded: boolean;
   readonly isCollectionLimitBoundsExceeded: boolean;
   readonly isOwnerPermissionsCantBeReverted: boolean;
@@ -896,10 +892,10 @@
   readonly isCollectionFieldSizeExceeded: boolean;
   readonly isNoSpaceForProperty: boolean;
   readonly isPropertyLimitReached: boolean;
-  readonly isUnableToReadUnboundedKeys: boolean;
+  readonly isPropertyKeyIsTooLong: boolean;
   readonly isInvalidCharacterInPropertyKey: boolean;
   readonly isEmptyPropertyKey: boolean;
-  readonly type: 'CollectionNotFound' | 'MustBeTokenOwner' | 'NoPermission' | 'PublicMintingNotAllowed' | 'AddressNotInAllowlist' | 'CollectionNameLimitExceeded' | 'CollectionDescriptionLimitExceeded' | 'CollectionTokenPrefixLimitExceeded' | 'TotalCollectionsLimitExceeded' | 'TokenVariableDataLimitExceeded' | 'CollectionAdminCountExceeded' | 'CollectionLimitBoundsExceeded' | 'OwnerPermissionsCantBeReverted' | 'TransferNotAllowed' | 'AccountTokenLimitExceeded' | 'CollectionTokenLimitExceeded' | 'MetadataFlagFrozen' | 'TokenNotFound' | 'TokenValueTooLow' | 'ApprovedValueTooLow' | 'CantApproveMoreThanOwned' | 'AddressIsZero' | 'UnsupportedOperation' | 'NotSufficientFounds' | 'NestingIsDisabled' | 'OnlyOwnerAllowedToNest' | 'SourceCollectionIsNotAllowedToNest' | 'CollectionFieldSizeExceeded' | 'NoSpaceForProperty' | 'PropertyLimitReached' | 'UnableToReadUnboundedKeys' | 'InvalidCharacterInPropertyKey' | 'EmptyPropertyKey';
+  readonly type: 'CollectionNotFound' | 'MustBeTokenOwner' | 'NoPermission' | 'PublicMintingNotAllowed' | 'AddressNotInAllowlist' | 'CollectionNameLimitExceeded' | 'CollectionDescriptionLimitExceeded' | 'CollectionTokenPrefixLimitExceeded' | 'TotalCollectionsLimitExceeded' | 'CollectionAdminCountExceeded' | 'CollectionLimitBoundsExceeded' | 'OwnerPermissionsCantBeReverted' | 'TransferNotAllowed' | 'AccountTokenLimitExceeded' | 'CollectionTokenLimitExceeded' | 'MetadataFlagFrozen' | 'TokenNotFound' | 'TokenValueTooLow' | 'ApprovedValueTooLow' | 'CantApproveMoreThanOwned' | 'AddressIsZero' | 'UnsupportedOperation' | 'NotSufficientFounds' | 'NestingIsDisabled' | 'OnlyOwnerAllowedToNest' | 'SourceCollectionIsNotAllowedToNest' | 'CollectionFieldSizeExceeded' | 'NoSpaceForProperty' | 'PropertyLimitReached' | 'PropertyKeyIsTooLong' | 'InvalidCharacterInPropertyKey' | 'EmptyPropertyKey';
 }
 
 /** @name PalletCommonEvent */
@@ -1115,7 +1111,6 @@
 /** @name PalletNonfungibleItemData */
 export interface PalletNonfungibleItemData extends Struct {
   readonly constData: Bytes;
-  readonly variableData: Bytes;
   readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;
 }
 
@@ -1131,7 +1126,6 @@
 /** @name PalletRefungibleItemData */
 export interface PalletRefungibleItemData extends Struct {
   readonly constData: Bytes;
-  readonly variableData: Bytes;
 }
 
 /** @name PalletStructureCall */
@@ -1438,17 +1432,6 @@
     readonly collectionId: u32;
     readonly itemId: u32;
     readonly value: u128;
-  } & Struct;
-  readonly isSetVariableMetaData: boolean;
-  readonly asSetVariableMetaData: {
-    readonly collectionId: u32;
-    readonly itemId: u32;
-    readonly data: Bytes;
-  } & Struct;
-  readonly isSetMetaUpdatePermissionFlag: boolean;
-  readonly asSetMetaUpdatePermissionFlag: {
-    readonly collectionId: u32;
-    readonly value: UpDataStructsMetaUpdatePermission;
   } & Struct;
   readonly isSetSchemaVersion: boolean;
   readonly asSetSchemaVersion: {
@@ -1470,7 +1453,7 @@
     readonly collectionId: u32;
     readonly newLimit: UpDataStructsCollectionLimits;
   } & Struct;
-  readonly type: 'CreateCollection' | 'CreateCollectionEx' | 'DestroyCollection' | 'AddToAllowList' | 'RemoveFromAllowList' | 'SetPublicAccessMode' | 'SetMintPermission' | 'ChangeCollectionOwner' | 'AddCollectionAdmin' | 'RemoveCollectionAdmin' | 'SetCollectionSponsor' | 'ConfirmSponsorship' | 'RemoveCollectionSponsor' | 'CreateItem' | 'CreateMultipleItems' | 'SetCollectionProperties' | 'DeleteCollectionProperties' | 'SetTokenProperties' | 'DeleteTokenProperties' | 'SetPropertyPermissions' | 'CreateMultipleItemsEx' | 'SetTransfersEnabledFlag' | 'BurnItem' | 'BurnFrom' | 'Transfer' | 'Approve' | 'TransferFrom' | 'SetVariableMetaData' | 'SetMetaUpdatePermissionFlag' | 'SetSchemaVersion' | 'SetOffchainSchema' | 'SetConstOnChainSchema' | 'SetCollectionLimits';
+  readonly type: 'CreateCollection' | 'CreateCollectionEx' | 'DestroyCollection' | 'AddToAllowList' | 'RemoveFromAllowList' | 'SetPublicAccessMode' | 'SetMintPermission' | 'ChangeCollectionOwner' | 'AddCollectionAdmin' | 'RemoveCollectionAdmin' | 'SetCollectionSponsor' | 'ConfirmSponsorship' | 'RemoveCollectionSponsor' | 'CreateItem' | 'CreateMultipleItems' | 'SetCollectionProperties' | 'DeleteCollectionProperties' | 'SetTokenProperties' | 'DeleteTokenProperties' | 'SetPropertyPermissions' | 'CreateMultipleItemsEx' | 'SetTransfersEnabledFlag' | 'BurnItem' | 'BurnFrom' | 'Transfer' | 'Approve' | 'TransferFrom' | 'SetSchemaVersion' | 'SetOffchainSchema' | 'SetConstOnChainSchema' | 'SetCollectionLimits';
 }
 
 /** @name PalletUniqueError */
@@ -1632,34 +1615,34 @@
 }
 
 /** @name PhantomTypeUpDataStructsBaseInfo */
-export interface PhantomTypeUpDataStructsBaseInfo extends Vec<Lookup359> {}
+export interface PhantomTypeUpDataStructsBaseInfo extends Vec<Lookup357> {}
 
 /** @name PhantomTypeUpDataStructsCollectionInfo */
-export interface PhantomTypeUpDataStructsCollectionInfo extends Vec<Lookup336> {}
+export interface PhantomTypeUpDataStructsCollectionInfo extends Vec<Lookup334> {}
 
 /** @name PhantomTypeUpDataStructsNftChild */
-export interface PhantomTypeUpDataStructsNftChild extends Vec<Lookup374> {}
+export interface PhantomTypeUpDataStructsNftChild extends Vec<Lookup372> {}
 
 /** @name PhantomTypeUpDataStructsNftInfo */
-export interface PhantomTypeUpDataStructsNftInfo extends Vec<Lookup341> {}
+export interface PhantomTypeUpDataStructsNftInfo extends Vec<Lookup339> {}
 
 /** @name PhantomTypeUpDataStructsPartType */
-export interface PhantomTypeUpDataStructsPartType extends Vec<Lookup362> {}
+export interface PhantomTypeUpDataStructsPartType extends Vec<Lookup360> {}
 
 /** @name PhantomTypeUpDataStructsPropertyInfo */
-export interface PhantomTypeUpDataStructsPropertyInfo extends Vec<Lookup354> {}
+export interface PhantomTypeUpDataStructsPropertyInfo extends Vec<Lookup352> {}
 
 /** @name PhantomTypeUpDataStructsResourceInfo */
-export interface PhantomTypeUpDataStructsResourceInfo extends Vec<Lookup347> {}
+export interface PhantomTypeUpDataStructsResourceInfo extends Vec<Lookup345> {}
 
 /** @name PhantomTypeUpDataStructsRpcCollection */
-export interface PhantomTypeUpDataStructsRpcCollection extends Vec<Lookup333> {}
+export interface PhantomTypeUpDataStructsRpcCollection extends Vec<Lookup331> {}
 
 /** @name PhantomTypeUpDataStructsTheme */
-export interface PhantomTypeUpDataStructsTheme extends Vec<Lookup369> {}
+export interface PhantomTypeUpDataStructsTheme extends Vec<Lookup367> {}
 
 /** @name PhantomTypeUpDataStructsTokenData */
-export interface PhantomTypeUpDataStructsTokenData extends Vec<Lookup329> {}
+export interface PhantomTypeUpDataStructsTokenData extends Vec<Lookup327> {}
 
 /** @name PolkadotCorePrimitivesInboundDownwardMessage */
 export interface PolkadotCorePrimitivesInboundDownwardMessage extends Struct {
@@ -1963,7 +1946,6 @@
   readonly schemaVersion: UpDataStructsSchemaVersion;
   readonly sponsorship: UpDataStructsSponsorshipState;
   readonly limits: UpDataStructsCollectionLimits;
-  readonly metaUpdatePermission: UpDataStructsMetaUpdatePermission;
 }
 
 /** @name UpDataStructsCollectionField */
@@ -2015,7 +1997,6 @@
   readonly pendingSponsor: Option<AccountId32>;
   readonly limits: Option<UpDataStructsCollectionLimits>;
   readonly constOnChainSchema: Bytes;
-  readonly metaUpdatePermission: Option<UpDataStructsMetaUpdatePermission>;
   readonly tokenPropertyPermissions: Vec<UpDataStructsPropertyKeyPermission>;
   readonly properties: Vec<UpDataStructsProperty>;
 }
@@ -2052,14 +2033,12 @@
 /** @name UpDataStructsCreateNftData */
 export interface UpDataStructsCreateNftData extends Struct {
   readonly constData: Bytes;
-  readonly variableData: Bytes;
   readonly properties: Vec<UpDataStructsProperty>;
 }
 
 /** @name UpDataStructsCreateNftExData */
 export interface UpDataStructsCreateNftExData extends Struct {
   readonly constData: Bytes;
-  readonly variableData: Bytes;
   readonly properties: Vec<UpDataStructsProperty>;
   readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;
 }
@@ -2067,31 +2046,21 @@
 /** @name UpDataStructsCreateReFungibleData */
 export interface UpDataStructsCreateReFungibleData extends Struct {
   readonly constData: Bytes;
-  readonly variableData: Bytes;
   readonly pieces: u128;
 }
 
 /** @name UpDataStructsCreateRefungibleExData */
 export interface UpDataStructsCreateRefungibleExData extends Struct {
   readonly constData: Bytes;
-  readonly variableData: Bytes;
   readonly users: BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr, u128>;
 }
 
-/** @name UpDataStructsMetaUpdatePermission */
-export interface UpDataStructsMetaUpdatePermission extends Enum {
-  readonly isItemOwner: boolean;
-  readonly isAdmin: boolean;
-  readonly isNone: boolean;
-  readonly type: 'ItemOwner' | 'Admin' | 'None';
-}
-
 /** @name UpDataStructsNestingRule */
 export interface UpDataStructsNestingRule extends Enum {
   readonly isDisabled: boolean;
   readonly isOwner: boolean;
   readonly isOwnerRestricted: boolean;
-  readonly asOwnerRestricted: FrameSupportStorageBoundedBTreeSet;
+  readonly asOwnerRestricted: BTreeSet<u32>;
   readonly type: 'Disabled' | 'Owner' | 'OwnerRestricted';
 }
 
@@ -2141,7 +2110,6 @@
   readonly sponsorship: UpDataStructsSponsorshipState;
   readonly limits: UpDataStructsCollectionLimits;
   readonly constOnChainSchema: Bytes;
-  readonly metaUpdatePermission: UpDataStructsMetaUpdatePermission;
   readonly tokenPropertyPermissions: Vec<UpDataStructsPropertyKeyPermission>;
   readonly properties: Vec<UpDataStructsProperty>;
 }
deletedtests/src/metadataUpdate.test.tsdiffbeforeafterboth
--- a/tests/src/metadataUpdate.test.ts
+++ /dev/null
@@ -1,214 +0,0 @@
-// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
-// This file is part of Unique Network.
-
-// Unique Network is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-
-// Unique Network is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
-
-import chai from 'chai';
-import chaiAsPromised from 'chai-as-promised';
-import privateKey from './substrate/privateKey';
-import usingApi from './substrate/substrate-api';
-import {
-  createItemExpectSuccess,
-  createCollectionExpectSuccess,
-  enablePublicMintingExpectSuccess,
-  enableAllowListExpectSuccess,
-  setMetadataUpdatePermissionFlagExpectSuccess,
-  setVariableMetaDataExpectSuccess,
-  setMintPermissionExpectSuccess,
-  addToAllowListExpectSuccess,
-  addCollectionAdminExpectSuccess,
-  setVariableMetaDataExpectFailure,
-  setMetadataUpdatePermissionFlagExpectFailure,
-} from './util/helpers';
-
-chai.use(chaiAsPromised);
-
-describe('Metadata update permissions with ItemOwner flag', () => {
-  it('ItemOwner can set variable metadata with ItemOwner permission flag', async () => {
-    await usingApi(async () => {
-      const alice = privateKey('//Alice');
-
-      const data = [1, 2, 254, 255];
-
-      // nft
-      const nftCollectionId = await createCollectionExpectSuccess();
-      const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT');
-      await setMetadataUpdatePermissionFlagExpectSuccess(alice, nftCollectionId, 'ItemOwner');
-
-      await setVariableMetaDataExpectSuccess(alice, nftCollectionId, newNftTokenId, data);
-    });
-  });
-
-  it('Admin can\'n set variable metadata with ItemOwner permission flag', async () => {
-    await usingApi(async () => {
-      const alice = privateKey('//Alice');
-      const bob = privateKey('//Bob');
-
-      const data = [1, 2, 254, 255];
-
-      // nft
-      const nftCollectionId = await createCollectionExpectSuccess();
-      const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT');
-      await setMetadataUpdatePermissionFlagExpectSuccess(alice, nftCollectionId, 'ItemOwner');
-
-      await setMintPermissionExpectSuccess(alice, nftCollectionId, true);
-      await addToAllowListExpectSuccess(alice, nftCollectionId, bob.address);
-      await addCollectionAdminExpectSuccess(alice, nftCollectionId, bob.address);
-
-      await setVariableMetaDataExpectFailure(bob, nftCollectionId, newNftTokenId, data);
-    });
-  });
-
-  it('User can\'n set variable metadata with ItemOwner permission flag', async () => {
-    await usingApi(async () => {
-      const alice = privateKey('//Alice');
-      const bob = privateKey('//Bob');
-
-      const data = [1, 2, 254, 255];
-
-      // nft
-      const nftCollectionId = await createCollectionExpectSuccess();
-      const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT');
-      await setMetadataUpdatePermissionFlagExpectSuccess(alice, nftCollectionId, 'ItemOwner');
-
-      await setMintPermissionExpectSuccess(alice, nftCollectionId, true);
-      await setVariableMetaDataExpectFailure(bob, nftCollectionId, newNftTokenId, data);
-    });
-  });
-});
-
-describe('Metadata update permissions with Admin flag', () => {
-  it('Admin can set variable metadata with Admin permission flag', async () => {
-    await usingApi(async () => {
-      const alice = privateKey('//Alice');
-      const bob = privateKey('//Bob');
-
-      const data = [1, 2, 254, 255];
-
-      // nft
-      const nftCollectionId = await createCollectionExpectSuccess();
-      const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT');
-      await setMetadataUpdatePermissionFlagExpectSuccess(alice, nftCollectionId, 'Admin');
-
-      await setMintPermissionExpectSuccess(alice, nftCollectionId, true);
-      await addToAllowListExpectSuccess(alice, nftCollectionId, bob.address);
-      await addCollectionAdminExpectSuccess(alice, nftCollectionId, bob.address);
-
-      await setVariableMetaDataExpectSuccess(bob, nftCollectionId, newNftTokenId, data);
-    });
-  });
-
-  it('User can\'n can set variable metadata with Admin permission flag', async () => {
-    await usingApi(async () => {
-      const alice = privateKey('//Alice');
-      const bob = privateKey('//Bob');
-
-      const data = [1, 2, 254, 255];
-
-      // nft
-      const nftCollectionId = await createCollectionExpectSuccess();
-      const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT');
-      await setMetadataUpdatePermissionFlagExpectSuccess(alice, nftCollectionId, 'Admin');
-
-      await setMintPermissionExpectSuccess(alice, nftCollectionId, true);
-      await addToAllowListExpectSuccess(alice, nftCollectionId, bob.address);
-      await addCollectionAdminExpectSuccess(alice, nftCollectionId, bob.address);
-
-      await setVariableMetaDataExpectSuccess(bob, nftCollectionId, newNftTokenId, data);
-    });
-  });
-
-  it('ItemOwner can\'n can set variable metadata with Admin permission flag', async () => {
-    await usingApi(async () => {
-      const alice = privateKey('//Alice');
-      const bob = privateKey('//Bob');
-
-      const data = [1, 2, 254, 255];
-
-      // nft
-      const nftCollectionId = await createCollectionExpectSuccess();
-      await enablePublicMintingExpectSuccess(alice, nftCollectionId);
-      await addToAllowListExpectSuccess(alice, nftCollectionId, bob.address);
-      await enableAllowListExpectSuccess(alice, nftCollectionId);
-      const newNftTokenId = await createItemExpectSuccess(bob, nftCollectionId, 'NFT');
-      await setMetadataUpdatePermissionFlagExpectSuccess(alice, nftCollectionId, 'Admin');
-
-      await setVariableMetaDataExpectFailure(bob, nftCollectionId, newNftTokenId, data);
-    });
-  });
-});
-
-describe('Metadata update permissions with None flag', () => {
-  it('Nobody can set variable metadata with None flag (Regular)', async () => {
-    await usingApi(async () => {
-      const alice = privateKey('//Alice');
-      const bob = privateKey('//Bob');
-
-      const data = [1, 2, 254, 255];
-
-      // nft
-      const nftCollectionId = await createCollectionExpectSuccess();
-      const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT');
-      await setMetadataUpdatePermissionFlagExpectSuccess(alice, nftCollectionId, 'None');
-
-      await setVariableMetaDataExpectFailure(bob, nftCollectionId, newNftTokenId, data);
-    });
-  });
-
-  it('Nobody can set variable metadata with None flag (Admin)', async () => {
-    await usingApi(async () => {
-      const alice = privateKey('//Alice');
-      const bob = privateKey('//Bob');
-
-      const data = [1, 2, 254, 255];
-
-      // nft
-      const nftCollectionId = await createCollectionExpectSuccess();
-      const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT');
-      await setMetadataUpdatePermissionFlagExpectSuccess(alice, nftCollectionId, 'None');
-
-      await setMintPermissionExpectSuccess(alice, nftCollectionId, true);
-      await addToAllowListExpectSuccess(alice, nftCollectionId, bob.address);
-      await addCollectionAdminExpectSuccess(alice, nftCollectionId, bob.address);
-
-      await setVariableMetaDataExpectFailure(bob, nftCollectionId, newNftTokenId, data);
-    });
-  });
-
-  it('Nobody can set variable metadata with None flag (ItemOwner)', async () => {
-    await usingApi(async () => {
-      const alice = privateKey('//Alice');
-
-      const data = [1, 2, 254, 255];
-
-      // nft
-      const nftCollectionId = await createCollectionExpectSuccess();
-      const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT');
-      await setMetadataUpdatePermissionFlagExpectSuccess(alice, nftCollectionId, 'None');
-
-      await setVariableMetaDataExpectFailure(alice, nftCollectionId, newNftTokenId, data);
-    });
-  });
-
-  it('Nobody can set variable metadata flag after freeze', async () => {
-    await usingApi(async () => {
-      const alice = privateKey('//Alice');
-
-      // nft
-      const nftCollectionId = await createCollectionExpectSuccess();
-      await setMetadataUpdatePermissionFlagExpectSuccess(alice, nftCollectionId, 'None');
-      await setMetadataUpdatePermissionFlagExpectFailure(alice, nftCollectionId, 'Admin');
-    });
-  });
-});
modifiedtests/src/nesting/migration-check.test.tsdiffbeforeafterboth
--- a/tests/src/nesting/migration-check.test.ts
+++ b/tests/src/nesting/migration-check.test.ts
@@ -37,7 +37,6 @@
           accountTokenOwnershipLimit: 3,
         },
         constOnChainSchema: '0x333333',
-        metaUpdatePermission: 'Admin',
       });
       const events = await submitTransactionAsync(alice, tx);
       const result = getCreateCollectionResult(events);
modifiedtests/src/nesting/rules-smoke.test.tsdiffbeforeafterboth
--- a/tests/src/nesting/rules-smoke.test.ts
+++ b/tests/src/nesting/rules-smoke.test.ts
@@ -23,7 +23,7 @@
       nestTarget = {Ethereum: tokenIdToAddress(collection, token)};
     });
   });
-  
+
   it('called for fungible', async () => {
     await usingApi(async api => {
       const collection = await createCollectionExpectSuccess({mode: {type: 'Fungible',decimalPoints:0}});
@@ -39,7 +39,7 @@
   it('called for nonfungible', async () => {
     await usingApi(async api => {
       const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
-      await expect(executeTransaction(api, alice, api.tx.unique.createItem(collection, nestTarget, {NFT: {ConstData: [], VariableData: {}}})))
+      await expect(executeTransaction(api, alice, api.tx.unique.createItem(collection, nestTarget, {NFT: {ConstData: []}})))
         .to.be.rejectedWith(/^common\.SourceCollectionIsNotAllowedToNest$/);
 
       const token = await createItemExpectSuccess(alice, collection, 'NFT', {Substrate: alice.address});
@@ -51,7 +51,7 @@
   it('called for refungible', async () => {
     await usingApi(async api => {
       const collection = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}});
-      await expect(executeTransaction(api, alice, api.tx.unique.createItem(collection, nestTarget, {ReFungible: {ConstData: [], VariableData: {}}})))
+      await expect(executeTransaction(api, alice, api.tx.unique.createItem(collection, nestTarget, {ReFungible: {ConstData: []}})))
         .to.be.rejectedWith(/^common\.SourceCollectionIsNotAllowedToNest$/);
 
       const token = await createItemExpectSuccess(alice, collection, 'ReFungible', {Substrate: alice.address});
@@ -60,4 +60,3 @@
     });
   });
 });
-  
\ No newline at end of file
deletedtests/src/setVariableMetaData.test.tsdiffbeforeafterboth
--- a/tests/src/setVariableMetaData.test.ts
+++ /dev/null
@@ -1,150 +0,0 @@
-// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
-// This file is part of Unique Network.
-
-// Unique Network is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-
-// Unique Network is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
-
-import {IKeyringPair} from '@polkadot/types/types';
-import chai from 'chai';
-import chaiAsPromised from 'chai-as-promised';
-import privateKey from './substrate/privateKey';
-import usingApi from './substrate/substrate-api';
-import {
-  burnItemExpectSuccess,
-  createCollectionExpectSuccess,
-  createItemExpectSuccess,
-  destroyCollectionExpectSuccess,
-  findNotExistingCollection,
-  setVariableMetaDataExpectFailure,
-  setVariableMetaDataExpectSuccess,
-  addCollectionAdminExpectSuccess,
-  setMetadataUpdatePermissionFlagExpectSuccess,
-  getVariableMetadata,
-} from './util/helpers';
-
-chai.use(chaiAsPromised);
-const expect = chai.expect;
-
-describe('Integration Test setVariableMetaData', () => {
-  const data = [1, 2, 254, 255];
-
-  let alice: IKeyringPair;
-  let collectionId: number;
-  let tokenId: number;
-  before(async () => {
-    await usingApi(async () => {
-      alice = privateKey('//Alice');
-      collectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
-      tokenId = await createItemExpectSuccess(alice, collectionId, 'NFT');
-    });
-  });
-
-  it('execute setVariableMetaData', async () => {
-    await setVariableMetaDataExpectSuccess(alice, collectionId, tokenId, data);
-  });
-
-  it('verify data was set', async () => {
-    await usingApi(async api => {
-      expect(await getVariableMetadata(api, collectionId, tokenId)).to.deep.equal(data);
-    });
-  });
-});
-
-describe('Integration Test collection admin setVariableMetaData', () => {
-  const data = [1, 2, 254, 255];
-
-  let alice: IKeyringPair;
-  let bob: IKeyringPair;
-  let collectionId: number;
-  let tokenId: number;
-  before(async () => {
-    await usingApi(async () => {
-      alice = privateKey('//Alice');
-      bob = privateKey('//Bob');
-      collectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
-      tokenId = await createItemExpectSuccess(alice, collectionId, 'NFT');
-      await setMetadataUpdatePermissionFlagExpectSuccess(alice, collectionId, 'Admin');
-      await addCollectionAdminExpectSuccess(alice, collectionId, bob.address);
-    });
-  });
-
-  it('execute setVariableMetaData', async () => {
-    await setVariableMetaDataExpectSuccess(bob, collectionId, tokenId, data);
-  });
-
-  it('verify data was set', async () => {
-    await usingApi(async api => {
-      expect(await getVariableMetadata(api, collectionId, tokenId)).to.deep.equal(data);
-    });
-  });
-});
-
-describe('Negative Integration Test setVariableMetaData', () => {
-  const data = [1];
-
-  let alice: IKeyringPair;
-  let bob: IKeyringPair;
-
-  let validCollectionId: number;
-  let validTokenId: number;
-
-  before(async () => {
-    await usingApi(async () => {
-      alice = privateKey('//Alice');
-      bob = privateKey('//Bob');
-
-      validCollectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
-      validTokenId = await createItemExpectSuccess(alice, validCollectionId, 'NFT');
-    });
-  });
-
-  it('fails on not existing collection id', async () => {
-    await usingApi(async api => {
-      const nonExistingCollectionId = await findNotExistingCollection(api);
-      await setVariableMetaDataExpectFailure(alice, nonExistingCollectionId, 1, data);
-    });
-  });
-  it('fails on removed collection id', async () => {
-    const removedCollectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
-    const removedCollectionTokenId = await createItemExpectSuccess(alice, removedCollectionId, 'NFT');
-
-    await destroyCollectionExpectSuccess(removedCollectionId);
-    await setVariableMetaDataExpectFailure(alice, removedCollectionId, removedCollectionTokenId, data);
-  });
-  it('fails on removed token', async () => {
-    const removedTokenCollectionId = await createCollectionExpectSuccess({mode: {type: 'NFT'}});
-    const removedTokenId = await createItemExpectSuccess(alice, removedTokenCollectionId, 'NFT');
-    await burnItemExpectSuccess(alice, removedTokenCollectionId, removedTokenId);
-
-    await setVariableMetaDataExpectFailure(alice, removedTokenCollectionId, removedTokenId, data);
-  });
-  it('fails on not existing token', async () => {
-    const nonExistingTokenId = validTokenId + 1;
-
-    await setVariableMetaDataExpectFailure(alice, validCollectionId, nonExistingTokenId, data);
-  });
-  it('fails on too long data', async () => {
-    const tooLongData = new Array(4097).fill(0xff);
-
-    await setVariableMetaDataExpectFailure(alice, validCollectionId, validTokenId, tooLongData);
-  });
-  it('fails on fungible token', async () => {
-    const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});
-    const fungibleTokenId = await createItemExpectSuccess(alice, fungibleCollectionId, 'Fungible');
-
-    await setVariableMetaDataExpectFailure(alice, fungibleCollectionId, fungibleTokenId, data);
-  });
-  it('fails on bad sender', async () => {
-    await setVariableMetaDataExpectFailure(bob, validCollectionId, validTokenId, data);
-  });
-});
deletedtests/src/setVariableMetadataSponsoringRateLimit.test.tsdiffbeforeafterboth
--- a/tests/src/setVariableMetadataSponsoringRateLimit.test.ts
+++ /dev/null
@@ -1,121 +0,0 @@
-// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
-// This file is part of Unique Network.
-
-// Unique Network is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-
-// Unique Network is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
-
-import {IKeyringPair} from '@polkadot/types/types';
-import {expect} from 'chai';
-import privateKey from './substrate/privateKey';
-import usingApi from './substrate/substrate-api';
-import {
-  confirmSponsorshipExpectSuccess,
-  createCollectionExpectSuccess,
-  createItemExpectSuccess,
-  findUnusedAddress,
-  getDetailedCollectionInfo,
-  setCollectionLimitsExpectSuccess,
-  setCollectionSponsorExpectSuccess,
-  setVariableMetaDataExpectFailure,
-  setVariableMetaDataExpectSuccess,
-} from './util/helpers';
-
-describe('Integration Test setVariableMetadataSponsoringRateLimit', () => {
-  let alice: IKeyringPair;
-  let userWithNoBalance: IKeyringPair;
-
-  before(async () => {
-    await usingApi(async (api) => {
-      alice = privateKey('//Alice');
-      userWithNoBalance = await findUnusedAddress(api);
-    });
-  });
-
-  it('sponsored setVariableMetaData can be called twice with pause for free', async () => {
-    const collectionId = await createCollectionExpectSuccess();
-    await setCollectionSponsorExpectSuccess(collectionId, alice.address);
-    await confirmSponsorshipExpectSuccess(collectionId);
-    await setCollectionLimitsExpectSuccess(alice, collectionId, {
-      sponsoredDataRateLimit: {Blocks: 0},
-    });
-
-    const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', userWithNoBalance.address);
-    await setVariableMetaDataExpectSuccess(userWithNoBalance, collectionId, itemId, [1, 2, 3]);
-    await setVariableMetaDataExpectSuccess(userWithNoBalance, collectionId, itemId, [1, 2, 3]);
-  });
-
-  it('sponsored setVariableMetaData can\'t be called twice without pause for free', async () => {
-    const collectionId = await createCollectionExpectSuccess();
-    await setCollectionSponsorExpectSuccess(collectionId, alice.address);
-    await confirmSponsorshipExpectSuccess(collectionId);
-    await setCollectionLimitsExpectSuccess(alice, collectionId, {
-      sponsoredDataRateLimit: {Blocks: 10},
-    });
-
-    const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', userWithNoBalance.address);
-    await setVariableMetaDataExpectSuccess(userWithNoBalance, collectionId, itemId, [1, 2, 3]);
-    await setVariableMetaDataExpectFailure(userWithNoBalance, collectionId, itemId, [1, 2, 3]);
-  });
-
-  it('sponsored setVariableMetaData can\'t be called for free with variable metadata above collection limits', async () => {
-    const collectionId = await createCollectionExpectSuccess();
-    await setCollectionSponsorExpectSuccess(collectionId, alice.address);
-    await confirmSponsorshipExpectSuccess(collectionId);
-    await setCollectionLimitsExpectSuccess(alice, collectionId, {
-      sponsoredDataRateLimit: {Blocks: 0},
-      sponsoredDataSize: 1,
-    });
-    const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', userWithNoBalance.address);
-
-    await setVariableMetaDataExpectSuccess(userWithNoBalance, collectionId, itemId, [1]);
-    await setVariableMetaDataExpectFailure(userWithNoBalance, collectionId, itemId, [1, 2]);
-  });
-
-  it('Default value of rate limit does not sponsor setting variable metadata', async () => {
-    const collectionId = await createCollectionExpectSuccess();
-    await setCollectionSponsorExpectSuccess(collectionId, alice.address);
-    await confirmSponsorshipExpectSuccess(collectionId);
-
-    const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', userWithNoBalance.address);
-    await setVariableMetaDataExpectFailure(userWithNoBalance, collectionId, itemId, [1]);
-  });
-
-  it('sponsoring of data is disabled by default', async () => {
-    await usingApi(async api => {
-      const collectionId = await createCollectionExpectSuccess();
-
-      const collection = (await getDetailedCollectionInfo(api, collectionId))!;
-      // limit is none = default is used
-      expect(collection?.limits.sponsoredDataRateLimit.isNone);
-    });
-  });
-
-  it('sponsoring can be disabled explicitly', async () => {
-    await usingApi(async api => {
-      const collectionId = await createCollectionExpectSuccess();
-
-      await setCollectionLimitsExpectSuccess(alice, collectionId, {sponsoredDataRateLimit: {Blocks: 6}});
-      {
-        const collection = (await getDetailedCollectionInfo(api, collectionId))!;
-        expect(collection?.limits.sponsoredDataRateLimit.unwrap().asBlocks.toNumber()).to.equal(6);
-      }
-
-      await setCollectionLimitsExpectSuccess(alice, collectionId, {sponsoredDataRateLimit: 'SponsoringDisabled'});
-      {
-        const collection = (await getDetailedCollectionInfo(api, collectionId))!;
-        // disabled sponsoring = default value
-        expect(collection?.limits.sponsoredDataRateLimit.unwrap().isNone).to.true;
-      }
-    });
-  });
-});
modifiedtests/src/util/helpers.tsdiffbeforeafterboth
--- a/tests/src/util/helpers.ts
+++ b/tests/src/util/helpers.ts
@@ -142,7 +142,6 @@
 export interface IReFungibleTokenDataType {
   owner: IReFungibleOwner[];
   constData: number[];
-  variableData: number[];
 }
 
 export function uniqueEventMessage(events: EventRecord[]): IGetMessage {
@@ -648,28 +647,6 @@
     const sender = privateKey(senderSeed);
     const tx = api.tx.unique.confirmSponsorship(collectionId);
     await expect(submitTransactionExpectFailAsync(sender, tx)).to.be.rejected;
-  });
-}
-
-export async function setMetadataUpdatePermissionFlagExpectSuccess(sender: IKeyringPair, collectionId: number, flag: string) {
-
-  await usingApi(async (api) => {
-    const tx = api.tx.unique.setMetaUpdatePermissionFlag(collectionId, flag as any);
-    const events = await submitTransactionAsync(sender, tx);
-    const result = getGenericResult(events);
-
-    expect(result.success).to.be.true;
-  });
-}
-
-export async function setMetadataUpdatePermissionFlagExpectFailure(sender: IKeyringPair, collectionId: number, flag: string) {
-
-  await usingApi(async (api) => {
-    const tx = api.tx.unique.setMetaUpdatePermissionFlag(collectionId, flag as any);
-    const events = await expect(submitTransactionExpectFailAsync(sender, tx)).to.be.rejected;
-    const result = getGenericResult(events);
-
-    expect(result.success).to.be.false;
   });
 }
 
@@ -794,23 +771,6 @@
   });
 }
 
-export async function setVariableMetaDataExpectSuccess(sender: IKeyringPair, collectionId: number, itemId: number, data: number[]) {
-  await usingApi(async (api) => {
-    const tx = api.tx.unique.setVariableMetaData(collectionId, itemId, '0x' + Buffer.from(data).toString('hex'));
-    const events = await submitTransactionAsync(sender, tx);
-    const result = getGenericResult(events);
-
-    expect(result.success).to.be.true;
-  });
-}
-
-export async function setVariableMetaDataExpectFailure(sender: IKeyringPair, collectionId: number, itemId: number, data: number[]) {
-  await usingApi(async (api) => {
-    const tx = api.tx.unique.setVariableMetaData(collectionId, itemId, '0x' + Buffer.from(data).toString('hex'));
-    await expect(submitTransactionExpectFailAsync(sender, tx)).to.be.rejected;
-  });
-}
-
 export async function setOffchainSchemaExpectSuccess(sender: IKeyringPair, collectionId: number, data: number[]) {
   await usingApi(async (api) => {
     const tx = api.tx.unique.setOffchainSchema(collectionId, '0x' + Buffer.from(data).toString('hex'));
@@ -1137,13 +1097,6 @@
   collectionId: number,
 ): Promise<string[]> {
   return (await api.rpc.unique.adminlist(collectionId)).toHuman() as any;
-}
-export async function getVariableMetadata(
-  api: ApiPromise,
-  collectionId: number,
-  tokenId: number,
-): Promise<number[]> {
-  return [...(await api.rpc.unique.variableMetadata(collectionId, tokenId))];
 }
 export async function getConstMetadata(
   api: ApiPromise,
@@ -1182,10 +1135,10 @@
       const createData = {fungible: {value: 10}};
       tx = api.tx.unique.createItem(collectionId, to, createData as any);
     } else if (createMode === 'ReFungible') {
-      const createData = {refungible: {const_data: [], variable_data: [], pieces: 100}};
+      const createData = {refungible: {const_data: [], pieces: 100}};
       tx = api.tx.unique.createItem(collectionId, to, createData as any);
     } else {
-      const createData = {nft: {const_data: [], variable_data: []}};
+      const createData = {nft: {const_data: []}};
       tx = api.tx.unique.createItem(collectionId, to, createData as any);
     }