git.delta.rocks / unique-network / refs/commits / 4b3d05886c9a

difftreelog

feat(rmrk-proxy) add resource

Fahrrader2022-06-02parent: #47e3bf2.patch.diff
in: master

21 files changed

modifiedCargo.lockdiffbeforeafterboth
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -6335,6 +6335,7 @@
  "pallet-common",
  "pallet-evm",
  "pallet-nonfungible",
+ "pallet-structure",
  "parity-scale-codec 3.1.2",
  "scale-info",
  "sp-core",
modifiedpallets/proxy-rmrk-core/Cargo.tomldiffbeforeafterboth
--- a/pallets/proxy-rmrk-core/Cargo.toml
+++ b/pallets/proxy-rmrk-core/Cargo.toml
@@ -18,6 +18,7 @@
 sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
 pallet-common = { default-features = false, path = '../common' }
 pallet-nonfungible = { default-features = false, path = "../../pallets/nonfungible" }
+pallet-structure = { default-features = false, path = "../../pallets/structure" }
 up-data-structs = { default-features = false, path = '../../primitives/data-structs' }
 pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }
 frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }
@@ -33,6 +34,7 @@
     "up-data-structs/std",
     "pallet-common/std",
     "pallet-nonfungible/std",
+    "pallet-structure/std",
     "pallet-evm/std",
     'frame-benchmarking/std',
 ]
modifiedpallets/proxy-rmrk-core/src/lib.rsdiffbeforeafterboth
--- a/pallets/proxy-rmrk-core/src/lib.rs
+++ b/pallets/proxy-rmrk-core/src/lib.rs
@@ -25,6 +25,7 @@
 	Pallet as PalletCommon, Error as CommonError, CollectionHandle, CommonCollectionOperations,
 };
 use pallet_nonfungible::{Pallet as PalletNft, NonfungibleHandle, TokenData};
+use pallet_structure::Pallet as PalletStructure;
 use pallet_evm::account::CrossAccountId;
 use core::convert::AsRef;
 
@@ -56,7 +57,7 @@
 
 	#[pallet::storage]
 	#[pallet::getter(fn collection_index_map)]
-	pub type CollectionIndexMap<T: Config> = 
+	pub type CollectionIndexMap<T: Config> =
 		StorageMap<_, Twox64Concat, RmrkCollectionId, CollectionId, ValueQuery>;
 
 	#[pallet::pallet]
@@ -98,6 +99,10 @@
 			key: RmrkKeyString,
 			value: RmrkValueString,
 		},
+		ResourceAdded {
+			nft_id: RmrkNftId,
+			resource_id: RmrkResourceId,
+		},
 	}
 
 	#[pallet::error]
@@ -106,7 +111,7 @@
 		CorruptedCollectionType,
 		NftTypeEncodeError,
 		RmrkPropertyKeyIsTooLong,
-		RmrkPropertyValueIsTooLong,
+		RmrkPropertyValueIsTooLong, // todo utilize that in RPCs
 
 		/* RMRK compatible events */
 		CollectionNotEmpty,
@@ -115,6 +120,7 @@
 		CollectionUnknown,
 		NoPermission,
 		CollectionFullOrLocked,
+		// todo add resource errors?
 	}
 
 	#[pallet::call]
@@ -143,29 +149,21 @@
 					.map_err(|_| <CommonError<T>>::CollectionTokenPrefixLimitExceeded)?,
 				..Default::default()
 			};
-
-			let collection_id_res =
-				<PalletNft<T>>::init_collection(T::CrossAccountId::from_sub(sender.clone()), data);
-
-			if let Err(DispatchError::Arithmetic(_)) = &collection_id_res {
-				return Err(<Error<T>>::NoAvailableCollectionId.into());
-			}
 
-			let unique_collection_id = collection_id_res?;
-			let rmrk_collection_id = <CollectionIndex<T>>::get();
-
 			<CollectionIndex<T>>::mutate(|n| *n += 1);
-			<CollectionIndexMap<T>>::insert(rmrk_collection_id, unique_collection_id);
 
-			<PalletCommon<T>>::set_scoped_collection_properties(
-				unique_collection_id,
-				PropertyScope::Rmrk,
+			let unique_collection_id = Self::init_collection(
+				T::CrossAccountId::from_sub(sender.clone()),
+				data,
 				[
 					Self::rmrk_property(Metadata, &metadata)?,
 					Self::rmrk_property(CollectionType, &misc::CollectionType::Regular)?,
 				]
 				.into_iter(),
-			)?;
+			)?; //collection_id_res?;
+			let rmrk_collection_id = <CollectionIndex<T>>::get();
+
+			<CollectionIndexMap<T>>::insert(rmrk_collection_id, unique_collection_id);
 
 			Self::deposit_event(Event::CollectionCreated {
 				issuer: sender,
@@ -290,13 +288,26 @@
 				&sender,
 				&cross_owner,
 				&collection,
-				NftType::Regular,
 				[
+					Self::rmrk_property(TokenType, &NftType::Regular)?,
 					Self::rmrk_property(RoyaltyInfo, &royalty_info)?,
 					Self::rmrk_property(Metadata, &metadata)?,
 					Self::rmrk_property(Equipped, &false)?,
-					Self::rmrk_property(ResourceCollection, &None::<CollectionId>)?,
-					Self::rmrk_property(ResourcePriorities, &<Vec<u8>>::new())?,
+					Self::rmrk_property(
+						ResourceCollection,
+						&Self::init_collection(
+							sender.clone(),
+							CreateCollectionData {
+								..Default::default()
+							},
+							[Self::rmrk_property(
+								CollectionType,
+								&misc::CollectionType::Resource,
+							)?]
+							.into_iter(),
+						)?,
+					)?, // todo possibly add limits to the collection if rmrk warrants them
+					Self::rmrk_property(ResourcePriorities, &<Vec<u8>>::new())?, // todo create resource priorities?
 				]
 				.into_iter(),
 			)
@@ -392,6 +403,107 @@
 
 			Ok(())
 		}
+
+		#[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]
+		#[transactional]
+		pub fn add_basic_resource(
+			origin: OriginFor<T>,
+			collection_id: RmrkCollectionId,
+			nft_id: RmrkNftId,
+			resource: RmrkBasicResource,
+		) -> DispatchResult {
+			let sender = ensure_signed(origin.clone())?;
+
+			let resource_id = Self::resource_add(
+				sender,
+				Self::unique_collection_id(collection_id)?,
+				nft_id.into(),
+				[
+					Self::rmrk_property(TokenType, &NftType::Resource)?,
+					Self::rmrk_property(ResourceType, &misc::ResourceType::Basic)?,
+					Self::rmrk_property(Src, &resource.src)?,
+					Self::rmrk_property(Metadata, &resource.metadata)?,
+					Self::rmrk_property(License, &resource.license)?,
+					Self::rmrk_property(Thumb, &resource.thumb)?,
+				]
+				.into_iter(),
+			)?;
+
+			Self::deposit_event(Event::ResourceAdded {
+				nft_id,
+				resource_id,
+			});
+			Ok(())
+		}
+
+		#[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]
+		#[transactional]
+		pub fn add_composable_resource(
+			origin: OriginFor<T>,
+			collection_id: RmrkCollectionId,
+			nft_id: RmrkNftId,
+			_resource_id: RmrkBoundedResource,
+			resource: RmrkComposableResource,
+		) -> DispatchResult {
+			let sender = ensure_signed(origin.clone())?;
+
+			let resource_id = Self::resource_add(
+				sender,
+				Self::unique_collection_id(collection_id)?,
+				nft_id.into(),
+				[
+					Self::rmrk_property(TokenType, &NftType::Resource)?,
+					Self::rmrk_property(ResourceType, &misc::ResourceType::Composable)?,
+					Self::rmrk_property(Parts, &resource.parts)?,
+					Self::rmrk_property(Base, &resource.base)?,
+					Self::rmrk_property(Src, &resource.src)?,
+					Self::rmrk_property(Metadata, &resource.metadata)?,
+					Self::rmrk_property(License, &resource.license)?,
+					Self::rmrk_property(Thumb, &resource.thumb)?,
+				]
+				.into_iter(),
+			)?;
+
+			Self::deposit_event(Event::ResourceAdded {
+				nft_id,
+				resource_id,
+			});
+			Ok(())
+		}
+
+		#[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]
+		#[transactional]
+		pub fn add_slot_resource(
+			origin: OriginFor<T>,
+			collection_id: RmrkCollectionId,
+			nft_id: RmrkNftId,
+			resource: RmrkSlotResource,
+		) -> DispatchResult {
+			let sender = ensure_signed(origin.clone())?;
+
+			let resource_id = Self::resource_add(
+				sender,
+				Self::unique_collection_id(collection_id)?,
+				nft_id.into(),
+				[
+					Self::rmrk_property(TokenType, &NftType::Resource)?,
+					Self::rmrk_property(ResourceType, &misc::ResourceType::Slot)?,
+					Self::rmrk_property(Base, &resource.base)?,
+					Self::rmrk_property(Src, &resource.src)?,
+					Self::rmrk_property(Metadata, &resource.metadata)?,
+					Self::rmrk_property(Slot, &resource.slot)?,
+					Self::rmrk_property(License, &resource.license)?,
+					Self::rmrk_property(Thumb, &resource.thumb)?,
+				]
+				.into_iter(),
+			)?;
+
+			Self::deposit_event(Event::ResourceAdded {
+				nft_id,
+				resource_id,
+			});
+			Ok(())
+		}
 	}
 }
 
@@ -422,14 +534,32 @@
 		Ok(property)
 	}
 
+	fn init_collection(
+		sender: T::CrossAccountId,
+		data: CreateCollectionData<T::AccountId>,
+		properties: impl Iterator<Item = Property>,
+	) -> Result<CollectionId, DispatchError> {
+		let collection_id = <PalletNft<T>>::init_collection(sender, data);
+
+		if let Err(DispatchError::Arithmetic(_)) = &collection_id {
+			return Err(<Error<T>>::NoAvailableCollectionId.into());
+		}
+
+		<PalletCommon<T>>::set_scoped_collection_properties(
+			collection_id?,
+			PropertyScope::Rmrk,
+			properties,
+		)?;
+
+		collection_id
+	}
+
 	pub fn create_nft(
 		sender: &T::CrossAccountId,
 		owner: &T::CrossAccountId,
 		collection: &NonfungibleHandle<T>,
-		nft_type: NftType,
 		properties: impl Iterator<Item = Property>,
 	) -> Result<TokenId, DispatchError> {
-		todo!("store nft type");
 		let data = CreateNftExData {
 			properties: BoundedVec::default(),
 			owner: owner.clone(),
@@ -465,6 +595,57 @@
 		Ok(())
 	}
 
+	fn resource_add(
+		sender: T::AccountId,
+		collection_id: CollectionId,
+		token_id: TokenId,
+		resource_properties: impl Iterator<Item = Property>,
+	) -> Result<RmrkResourceId, DispatchError> {
+		let collection =
+			Self::get_typed_nft_collection(collection_id, misc::CollectionType::Regular)?;
+		ensure!(collection.owner == sender, Error::<T>::NoPermission);
+
+		// Check NFT lock status // todo depends on market, maybe later
+		//ensure!(!Pallet::<T>::is_locked(collection_id, nft_id), pallet_uniques::Error::<T>::Locked);
+
+		let sender = T::CrossAccountId::from_sub(sender);
+		let budget = budget::Value::new(10);
+		let pending = <PalletStructure<T>>::check_indirectly_owned(
+			sender.clone(),
+			collection_id,
+			token_id,
+			None,
+			&budget,
+		)?;
+
+		let resource_collection_id: CollectionId =
+			Self::get_nft_property(collection_id, token_id, ResourceCollection)?
+				.decode_or_default();
+		let resource_collection =
+			Self::get_typed_nft_collection(resource_collection_id, misc::CollectionType::Resource)?;
+
+		// todo probably add extra connections to bases, slots, etc., when RMRK starts to use them
+
+		let resource_id = Self::create_nft(
+			&sender, // todo owner of the nft?
+			&sender,
+			&resource_collection,
+			resource_properties.chain(
+				[
+					Self::rmrk_property(PendingResourceAccept, &pending)?,
+					Self::rmrk_property(PendingResourceRemoval, &false)?,
+				]
+				.into_iter(),
+			),
+		)
+		.map_err(|err| match err {
+			DispatchError::Arithmetic(_) => <Error<T>>::NoAvailableNftId.into(),
+			err => Self::map_common_err_to_proxy(err),
+		})?;
+
+		Ok(resource_id.0)
+	}
+
 	fn change_collection_owner(
 		collection_id: CollectionId,
 		collection_type: misc::CollectionType,
@@ -493,8 +674,11 @@
 		<CollectionIndex<T>>::get()
 	}
 
-	pub fn unique_collection_id(rmrk_collection_id: RmrkCollectionId) -> Result<CollectionId, DispatchError> {
-		<CollectionIndexMap<T>>::try_get(rmrk_collection_id).map_err(|_| <Error<T>>::CollectionUnknown.into())
+	pub fn unique_collection_id(
+		rmrk_collection_id: RmrkCollectionId,
+	) -> Result<CollectionId, DispatchError> {
+		<CollectionIndexMap<T>>::try_get(rmrk_collection_id)
+			.map_err(|_| <Error<T>>::CollectionUnknown.into())
 	}
 
 	pub fn get_nft_collection(
@@ -513,10 +697,6 @@
 		<CollectionHandle<T>>::try_get(collection_id).is_ok()
 	}
 
-	pub fn nft_exists(collection_id: CollectionId, nft_id: TokenId) -> bool {
-		<TokenData<T>>::contains_key((collection_id, nft_id))
-	}
-
 	pub fn get_collection_property(
 		collection_id: CollectionId,
 		key: RmrkProperty,
@@ -553,6 +733,15 @@
 		Ok(())
 	}
 
+	pub fn get_typed_nft_collection(
+		collection_id: CollectionId,
+		collection_type: misc::CollectionType,
+	) -> Result<NonfungibleHandle<T>, DispatchError> {
+		Self::ensure_collection_type(collection_id, collection_type)?;
+
+		Self::get_nft_collection(collection_id)
+	}
+
 	pub fn get_nft_property(
 		collection_id: CollectionId,
 		nft_id: TokenId,
@@ -560,17 +749,23 @@
 	) -> Result<PropertyValue, DispatchError> {
 		let nft_property = <PalletNft<T>>::token_properties((collection_id, nft_id))
 			.get(&Self::rmrk_property_key(key)?)
-			.ok_or(<Error<T>>::NoAvailableNftId)?
+			.ok_or(<Error<T>>::NoAvailableNftId)? // todo replace with better error
 			.clone();
 
 		Ok(nft_property)
 	}
 
+	pub fn nft_exists(collection_id: CollectionId, nft_id: TokenId) -> bool {
+		<TokenData<T>>::contains_key((collection_id, nft_id))
+	}
+
 	pub fn get_nft_type(
-		_collection_id: CollectionId,
-		_token_id: TokenId,
+		collection_id: CollectionId,
+		token_id: TokenId,
 	) -> Result<NftType, DispatchError> {
-		todo!("should get it from properties?")
+		Ok(Self::get_nft_property(collection_id, token_id, TokenType)?.decode_or_default())
+		// todo throw error
+		// NftTypeEncodeError?
 	}
 
 	pub fn ensure_nft_type(
@@ -673,15 +868,6 @@
 		});
 
 		Ok(properties)
-	}
-
-	pub fn get_typed_nft_collection(
-		collection_id: CollectionId,
-		collection_type: misc::CollectionType,
-	) -> Result<NonfungibleHandle<T>, DispatchError> {
-		Self::ensure_collection_type(collection_id, collection_type)?;
-
-		Self::get_nft_collection(collection_id)
 	}
 
 	fn map_common_err_to_proxy(err: DispatchError) -> DispatchError {
modifiedpallets/proxy-rmrk-core/src/misc.rsdiffbeforeafterboth
--- a/pallets/proxy-rmrk-core/src/misc.rs
+++ b/pallets/proxy-rmrk-core/src/misc.rs
@@ -18,6 +18,7 @@
 	fn decode_or_default(&self) -> T;
 }
 
+// todo fail if unwrap doesn't work
 impl<T: Decode + Default, S> RmrkDecode<T, S> for BoundedVec<u8, S> {
 	fn decode_or_default(&self) -> T {
 		let mut value = self.as_slice();
@@ -30,6 +31,7 @@
 	fn rebind(&self) -> BoundedVec<u8, S>;
 }
 
+// todo fail if unwrap doesn't work
 impl<T, S> RmrkRebind<T, S> for BoundedVec<u8, T>
 where
 	BoundedVec<u8, S>: TryFrom<Vec<u8>>,
@@ -46,11 +48,22 @@
 	Base,
 }
 
-#[derive(Encode, Decode, PartialEq, Eq)]
+// todo remove default?
+#[derive(Encode, Decode, PartialEq, Eq, Default)]
 pub enum NftType {
+	#[default]
 	Regular,
 	Resource,
 	FixedPart,
 	SlotPart,
 	Theme,
 }
+
+// todo remove default?
+#[derive(Encode, Decode, PartialEq, Eq, Default)]
+pub enum ResourceType {
+	#[default]
+	Basic,
+	Composable,
+	Slot,
+}
modifiedpallets/proxy-rmrk-core/src/property.rsdiffbeforeafterboth
--- a/pallets/proxy-rmrk-core/src/property.rs
+++ b/pallets/proxy-rmrk-core/src/property.rs
@@ -4,6 +4,7 @@
 pub enum RmrkProperty<'r> {
 	Metadata,
 	CollectionType,
+	TokenType,
 	RoyaltyInfo,
 	Equipped,
 	ResourceCollection,
@@ -47,6 +48,7 @@
 		match self {
 			Self::Metadata => key!("metadata"),
 			Self::CollectionType => key!("collection-type"),
+			Self::TokenType => key!("token-type"),
 			Self::RoyaltyInfo => key!("royalty-info"),
 			Self::Equipped => key!("equipped"),
 			Self::ResourceCollection => key!("resource-collection"),
modifiedpallets/proxy-rmrk-equip/src/lib.rsdiffbeforeafterboth
--- a/pallets/proxy-rmrk-equip/src/lib.rs
+++ b/pallets/proxy-rmrk-equip/src/lib.rs
@@ -166,8 +166,8 @@
 				&sender,
 				owner,
 				&collection,
-				NftType::Theme,
 				[
+					<PalletCore<T>>::rmrk_property(TokenType, &NftType::Theme)?,
 					<PalletCore<T>>::rmrk_property(ThemeName, &theme.name)?,
 					<PalletCore<T>>::rmrk_property(ThemeInherit, &theme.inherit)?,
 				]
@@ -212,8 +212,8 @@
 			sender,
 			owner,
 			collection,
-			nft_type,
 			[
+				<PalletCore<T>>::rmrk_property(TokenType, &nft_type)?,
 				<PalletCore<T>>::rmrk_property(Src, &src)?,
 				<PalletCore<T>>::rmrk_property(ZIndex, &z_index)?,
 			]
modifiedprimitives/data-structs/src/lib.rsdiffbeforeafterboth
--- a/primitives/data-structs/src/lib.rs
+++ b/primitives/data-structs/src/lib.rs
@@ -41,6 +41,7 @@
 // RMRK
 use rmrk::{
 	CollectionInfo, NftInfo, ResourceInfo, PropertyInfo, BaseInfo, PartType, Theme, ThemeProperty,
+	ResourceTypes, BasicResource, ComposableResource, SlotResource,
 };
 pub use rmrk::{
 	primitives::{
@@ -49,8 +50,6 @@
 	},
 	NftChild as RmrkNftChild, AccountIdOrCollectionNftTuple as RmrkAccountIdOrCollectionNftTuple,
 	FixedPart as RmrkFixedPart, SlotPart as RmrkSlotPart, EquippableList as RmrkEquippableList,
-	BasicResource as RmrkBasicResource, ComposableResource as RmrkComposableResource,
-	SlotResource as RmrkSlotResource,
 };
 
 mod bounded;
@@ -942,23 +941,26 @@
 pub type RmrkCollectionInfo<AccountId> =
 	CollectionInfo<RmrkString, RmrkCollectionSymbol, AccountId>;
 pub type RmrkInstanceInfo<AccountId> = NftInfo<AccountId, Permill, RmrkString>;
-pub type RmrkResourceInfo = ResourceInfo<RmrkBoundedResource, RmrkString, RmrkBoundedParts>;
+pub type RmrkResourceInfo = ResourceInfo<RmrkString, RmrkBoundedParts>;
 pub type RmrkPropertyInfo = PropertyInfo<RmrkKeyString, RmrkValueString>;
 pub type RmrkBaseInfo<AccountId> = BaseInfo<AccountId, RmrkString>;
 pub type RmrkPartType =
 	PartType<RmrkString, BoundedVec<RmrkCollectionId, RmrkMaxCollectionsEquippablePerPart>>;
 pub type RmrkThemeProperty = ThemeProperty<RmrkString>;
 pub type RmrkTheme = Theme<RmrkString, Vec<RmrkThemeProperty>>;
+pub type RmrkResourceTypes = ResourceTypes<RmrkString, RmrkBoundedParts>;
+
+pub type RmrkBasicResource = BasicResource<RmrkString>;
+pub type RmrkComposableResource = ComposableResource<RmrkString, RmrkBoundedParts>;
+pub type RmrkSlotResource = SlotResource<RmrkString>;
 
+pub type RmrkString = BoundedVec<u8, RmrkStringLimit>;
 pub type RmrkCollectionSymbol = BoundedVec<u8, RmrkCollectionSymbolLimit>;
 pub type RmrkKeyString = BoundedVec<u8, RmrkKeyLimit>;
 pub type RmrkValueString = BoundedVec<u8, RmrkValueLimit>;
-
-type RmrkBoundedResource = BoundedVec<u8, RmrkResourceSymbolLimit>;
-type RmrkBoundedParts = BoundedVec<RmrkPartId, RmrkPartsLimit>;
+pub type RmrkBoundedResource = BoundedVec<u8, RmrkResourceSymbolLimit>;
+pub type RmrkBoundedParts = BoundedVec<RmrkPartId, RmrkPartsLimit>; // todo make sure it is needed
 
 pub type RmrkRpcString = Vec<u8>;
 pub type RmrkThemeName = RmrkRpcString;
 pub type RmrkPropertyKey = RmrkRpcString;
-
-pub type RmrkString = BoundedVec<u8, RmrkStringLimit>;
modifiedprimitives/data-structs/src/rmrk.rsdiffbeforeafterboth
--- a/primitives/data-structs/src/rmrk.rs
+++ b/primitives/data-structs/src/rmrk.rs
@@ -282,17 +282,16 @@
 #[cfg_attr(
 	feature = "std",
 	serde(bound = r#"
-			BoundedResource: AsRef<[u8]>,
 			BoundedString: AsRef<[u8]>,
 			BoundedParts: AsRef<[PartId]>
 		"#)
 )]
-pub struct ResourceInfo<BoundedResource, BoundedString: Default, BoundedParts> {
+pub struct ResourceInfo<BoundedString: Default, BoundedParts> {
 	/// id is a 5-character string of reasonable uniqueness.
 	/// The combination of base ID and resource id should be unique across the entire RMRK
 	/// ecosystem which
-	#[cfg_attr(feature = "std", serde(with = "serialize::vec"))]
-	pub id: BoundedResource,
+	//#[cfg_attr(feature = "std", serde(with = "serialize::vec"))]
+	pub id: ResourceId,
 
 	/// Resource
 	pub resource: ResourceTypes<BoundedString, BoundedParts>,
modifiedruntime/common/src/runtime_apis.rsdiffbeforeafterboth
--- a/runtime/common/src/runtime_apis.rs
+++ b/runtime/common/src/runtime_apis.rs
@@ -152,6 +152,7 @@
                         Err(_) => return Ok(None),
                     };
 
+                    // todo replace dispatch... calls with calls to rmrkcore and NFT collection. There's no point trying non-NFT collections
                     let nfts_count = dispatch_unique_runtime!(collection_id.total_supply())?;
 
                     Ok(Some(RmrkCollectionInfo {
@@ -171,6 +172,7 @@
                     let nft_id = TokenId(nft_by_id);
                     if !RmrkCore::nft_exists(collection_id, nft_id) { return Ok(None); }
 
+                    // todo replace dispatch with collection
                     let owner = match dispatch_unique_runtime!(collection_id.token_owner(nft_id))? {
                         Some(owner) => match <Runtime as pallet_common::Config>::CrossTokenAddressMapping::address_to_token(&owner) {
                             Some((col, tok)) => RmrkAccountIdOrCollectionNftTuple::CollectionAndNftTuple(col.0, tok.0),
@@ -270,34 +272,51 @@
 
                 fn nft_resources(collection_id: RmrkCollectionId, nft_id: RmrkNftId) -> Result<Vec<RmrkResourceInfo>, DispatchError> {
                     use frame_support::BoundedVec;
-                    use pallet_proxy_rmrk_core::{RmrkProperty, misc::{CollectionType, NftType, RmrkDecode}};
+                    use pallet_proxy_rmrk_core::{RmrkProperty, misc::{CollectionType, NftType, ResourceType, RmrkDecode}};
+                    use pallet_common::CommonCollectionOperations;
 
                     let collection_id = RmrkCore::unique_collection_id(collection_id)?;
-                    if !RmrkCore::collection_exists(collection_id) { return Ok(Vec::new()); } // todo make sure the collection type doesn't matter
+                    if RmrkCore::ensure_collection_type(collection_id, CollectionType::Regular).is_err() { return Ok(Vec::new()); }
 
                     let nft_id = TokenId(nft_id);
-                    if RmrkCore::ensure_nft_type(collection_id, nft_id, NftType::Resource).is_err() { return Ok(Vec::new()); }
+                    if RmrkCore::ensure_nft_type(collection_id, nft_id, NftType::Regular).is_err() { return Ok(Vec::new()); }
 
-                    let resource_collection_id: CollectionId = RmrkCore::get_nft_property(collection_id, nft_id, RmrkProperty::ResourceCollection)
-                        .unwrap()
+                    let res_collection_id: CollectionId = RmrkCore::get_nft_property(collection_id, nft_id, RmrkProperty::ResourceCollection)?
                         .decode_or_default();
-                    if RmrkCore::ensure_collection_type(collection_id, CollectionType::Resource).is_err() { return Ok(Vec::new()); }
+                    let resource_collection = RmrkCore::get_typed_nft_collection(res_collection_id, CollectionType::Resource)?;
 
-                    let resources = pallet_nonfungible::TokenProperties::<Runtime>::iter_prefix((resource_collection_id,))
-                        .filter_map(|(resource_id, properties)| Some(RmrkResourceInfo {
-                            id: BoundedVec::default(), // todo ResourceId property
-                            pending: RmrkCore::get_nft_property(resource_collection_id, resource_id, RmrkProperty::PendingResourceAccept).unwrap().decode_or_default(),
-                            pending_removal: RmrkCore::get_nft_property(resource_collection_id, resource_id, RmrkProperty::PendingResourceRemoval).unwrap().decode_or_default(),
-                            resource: RmrkCore::get_nft_property(resource_collection_id, resource_id, RmrkProperty::ResourceType).unwrap().decode_or_default(),/* {
-                                RmrkResourceTypes::Basic(resource) => RmrkResourceTypes::Basic(),/*(RmrkBasicResource {
-                                    src: RmrkCore::get_nft_property_inner(properties, RmrkProperty::Src).unwrap().decode_or_default(),
-                                    metadata: RmrkCore::get_nft_property_inner(properties, RmrkProperty::Metadata).unwrap().decode_or_default(),
-                                    license: RmrkCore::get_nft_property_inner(properties, RmrkProperty::License).unwrap().decode_or_default(),
-                                    thumb: RmrkCore::get_nft_property_inner(properties, RmrkProperty::Thumb).unwrap().decode_or_default(),
-                                },*///BasicResource<BoundedString>)
-                                _ => todo!(), //RmrkResourceTypes::Composable(ComposableResource<BoundedString, BoundedParts>),
-                                //RmrkResourceTypes::Slot(SlotResource<BoundedString>),
-                            },*/
+                    let resources = resource_collection
+                        .collection_tokens()
+                        .iter()
+                        .filter_map(|(res_id)| Some(RmrkResourceInfo {
+                            id: res_id.0,
+                            pending: RmrkCore::get_nft_property(res_collection_id, *res_id, RmrkProperty::PendingResourceAccept).unwrap().decode_or_default(),
+                            pending_removal: RmrkCore::get_nft_property(res_collection_id, *res_id, RmrkProperty::PendingResourceRemoval).unwrap().decode_or_default(),
+                            resource: match RmrkCore::get_nft_property(res_collection_id, *res_id, RmrkProperty::ResourceType).unwrap().decode_or_default() {
+                                ResourceType::Basic => RmrkResourceTypes::Basic(RmrkBasicResource {
+                                    src: RmrkCore::get_nft_property(res_collection_id, *res_id, RmrkProperty::Src).unwrap().decode_or_default(),
+                                    metadata: RmrkCore::get_nft_property(res_collection_id, *res_id, RmrkProperty::Metadata).unwrap().decode_or_default(),
+                                    license: RmrkCore::get_nft_property(res_collection_id, *res_id, RmrkProperty::License).unwrap().decode_or_default(),
+                                    thumb: RmrkCore::get_nft_property(res_collection_id, *res_id, RmrkProperty::Thumb).unwrap().decode_or_default(),
+                                }),
+                                ResourceType::Composable => RmrkResourceTypes::Composable(RmrkComposableResource {
+                                    parts: RmrkCore::get_nft_property(res_collection_id, *res_id, RmrkProperty::Parts).unwrap().decode_or_default(),
+                                    base: RmrkCore::get_nft_property(res_collection_id, *res_id, RmrkProperty::Base).unwrap().decode_or_default(),
+                                    src: RmrkCore::get_nft_property(res_collection_id, *res_id, RmrkProperty::Src).unwrap().decode_or_default(),
+                                    metadata: RmrkCore::get_nft_property(res_collection_id, *res_id, RmrkProperty::Metadata).unwrap().decode_or_default(),
+                                    license: RmrkCore::get_nft_property(res_collection_id, *res_id, RmrkProperty::License).unwrap().decode_or_default(),
+                                    thumb: RmrkCore::get_nft_property(res_collection_id, *res_id, RmrkProperty::Thumb).unwrap().decode_or_default(),
+                                }),
+                                ResourceType::Slot => RmrkResourceTypes::Slot(RmrkSlotResource {
+                                    base: RmrkCore::get_nft_property(res_collection_id, *res_id, RmrkProperty::Base).unwrap().decode_or_default(),
+                                    src: RmrkCore::get_nft_property(res_collection_id, *res_id, RmrkProperty::Src).unwrap().decode_or_default(),
+                                    metadata: RmrkCore::get_nft_property(res_collection_id, *res_id, RmrkProperty::Metadata).unwrap().decode_or_default(),
+                                    slot: RmrkCore::get_nft_property(res_collection_id, *res_id, RmrkProperty::Slot).unwrap().decode_or_default(),
+                                    license: RmrkCore::get_nft_property(res_collection_id, *res_id, RmrkProperty::License).unwrap().decode_or_default(),
+                                    thumb: RmrkCore::get_nft_property(res_collection_id, *res_id, RmrkProperty::Thumb).unwrap().decode_or_default(),
+                                }),
+                                // todo refactor :|
+                            },
                         }))
                         .collect();
 
@@ -308,10 +327,10 @@
                     use pallet_proxy_rmrk_core::{RmrkProperty, misc::{CollectionType, NftType, RmrkDecode}};
 
                     let collection_id = RmrkCore::unique_collection_id(collection_id)?;
-                    if !RmrkCore::collection_exists(collection_id) { return Ok(Vec::new()); } // todo ensure the collection type doesn't matter
+                    if RmrkCore::ensure_collection_type(collection_id, CollectionType::Regular).is_err() { return Ok(Vec::new()); }
 
                     let nft_id = TokenId(nft_id);
-                    if RmrkCore::ensure_nft_type(collection_id, nft_id, NftType::Resource).is_err() { return Ok(Vec::new()); }
+                    if RmrkCore::ensure_nft_type(collection_id, nft_id, NftType::Regular).is_err() { return Ok(Vec::new()); }
 
                     /*let resource_collection_id: CollectionId = RmrkCore::get_nft_property(collection_id, nft_id, RmrkProperty::ResourceCollection)
                         .unwrap()
@@ -327,6 +346,7 @@
                         .sort_by_key(|(_, index)| *index)
                         .into_iter().map(|(resource_id, _)| resource_id)*/
                     let priorities = RmrkCore::get_nft_property(collection_id, nft_id, RmrkProperty::ResourcePriorities)?.decode_or_default();
+                    // todo let it simply be default here after removing default from decode
 
                     Ok(priorities)
                 }
modifiedtests/src/interfaces/augment-api-errors.tsdiffbeforeafterboth
--- a/tests/src/interfaces/augment-api-errors.ts
+++ b/tests/src/interfaces/augment-api-errors.ts
@@ -437,6 +437,33 @@
        **/
       [key: string]: AugmentedError<ApiType>;
     };
+    rmrkCore: {
+      CollectionFullOrLocked: AugmentedError<ApiType>;
+      CollectionNotEmpty: AugmentedError<ApiType>;
+      CollectionUnknown: AugmentedError<ApiType>;
+      CorruptedCollectionType: AugmentedError<ApiType>;
+      NftTypeEncodeError: AugmentedError<ApiType>;
+      NoAvailableCollectionId: AugmentedError<ApiType>;
+      NoAvailableNftId: AugmentedError<ApiType>;
+      NoPermission: AugmentedError<ApiType>;
+      RmrkPropertyKeyIsTooLong: AugmentedError<ApiType>;
+      RmrkPropertyValueIsTooLong: AugmentedError<ApiType>;
+      /**
+       * Generic error
+       **/
+      [key: string]: AugmentedError<ApiType>;
+    };
+    rmrkEquip: {
+      BaseDoesntExist: AugmentedError<ApiType>;
+      NeedsDefaultThemeFirst: AugmentedError<ApiType>;
+      NoAvailableBaseId: AugmentedError<ApiType>;
+      NoAvailablePartId: AugmentedError<ApiType>;
+      PermissionError: AugmentedError<ApiType>;
+      /**
+       * Generic error
+       **/
+      [key: string]: AugmentedError<ApiType>;
+    };
     structure: {
       /**
        * While searched for owner, encountered depth limit
modifiedtests/src/interfaces/augment-api-events.tsdiffbeforeafterboth
--- a/tests/src/interfaces/augment-api-events.ts
+++ b/tests/src/interfaces/augment-api-events.ts
@@ -396,6 +396,27 @@
        **/
       [key: string]: AugmentedEvent<ApiType>;
     };
+    rmrkCore: {
+      CollectionCreated: AugmentedEvent<ApiType, [AccountId32, u32]>;
+      CollectionDestroyed: AugmentedEvent<ApiType, [AccountId32, u32]>;
+      CollectionLocked: AugmentedEvent<ApiType, [AccountId32, u32]>;
+      IssuerChanged: AugmentedEvent<ApiType, [AccountId32, AccountId32, u32]>;
+      NFTBurned: AugmentedEvent<ApiType, [AccountId32, u32]>;
+      NftMinted: AugmentedEvent<ApiType, [AccountId32, u32, u32]>;
+      PropertySet: AugmentedEvent<ApiType, [u32, Option<u32>, Bytes, Bytes]>;
+      ResourceAdded: AugmentedEvent<ApiType, [u32, u32]>;
+      /**
+       * Generic event
+       **/
+      [key: string]: AugmentedEvent<ApiType>;
+    };
+    rmrkEquip: {
+      BaseCreated: AugmentedEvent<ApiType, [AccountId32, u32]>;
+      /**
+       * Generic event
+       **/
+      [key: string]: AugmentedEvent<ApiType>;
+    };
     structure: {
       /**
        * Executed call on behalf of token
modifiedtests/src/interfaces/augment-api-query.tsdiffbeforeafterboth
--- a/tests/src/interfaces/augment-api-query.ts
+++ b/tests/src/interfaces/augment-api-query.ts
@@ -415,6 +415,22 @@
        **/
       [key: string]: QueryableStorageEntry<ApiType>;
     };
+    rmrkCore: {
+      collectionIndex: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;
+      collectionIndexMap: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<u32>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;
+      /**
+       * Generic query
+       **/
+      [key: string]: QueryableStorageEntry<ApiType>;
+    };
+    rmrkEquip: {
+      baseHasDefaultTheme: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<bool>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;
+      inernalPartId: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array) => Observable<Option<u32>>, [u32, u32]> & QueryableStorageEntry<ApiType, [u32, u32]>;
+      /**
+       * Generic query
+       **/
+      [key: string]: QueryableStorageEntry<ApiType>;
+    };
     structure: {
       /**
        * Generic query
modifiedtests/src/interfaces/augment-api-rpc.tsdiffbeforeafterboth
--- a/tests/src/interfaces/augment-api-rpc.ts
+++ b/tests/src/interfaces/augment-api-rpc.ts
@@ -22,7 +22,7 @@
 import type { StorageKind } from '@polkadot/types/interfaces/offchain';
 import type { FeeDetails, RuntimeDispatchInfo } from '@polkadot/types/interfaces/payment';
 import type { RpcMethods } from '@polkadot/types/interfaces/rpc';
-import type { AccountId, BlockNumber, H160, H256, H64, Hash, Header, Index, Justification, KeyValue, SignedBlock, StorageData } from '@polkadot/types/interfaces/runtime';
+import type { AccountId, AccountId32, BlockNumber, H160, H256, H64, Hash, Header, Index, Justification, KeyValue, SignedBlock, StorageData } from '@polkadot/types/interfaces/runtime';
 import type { MigrationStatusResult, ReadProof, RuntimeVersion, TraceBlockResponse } from '@polkadot/types/interfaces/state';
 import type { ApplyExtrinsicResult, ChainProperties, ChainType, Health, NetworkState, NodeRole, PeerInfo, SyncState } from '@polkadot/types/interfaces/system';
 import type { IExtrinsic, Observable } from '@polkadot/types/types';
@@ -397,6 +397,60 @@
        **/
       queryInfo: AugmentedRpc<(extrinsic: Bytes | string | Uint8Array, at?: BlockHash | string | Uint8Array) => Observable<RuntimeDispatchInfo>>;
     };
+    rmrk: {
+      /**
+       * Get tokens owned by an account in a collection
+       **/
+      accountTokens: AugmentedRpc<(accountId: AccountId32 | string | Uint8Array, collectionId: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Vec<u32>>>;
+      /**
+       * Get base info
+       **/
+      base: AugmentedRpc<(baseId: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Option<UpDataStructsRmrkBaseInfo>>>;
+      /**
+       * Get all Base's parts
+       **/
+      baseParts: AugmentedRpc<(baseId: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Vec<UpDataStructsRmrkPartType>>>;
+      /**
+       * Get collection by id
+       **/
+      collectionById: AugmentedRpc<(id: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Option<UpDataStructsRmrkCollectionInfo>>>;
+      /**
+       * Get collection properties
+       **/
+      collectionProperties: AugmentedRpc<(collectionId: u32 | AnyNumber | Uint8Array, filterKeys?: Vec<Text> | (Text | string)[], at?: Hash | string | Uint8Array) => Observable<Vec<UpDataStructsRmrkPropertyInfo>>>;
+      /**
+       * Get the latest created collection id
+       **/
+      lastCollectionIdx: AugmentedRpc<(at?: Hash | string | Uint8Array) => Observable<u32>>;
+      /**
+       * Get NFT by collection id and NFT id
+       **/
+      nftById: AugmentedRpc<(collectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Option<UpDataStructsRmrkNftInfo>>>;
+      /**
+       * Get NFT children
+       **/
+      nftChildren: AugmentedRpc<(collectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Vec<UpDataStructsRmrkNftChild>>>;
+      /**
+       * Get NFT properties
+       **/
+      nftProperties: AugmentedRpc<(collectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array, filterKeys?: Vec<Text> | (Text | string)[], at?: Hash | string | Uint8Array) => Observable<Vec<UpDataStructsRmrkPropertyInfo>>>;
+      /**
+       * Get NFT resource priorities
+       **/
+      nftResourcePriorities: AugmentedRpc<(collectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Vec<Bytes>>>;
+      /**
+       * Get NFT resources
+       **/
+      nftResources: AugmentedRpc<(collectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Vec<UpDataStructsRmrkResourceInfo>>>;
+      /**
+       * Get Base's theme names
+       **/
+      themeNames: AugmentedRpc<(baseId: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Vec<Bytes>>>;
+      /**
+       * 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<UpDataStructsRmrkTheme>>>;
+    };
     rpc: {
       /**
        * Retrieves the list of RPC methods that are exposed by the node
modifiedtests/src/interfaces/augment-api-tx.tsdiffbeforeafterboth
--- a/tests/src/interfaces/augment-api-tx.ts
+++ b/tests/src/interfaces/augment-api-tx.ts
@@ -4,8 +4,8 @@
 import type { ApiTypes } from '@polkadot/api-base/types';
 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, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCollectionPermissions, UpDataStructsCreateCollectionData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, XcmV1MultiLocation, XcmV2WeightLimit, XcmVersionedMultiAssets, XcmVersionedMultiLocation, XcmVersionedXcm } from '@polkadot/types/lookup';
+import type { AccountId32, Call, H160, H256, MultiAddress, Perbill, Permill } from '@polkadot/types/interfaces/runtime';
+import type { CumulusPrimitivesParachainInherentParachainInherentData, EthereumTransactionTransactionV2, OrmlVestingVestingSchedule, PalletEvmAccountBasicCrossAccountIdRepr, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCollectionPermissions, UpDataStructsCreateCollectionData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, UpDataStructsRmrkBasicResource, UpDataStructsRmrkComposableResource, UpDataStructsRmrkPartType, UpDataStructsRmrkSlotResource, UpDataStructsRmrkTheme, XcmV1MultiLocation, XcmV2WeightLimit, XcmVersionedMultiAssets, XcmVersionedMultiLocation, XcmVersionedXcm } from '@polkadot/types/lookup';
 
 declare module '@polkadot/api-base/types/submittable' {
   export interface AugmentedSubmittables<ApiType extends ApiTypes> {
@@ -346,6 +346,30 @@
        **/
       [key: string]: SubmittableExtrinsicFunction<ApiType>;
     };
+    rmrkCore: {
+      addBasicResource: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array, resource: UpDataStructsRmrkBasicResource | { src?: any; metadata?: any; license?: any; thumb?: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, u32, UpDataStructsRmrkBasicResource]>;
+      addComposableResource: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array, resourceId: Bytes | string | Uint8Array, resource: UpDataStructsRmrkComposableResource | { parts?: any; base?: any; src?: any; metadata?: any; license?: any; thumb?: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, u32, Bytes, UpDataStructsRmrkComposableResource]>;
+      addSlotResource: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array, resource: UpDataStructsRmrkSlotResource | { base?: any; src?: any; metadata?: any; slot?: any; license?: any; thumb?: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, u32, UpDataStructsRmrkSlotResource]>;
+      burnNft: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, u32]>;
+      changeCollectionIssuer: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, newIssuer: MultiAddress | { Id: any } | { Index: any } | { Raw: any } | { Address32: any } | { Address20: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, MultiAddress]>;
+      createCollection: AugmentedSubmittable<(metadata: Bytes | string | Uint8Array, max: Option<u32> | null | object | string | Uint8Array, symbol: Bytes | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [Bytes, Option<u32>, Bytes]>;
+      destroyCollection: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32]>;
+      lockCollection: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32]>;
+      mintNft: AugmentedSubmittable<(owner: AccountId32 | string | Uint8Array, collectionId: u32 | AnyNumber | Uint8Array, recipient: Option<AccountId32> | null | object | string | Uint8Array, royaltyAmount: Option<Permill> | null | object | string | Uint8Array, metadata: Bytes | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [AccountId32, u32, Option<AccountId32>, Option<Permill>, Bytes]>;
+      setProperty: AugmentedSubmittable<(rmrkCollectionId: Compact<u32> | AnyNumber | Uint8Array, maybeNftId: Option<u32> | null | object | string | Uint8Array, key: Bytes | string | Uint8Array, value: Bytes | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [Compact<u32>, Option<u32>, Bytes, Bytes]>;
+      /**
+       * Generic tx
+       **/
+      [key: string]: SubmittableExtrinsicFunction<ApiType>;
+    };
+    rmrkEquip: {
+      createBase: AugmentedSubmittable<(baseType: Bytes | string | Uint8Array, symbol: Bytes | string | Uint8Array, parts: Vec<UpDataStructsRmrkPartType> | (UpDataStructsRmrkPartType | { FixedPart: any } | { SlotPart: any } | string | Uint8Array)[]) => SubmittableExtrinsic<ApiType>, [Bytes, Bytes, Vec<UpDataStructsRmrkPartType>]>;
+      themeAdd: AugmentedSubmittable<(baseId: u32 | AnyNumber | Uint8Array, theme: UpDataStructsRmrkTheme | { name?: any; properties?: any; inherit?: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, UpDataStructsRmrkTheme]>;
+      /**
+       * Generic tx
+       **/
+      [key: string]: SubmittableExtrinsicFunction<ApiType>;
+    };
     structure: {
       /**
        * Generic tx
modifiedtests/src/interfaces/augment-types.tsdiffbeforeafterboth
--- a/tests/src/interfaces/augment-types.ts
+++ b/tests/src/interfaces/augment-types.ts
@@ -788,6 +788,12 @@
     PalletNonfungibleItemData: PalletNonfungibleItemData;
     PalletRefungibleError: PalletRefungibleError;
     PalletRefungibleItemData: PalletRefungibleItemData;
+    PalletRmrkCoreCall: PalletRmrkCoreCall;
+    PalletRmrkCoreError: PalletRmrkCoreError;
+    PalletRmrkCoreEvent: PalletRmrkCoreEvent;
+    PalletRmrkEquipCall: PalletRmrkEquipCall;
+    PalletRmrkEquipError: PalletRmrkEquipError;
+    PalletRmrkEquipEvent: PalletRmrkEquipEvent;
     PalletsOrigin: PalletsOrigin;
     PalletStorageMetadataLatest: PalletStorageMetadataLatest;
     PalletStorageMetadataV14: PalletStorageMetadataV14;
modifiedtests/src/interfaces/default/types.tsdiffbeforeafterboth
--- a/tests/src/interfaces/default/types.ts
+++ b/tests/src/interfaces/default/types.ts
@@ -1129,6 +1129,169 @@
   readonly constData: Bytes;
 }
 
+/** @name PalletRmrkCoreCall */
+export interface PalletRmrkCoreCall extends Enum {
+  readonly isCreateCollection: boolean;
+  readonly asCreateCollection: {
+    readonly metadata: Bytes;
+    readonly max: Option<u32>;
+    readonly symbol: Bytes;
+  } & Struct;
+  readonly isDestroyCollection: boolean;
+  readonly asDestroyCollection: {
+    readonly collectionId: u32;
+  } & Struct;
+  readonly isChangeCollectionIssuer: boolean;
+  readonly asChangeCollectionIssuer: {
+    readonly collectionId: u32;
+    readonly newIssuer: MultiAddress;
+  } & Struct;
+  readonly isLockCollection: boolean;
+  readonly asLockCollection: {
+    readonly collectionId: u32;
+  } & Struct;
+  readonly isMintNft: boolean;
+  readonly asMintNft: {
+    readonly owner: AccountId32;
+    readonly collectionId: u32;
+    readonly recipient: Option<AccountId32>;
+    readonly royaltyAmount: Option<Permill>;
+    readonly metadata: Bytes;
+  } & Struct;
+  readonly isBurnNft: boolean;
+  readonly asBurnNft: {
+    readonly collectionId: u32;
+    readonly nftId: u32;
+  } & Struct;
+  readonly isSetProperty: boolean;
+  readonly asSetProperty: {
+    readonly rmrkCollectionId: Compact<u32>;
+    readonly maybeNftId: Option<u32>;
+    readonly key: Bytes;
+    readonly value: Bytes;
+  } & Struct;
+  readonly isAddBasicResource: boolean;
+  readonly asAddBasicResource: {
+    readonly collectionId: u32;
+    readonly nftId: u32;
+    readonly resource: UpDataStructsRmrkBasicResource;
+  } & Struct;
+  readonly isAddComposableResource: boolean;
+  readonly asAddComposableResource: {
+    readonly collectionId: u32;
+    readonly nftId: u32;
+    readonly resourceId: Bytes;
+    readonly resource: UpDataStructsRmrkComposableResource;
+  } & Struct;
+  readonly isAddSlotResource: boolean;
+  readonly asAddSlotResource: {
+    readonly collectionId: u32;
+    readonly nftId: u32;
+    readonly resource: UpDataStructsRmrkSlotResource;
+  } & Struct;
+  readonly type: 'CreateCollection' | 'DestroyCollection' | 'ChangeCollectionIssuer' | 'LockCollection' | 'MintNft' | 'BurnNft' | 'SetProperty' | 'AddBasicResource' | 'AddComposableResource' | 'AddSlotResource';
+}
+
+/** @name PalletRmrkCoreError */
+export interface PalletRmrkCoreError extends Enum {
+  readonly isCorruptedCollectionType: boolean;
+  readonly isNftTypeEncodeError: boolean;
+  readonly isRmrkPropertyKeyIsTooLong: boolean;
+  readonly isRmrkPropertyValueIsTooLong: boolean;
+  readonly isCollectionNotEmpty: boolean;
+  readonly isNoAvailableCollectionId: boolean;
+  readonly isNoAvailableNftId: boolean;
+  readonly isCollectionUnknown: boolean;
+  readonly isNoPermission: boolean;
+  readonly isCollectionFullOrLocked: boolean;
+  readonly type: 'CorruptedCollectionType' | 'NftTypeEncodeError' | 'RmrkPropertyKeyIsTooLong' | 'RmrkPropertyValueIsTooLong' | 'CollectionNotEmpty' | 'NoAvailableCollectionId' | 'NoAvailableNftId' | 'CollectionUnknown' | 'NoPermission' | 'CollectionFullOrLocked';
+}
+
+/** @name PalletRmrkCoreEvent */
+export interface PalletRmrkCoreEvent extends Enum {
+  readonly isCollectionCreated: boolean;
+  readonly asCollectionCreated: {
+    readonly issuer: AccountId32;
+    readonly collectionId: u32;
+  } & Struct;
+  readonly isCollectionDestroyed: boolean;
+  readonly asCollectionDestroyed: {
+    readonly issuer: AccountId32;
+    readonly collectionId: u32;
+  } & Struct;
+  readonly isIssuerChanged: boolean;
+  readonly asIssuerChanged: {
+    readonly oldIssuer: AccountId32;
+    readonly newIssuer: AccountId32;
+    readonly collectionId: u32;
+  } & Struct;
+  readonly isCollectionLocked: boolean;
+  readonly asCollectionLocked: {
+    readonly issuer: AccountId32;
+    readonly collectionId: u32;
+  } & Struct;
+  readonly isNftMinted: boolean;
+  readonly asNftMinted: {
+    readonly owner: AccountId32;
+    readonly collectionId: u32;
+    readonly nftId: u32;
+  } & Struct;
+  readonly isNftBurned: boolean;
+  readonly asNftBurned: {
+    readonly owner: AccountId32;
+    readonly nftId: u32;
+  } & Struct;
+  readonly isPropertySet: boolean;
+  readonly asPropertySet: {
+    readonly collectionId: u32;
+    readonly maybeNftId: Option<u32>;
+    readonly key: Bytes;
+    readonly value: Bytes;
+  } & Struct;
+  readonly isResourceAdded: boolean;
+  readonly asResourceAdded: {
+    readonly nftId: u32;
+    readonly resourceId: u32;
+  } & Struct;
+  readonly type: 'CollectionCreated' | 'CollectionDestroyed' | 'IssuerChanged' | 'CollectionLocked' | 'NftMinted' | 'NftBurned' | 'PropertySet' | 'ResourceAdded';
+}
+
+/** @name PalletRmrkEquipCall */
+export interface PalletRmrkEquipCall extends Enum {
+  readonly isCreateBase: boolean;
+  readonly asCreateBase: {
+    readonly baseType: Bytes;
+    readonly symbol: Bytes;
+    readonly parts: Vec<UpDataStructsRmrkPartType>;
+  } & Struct;
+  readonly isThemeAdd: boolean;
+  readonly asThemeAdd: {
+    readonly baseId: u32;
+    readonly theme: UpDataStructsRmrkTheme;
+  } & Struct;
+  readonly type: 'CreateBase' | 'ThemeAdd';
+}
+
+/** @name PalletRmrkEquipError */
+export interface PalletRmrkEquipError extends Enum {
+  readonly isPermissionError: boolean;
+  readonly isNoAvailableBaseId: boolean;
+  readonly isNoAvailablePartId: boolean;
+  readonly isBaseDoesntExist: boolean;
+  readonly isNeedsDefaultThemeFirst: boolean;
+  readonly type: 'PermissionError' | 'NoAvailableBaseId' | 'NoAvailablePartId' | 'BaseDoesntExist' | 'NeedsDefaultThemeFirst';
+}
+
+/** @name PalletRmrkEquipEvent */
+export interface PalletRmrkEquipEvent extends Enum {
+  readonly isBaseCreated: boolean;
+  readonly asBaseCreated: {
+    readonly issuer: AccountId32;
+    readonly baseId: u32;
+  } & Struct;
+  readonly type: 'BaseCreated';
+}
+
 /** @name PalletStructureCall */
 export interface PalletStructureCall extends Null {}
 
@@ -2014,7 +2177,7 @@
 
 /** @name UpDataStructsRmrkResourceInfo */
 export interface UpDataStructsRmrkResourceInfo extends Struct {
-  readonly id: Bytes;
+  readonly id: u32;
   readonly resource: UpDataStructsRmrkResourceTypes;
   readonly pending: bool;
   readonly pendingRemoval: bool;
modifiedtests/src/interfaces/lookup.tsdiffbeforeafterboth
before · tests/src/interfaces/lookup.ts
1// Auto-generated via `yarn polkadot-types-from-defs`, do not edit2/* eslint-disable */34/* eslint-disable sort-keys */56export default {7  /**8   * Lookup2: polkadot_primitives::v2::PersistedValidationData<primitive_types::H256, N>9   **/10  PolkadotPrimitivesV2PersistedValidationData: {11    parentHead: 'Bytes',12    relayParentNumber: 'u32',13    relayParentStorageRoot: 'H256',14    maxPovSize: 'u32'15  },16  /**17   * Lookup9: polkadot_primitives::v2::UpgradeRestriction18   **/19  PolkadotPrimitivesV2UpgradeRestriction: {20    _enum: ['Present']21  },22  /**23   * Lookup10: sp_trie::storage_proof::StorageProof24   **/25  SpTrieStorageProof: {26    trieNodes: 'BTreeSet<Bytes>'27  },28  /**29   * Lookup13: cumulus_pallet_parachain_system::relay_state_snapshot::MessagingStateSnapshot30   **/31  CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot: {32    dmqMqcHead: 'H256',33    relayDispatchQueueSize: '(u32,u32)',34    ingressChannels: 'Vec<(u32,PolkadotPrimitivesV2AbridgedHrmpChannel)>',35    egressChannels: 'Vec<(u32,PolkadotPrimitivesV2AbridgedHrmpChannel)>'36  },37  /**38   * Lookup18: polkadot_primitives::v2::AbridgedHrmpChannel39   **/40  PolkadotPrimitivesV2AbridgedHrmpChannel: {41    maxCapacity: 'u32',42    maxTotalSize: 'u32',43    maxMessageSize: 'u32',44    msgCount: 'u32',45    totalSize: 'u32',46    mqcHead: 'Option<H256>'47  },48  /**49   * Lookup20: polkadot_primitives::v2::AbridgedHostConfiguration50   **/51  PolkadotPrimitivesV2AbridgedHostConfiguration: {52    maxCodeSize: 'u32',53    maxHeadDataSize: 'u32',54    maxUpwardQueueCount: 'u32',55    maxUpwardQueueSize: 'u32',56    maxUpwardMessageSize: 'u32',57    maxUpwardMessageNumPerCandidate: 'u32',58    hrmpMaxMessageNumPerCandidate: 'u32',59    validationUpgradeCooldown: 'u32',60    validationUpgradeDelay: 'u32'61  },62  /**63   * Lookup26: polkadot_core_primitives::OutboundHrmpMessage<polkadot_parachain::primitives::Id>64   **/65  PolkadotCorePrimitivesOutboundHrmpMessage: {66    recipient: 'u32',67    data: 'Bytes'68  },69  /**70   * Lookup28: cumulus_pallet_parachain_system::pallet::Call<T>71   **/72  CumulusPalletParachainSystemCall: {73    _enum: {74      set_validation_data: {75        data: 'CumulusPrimitivesParachainInherentParachainInherentData',76      },77      sudo_send_upward_message: {78        message: 'Bytes',79      },80      authorize_upgrade: {81        codeHash: 'H256',82      },83      enact_authorized_upgrade: {84        code: 'Bytes'85      }86    }87  },88  /**89   * Lookup29: cumulus_primitives_parachain_inherent::ParachainInherentData90   **/91  CumulusPrimitivesParachainInherentParachainInherentData: {92    validationData: 'PolkadotPrimitivesV2PersistedValidationData',93    relayChainState: 'SpTrieStorageProof',94    downwardMessages: 'Vec<PolkadotCorePrimitivesInboundDownwardMessage>',95    horizontalMessages: 'BTreeMap<u32, Vec<PolkadotCorePrimitivesInboundHrmpMessage>>'96  },97  /**98   * Lookup31: polkadot_core_primitives::InboundDownwardMessage<BlockNumber>99   **/100  PolkadotCorePrimitivesInboundDownwardMessage: {101    sentAt: 'u32',102    msg: 'Bytes'103  },104  /**105   * Lookup34: polkadot_core_primitives::InboundHrmpMessage<BlockNumber>106   **/107  PolkadotCorePrimitivesInboundHrmpMessage: {108    sentAt: 'u32',109    data: 'Bytes'110  },111  /**112   * Lookup37: cumulus_pallet_parachain_system::pallet::Event<T>113   **/114  CumulusPalletParachainSystemEvent: {115    _enum: {116      ValidationFunctionStored: 'Null',117      ValidationFunctionApplied: 'u32',118      ValidationFunctionDiscarded: 'Null',119      UpgradeAuthorized: 'H256',120      DownwardMessagesReceived: 'u32',121      DownwardMessagesProcessed: '(u64,H256)'122    }123  },124  /**125   * Lookup38: cumulus_pallet_parachain_system::pallet::Error<T>126   **/127  CumulusPalletParachainSystemError: {128    _enum: ['OverlappingUpgrades', 'ProhibitedByPolkadot', 'TooBig', 'ValidationDataNotAvailable', 'HostConfigurationNotAvailable', 'NotScheduled', 'NothingAuthorized', 'Unauthorized']129  },130  /**131   * Lookup41: pallet_balances::AccountData<Balance>132   **/133  PalletBalancesAccountData: {134    free: 'u128',135    reserved: 'u128',136    miscFrozen: 'u128',137    feeFrozen: 'u128'138  },139  /**140   * Lookup43: pallet_balances::BalanceLock<Balance>141   **/142  PalletBalancesBalanceLock: {143    id: '[u8;8]',144    amount: 'u128',145    reasons: 'PalletBalancesReasons'146  },147  /**148   * Lookup45: pallet_balances::Reasons149   **/150  PalletBalancesReasons: {151    _enum: ['Fee', 'Misc', 'All']152  },153  /**154   * Lookup48: pallet_balances::ReserveData<ReserveIdentifier, Balance>155   **/156  PalletBalancesReserveData: {157    id: '[u8;8]',158    amount: 'u128'159  },160  /**161   * Lookup50: pallet_balances::Releases162   **/163  PalletBalancesReleases: {164    _enum: ['V1_0_0', 'V2_0_0']165  },166  /**167   * Lookup51: pallet_balances::pallet::Call<T, I>168   **/169  PalletBalancesCall: {170    _enum: {171      transfer: {172        dest: 'MultiAddress',173        value: 'Compact<u128>',174      },175      set_balance: {176        who: 'MultiAddress',177        newFree: 'Compact<u128>',178        newReserved: 'Compact<u128>',179      },180      force_transfer: {181        source: 'MultiAddress',182        dest: 'MultiAddress',183        value: 'Compact<u128>',184      },185      transfer_keep_alive: {186        dest: 'MultiAddress',187        value: 'Compact<u128>',188      },189      transfer_all: {190        dest: 'MultiAddress',191        keepAlive: 'bool',192      },193      force_unreserve: {194        who: 'MultiAddress',195        amount: 'u128'196      }197    }198  },199  /**200   * Lookup57: pallet_balances::pallet::Event<T, I>201   **/202  PalletBalancesEvent: {203    _enum: {204      Endowed: {205        account: 'AccountId32',206        freeBalance: 'u128',207      },208      DustLost: {209        account: 'AccountId32',210        amount: 'u128',211      },212      Transfer: {213        from: 'AccountId32',214        to: 'AccountId32',215        amount: 'u128',216      },217      BalanceSet: {218        who: 'AccountId32',219        free: 'u128',220        reserved: 'u128',221      },222      Reserved: {223        who: 'AccountId32',224        amount: 'u128',225      },226      Unreserved: {227        who: 'AccountId32',228        amount: 'u128',229      },230      ReserveRepatriated: {231        from: 'AccountId32',232        to: 'AccountId32',233        amount: 'u128',234        destinationStatus: 'FrameSupportTokensMiscBalanceStatus',235      },236      Deposit: {237        who: 'AccountId32',238        amount: 'u128',239      },240      Withdraw: {241        who: 'AccountId32',242        amount: 'u128',243      },244      Slashed: {245        who: 'AccountId32',246        amount: 'u128'247      }248    }249  },250  /**251   * Lookup58: frame_support::traits::tokens::misc::BalanceStatus252   **/253  FrameSupportTokensMiscBalanceStatus: {254    _enum: ['Free', 'Reserved']255  },256  /**257   * Lookup59: pallet_balances::pallet::Error<T, I>258   **/259  PalletBalancesError: {260    _enum: ['VestingBalance', 'LiquidityRestrictions', 'InsufficientBalance', 'ExistentialDeposit', 'KeepAlive', 'ExistingVestingSchedule', 'DeadAccount', 'TooManyReserves']261  },262  /**263   * Lookup62: pallet_timestamp::pallet::Call<T>264   **/265  PalletTimestampCall: {266    _enum: {267      set: {268        now: 'Compact<u64>'269      }270    }271  },272  /**273   * Lookup65: pallet_transaction_payment::Releases274   **/275  PalletTransactionPaymentReleases: {276    _enum: ['V1Ancient', 'V2']277  },278  /**279   * Lookup67: frame_support::weights::WeightToFeeCoefficient<Balance>280   **/281  FrameSupportWeightsWeightToFeeCoefficient: {282    coeffInteger: 'u128',283    coeffFrac: 'Perbill',284    negative: 'bool',285    degree: 'u8'286  },287  /**288   * Lookup69: pallet_treasury::Proposal<sp_core::crypto::AccountId32, Balance>289   **/290  PalletTreasuryProposal: {291    proposer: 'AccountId32',292    value: 'u128',293    beneficiary: 'AccountId32',294    bond: 'u128'295  },296  /**297   * Lookup72: pallet_treasury::pallet::Call<T, I>298   **/299  PalletTreasuryCall: {300    _enum: {301      propose_spend: {302        value: 'Compact<u128>',303        beneficiary: 'MultiAddress',304      },305      reject_proposal: {306        proposalId: 'Compact<u32>',307      },308      approve_proposal: {309        proposalId: 'Compact<u32>'310      }311    }312  },313  /**314   * Lookup74: pallet_treasury::pallet::Event<T, I>315   **/316  PalletTreasuryEvent: {317    _enum: {318      Proposed: {319        proposalIndex: 'u32',320      },321      Spending: {322        budgetRemaining: 'u128',323      },324      Awarded: {325        proposalIndex: 'u32',326        award: 'u128',327        account: 'AccountId32',328      },329      Rejected: {330        proposalIndex: 'u32',331        slashed: 'u128',332      },333      Burnt: {334        burntFunds: 'u128',335      },336      Rollover: {337        rolloverBalance: 'u128',338      },339      Deposit: {340        value: 'u128'341      }342    }343  },344  /**345   * Lookup77: frame_support::PalletId346   **/347  FrameSupportPalletId: '[u8;8]',348  /**349   * Lookup78: pallet_treasury::pallet::Error<T, I>350   **/351  PalletTreasuryError: {352    _enum: ['InsufficientProposersBalance', 'InvalidIndex', 'TooManyApprovals']353  },354  /**355   * Lookup79: pallet_sudo::pallet::Call<T>356   **/357  PalletSudoCall: {358    _enum: {359      sudo: {360        call: 'Call',361      },362      sudo_unchecked_weight: {363        call: 'Call',364        weight: 'u64',365      },366      set_key: {367        _alias: {368          new_: 'new',369        },370        new_: 'MultiAddress',371      },372      sudo_as: {373        who: 'MultiAddress',374        call: 'Call'375      }376    }377  },378  /**379   * Lookup81: frame_system::pallet::Call<T>380   **/381  FrameSystemCall: {382    _enum: {383      fill_block: {384        ratio: 'Perbill',385      },386      remark: {387        remark: 'Bytes',388      },389      set_heap_pages: {390        pages: 'u64',391      },392      set_code: {393        code: 'Bytes',394      },395      set_code_without_checks: {396        code: 'Bytes',397      },398      set_storage: {399        items: 'Vec<(Bytes,Bytes)>',400      },401      kill_storage: {402        _alias: {403          keys_: 'keys',404        },405        keys_: 'Vec<Bytes>',406      },407      kill_prefix: {408        prefix: 'Bytes',409        subkeys: 'u32',410      },411      remark_with_event: {412        remark: 'Bytes'413      }414    }415  },416  /**417   * Lookup84: orml_vesting::module::Call<T>418   **/419  OrmlVestingModuleCall: {420    _enum: {421      claim: 'Null',422      vested_transfer: {423        dest: 'MultiAddress',424        schedule: 'OrmlVestingVestingSchedule',425      },426      update_vesting_schedules: {427        who: 'MultiAddress',428        vestingSchedules: 'Vec<OrmlVestingVestingSchedule>',429      },430      claim_for: {431        dest: 'MultiAddress'432      }433    }434  },435  /**436   * Lookup85: orml_vesting::VestingSchedule<BlockNumber, Balance>437   **/438  OrmlVestingVestingSchedule: {439    start: 'u32',440    period: 'u32',441    periodCount: 'u32',442    perPeriod: 'Compact<u128>'443  },444  /**445   * Lookup87: cumulus_pallet_xcmp_queue::pallet::Call<T>446   **/447  CumulusPalletXcmpQueueCall: {448    _enum: {449      service_overweight: {450        index: 'u64',451        weightLimit: 'u64',452      },453      suspend_xcm_execution: 'Null',454      resume_xcm_execution: 'Null',455      update_suspend_threshold: {456        _alias: {457          new_: 'new',458        },459        new_: 'u32',460      },461      update_drop_threshold: {462        _alias: {463          new_: 'new',464        },465        new_: 'u32',466      },467      update_resume_threshold: {468        _alias: {469          new_: 'new',470        },471        new_: 'u32',472      },473      update_threshold_weight: {474        _alias: {475          new_: 'new',476        },477        new_: 'u64',478      },479      update_weight_restrict_decay: {480        _alias: {481          new_: 'new',482        },483        new_: 'u64',484      },485      update_xcmp_max_individual_weight: {486        _alias: {487          new_: 'new',488        },489        new_: 'u64'490      }491    }492  },493  /**494   * Lookup88: pallet_xcm::pallet::Call<T>495   **/496  PalletXcmCall: {497    _enum: {498      send: {499        dest: 'XcmVersionedMultiLocation',500        message: 'XcmVersionedXcm',501      },502      teleport_assets: {503        dest: 'XcmVersionedMultiLocation',504        beneficiary: 'XcmVersionedMultiLocation',505        assets: 'XcmVersionedMultiAssets',506        feeAssetItem: 'u32',507      },508      reserve_transfer_assets: {509        dest: 'XcmVersionedMultiLocation',510        beneficiary: 'XcmVersionedMultiLocation',511        assets: 'XcmVersionedMultiAssets',512        feeAssetItem: 'u32',513      },514      execute: {515        message: 'XcmVersionedXcm',516        maxWeight: 'u64',517      },518      force_xcm_version: {519        location: 'XcmV1MultiLocation',520        xcmVersion: 'u32',521      },522      force_default_xcm_version: {523        maybeXcmVersion: 'Option<u32>',524      },525      force_subscribe_version_notify: {526        location: 'XcmVersionedMultiLocation',527      },528      force_unsubscribe_version_notify: {529        location: 'XcmVersionedMultiLocation',530      },531      limited_reserve_transfer_assets: {532        dest: 'XcmVersionedMultiLocation',533        beneficiary: 'XcmVersionedMultiLocation',534        assets: 'XcmVersionedMultiAssets',535        feeAssetItem: 'u32',536        weightLimit: 'XcmV2WeightLimit',537      },538      limited_teleport_assets: {539        dest: 'XcmVersionedMultiLocation',540        beneficiary: 'XcmVersionedMultiLocation',541        assets: 'XcmVersionedMultiAssets',542        feeAssetItem: 'u32',543        weightLimit: 'XcmV2WeightLimit'544      }545    }546  },547  /**548   * Lookup89: xcm::VersionedMultiLocation549   **/550  XcmVersionedMultiLocation: {551    _enum: {552      V0: 'XcmV0MultiLocation',553      V1: 'XcmV1MultiLocation'554    }555  },556  /**557   * Lookup90: xcm::v0::multi_location::MultiLocation558   **/559  XcmV0MultiLocation: {560    _enum: {561      Null: 'Null',562      X1: 'XcmV0Junction',563      X2: '(XcmV0Junction,XcmV0Junction)',564      X3: '(XcmV0Junction,XcmV0Junction,XcmV0Junction)',565      X4: '(XcmV0Junction,XcmV0Junction,XcmV0Junction,XcmV0Junction)',566      X5: '(XcmV0Junction,XcmV0Junction,XcmV0Junction,XcmV0Junction,XcmV0Junction)',567      X6: '(XcmV0Junction,XcmV0Junction,XcmV0Junction,XcmV0Junction,XcmV0Junction,XcmV0Junction)',568      X7: '(XcmV0Junction,XcmV0Junction,XcmV0Junction,XcmV0Junction,XcmV0Junction,XcmV0Junction,XcmV0Junction)',569      X8: '(XcmV0Junction,XcmV0Junction,XcmV0Junction,XcmV0Junction,XcmV0Junction,XcmV0Junction,XcmV0Junction,XcmV0Junction)'570    }571  },572  /**573   * Lookup91: xcm::v0::junction::Junction574   **/575  XcmV0Junction: {576    _enum: {577      Parent: 'Null',578      Parachain: 'Compact<u32>',579      AccountId32: {580        network: 'XcmV0JunctionNetworkId',581        id: '[u8;32]',582      },583      AccountIndex64: {584        network: 'XcmV0JunctionNetworkId',585        index: 'Compact<u64>',586      },587      AccountKey20: {588        network: 'XcmV0JunctionNetworkId',589        key: '[u8;20]',590      },591      PalletInstance: 'u8',592      GeneralIndex: 'Compact<u128>',593      GeneralKey: 'Bytes',594      OnlyChild: 'Null',595      Plurality: {596        id: 'XcmV0JunctionBodyId',597        part: 'XcmV0JunctionBodyPart'598      }599    }600  },601  /**602   * Lookup92: xcm::v0::junction::NetworkId603   **/604  XcmV0JunctionNetworkId: {605    _enum: {606      Any: 'Null',607      Named: 'Bytes',608      Polkadot: 'Null',609      Kusama: 'Null'610    }611  },612  /**613   * Lookup93: xcm::v0::junction::BodyId614   **/615  XcmV0JunctionBodyId: {616    _enum: {617      Unit: 'Null',618      Named: 'Bytes',619      Index: 'Compact<u32>',620      Executive: 'Null',621      Technical: 'Null',622      Legislative: 'Null',623      Judicial: 'Null'624    }625  },626  /**627   * Lookup94: xcm::v0::junction::BodyPart628   **/629  XcmV0JunctionBodyPart: {630    _enum: {631      Voice: 'Null',632      Members: {633        count: 'Compact<u32>',634      },635      Fraction: {636        nom: 'Compact<u32>',637        denom: 'Compact<u32>',638      },639      AtLeastProportion: {640        nom: 'Compact<u32>',641        denom: 'Compact<u32>',642      },643      MoreThanProportion: {644        nom: 'Compact<u32>',645        denom: 'Compact<u32>'646      }647    }648  },649  /**650   * Lookup95: xcm::v1::multilocation::MultiLocation651   **/652  XcmV1MultiLocation: {653    parents: 'u8',654    interior: 'XcmV1MultilocationJunctions'655  },656  /**657   * Lookup96: xcm::v1::multilocation::Junctions658   **/659  XcmV1MultilocationJunctions: {660    _enum: {661      Here: 'Null',662      X1: 'XcmV1Junction',663      X2: '(XcmV1Junction,XcmV1Junction)',664      X3: '(XcmV1Junction,XcmV1Junction,XcmV1Junction)',665      X4: '(XcmV1Junction,XcmV1Junction,XcmV1Junction,XcmV1Junction)',666      X5: '(XcmV1Junction,XcmV1Junction,XcmV1Junction,XcmV1Junction,XcmV1Junction)',667      X6: '(XcmV1Junction,XcmV1Junction,XcmV1Junction,XcmV1Junction,XcmV1Junction,XcmV1Junction)',668      X7: '(XcmV1Junction,XcmV1Junction,XcmV1Junction,XcmV1Junction,XcmV1Junction,XcmV1Junction,XcmV1Junction)',669      X8: '(XcmV1Junction,XcmV1Junction,XcmV1Junction,XcmV1Junction,XcmV1Junction,XcmV1Junction,XcmV1Junction,XcmV1Junction)'670    }671  },672  /**673   * Lookup97: xcm::v1::junction::Junction674   **/675  XcmV1Junction: {676    _enum: {677      Parachain: 'Compact<u32>',678      AccountId32: {679        network: 'XcmV0JunctionNetworkId',680        id: '[u8;32]',681      },682      AccountIndex64: {683        network: 'XcmV0JunctionNetworkId',684        index: 'Compact<u64>',685      },686      AccountKey20: {687        network: 'XcmV0JunctionNetworkId',688        key: '[u8;20]',689      },690      PalletInstance: 'u8',691      GeneralIndex: 'Compact<u128>',692      GeneralKey: 'Bytes',693      OnlyChild: 'Null',694      Plurality: {695        id: 'XcmV0JunctionBodyId',696        part: 'XcmV0JunctionBodyPart'697      }698    }699  },700  /**701   * Lookup98: xcm::VersionedXcm<Call>702   **/703  XcmVersionedXcm: {704    _enum: {705      V0: 'XcmV0Xcm',706      V1: 'XcmV1Xcm',707      V2: 'XcmV2Xcm'708    }709  },710  /**711   * Lookup99: xcm::v0::Xcm<Call>712   **/713  XcmV0Xcm: {714    _enum: {715      WithdrawAsset: {716        assets: 'Vec<XcmV0MultiAsset>',717        effects: 'Vec<XcmV0Order>',718      },719      ReserveAssetDeposit: {720        assets: 'Vec<XcmV0MultiAsset>',721        effects: 'Vec<XcmV0Order>',722      },723      TeleportAsset: {724        assets: 'Vec<XcmV0MultiAsset>',725        effects: 'Vec<XcmV0Order>',726      },727      QueryResponse: {728        queryId: 'Compact<u64>',729        response: 'XcmV0Response',730      },731      TransferAsset: {732        assets: 'Vec<XcmV0MultiAsset>',733        dest: 'XcmV0MultiLocation',734      },735      TransferReserveAsset: {736        assets: 'Vec<XcmV0MultiAsset>',737        dest: 'XcmV0MultiLocation',738        effects: 'Vec<XcmV0Order>',739      },740      Transact: {741        originType: 'XcmV0OriginKind',742        requireWeightAtMost: 'u64',743        call: 'XcmDoubleEncoded',744      },745      HrmpNewChannelOpenRequest: {746        sender: 'Compact<u32>',747        maxMessageSize: 'Compact<u32>',748        maxCapacity: 'Compact<u32>',749      },750      HrmpChannelAccepted: {751        recipient: 'Compact<u32>',752      },753      HrmpChannelClosing: {754        initiator: 'Compact<u32>',755        sender: 'Compact<u32>',756        recipient: 'Compact<u32>',757      },758      RelayedFrom: {759        who: 'XcmV0MultiLocation',760        message: 'XcmV0Xcm'761      }762    }763  },764  /**765   * Lookup101: xcm::v0::multi_asset::MultiAsset766   **/767  XcmV0MultiAsset: {768    _enum: {769      None: 'Null',770      All: 'Null',771      AllFungible: 'Null',772      AllNonFungible: 'Null',773      AllAbstractFungible: {774        id: 'Bytes',775      },776      AllAbstractNonFungible: {777        class: 'Bytes',778      },779      AllConcreteFungible: {780        id: 'XcmV0MultiLocation',781      },782      AllConcreteNonFungible: {783        class: 'XcmV0MultiLocation',784      },785      AbstractFungible: {786        id: 'Bytes',787        amount: 'Compact<u128>',788      },789      AbstractNonFungible: {790        class: 'Bytes',791        instance: 'XcmV1MultiassetAssetInstance',792      },793      ConcreteFungible: {794        id: 'XcmV0MultiLocation',795        amount: 'Compact<u128>',796      },797      ConcreteNonFungible: {798        class: 'XcmV0MultiLocation',799        instance: 'XcmV1MultiassetAssetInstance'800      }801    }802  },803  /**804   * Lookup102: xcm::v1::multiasset::AssetInstance805   **/806  XcmV1MultiassetAssetInstance: {807    _enum: {808      Undefined: 'Null',809      Index: 'Compact<u128>',810      Array4: '[u8;4]',811      Array8: '[u8;8]',812      Array16: '[u8;16]',813      Array32: '[u8;32]',814      Blob: 'Bytes'815    }816  },817  /**818   * Lookup106: xcm::v0::order::Order<Call>819   **/820  XcmV0Order: {821    _enum: {822      Null: 'Null',823      DepositAsset: {824        assets: 'Vec<XcmV0MultiAsset>',825        dest: 'XcmV0MultiLocation',826      },827      DepositReserveAsset: {828        assets: 'Vec<XcmV0MultiAsset>',829        dest: 'XcmV0MultiLocation',830        effects: 'Vec<XcmV0Order>',831      },832      ExchangeAsset: {833        give: 'Vec<XcmV0MultiAsset>',834        receive: 'Vec<XcmV0MultiAsset>',835      },836      InitiateReserveWithdraw: {837        assets: 'Vec<XcmV0MultiAsset>',838        reserve: 'XcmV0MultiLocation',839        effects: 'Vec<XcmV0Order>',840      },841      InitiateTeleport: {842        assets: 'Vec<XcmV0MultiAsset>',843        dest: 'XcmV0MultiLocation',844        effects: 'Vec<XcmV0Order>',845      },846      QueryHolding: {847        queryId: 'Compact<u64>',848        dest: 'XcmV0MultiLocation',849        assets: 'Vec<XcmV0MultiAsset>',850      },851      BuyExecution: {852        fees: 'XcmV0MultiAsset',853        weight: 'u64',854        debt: 'u64',855        haltOnError: 'bool',856        xcm: 'Vec<XcmV0Xcm>'857      }858    }859  },860  /**861   * Lookup108: xcm::v0::Response862   **/863  XcmV0Response: {864    _enum: {865      Assets: 'Vec<XcmV0MultiAsset>'866    }867  },868  /**869   * Lookup109: xcm::v0::OriginKind870   **/871  XcmV0OriginKind: {872    _enum: ['Native', 'SovereignAccount', 'Superuser', 'Xcm']873  },874  /**875   * Lookup110: xcm::double_encoded::DoubleEncoded<T>876   **/877  XcmDoubleEncoded: {878    encoded: 'Bytes'879  },880  /**881   * Lookup111: xcm::v1::Xcm<Call>882   **/883  XcmV1Xcm: {884    _enum: {885      WithdrawAsset: {886        assets: 'XcmV1MultiassetMultiAssets',887        effects: 'Vec<XcmV1Order>',888      },889      ReserveAssetDeposited: {890        assets: 'XcmV1MultiassetMultiAssets',891        effects: 'Vec<XcmV1Order>',892      },893      ReceiveTeleportedAsset: {894        assets: 'XcmV1MultiassetMultiAssets',895        effects: 'Vec<XcmV1Order>',896      },897      QueryResponse: {898        queryId: 'Compact<u64>',899        response: 'XcmV1Response',900      },901      TransferAsset: {902        assets: 'XcmV1MultiassetMultiAssets',903        beneficiary: 'XcmV1MultiLocation',904      },905      TransferReserveAsset: {906        assets: 'XcmV1MultiassetMultiAssets',907        dest: 'XcmV1MultiLocation',908        effects: 'Vec<XcmV1Order>',909      },910      Transact: {911        originType: 'XcmV0OriginKind',912        requireWeightAtMost: 'u64',913        call: 'XcmDoubleEncoded',914      },915      HrmpNewChannelOpenRequest: {916        sender: 'Compact<u32>',917        maxMessageSize: 'Compact<u32>',918        maxCapacity: 'Compact<u32>',919      },920      HrmpChannelAccepted: {921        recipient: 'Compact<u32>',922      },923      HrmpChannelClosing: {924        initiator: 'Compact<u32>',925        sender: 'Compact<u32>',926        recipient: 'Compact<u32>',927      },928      RelayedFrom: {929        who: 'XcmV1MultilocationJunctions',930        message: 'XcmV1Xcm',931      },932      SubscribeVersion: {933        queryId: 'Compact<u64>',934        maxResponseWeight: 'Compact<u64>',935      },936      UnsubscribeVersion: 'Null'937    }938  },939  /**940   * Lookup112: xcm::v1::multiasset::MultiAssets941   **/942  XcmV1MultiassetMultiAssets: 'Vec<XcmV1MultiAsset>',943  /**944   * Lookup114: xcm::v1::multiasset::MultiAsset945   **/946  XcmV1MultiAsset: {947    id: 'XcmV1MultiassetAssetId',948    fun: 'XcmV1MultiassetFungibility'949  },950  /**951   * Lookup115: xcm::v1::multiasset::AssetId952   **/953  XcmV1MultiassetAssetId: {954    _enum: {955      Concrete: 'XcmV1MultiLocation',956      Abstract: 'Bytes'957    }958  },959  /**960   * Lookup116: xcm::v1::multiasset::Fungibility961   **/962  XcmV1MultiassetFungibility: {963    _enum: {964      Fungible: 'Compact<u128>',965      NonFungible: 'XcmV1MultiassetAssetInstance'966    }967  },968  /**969   * Lookup118: xcm::v1::order::Order<Call>970   **/971  XcmV1Order: {972    _enum: {973      Noop: 'Null',974      DepositAsset: {975        assets: 'XcmV1MultiassetMultiAssetFilter',976        maxAssets: 'u32',977        beneficiary: 'XcmV1MultiLocation',978      },979      DepositReserveAsset: {980        assets: 'XcmV1MultiassetMultiAssetFilter',981        maxAssets: 'u32',982        dest: 'XcmV1MultiLocation',983        effects: 'Vec<XcmV1Order>',984      },985      ExchangeAsset: {986        give: 'XcmV1MultiassetMultiAssetFilter',987        receive: 'XcmV1MultiassetMultiAssets',988      },989      InitiateReserveWithdraw: {990        assets: 'XcmV1MultiassetMultiAssetFilter',991        reserve: 'XcmV1MultiLocation',992        effects: 'Vec<XcmV1Order>',993      },994      InitiateTeleport: {995        assets: 'XcmV1MultiassetMultiAssetFilter',996        dest: 'XcmV1MultiLocation',997        effects: 'Vec<XcmV1Order>',998      },999      QueryHolding: {1000        queryId: 'Compact<u64>',1001        dest: 'XcmV1MultiLocation',1002        assets: 'XcmV1MultiassetMultiAssetFilter',1003      },1004      BuyExecution: {1005        fees: 'XcmV1MultiAsset',1006        weight: 'u64',1007        debt: 'u64',1008        haltOnError: 'bool',1009        instructions: 'Vec<XcmV1Xcm>'1010      }1011    }1012  },1013  /**1014   * Lookup119: xcm::v1::multiasset::MultiAssetFilter1015   **/1016  XcmV1MultiassetMultiAssetFilter: {1017    _enum: {1018      Definite: 'XcmV1MultiassetMultiAssets',1019      Wild: 'XcmV1MultiassetWildMultiAsset'1020    }1021  },1022  /**1023   * Lookup120: xcm::v1::multiasset::WildMultiAsset1024   **/1025  XcmV1MultiassetWildMultiAsset: {1026    _enum: {1027      All: 'Null',1028      AllOf: {1029        id: 'XcmV1MultiassetAssetId',1030        fun: 'XcmV1MultiassetWildFungibility'1031      }1032    }1033  },1034  /**1035   * Lookup121: xcm::v1::multiasset::WildFungibility1036   **/1037  XcmV1MultiassetWildFungibility: {1038    _enum: ['Fungible', 'NonFungible']1039  },1040  /**1041   * Lookup123: xcm::v1::Response1042   **/1043  XcmV1Response: {1044    _enum: {1045      Assets: 'XcmV1MultiassetMultiAssets',1046      Version: 'u32'1047    }1048  },1049  /**1050   * Lookup124: xcm::v2::Xcm<Call>1051   **/1052  XcmV2Xcm: 'Vec<XcmV2Instruction>',1053  /**1054   * Lookup126: xcm::v2::Instruction<Call>1055   **/1056  XcmV2Instruction: {1057    _enum: {1058      WithdrawAsset: 'XcmV1MultiassetMultiAssets',1059      ReserveAssetDeposited: 'XcmV1MultiassetMultiAssets',1060      ReceiveTeleportedAsset: 'XcmV1MultiassetMultiAssets',1061      QueryResponse: {1062        queryId: 'Compact<u64>',1063        response: 'XcmV2Response',1064        maxWeight: 'Compact<u64>',1065      },1066      TransferAsset: {1067        assets: 'XcmV1MultiassetMultiAssets',1068        beneficiary: 'XcmV1MultiLocation',1069      },1070      TransferReserveAsset: {1071        assets: 'XcmV1MultiassetMultiAssets',1072        dest: 'XcmV1MultiLocation',1073        xcm: 'XcmV2Xcm',1074      },1075      Transact: {1076        originType: 'XcmV0OriginKind',1077        requireWeightAtMost: 'Compact<u64>',1078        call: 'XcmDoubleEncoded',1079      },1080      HrmpNewChannelOpenRequest: {1081        sender: 'Compact<u32>',1082        maxMessageSize: 'Compact<u32>',1083        maxCapacity: 'Compact<u32>',1084      },1085      HrmpChannelAccepted: {1086        recipient: 'Compact<u32>',1087      },1088      HrmpChannelClosing: {1089        initiator: 'Compact<u32>',1090        sender: 'Compact<u32>',1091        recipient: 'Compact<u32>',1092      },1093      ClearOrigin: 'Null',1094      DescendOrigin: 'XcmV1MultilocationJunctions',1095      ReportError: {1096        queryId: 'Compact<u64>',1097        dest: 'XcmV1MultiLocation',1098        maxResponseWeight: 'Compact<u64>',1099      },1100      DepositAsset: {1101        assets: 'XcmV1MultiassetMultiAssetFilter',1102        maxAssets: 'Compact<u32>',1103        beneficiary: 'XcmV1MultiLocation',1104      },1105      DepositReserveAsset: {1106        assets: 'XcmV1MultiassetMultiAssetFilter',1107        maxAssets: 'Compact<u32>',1108        dest: 'XcmV1MultiLocation',1109        xcm: 'XcmV2Xcm',1110      },1111      ExchangeAsset: {1112        give: 'XcmV1MultiassetMultiAssetFilter',1113        receive: 'XcmV1MultiassetMultiAssets',1114      },1115      InitiateReserveWithdraw: {1116        assets: 'XcmV1MultiassetMultiAssetFilter',1117        reserve: 'XcmV1MultiLocation',1118        xcm: 'XcmV2Xcm',1119      },1120      InitiateTeleport: {1121        assets: 'XcmV1MultiassetMultiAssetFilter',1122        dest: 'XcmV1MultiLocation',1123        xcm: 'XcmV2Xcm',1124      },1125      QueryHolding: {1126        queryId: 'Compact<u64>',1127        dest: 'XcmV1MultiLocation',1128        assets: 'XcmV1MultiassetMultiAssetFilter',1129        maxResponseWeight: 'Compact<u64>',1130      },1131      BuyExecution: {1132        fees: 'XcmV1MultiAsset',1133        weightLimit: 'XcmV2WeightLimit',1134      },1135      RefundSurplus: 'Null',1136      SetErrorHandler: 'XcmV2Xcm',1137      SetAppendix: 'XcmV2Xcm',1138      ClearError: 'Null',1139      ClaimAsset: {1140        assets: 'XcmV1MultiassetMultiAssets',1141        ticket: 'XcmV1MultiLocation',1142      },1143      Trap: 'Compact<u64>',1144      SubscribeVersion: {1145        queryId: 'Compact<u64>',1146        maxResponseWeight: 'Compact<u64>',1147      },1148      UnsubscribeVersion: 'Null'1149    }1150  },1151  /**1152   * Lookup127: xcm::v2::Response1153   **/1154  XcmV2Response: {1155    _enum: {1156      Null: 'Null',1157      Assets: 'XcmV1MultiassetMultiAssets',1158      ExecutionResult: 'Option<(u32,XcmV2TraitsError)>',1159      Version: 'u32'1160    }1161  },1162  /**1163   * Lookup130: xcm::v2::traits::Error1164   **/1165  XcmV2TraitsError: {1166    _enum: {1167      Overflow: 'Null',1168      Unimplemented: 'Null',1169      UntrustedReserveLocation: 'Null',1170      UntrustedTeleportLocation: 'Null',1171      MultiLocationFull: 'Null',1172      MultiLocationNotInvertible: 'Null',1173      BadOrigin: 'Null',1174      InvalidLocation: 'Null',1175      AssetNotFound: 'Null',1176      FailedToTransactAsset: 'Null',1177      NotWithdrawable: 'Null',1178      LocationCannotHold: 'Null',1179      ExceedsMaxMessageSize: 'Null',1180      DestinationUnsupported: 'Null',1181      Transport: 'Null',1182      Unroutable: 'Null',1183      UnknownClaim: 'Null',1184      FailedToDecode: 'Null',1185      MaxWeightInvalid: 'Null',1186      NotHoldingFees: 'Null',1187      TooExpensive: 'Null',1188      Trap: 'u64',1189      UnhandledXcmVersion: 'Null',1190      WeightLimitReached: 'u64',1191      Barrier: 'Null',1192      WeightNotComputable: 'Null'1193    }1194  },1195  /**1196   * Lookup131: xcm::v2::WeightLimit1197   **/1198  XcmV2WeightLimit: {1199    _enum: {1200      Unlimited: 'Null',1201      Limited: 'Compact<u64>'1202    }1203  },1204  /**1205   * Lookup132: xcm::VersionedMultiAssets1206   **/1207  XcmVersionedMultiAssets: {1208    _enum: {1209      V0: 'Vec<XcmV0MultiAsset>',1210      V1: 'XcmV1MultiassetMultiAssets'1211    }1212  },1213  /**1214   * Lookup147: cumulus_pallet_xcm::pallet::Call<T>1215   **/1216  CumulusPalletXcmCall: 'Null',1217  /**1218   * Lookup148: cumulus_pallet_dmp_queue::pallet::Call<T>1219   **/1220  CumulusPalletDmpQueueCall: {1221    _enum: {1222      service_overweight: {1223        index: 'u64',1224        weightLimit: 'u64'1225      }1226    }1227  },1228  /**1229   * Lookup149: pallet_inflation::pallet::Call<T>1230   **/1231  PalletInflationCall: {1232    _enum: {1233      start_inflation: {1234        inflationStartRelayBlock: 'u32'1235      }1236    }1237  },1238  /**1239   * Lookup150: pallet_unique::Call<T>1240   **/1241  PalletUniqueCall: {1242    _enum: {1243      create_collection: {1244        collectionName: 'Vec<u16>',1245        collectionDescription: 'Vec<u16>',1246        tokenPrefix: 'Bytes',1247        mode: 'UpDataStructsCollectionMode',1248      },1249      create_collection_ex: {1250        data: 'UpDataStructsCreateCollectionData',1251      },1252      destroy_collection: {1253        collectionId: 'u32',1254      },1255      add_to_allow_list: {1256        collectionId: 'u32',1257        address: 'PalletEvmAccountBasicCrossAccountIdRepr',1258      },1259      remove_from_allow_list: {1260        collectionId: 'u32',1261        address: 'PalletEvmAccountBasicCrossAccountIdRepr',1262      },1263      change_collection_owner: {1264        collectionId: 'u32',1265        newOwner: 'AccountId32',1266      },1267      add_collection_admin: {1268        collectionId: 'u32',1269        newAdminId: 'PalletEvmAccountBasicCrossAccountIdRepr',1270      },1271      remove_collection_admin: {1272        collectionId: 'u32',1273        accountId: 'PalletEvmAccountBasicCrossAccountIdRepr',1274      },1275      set_collection_sponsor: {1276        collectionId: 'u32',1277        newSponsor: 'AccountId32',1278      },1279      confirm_sponsorship: {1280        collectionId: 'u32',1281      },1282      remove_collection_sponsor: {1283        collectionId: 'u32',1284      },1285      create_item: {1286        collectionId: 'u32',1287        owner: 'PalletEvmAccountBasicCrossAccountIdRepr',1288        data: 'UpDataStructsCreateItemData',1289      },1290      create_multiple_items: {1291        collectionId: 'u32',1292        owner: 'PalletEvmAccountBasicCrossAccountIdRepr',1293        itemsData: 'Vec<UpDataStructsCreateItemData>',1294      },1295      set_collection_properties: {1296        collectionId: 'u32',1297        properties: 'Vec<UpDataStructsProperty>',1298      },1299      delete_collection_properties: {1300        collectionId: 'u32',1301        propertyKeys: 'Vec<Bytes>',1302      },1303      set_token_properties: {1304        collectionId: 'u32',1305        tokenId: 'u32',1306        properties: 'Vec<UpDataStructsProperty>',1307      },1308      delete_token_properties: {1309        collectionId: 'u32',1310        tokenId: 'u32',1311        propertyKeys: 'Vec<Bytes>',1312      },1313      set_property_permissions: {1314        collectionId: 'u32',1315        propertyPermissions: 'Vec<UpDataStructsPropertyKeyPermission>',1316      },1317      create_multiple_items_ex: {1318        collectionId: 'u32',1319        data: 'UpDataStructsCreateItemExData',1320      },1321      set_transfers_enabled_flag: {1322        collectionId: 'u32',1323        value: 'bool',1324      },1325      burn_item: {1326        collectionId: 'u32',1327        itemId: 'u32',1328        value: 'u128',1329      },1330      burn_from: {1331        collectionId: 'u32',1332        from: 'PalletEvmAccountBasicCrossAccountIdRepr',1333        itemId: 'u32',1334        value: 'u128',1335      },1336      transfer: {1337        recipient: 'PalletEvmAccountBasicCrossAccountIdRepr',1338        collectionId: 'u32',1339        itemId: 'u32',1340        value: 'u128',1341      },1342      approve: {1343        spender: 'PalletEvmAccountBasicCrossAccountIdRepr',1344        collectionId: 'u32',1345        itemId: 'u32',1346        amount: 'u128',1347      },1348      transfer_from: {1349        from: 'PalletEvmAccountBasicCrossAccountIdRepr',1350        recipient: 'PalletEvmAccountBasicCrossAccountIdRepr',1351        collectionId: 'u32',1352        itemId: 'u32',1353        value: 'u128',1354      },1355      set_collection_limits: {1356        collectionId: 'u32',1357        newLimit: 'UpDataStructsCollectionLimits',1358      },1359      set_collection_permissions: {1360        collectionId: 'u32',1361        newLimit: 'UpDataStructsCollectionPermissions'1362      }1363    }1364  },1365  /**1366   * Lookup156: up_data_structs::CollectionMode1367   **/1368  UpDataStructsCollectionMode: {1369    _enum: {1370      NFT: 'Null',1371      Fungible: 'u8',1372      ReFungible: 'Null'1373    }1374  },1375  /**1376   * Lookup157: up_data_structs::CreateCollectionData<sp_core::crypto::AccountId32>1377   **/1378  UpDataStructsCreateCollectionData: {1379    mode: 'UpDataStructsCollectionMode',1380    access: 'Option<UpDataStructsAccessMode>',1381    name: 'Vec<u16>',1382    description: 'Vec<u16>',1383    tokenPrefix: 'Bytes',1384    pendingSponsor: 'Option<AccountId32>',1385    limits: 'Option<UpDataStructsCollectionLimits>',1386    permissions: 'Option<UpDataStructsCollectionPermissions>',1387    tokenPropertyPermissions: 'Vec<UpDataStructsPropertyKeyPermission>',1388    properties: 'Vec<UpDataStructsProperty>'1389  },1390  /**1391   * Lookup159: up_data_structs::AccessMode1392   **/1393  UpDataStructsAccessMode: {1394    _enum: ['Normal', 'AllowList']1395  },1396  /**1397   * Lookup162: up_data_structs::CollectionLimits1398   **/1399  UpDataStructsCollectionLimits: {1400    accountTokenOwnershipLimit: 'Option<u32>',1401    sponsoredDataSize: 'Option<u32>',1402    sponsoredDataRateLimit: 'Option<UpDataStructsSponsoringRateLimit>',1403    tokenLimit: 'Option<u32>',1404    sponsorTransferTimeout: 'Option<u32>',1405    sponsorApproveTimeout: 'Option<u32>',1406    ownerCanTransfer: 'Option<bool>',1407    ownerCanDestroy: 'Option<bool>',1408    transfersEnabled: 'Option<bool>'1409  },1410  /**1411   * Lookup164: up_data_structs::SponsoringRateLimit1412   **/1413  UpDataStructsSponsoringRateLimit: {1414    _enum: {1415      SponsoringDisabled: 'Null',1416      Blocks: 'u32'1417    }1418  },1419  /**1420   * Lookup167: up_data_structs::CollectionPermissions1421   **/1422  UpDataStructsCollectionPermissions: {1423    access: 'Option<UpDataStructsAccessMode>',1424    mintMode: 'Option<bool>',1425    nesting: 'Option<UpDataStructsNestingRule>'1426  },1427  /**1428   * Lookup169: up_data_structs::NestingRule1429   **/1430  UpDataStructsNestingRule: {1431    _enum: {1432      Disabled: 'Null',1433      Owner: 'Null',1434      OwnerRestricted: 'BTreeSet<u32>'1435    }1436  },1437  /**1438   * Lookup175: up_data_structs::PropertyKeyPermission1439   **/1440  UpDataStructsPropertyKeyPermission: {1441    key: 'Bytes',1442    permission: 'UpDataStructsPropertyPermission'1443  },1444  /**1445   * Lookup177: up_data_structs::PropertyPermission1446   **/1447  UpDataStructsPropertyPermission: {1448    mutable: 'bool',1449    collectionAdmin: 'bool',1450    tokenOwner: 'bool'1451  },1452  /**1453   * Lookup180: up_data_structs::Property1454   **/1455  UpDataStructsProperty: {1456    key: 'Bytes',1457    value: 'Bytes'1458  },1459  /**1460   * Lookup183: pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>1461   **/1462  PalletEvmAccountBasicCrossAccountIdRepr: {1463    _enum: {1464      Substrate: 'AccountId32',1465      Ethereum: 'H160'1466    }1467  },1468  /**1469   * Lookup185: up_data_structs::CreateItemData1470   **/1471  UpDataStructsCreateItemData: {1472    _enum: {1473      NFT: 'UpDataStructsCreateNftData',1474      Fungible: 'UpDataStructsCreateFungibleData',1475      ReFungible: 'UpDataStructsCreateReFungibleData'1476    }1477  },1478  /**1479   * Lookup186: up_data_structs::CreateNftData1480   **/1481  UpDataStructsCreateNftData: {1482    properties: 'Vec<UpDataStructsProperty>'1483  },1484  /**1485   * Lookup187: up_data_structs::CreateFungibleData1486   **/1487  UpDataStructsCreateFungibleData: {1488    value: 'u128'1489  },1490  /**1491   * Lookup188: up_data_structs::CreateReFungibleData1492   **/1493  UpDataStructsCreateReFungibleData: {1494    constData: 'Bytes',1495    pieces: 'u128'1496  },1497  /**1498   * Lookup193: up_data_structs::CreateItemExData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>1499   **/1500  UpDataStructsCreateItemExData: {1501    _enum: {1502      NFT: 'Vec<UpDataStructsCreateNftExData>',1503      Fungible: 'BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr, u128>',1504      RefungibleMultipleItems: 'Vec<UpDataStructsCreateRefungibleExData>',1505      RefungibleMultipleOwners: 'UpDataStructsCreateRefungibleExData'1506    }1507  },1508  /**1509   * Lookup195: up_data_structs::CreateNftExData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>1510   **/1511  UpDataStructsCreateNftExData: {1512    properties: 'Vec<UpDataStructsProperty>',1513    owner: 'PalletEvmAccountBasicCrossAccountIdRepr'1514  },1515  /**1516   * Lookup202: up_data_structs::CreateRefungibleExData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>1517   **/1518  UpDataStructsCreateRefungibleExData: {1519    constData: 'Bytes',1520    users: 'BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr, u128>'1521  },1522  /**1523   * Lookup204: pallet_template_transaction_payment::Call<T>1524   **/1525  PalletTemplateTransactionPaymentCall: 'Null',1526  /**1527   * Lookup205: pallet_structure::pallet::Call<T>1528   **/1529  PalletStructureCall: 'Null',1530  /**1531   * Lookup206: pallet_evm::pallet::Call<T>1532   **/1533  PalletEvmCall: {1534    _enum: {1535      withdraw: {1536        address: 'H160',1537        value: 'u128',1538      },1539      call: {1540        source: 'H160',1541        target: 'H160',1542        input: 'Bytes',1543        value: 'U256',1544        gasLimit: 'u64',1545        maxFeePerGas: 'U256',1546        maxPriorityFeePerGas: 'Option<U256>',1547        nonce: 'Option<U256>',1548        accessList: 'Vec<(H160,Vec<H256>)>',1549      },1550      create: {1551        source: 'H160',1552        init: 'Bytes',1553        value: 'U256',1554        gasLimit: 'u64',1555        maxFeePerGas: 'U256',1556        maxPriorityFeePerGas: 'Option<U256>',1557        nonce: 'Option<U256>',1558        accessList: 'Vec<(H160,Vec<H256>)>',1559      },1560      create2: {1561        source: 'H160',1562        init: 'Bytes',1563        salt: 'H256',1564        value: 'U256',1565        gasLimit: 'u64',1566        maxFeePerGas: 'U256',1567        maxPriorityFeePerGas: 'Option<U256>',1568        nonce: 'Option<U256>',1569        accessList: 'Vec<(H160,Vec<H256>)>'1570      }1571    }1572  },1573  /**1574   * Lookup212: pallet_ethereum::pallet::Call<T>1575   **/1576  PalletEthereumCall: {1577    _enum: {1578      transact: {1579        transaction: 'EthereumTransactionTransactionV2'1580      }1581    }1582  },1583  /**1584   * Lookup213: ethereum::transaction::TransactionV21585   **/1586  EthereumTransactionTransactionV2: {1587    _enum: {1588      Legacy: 'EthereumTransactionLegacyTransaction',1589      EIP2930: 'EthereumTransactionEip2930Transaction',1590      EIP1559: 'EthereumTransactionEip1559Transaction'1591    }1592  },1593  /**1594   * Lookup214: ethereum::transaction::LegacyTransaction1595   **/1596  EthereumTransactionLegacyTransaction: {1597    nonce: 'U256',1598    gasPrice: 'U256',1599    gasLimit: 'U256',1600    action: 'EthereumTransactionTransactionAction',1601    value: 'U256',1602    input: 'Bytes',1603    signature: 'EthereumTransactionTransactionSignature'1604  },1605  /**1606   * Lookup215: ethereum::transaction::TransactionAction1607   **/1608  EthereumTransactionTransactionAction: {1609    _enum: {1610      Call: 'H160',1611      Create: 'Null'1612    }1613  },1614  /**1615   * Lookup216: ethereum::transaction::TransactionSignature1616   **/1617  EthereumTransactionTransactionSignature: {1618    v: 'u64',1619    r: 'H256',1620    s: 'H256'1621  },1622  /**1623   * Lookup218: ethereum::transaction::EIP2930Transaction1624   **/1625  EthereumTransactionEip2930Transaction: {1626    chainId: 'u64',1627    nonce: 'U256',1628    gasPrice: 'U256',1629    gasLimit: 'U256',1630    action: 'EthereumTransactionTransactionAction',1631    value: 'U256',1632    input: 'Bytes',1633    accessList: 'Vec<EthereumTransactionAccessListItem>',1634    oddYParity: 'bool',1635    r: 'H256',1636    s: 'H256'1637  },1638  /**1639   * Lookup220: ethereum::transaction::AccessListItem1640   **/1641  EthereumTransactionAccessListItem: {1642    address: 'H160',1643    storageKeys: 'Vec<H256>'1644  },1645  /**1646   * Lookup221: ethereum::transaction::EIP1559Transaction1647   **/1648  EthereumTransactionEip1559Transaction: {1649    chainId: 'u64',1650    nonce: 'U256',1651    maxPriorityFeePerGas: 'U256',1652    maxFeePerGas: 'U256',1653    gasLimit: 'U256',1654    action: 'EthereumTransactionTransactionAction',1655    value: 'U256',1656    input: 'Bytes',1657    accessList: 'Vec<EthereumTransactionAccessListItem>',1658    oddYParity: 'bool',1659    r: 'H256',1660    s: 'H256'1661  },1662  /**1663   * Lookup222: pallet_evm_migration::pallet::Call<T>1664   **/1665  PalletEvmMigrationCall: {1666    _enum: {1667      begin: {1668        address: 'H160',1669      },1670      set_data: {1671        address: 'H160',1672        data: 'Vec<(H256,H256)>',1673      },1674      finish: {1675        address: 'H160',1676        code: 'Bytes'1677      }1678    }1679  },1680  /**1681   * Lookup225: pallet_sudo::pallet::Event<T>1682   **/1683  PalletSudoEvent: {1684    _enum: {1685      Sudid: {1686        sudoResult: 'Result<Null, SpRuntimeDispatchError>',1687      },1688      KeyChanged: {1689        oldSudoer: 'Option<AccountId32>',1690      },1691      SudoAsDone: {1692        sudoResult: 'Result<Null, SpRuntimeDispatchError>'1693      }1694    }1695  },1696  /**1697   * Lookup227: sp_runtime::DispatchError1698   **/1699  SpRuntimeDispatchError: {1700    _enum: {1701      Other: 'Null',1702      CannotLookup: 'Null',1703      BadOrigin: 'Null',1704      Module: 'SpRuntimeModuleError',1705      ConsumerRemaining: 'Null',1706      NoProviders: 'Null',1707      TooManyConsumers: 'Null',1708      Token: 'SpRuntimeTokenError',1709      Arithmetic: 'SpRuntimeArithmeticError',1710      Transactional: 'SpRuntimeTransactionalError'1711    }1712  },1713  /**1714   * Lookup228: sp_runtime::ModuleError1715   **/1716  SpRuntimeModuleError: {1717    index: 'u8',1718    error: '[u8;4]'1719  },1720  /**1721   * Lookup229: sp_runtime::TokenError1722   **/1723  SpRuntimeTokenError: {1724    _enum: ['NoFunds', 'WouldDie', 'BelowMinimum', 'CannotCreate', 'UnknownAsset', 'Frozen', 'Unsupported']1725  },1726  /**1727   * Lookup230: sp_runtime::ArithmeticError1728   **/1729  SpRuntimeArithmeticError: {1730    _enum: ['Underflow', 'Overflow', 'DivisionByZero']1731  },1732  /**1733   * Lookup231: sp_runtime::TransactionalError1734   **/1735  SpRuntimeTransactionalError: {1736    _enum: ['LimitReached', 'NoLayer']1737  },1738  /**1739   * Lookup232: pallet_sudo::pallet::Error<T>1740   **/1741  PalletSudoError: {1742    _enum: ['RequireSudo']1743  },1744  /**1745   * Lookup233: frame_system::AccountInfo<Index, pallet_balances::AccountData<Balance>>1746   **/1747  FrameSystemAccountInfo: {1748    nonce: 'u32',1749    consumers: 'u32',1750    providers: 'u32',1751    sufficients: 'u32',1752    data: 'PalletBalancesAccountData'1753  },1754  /**1755   * Lookup234: frame_support::weights::PerDispatchClass<T>1756   **/1757  FrameSupportWeightsPerDispatchClassU64: {1758    normal: 'u64',1759    operational: 'u64',1760    mandatory: 'u64'1761  },1762  /**1763   * Lookup235: sp_runtime::generic::digest::Digest1764   **/1765  SpRuntimeDigest: {1766    logs: 'Vec<SpRuntimeDigestDigestItem>'1767  },1768  /**1769   * Lookup237: sp_runtime::generic::digest::DigestItem1770   **/1771  SpRuntimeDigestDigestItem: {1772    _enum: {1773      Other: 'Bytes',1774      __Unused1: 'Null',1775      __Unused2: 'Null',1776      __Unused3: 'Null',1777      Consensus: '([u8;4],Bytes)',1778      Seal: '([u8;4],Bytes)',1779      PreRuntime: '([u8;4],Bytes)',1780      __Unused7: 'Null',1781      RuntimeEnvironmentUpdated: 'Null'1782    }1783  },1784  /**1785   * Lookup239: frame_system::EventRecord<opal_runtime::Event, primitive_types::H256>1786   **/1787  FrameSystemEventRecord: {1788    phase: 'FrameSystemPhase',1789    event: 'Event',1790    topics: 'Vec<H256>'1791  },1792  /**1793   * Lookup241: frame_system::pallet::Event<T>1794   **/1795  FrameSystemEvent: {1796    _enum: {1797      ExtrinsicSuccess: {1798        dispatchInfo: 'FrameSupportWeightsDispatchInfo',1799      },1800      ExtrinsicFailed: {1801        dispatchError: 'SpRuntimeDispatchError',1802        dispatchInfo: 'FrameSupportWeightsDispatchInfo',1803      },1804      CodeUpdated: 'Null',1805      NewAccount: {1806        account: 'AccountId32',1807      },1808      KilledAccount: {1809        account: 'AccountId32',1810      },1811      Remarked: {1812        _alias: {1813          hash_: 'hash',1814        },1815        sender: 'AccountId32',1816        hash_: 'H256'1817      }1818    }1819  },1820  /**1821   * Lookup242: frame_support::weights::DispatchInfo1822   **/1823  FrameSupportWeightsDispatchInfo: {1824    weight: 'u64',1825    class: 'FrameSupportWeightsDispatchClass',1826    paysFee: 'FrameSupportWeightsPays'1827  },1828  /**1829   * Lookup243: frame_support::weights::DispatchClass1830   **/1831  FrameSupportWeightsDispatchClass: {1832    _enum: ['Normal', 'Operational', 'Mandatory']1833  },1834  /**1835   * Lookup244: frame_support::weights::Pays1836   **/1837  FrameSupportWeightsPays: {1838    _enum: ['Yes', 'No']1839  },1840  /**1841   * Lookup245: orml_vesting::module::Event<T>1842   **/1843  OrmlVestingModuleEvent: {1844    _enum: {1845      VestingScheduleAdded: {1846        from: 'AccountId32',1847        to: 'AccountId32',1848        vestingSchedule: 'OrmlVestingVestingSchedule',1849      },1850      Claimed: {1851        who: 'AccountId32',1852        amount: 'u128',1853      },1854      VestingSchedulesUpdated: {1855        who: 'AccountId32'1856      }1857    }1858  },1859  /**1860   * Lookup246: cumulus_pallet_xcmp_queue::pallet::Event<T>1861   **/1862  CumulusPalletXcmpQueueEvent: {1863    _enum: {1864      Success: 'Option<H256>',1865      Fail: '(Option<H256>,XcmV2TraitsError)',1866      BadVersion: 'Option<H256>',1867      BadFormat: 'Option<H256>',1868      UpwardMessageSent: 'Option<H256>',1869      XcmpMessageSent: 'Option<H256>',1870      OverweightEnqueued: '(u32,u32,u64,u64)',1871      OverweightServiced: '(u64,u64)'1872    }1873  },1874  /**1875   * Lookup247: pallet_xcm::pallet::Event<T>1876   **/1877  PalletXcmEvent: {1878    _enum: {1879      Attempted: 'XcmV2TraitsOutcome',1880      Sent: '(XcmV1MultiLocation,XcmV1MultiLocation,XcmV2Xcm)',1881      UnexpectedResponse: '(XcmV1MultiLocation,u64)',1882      ResponseReady: '(u64,XcmV2Response)',1883      Notified: '(u64,u8,u8)',1884      NotifyOverweight: '(u64,u8,u8,u64,u64)',1885      NotifyDispatchError: '(u64,u8,u8)',1886      NotifyDecodeFailed: '(u64,u8,u8)',1887      InvalidResponder: '(XcmV1MultiLocation,u64,Option<XcmV1MultiLocation>)',1888      InvalidResponderVersion: '(XcmV1MultiLocation,u64)',1889      ResponseTaken: 'u64',1890      AssetsTrapped: '(H256,XcmV1MultiLocation,XcmVersionedMultiAssets)',1891      VersionChangeNotified: '(XcmV1MultiLocation,u32)',1892      SupportedVersionChanged: '(XcmV1MultiLocation,u32)',1893      NotifyTargetSendFail: '(XcmV1MultiLocation,u64,XcmV2TraitsError)',1894      NotifyTargetMigrationFail: '(XcmVersionedMultiLocation,u64)'1895    }1896  },1897  /**1898   * Lookup248: xcm::v2::traits::Outcome1899   **/1900  XcmV2TraitsOutcome: {1901    _enum: {1902      Complete: 'u64',1903      Incomplete: '(u64,XcmV2TraitsError)',1904      Error: 'XcmV2TraitsError'1905    }1906  },1907  /**1908   * Lookup250: cumulus_pallet_xcm::pallet::Event<T>1909   **/1910  CumulusPalletXcmEvent: {1911    _enum: {1912      InvalidFormat: '[u8;8]',1913      UnsupportedVersion: '[u8;8]',1914      ExecutedDownward: '([u8;8],XcmV2TraitsOutcome)'1915    }1916  },1917  /**1918   * Lookup251: cumulus_pallet_dmp_queue::pallet::Event<T>1919   **/1920  CumulusPalletDmpQueueEvent: {1921    _enum: {1922      InvalidFormat: '[u8;32]',1923      UnsupportedVersion: '[u8;32]',1924      ExecutedDownward: '([u8;32],XcmV2TraitsOutcome)',1925      WeightExhausted: '([u8;32],u64,u64)',1926      OverweightEnqueued: '([u8;32],u64,u64)',1927      OverweightServiced: '(u64,u64)'1928    }1929  },1930  /**1931   * Lookup252: pallet_unique::RawEvent<sp_core::crypto::AccountId32, pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>1932   **/1933  PalletUniqueRawEvent: {1934    _enum: {1935      CollectionSponsorRemoved: 'u32',1936      CollectionAdminAdded: '(u32,PalletEvmAccountBasicCrossAccountIdRepr)',1937      CollectionOwnedChanged: '(u32,AccountId32)',1938      CollectionSponsorSet: '(u32,AccountId32)',1939      SponsorshipConfirmed: '(u32,AccountId32)',1940      CollectionAdminRemoved: '(u32,PalletEvmAccountBasicCrossAccountIdRepr)',1941      AllowListAddressRemoved: '(u32,PalletEvmAccountBasicCrossAccountIdRepr)',1942      AllowListAddressAdded: '(u32,PalletEvmAccountBasicCrossAccountIdRepr)',1943      CollectionLimitSet: 'u32',1944      CollectionPermissionSet: 'u32'1945    }1946  },1947  /**1948   * Lookup253: pallet_common::pallet::Event<T>1949   **/1950  PalletCommonEvent: {1951    _enum: {1952      CollectionCreated: '(u32,u8,AccountId32)',1953      CollectionDestroyed: 'u32',1954      ItemCreated: '(u32,u32,PalletEvmAccountBasicCrossAccountIdRepr,u128)',1955      ItemDestroyed: '(u32,u32,PalletEvmAccountBasicCrossAccountIdRepr,u128)',1956      Transfer: '(u32,u32,PalletEvmAccountBasicCrossAccountIdRepr,PalletEvmAccountBasicCrossAccountIdRepr,u128)',1957      Approved: '(u32,u32,PalletEvmAccountBasicCrossAccountIdRepr,PalletEvmAccountBasicCrossAccountIdRepr,u128)',1958      CollectionPropertySet: '(u32,Bytes)',1959      CollectionPropertyDeleted: '(u32,Bytes)',1960      TokenPropertySet: '(u32,u32,Bytes)',1961      TokenPropertyDeleted: '(u32,u32,Bytes)',1962      PropertyPermissionSet: '(u32,Bytes)'1963    }1964  },1965  /**1966   * Lookup254: pallet_structure::pallet::Event<T>1967   **/1968  PalletStructureEvent: {1969    _enum: {1970      Executed: 'Result<Null, SpRuntimeDispatchError>'1971    }1972  },1973  /**1974   * Lookup255: pallet_evm::pallet::Event<T>1975   **/1976  PalletEvmEvent: {1977    _enum: {1978      Log: 'EthereumLog',1979      Created: 'H160',1980      CreatedFailed: 'H160',1981      Executed: 'H160',1982      ExecutedFailed: 'H160',1983      BalanceDeposit: '(AccountId32,H160,U256)',1984      BalanceWithdraw: '(AccountId32,H160,U256)'1985    }1986  },1987  /**1988   * Lookup256: ethereum::log::Log1989   **/1990  EthereumLog: {1991    address: 'H160',1992    topics: 'Vec<H256>',1993    data: 'Bytes'1994  },1995  /**1996   * Lookup257: pallet_ethereum::pallet::Event1997   **/1998  PalletEthereumEvent: {1999    _enum: {2000      Executed: '(H160,H160,H256,EvmCoreErrorExitReason)'2001    }2002  },2003  /**2004   * Lookup258: evm_core::error::ExitReason2005   **/2006  EvmCoreErrorExitReason: {2007    _enum: {2008      Succeed: 'EvmCoreErrorExitSucceed',2009      Error: 'EvmCoreErrorExitError',2010      Revert: 'EvmCoreErrorExitRevert',2011      Fatal: 'EvmCoreErrorExitFatal'2012    }2013  },2014  /**2015   * Lookup259: evm_core::error::ExitSucceed2016   **/2017  EvmCoreErrorExitSucceed: {2018    _enum: ['Stopped', 'Returned', 'Suicided']2019  },2020  /**2021   * Lookup260: evm_core::error::ExitError2022   **/2023  EvmCoreErrorExitError: {2024    _enum: {2025      StackUnderflow: 'Null',2026      StackOverflow: 'Null',2027      InvalidJump: 'Null',2028      InvalidRange: 'Null',2029      DesignatedInvalid: 'Null',2030      CallTooDeep: 'Null',2031      CreateCollision: 'Null',2032      CreateContractLimit: 'Null',2033      OutOfOffset: 'Null',2034      OutOfGas: 'Null',2035      OutOfFund: 'Null',2036      PCUnderflow: 'Null',2037      CreateEmpty: 'Null',2038      Other: 'Text',2039      InvalidCode: 'Null'2040    }2041  },2042  /**2043   * Lookup263: evm_core::error::ExitRevert2044   **/2045  EvmCoreErrorExitRevert: {2046    _enum: ['Reverted']2047  },2048  /**2049   * Lookup264: evm_core::error::ExitFatal2050   **/2051  EvmCoreErrorExitFatal: {2052    _enum: {2053      NotSupported: 'Null',2054      UnhandledInterrupt: 'Null',2055      CallErrorAsFatal: 'EvmCoreErrorExitError',2056      Other: 'Text'2057    }2058  },2059  /**2060   * Lookup265: frame_system::Phase2061   **/2062  FrameSystemPhase: {2063    _enum: {2064      ApplyExtrinsic: 'u32',2065      Finalization: 'Null',2066      Initialization: 'Null'2067    }2068  },2069  /**2070   * Lookup267: frame_system::LastRuntimeUpgradeInfo2071   **/2072  FrameSystemLastRuntimeUpgradeInfo: {2073    specVersion: 'Compact<u32>',2074    specName: 'Text'2075  },2076  /**2077   * Lookup268: frame_system::limits::BlockWeights2078   **/2079  FrameSystemLimitsBlockWeights: {2080    baseBlock: 'u64',2081    maxBlock: 'u64',2082    perClass: 'FrameSupportWeightsPerDispatchClassWeightsPerClass'2083  },2084  /**2085   * Lookup269: frame_support::weights::PerDispatchClass<frame_system::limits::WeightsPerClass>2086   **/2087  FrameSupportWeightsPerDispatchClassWeightsPerClass: {2088    normal: 'FrameSystemLimitsWeightsPerClass',2089    operational: 'FrameSystemLimitsWeightsPerClass',2090    mandatory: 'FrameSystemLimitsWeightsPerClass'2091  },2092  /**2093   * Lookup270: frame_system::limits::WeightsPerClass2094   **/2095  FrameSystemLimitsWeightsPerClass: {2096    baseExtrinsic: 'u64',2097    maxExtrinsic: 'Option<u64>',2098    maxTotal: 'Option<u64>',2099    reserved: 'Option<u64>'2100  },2101  /**2102   * Lookup272: frame_system::limits::BlockLength2103   **/2104  FrameSystemLimitsBlockLength: {2105    max: 'FrameSupportWeightsPerDispatchClassU32'2106  },2107  /**2108   * Lookup273: frame_support::weights::PerDispatchClass<T>2109   **/2110  FrameSupportWeightsPerDispatchClassU32: {2111    normal: 'u32',2112    operational: 'u32',2113    mandatory: 'u32'2114  },2115  /**2116   * Lookup274: frame_support::weights::RuntimeDbWeight2117   **/2118  FrameSupportWeightsRuntimeDbWeight: {2119    read: 'u64',2120    write: 'u64'2121  },2122  /**2123   * Lookup275: sp_version::RuntimeVersion2124   **/2125  SpVersionRuntimeVersion: {2126    specName: 'Text',2127    implName: 'Text',2128    authoringVersion: 'u32',2129    specVersion: 'u32',2130    implVersion: 'u32',2131    apis: 'Vec<([u8;8],u32)>',2132    transactionVersion: 'u32',2133    stateVersion: 'u8'2134  },2135  /**2136   * Lookup279: frame_system::pallet::Error<T>2137   **/2138  FrameSystemError: {2139    _enum: ['InvalidSpecName', 'SpecVersionNeedsToIncrease', 'FailedToExtractRuntimeVersion', 'NonDefaultComposite', 'NonZeroRefCount', 'CallFiltered']2140  },2141  /**2142   * Lookup281: orml_vesting::module::Error<T>2143   **/2144  OrmlVestingModuleError: {2145    _enum: ['ZeroVestingPeriod', 'ZeroVestingPeriodCount', 'InsufficientBalanceToLock', 'TooManyVestingSchedules', 'AmountLow', 'MaxVestingSchedulesExceeded']2146  },2147  /**2148   * Lookup283: cumulus_pallet_xcmp_queue::InboundChannelDetails2149   **/2150  CumulusPalletXcmpQueueInboundChannelDetails: {2151    sender: 'u32',2152    state: 'CumulusPalletXcmpQueueInboundState',2153    messageMetadata: 'Vec<(u32,PolkadotParachainPrimitivesXcmpMessageFormat)>'2154  },2155  /**2156   * Lookup284: cumulus_pallet_xcmp_queue::InboundState2157   **/2158  CumulusPalletXcmpQueueInboundState: {2159    _enum: ['Ok', 'Suspended']2160  },2161  /**2162   * Lookup287: polkadot_parachain::primitives::XcmpMessageFormat2163   **/2164  PolkadotParachainPrimitivesXcmpMessageFormat: {2165    _enum: ['ConcatenatedVersionedXcm', 'ConcatenatedEncodedBlob', 'Signals']2166  },2167  /**2168   * Lookup290: cumulus_pallet_xcmp_queue::OutboundChannelDetails2169   **/2170  CumulusPalletXcmpQueueOutboundChannelDetails: {2171    recipient: 'u32',2172    state: 'CumulusPalletXcmpQueueOutboundState',2173    signalsExist: 'bool',2174    firstIndex: 'u16',2175    lastIndex: 'u16'2176  },2177  /**2178   * Lookup291: cumulus_pallet_xcmp_queue::OutboundState2179   **/2180  CumulusPalletXcmpQueueOutboundState: {2181    _enum: ['Ok', 'Suspended']2182  },2183  /**2184   * Lookup293: cumulus_pallet_xcmp_queue::QueueConfigData2185   **/2186  CumulusPalletXcmpQueueQueueConfigData: {2187    suspendThreshold: 'u32',2188    dropThreshold: 'u32',2189    resumeThreshold: 'u32',2190    thresholdWeight: 'u64',2191    weightRestrictDecay: 'u64',2192    xcmpMaxIndividualWeight: 'u64'2193  },2194  /**2195   * Lookup295: cumulus_pallet_xcmp_queue::pallet::Error<T>2196   **/2197  CumulusPalletXcmpQueueError: {2198    _enum: ['FailedToSend', 'BadXcmOrigin', 'BadXcm', 'BadOverweightIndex', 'WeightOverLimit']2199  },2200  /**2201   * Lookup296: pallet_xcm::pallet::Error<T>2202   **/2203  PalletXcmError: {2204    _enum: ['Unreachable', 'SendFailure', 'Filtered', 'UnweighableMessage', 'DestinationNotInvertible', 'Empty', 'CannotReanchor', 'TooManyAssets', 'InvalidOrigin', 'BadVersion', 'BadLocation', 'NoSubscription', 'AlreadySubscribed']2205  },2206  /**2207   * Lookup297: cumulus_pallet_xcm::pallet::Error<T>2208   **/2209  CumulusPalletXcmError: 'Null',2210  /**2211   * Lookup298: cumulus_pallet_dmp_queue::ConfigData2212   **/2213  CumulusPalletDmpQueueConfigData: {2214    maxIndividual: 'u64'2215  },2216  /**2217   * Lookup299: cumulus_pallet_dmp_queue::PageIndexData2218   **/2219  CumulusPalletDmpQueuePageIndexData: {2220    beginUsed: 'u32',2221    endUsed: 'u32',2222    overweightCount: 'u64'2223  },2224  /**2225   * Lookup302: cumulus_pallet_dmp_queue::pallet::Error<T>2226   **/2227  CumulusPalletDmpQueueError: {2228    _enum: ['Unknown', 'OverLimit']2229  },2230  /**2231   * Lookup306: pallet_unique::Error<T>2232   **/2233  PalletUniqueError: {2234    _enum: ['CollectionDecimalPointLimitExceeded', 'ConfirmUnsetSponsorFail', 'EmptyArgument']2235  },2236  /**2237   * Lookup307: up_data_structs::Collection<sp_core::crypto::AccountId32>2238   **/2239  UpDataStructsCollection: {2240    owner: 'AccountId32',2241    mode: 'UpDataStructsCollectionMode',2242    name: 'Vec<u16>',2243    description: 'Vec<u16>',2244    tokenPrefix: 'Bytes',2245    sponsorship: 'UpDataStructsSponsorshipState',2246    limits: 'UpDataStructsCollectionLimits',2247    permissions: 'UpDataStructsCollectionPermissions'2248  },2249  /**2250   * Lookup308: up_data_structs::SponsorshipState<sp_core::crypto::AccountId32>2251   **/2252  UpDataStructsSponsorshipState: {2253    _enum: {2254      Disabled: 'Null',2255      Unconfirmed: 'AccountId32',2256      Confirmed: 'AccountId32'2257    }2258  },2259  /**2260   * Lookup309: up_data_structs::Properties2261   **/2262  UpDataStructsProperties: {2263    map: 'UpDataStructsPropertiesMapBoundedVec',2264    consumedSpace: 'u32',2265    spaceLimit: 'u32'2266  },2267  /**2268   * Lookup310: up_data_structs::PropertiesMap<frame_support::storage::bounded_vec::BoundedVec<T, S>>2269   **/2270  UpDataStructsPropertiesMapBoundedVec: 'BTreeMap<Bytes, Bytes>',2271  /**2272   * Lookup315: up_data_structs::PropertiesMap<up_data_structs::PropertyPermission>2273   **/2274  UpDataStructsPropertiesMapPropertyPermission: 'BTreeMap<Bytes, UpDataStructsPropertyPermission>',2275  /**2276   * Lookup322: up_data_structs::CollectionStats2277   **/2278  UpDataStructsCollectionStats: {2279    created: 'u32',2280    destroyed: 'u32',2281    alive: 'u32'2282  },2283  /**2284   * Lookup323: up_data_structs::TokenChild2285   **/2286  UpDataStructsTokenChild: {2287    token: 'u32',2288    collection: 'u32'2289  },2290  /**2291   * Lookup324: PhantomType::up_data_structs<T>2292   **/2293  PhantomTypeUpDataStructs: '[(UpDataStructsTokenData,UpDataStructsRpcCollection,UpDataStructsRmrkCollectionInfo,UpDataStructsRmrkNftInfo,UpDataStructsRmrkResourceInfo,UpDataStructsRmrkPropertyInfo,UpDataStructsRmrkBaseInfo,UpDataStructsRmrkPartType,UpDataStructsRmrkTheme,UpDataStructsRmrkNftChild);0]',2294  /**2295   * Lookup326: up_data_structs::TokenData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>2296   **/2297  UpDataStructsTokenData: {2298    properties: 'Vec<UpDataStructsProperty>',2299    owner: 'Option<PalletEvmAccountBasicCrossAccountIdRepr>'2300  },2301  /**2302   * Lookup328: up_data_structs::RpcCollection<sp_core::crypto::AccountId32>2303   **/2304  UpDataStructsRpcCollection: {2305    owner: 'AccountId32',2306    mode: 'UpDataStructsCollectionMode',2307    name: 'Vec<u16>',2308    description: 'Vec<u16>',2309    tokenPrefix: 'Bytes',2310    sponsorship: 'UpDataStructsSponsorshipState',2311    limits: 'UpDataStructsCollectionLimits',2312    permissions: 'UpDataStructsCollectionPermissions',2313    tokenPropertyPermissions: 'Vec<UpDataStructsPropertyKeyPermission>',2314    properties: 'Vec<UpDataStructsProperty>'2315  },2316  /**2317   * Lookup329: up_data_structs::rmrk::CollectionInfo<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>, sp_core::crypto::AccountId32>2318   **/2319  UpDataStructsRmrkCollectionInfo: {2320    issuer: 'AccountId32',2321    metadata: 'Bytes',2322    max: 'Option<u32>',2323    symbol: 'Bytes',2324    nftsCount: 'u32'2325  },2326  /**2327   * Lookup332: up_data_structs::rmrk::NftInfo<sp_core::crypto::AccountId32, sp_arithmetic::per_things::Permill, frame_support::storage::bounded_vec::BoundedVec<T, S>>2328   **/2329  UpDataStructsRmrkNftInfo: {2330    owner: 'UpDataStructsRmrkAccountIdOrCollectionNftTuple',2331    royalty: 'Option<UpDataStructsRmrkRoyaltyInfo>',2332    metadata: 'Bytes',2333    equipped: 'bool',2334    pending: 'bool'2335  },2336  /**2337   * Lookup333: up_data_structs::rmrk::AccountIdOrCollectionNftTuple<sp_core::crypto::AccountId32>2338   **/2339  UpDataStructsRmrkAccountIdOrCollectionNftTuple: {2340    _enum: {2341      AccountId: 'AccountId32',2342      CollectionAndNftTuple: '(u32,u32)'2343    }2344  },2345  /**2346   * Lookup335: up_data_structs::rmrk::RoyaltyInfo<sp_core::crypto::AccountId32, sp_arithmetic::per_things::Permill>2347   **/2348  UpDataStructsRmrkRoyaltyInfo: {2349    recipient: 'AccountId32',2350    amount: 'Permill'2351  },2352  /**2353   * Lookup336: up_data_structs::rmrk::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>>2354   **/2355  UpDataStructsRmrkResourceInfo: {2356    id: 'Bytes',2357    resource: 'UpDataStructsRmrkResourceTypes',2358    pending: 'bool',2359    pendingRemoval: 'bool'2360  },2361  /**2362   * Lookup339: up_data_structs::rmrk::ResourceTypes<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>2363   **/2364  UpDataStructsRmrkResourceTypes: {2365    _enum: {2366      Basic: 'UpDataStructsRmrkBasicResource',2367      Composable: 'UpDataStructsRmrkComposableResource',2368      Slot: 'UpDataStructsRmrkSlotResource'2369    }2370  },2371  /**2372   * Lookup340: up_data_structs::rmrk::BasicResource<frame_support::storage::bounded_vec::BoundedVec<T, S>>2373   **/2374  UpDataStructsRmrkBasicResource: {2375    src: 'Option<Bytes>',2376    metadata: 'Option<Bytes>',2377    license: 'Option<Bytes>',2378    thumb: 'Option<Bytes>'2379  },2380  /**2381   * Lookup342: up_data_structs::rmrk::ComposableResource<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>2382   **/2383  UpDataStructsRmrkComposableResource: {2384    parts: 'Vec<u32>',2385    base: 'u32',2386    src: 'Option<Bytes>',2387    metadata: 'Option<Bytes>',2388    license: 'Option<Bytes>',2389    thumb: 'Option<Bytes>'2390  },2391  /**2392   * Lookup343: up_data_structs::rmrk::SlotResource<frame_support::storage::bounded_vec::BoundedVec<T, S>>2393   **/2394  UpDataStructsRmrkSlotResource: {2395    base: 'u32',2396    src: 'Option<Bytes>',2397    metadata: 'Option<Bytes>',2398    slot: 'u32',2399    license: 'Option<Bytes>',2400    thumb: 'Option<Bytes>'2401  },2402  /**2403   * Lookup344: up_data_structs::rmrk::PropertyInfo<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>2404   **/2405  UpDataStructsRmrkPropertyInfo: {2406    key: 'Bytes',2407    value: 'Bytes'2408  },2409  /**2410   * Lookup347: up_data_structs::rmrk::BaseInfo<sp_core::crypto::AccountId32, frame_support::storage::bounded_vec::BoundedVec<T, S>>2411   **/2412  UpDataStructsRmrkBaseInfo: {2413    issuer: 'AccountId32',2414    baseType: 'Bytes',2415    symbol: 'Bytes'2416  },2417  /**2418   * Lookup348: up_data_structs::rmrk::PartType<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>2419   **/2420  UpDataStructsRmrkPartType: {2421    _enum: {2422      FixedPart: 'UpDataStructsRmrkFixedPart',2423      SlotPart: 'UpDataStructsRmrkSlotPart'2424    }2425  },2426  /**2427   * Lookup350: up_data_structs::rmrk::FixedPart<frame_support::storage::bounded_vec::BoundedVec<T, S>>2428   **/2429  UpDataStructsRmrkFixedPart: {2430    id: 'u32',2431    z: 'u32',2432    src: 'Bytes'2433  },2434  /**2435   * Lookup351: up_data_structs::rmrk::SlotPart<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>2436   **/2437  UpDataStructsRmrkSlotPart: {2438    id: 'u32',2439    equippable: 'UpDataStructsRmrkEquippableList',2440    src: 'Bytes',2441    z: 'u32'2442  },2443  /**2444   * Lookup352: up_data_structs::rmrk::EquippableList<frame_support::storage::bounded_vec::BoundedVec<T, S>>2445   **/2446  UpDataStructsRmrkEquippableList: {2447    _enum: {2448      All: 'Null',2449      Empty: 'Null',2450      Custom: 'Vec<u32>'2451    }2452  },2453  /**2454   * Lookup353: up_data_structs::rmrk::Theme<frame_support::storage::bounded_vec::BoundedVec<T, S>, PropertyList>2455   **/2456  UpDataStructsRmrkTheme: {2457    name: 'Bytes',2458    properties: 'Vec<UpDataStructsRmrkThemeProperty>',2459    inherit: 'bool'2460  },2461  /**2462   * Lookup355: up_data_structs::rmrk::ThemeProperty<frame_support::storage::bounded_vec::BoundedVec<T, S>>2463   **/2464  UpDataStructsRmrkThemeProperty: {2465    key: 'Bytes',2466    value: 'Bytes'2467  },2468  /**2469   * Lookup356: up_data_structs::rmrk::NftChild2470   **/2471  UpDataStructsRmrkNftChild: {2472    collectionId: 'u32',2473    nftId: 'u32'2474  },2475  /**2476   * Lookup358: pallet_common::pallet::Error<T>2477   **/2478  PalletCommonError: {2479    _enum: ['CollectionNotFound', 'MustBeTokenOwner', 'NoPermission', 'CantDestroyNotEmptyCollection', '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']2480  },2481  /**2482   * Lookup360: pallet_fungible::pallet::Error<T>2483   **/2484  PalletFungibleError: {2485    _enum: ['NotFungibleDataUsedToMintFungibleCollectionToken', 'FungibleItemsHaveNoId', 'FungibleItemsDontHaveData', 'FungibleDisallowsNesting', 'SettingPropertiesNotAllowed']2486  },2487  /**2488   * Lookup361: pallet_refungible::ItemData2489   **/2490  PalletRefungibleItemData: {2491    constData: 'Bytes'2492  },2493  /**2494   * Lookup365: pallet_refungible::pallet::Error<T>2495   **/2496  PalletRefungibleError: {2497    _enum: ['NotRefungibleDataUsedToMintFungibleCollectionToken', 'WrongRefungiblePieces', 'RefungibleDisallowsNesting', 'SettingPropertiesNotAllowed']2498  },2499  /**2500   * Lookup366: pallet_nonfungible::ItemData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>2501   **/2502  PalletNonfungibleItemData: {2503    owner: 'PalletEvmAccountBasicCrossAccountIdRepr'2504  },2505  /**2506   * Lookup368: pallet_nonfungible::pallet::Error<T>2507   **/2508  PalletNonfungibleError: {2509    _enum: ['NotNonfungibleDataUsedToMintFungibleCollectionToken', 'NonfungibleItemsHaveNoAmount', 'CantBurnNftWithChildren']2510  },2511  /**2512   * Lookup369: pallet_structure::pallet::Error<T>2513   **/2514  PalletStructureError: {2515    _enum: ['OuroborosDetected', 'DepthLimit', 'TokenNotFound']2516  },2517  /**2518   * Lookup372: pallet_evm::pallet::Error<T>2519   **/2520  PalletEvmError: {2521    _enum: ['BalanceLow', 'FeeOverflow', 'PaymentOverflow', 'WithdrawFailed', 'GasPriceTooLow', 'InvalidNonce']2522  },2523  /**2524   * Lookup375: fp_rpc::TransactionStatus2525   **/2526  FpRpcTransactionStatus: {2527    transactionHash: 'H256',2528    transactionIndex: 'u32',2529    from: 'H160',2530    to: 'Option<H160>',2531    contractAddress: 'Option<H160>',2532    logs: 'Vec<EthereumLog>',2533    logsBloom: 'EthbloomBloom'2534  },2535  /**2536   * Lookup377: ethbloom::Bloom2537   **/2538  EthbloomBloom: '[u8;256]',2539  /**2540   * Lookup379: ethereum::receipt::ReceiptV32541   **/2542  EthereumReceiptReceiptV3: {2543    _enum: {2544      Legacy: 'EthereumReceiptEip658ReceiptData',2545      EIP2930: 'EthereumReceiptEip658ReceiptData',2546      EIP1559: 'EthereumReceiptEip658ReceiptData'2547    }2548  },2549  /**2550   * Lookup380: ethereum::receipt::EIP658ReceiptData2551   **/2552  EthereumReceiptEip658ReceiptData: {2553    statusCode: 'u8',2554    usedGas: 'U256',2555    logsBloom: 'EthbloomBloom',2556    logs: 'Vec<EthereumLog>'2557  },2558  /**2559   * Lookup381: ethereum::block::Block<ethereum::transaction::TransactionV2>2560   **/2561  EthereumBlock: {2562    header: 'EthereumHeader',2563    transactions: 'Vec<EthereumTransactionTransactionV2>',2564    ommers: 'Vec<EthereumHeader>'2565  },2566  /**2567   * Lookup382: ethereum::header::Header2568   **/2569  EthereumHeader: {2570    parentHash: 'H256',2571    ommersHash: 'H256',2572    beneficiary: 'H160',2573    stateRoot: 'H256',2574    transactionsRoot: 'H256',2575    receiptsRoot: 'H256',2576    logsBloom: 'EthbloomBloom',2577    difficulty: 'U256',2578    number: 'U256',2579    gasLimit: 'U256',2580    gasUsed: 'U256',2581    timestamp: 'u64',2582    extraData: 'Bytes',2583    mixHash: 'H256',2584    nonce: 'EthereumTypesHashH64'2585  },2586  /**2587   * Lookup383: ethereum_types::hash::H642588   **/2589  EthereumTypesHashH64: '[u8;8]',2590  /**2591   * Lookup388: pallet_ethereum::pallet::Error<T>2592   **/2593  PalletEthereumError: {2594    _enum: ['InvalidSignature', 'PreLogExists']2595  },2596  /**2597   * Lookup389: pallet_evm_coder_substrate::pallet::Error<T>2598   **/2599  PalletEvmCoderSubstrateError: {2600    _enum: ['OutOfGas', 'OutOfFund']2601  },2602  /**2603   * Lookup390: pallet_evm_contract_helpers::SponsoringModeT2604   **/2605  PalletEvmContractHelpersSponsoringModeT: {2606    _enum: ['Disabled', 'Allowlisted', 'Generous']2607  },2608  /**2609   * Lookup392: pallet_evm_contract_helpers::pallet::Error<T>2610   **/2611  PalletEvmContractHelpersError: {2612    _enum: ['NoPermission']2613  },2614  /**2615   * Lookup393: pallet_evm_migration::pallet::Error<T>2616   **/2617  PalletEvmMigrationError: {2618    _enum: ['AccountNotEmpty', 'AccountIsNotMigrating']2619  },2620  /**2621   * Lookup395: sp_runtime::MultiSignature2622   **/2623  SpRuntimeMultiSignature: {2624    _enum: {2625      Ed25519: 'SpCoreEd25519Signature',2626      Sr25519: 'SpCoreSr25519Signature',2627      Ecdsa: 'SpCoreEcdsaSignature'2628    }2629  },2630  /**2631   * Lookup396: sp_core::ed25519::Signature2632   **/2633  SpCoreEd25519Signature: '[u8;64]',2634  /**2635   * Lookup398: sp_core::sr25519::Signature2636   **/2637  SpCoreSr25519Signature: '[u8;64]',2638  /**2639   * Lookup399: sp_core::ecdsa::Signature2640   **/2641  SpCoreEcdsaSignature: '[u8;65]',2642  /**2643   * Lookup402: frame_system::extensions::check_spec_version::CheckSpecVersion<T>2644   **/2645  FrameSystemExtensionsCheckSpecVersion: 'Null',2646  /**2647   * Lookup403: frame_system::extensions::check_genesis::CheckGenesis<T>2648   **/2649  FrameSystemExtensionsCheckGenesis: 'Null',2650  /**2651   * Lookup406: frame_system::extensions::check_nonce::CheckNonce<T>2652   **/2653  FrameSystemExtensionsCheckNonce: 'Compact<u32>',2654  /**2655   * Lookup407: frame_system::extensions::check_weight::CheckWeight<T>2656   **/2657  FrameSystemExtensionsCheckWeight: 'Null',2658  /**2659   * Lookup408: pallet_template_transaction_payment::ChargeTransactionPayment<opal_runtime::Runtime>2660   **/2661  PalletTemplateTransactionPaymentChargeTransactionPayment: 'Compact<u128>',2662  /**2663   * Lookup409: opal_runtime::Runtime2664   **/2665  OpalRuntimeRuntime: 'Null',2666  /**2667   * Lookup410: pallet_ethereum::FakeTransactionFinalizer<opal_runtime::Runtime>2668   **/2669  PalletEthereumFakeTransactionFinalizer: 'Null'2670};
modifiedtests/src/interfaces/registry.tsdiffbeforeafterboth
--- a/tests/src/interfaces/registry.ts
+++ b/tests/src/interfaces/registry.ts
@@ -104,6 +104,12 @@
     PalletNonfungibleItemData: PalletNonfungibleItemData;
     PalletRefungibleError: PalletRefungibleError;
     PalletRefungibleItemData: PalletRefungibleItemData;
+    PalletRmrkCoreCall: PalletRmrkCoreCall;
+    PalletRmrkCoreError: PalletRmrkCoreError;
+    PalletRmrkCoreEvent: PalletRmrkCoreEvent;
+    PalletRmrkEquipCall: PalletRmrkEquipCall;
+    PalletRmrkEquipError: PalletRmrkEquipError;
+    PalletRmrkEquipEvent: PalletRmrkEquipEvent;
     PalletStructureCall: PalletStructureCall;
     PalletStructureError: PalletStructureError;
     PalletStructureEvent: PalletStructureEvent;
modifiedtests/src/interfaces/rmrk/definitions.tsdiffbeforeafterboth
--- a/tests/src/interfaces/rmrk/definitions.ts
+++ b/tests/src/interfaces/rmrk/definitions.ts
@@ -58,7 +58,10 @@
     ),
     collectionProperties: fn(
       'Get collection properties',
-      [{name: 'collectionId', type: 'u32'}],
+      [
+        {name: 'collectionId', type: 'u32'},
+        {name: 'filterKeys', type: 'Vec<String>', isOptional: true},
+      ],
       'Vec<UpDataStructsRmrkPropertyInfo>',
     ),
     nftProperties: fn(
@@ -66,6 +69,7 @@
       [
         {name: 'collectionId', type: 'u32'},
         {name: 'nftId', type: 'u32'},
+        {name: 'filterKeys', type: 'Vec<String>', isOptional: true},
       ],
       'Vec<UpDataStructsRmrkPropertyInfo>',
     ),
modifiedtests/src/interfaces/types-lookup.tsdiffbeforeafterboth
--- a/tests/src/interfaces/types-lookup.ts
+++ b/tests/src/interfaces/types-lookup.ts
@@ -1649,7 +1649,160 @@
   /** @name PalletStructureCall (205) */
   export type PalletStructureCall = Null;
 
-  /** @name PalletEvmCall (206) */
+  /** @name PalletRmrkCoreCall (206) */
+  export interface PalletRmrkCoreCall extends Enum {
+    readonly isCreateCollection: boolean;
+    readonly asCreateCollection: {
+      readonly metadata: Bytes;
+      readonly max: Option<u32>;
+      readonly symbol: Bytes;
+    } & Struct;
+    readonly isDestroyCollection: boolean;
+    readonly asDestroyCollection: {
+      readonly collectionId: u32;
+    } & Struct;
+    readonly isChangeCollectionIssuer: boolean;
+    readonly asChangeCollectionIssuer: {
+      readonly collectionId: u32;
+      readonly newIssuer: MultiAddress;
+    } & Struct;
+    readonly isLockCollection: boolean;
+    readonly asLockCollection: {
+      readonly collectionId: u32;
+    } & Struct;
+    readonly isMintNft: boolean;
+    readonly asMintNft: {
+      readonly owner: AccountId32;
+      readonly collectionId: u32;
+      readonly recipient: Option<AccountId32>;
+      readonly royaltyAmount: Option<Permill>;
+      readonly metadata: Bytes;
+    } & Struct;
+    readonly isBurnNft: boolean;
+    readonly asBurnNft: {
+      readonly collectionId: u32;
+      readonly nftId: u32;
+    } & Struct;
+    readonly isSetProperty: boolean;
+    readonly asSetProperty: {
+      readonly rmrkCollectionId: Compact<u32>;
+      readonly maybeNftId: Option<u32>;
+      readonly key: Bytes;
+      readonly value: Bytes;
+    } & Struct;
+    readonly isAddBasicResource: boolean;
+    readonly asAddBasicResource: {
+      readonly collectionId: u32;
+      readonly nftId: u32;
+      readonly resource: UpDataStructsRmrkBasicResource;
+    } & Struct;
+    readonly isAddComposableResource: boolean;
+    readonly asAddComposableResource: {
+      readonly collectionId: u32;
+      readonly nftId: u32;
+      readonly resourceId: Bytes;
+      readonly resource: UpDataStructsRmrkComposableResource;
+    } & Struct;
+    readonly isAddSlotResource: boolean;
+    readonly asAddSlotResource: {
+      readonly collectionId: u32;
+      readonly nftId: u32;
+      readonly resource: UpDataStructsRmrkSlotResource;
+    } & Struct;
+    readonly type: 'CreateCollection' | 'DestroyCollection' | 'ChangeCollectionIssuer' | 'LockCollection' | 'MintNft' | 'BurnNft' | 'SetProperty' | 'AddBasicResource' | 'AddComposableResource' | 'AddSlotResource';
+  }
+
+  /** @name UpDataStructsRmrkBasicResource (212) */
+  export interface UpDataStructsRmrkBasicResource extends Struct {
+    readonly src: Option<Bytes>;
+    readonly metadata: Option<Bytes>;
+    readonly license: Option<Bytes>;
+    readonly thumb: Option<Bytes>;
+  }
+
+  /** @name UpDataStructsRmrkComposableResource (215) */
+  export interface UpDataStructsRmrkComposableResource extends Struct {
+    readonly parts: Vec<u32>;
+    readonly base: u32;
+    readonly src: Option<Bytes>;
+    readonly metadata: Option<Bytes>;
+    readonly license: Option<Bytes>;
+    readonly thumb: Option<Bytes>;
+  }
+
+  /** @name UpDataStructsRmrkSlotResource (217) */
+  export interface UpDataStructsRmrkSlotResource extends Struct {
+    readonly base: u32;
+    readonly src: Option<Bytes>;
+    readonly metadata: Option<Bytes>;
+    readonly slot: u32;
+    readonly license: Option<Bytes>;
+    readonly thumb: Option<Bytes>;
+  }
+
+  /** @name PalletRmrkEquipCall (218) */
+  export interface PalletRmrkEquipCall extends Enum {
+    readonly isCreateBase: boolean;
+    readonly asCreateBase: {
+      readonly baseType: Bytes;
+      readonly symbol: Bytes;
+      readonly parts: Vec<UpDataStructsRmrkPartType>;
+    } & Struct;
+    readonly isThemeAdd: boolean;
+    readonly asThemeAdd: {
+      readonly baseId: u32;
+      readonly theme: UpDataStructsRmrkTheme;
+    } & Struct;
+    readonly type: 'CreateBase' | 'ThemeAdd';
+  }
+
+  /** @name UpDataStructsRmrkPartType (220) */
+  export interface UpDataStructsRmrkPartType extends Enum {
+    readonly isFixedPart: boolean;
+    readonly asFixedPart: UpDataStructsRmrkFixedPart;
+    readonly isSlotPart: boolean;
+    readonly asSlotPart: UpDataStructsRmrkSlotPart;
+    readonly type: 'FixedPart' | 'SlotPart';
+  }
+
+  /** @name UpDataStructsRmrkFixedPart (222) */
+  export interface UpDataStructsRmrkFixedPart extends Struct {
+    readonly id: u32;
+    readonly z: u32;
+    readonly src: Bytes;
+  }
+
+  /** @name UpDataStructsRmrkSlotPart (223) */
+  export interface UpDataStructsRmrkSlotPart extends Struct {
+    readonly id: u32;
+    readonly equippable: UpDataStructsRmrkEquippableList;
+    readonly src: Bytes;
+    readonly z: u32;
+  }
+
+  /** @name UpDataStructsRmrkEquippableList (224) */
+  export interface UpDataStructsRmrkEquippableList extends Enum {
+    readonly isAll: boolean;
+    readonly isEmpty: boolean;
+    readonly isCustom: boolean;
+    readonly asCustom: Vec<u32>;
+    readonly type: 'All' | 'Empty' | 'Custom';
+  }
+
+  /** @name UpDataStructsRmrkTheme (226) */
+  export interface UpDataStructsRmrkTheme extends Struct {
+    readonly name: Bytes;
+    readonly properties: Vec<UpDataStructsRmrkThemeProperty>;
+    readonly inherit: bool;
+  }
+
+  /** @name UpDataStructsRmrkThemeProperty (228) */
+  export interface UpDataStructsRmrkThemeProperty extends Struct {
+    readonly key: Bytes;
+    readonly value: Bytes;
+  }
+
+  /** @name PalletEvmCall (229) */
   export interface PalletEvmCall extends Enum {
     readonly isWithdraw: boolean;
     readonly asWithdraw: {
@@ -1694,7 +1847,7 @@
     readonly type: 'Withdraw' | 'Call' | 'Create' | 'Create2';
   }
 
-  /** @name PalletEthereumCall (212) */
+  /** @name PalletEthereumCall (235) */
   export interface PalletEthereumCall extends Enum {
     readonly isTransact: boolean;
     readonly asTransact: {
@@ -1703,7 +1856,7 @@
     readonly type: 'Transact';
   }
 
-  /** @name EthereumTransactionTransactionV2 (213) */
+  /** @name EthereumTransactionTransactionV2 (236) */
   export interface EthereumTransactionTransactionV2 extends Enum {
     readonly isLegacy: boolean;
     readonly asLegacy: EthereumTransactionLegacyTransaction;
@@ -1714,7 +1867,7 @@
     readonly type: 'Legacy' | 'Eip2930' | 'Eip1559';
   }
 
-  /** @name EthereumTransactionLegacyTransaction (214) */
+  /** @name EthereumTransactionLegacyTransaction (237) */
   export interface EthereumTransactionLegacyTransaction extends Struct {
     readonly nonce: U256;
     readonly gasPrice: U256;
@@ -1725,7 +1878,7 @@
     readonly signature: EthereumTransactionTransactionSignature;
   }
 
-  /** @name EthereumTransactionTransactionAction (215) */
+  /** @name EthereumTransactionTransactionAction (238) */
   export interface EthereumTransactionTransactionAction extends Enum {
     readonly isCall: boolean;
     readonly asCall: H160;
@@ -1733,14 +1886,14 @@
     readonly type: 'Call' | 'Create';
   }
 
-  /** @name EthereumTransactionTransactionSignature (216) */
+  /** @name EthereumTransactionTransactionSignature (239) */
   export interface EthereumTransactionTransactionSignature extends Struct {
     readonly v: u64;
     readonly r: H256;
     readonly s: H256;
   }
 
-  /** @name EthereumTransactionEip2930Transaction (218) */
+  /** @name EthereumTransactionEip2930Transaction (241) */
   export interface EthereumTransactionEip2930Transaction extends Struct {
     readonly chainId: u64;
     readonly nonce: U256;
@@ -1755,13 +1908,13 @@
     readonly s: H256;
   }
 
-  /** @name EthereumTransactionAccessListItem (220) */
+  /** @name EthereumTransactionAccessListItem (243) */
   export interface EthereumTransactionAccessListItem extends Struct {
     readonly address: H160;
     readonly storageKeys: Vec<H256>;
   }
 
-  /** @name EthereumTransactionEip1559Transaction (221) */
+  /** @name EthereumTransactionEip1559Transaction (244) */
   export interface EthereumTransactionEip1559Transaction extends Struct {
     readonly chainId: u64;
     readonly nonce: U256;
@@ -1777,7 +1930,7 @@
     readonly s: H256;
   }
 
-  /** @name PalletEvmMigrationCall (222) */
+  /** @name PalletEvmMigrationCall (245) */
   export interface PalletEvmMigrationCall extends Enum {
     readonly isBegin: boolean;
     readonly asBegin: {
@@ -1796,7 +1949,7 @@
     readonly type: 'Begin' | 'SetData' | 'Finish';
   }
 
-  /** @name PalletSudoEvent (225) */
+  /** @name PalletSudoEvent (248) */
   export interface PalletSudoEvent extends Enum {
     readonly isSudid: boolean;
     readonly asSudid: {
@@ -1813,7 +1966,7 @@
     readonly type: 'Sudid' | 'KeyChanged' | 'SudoAsDone';
   }
 
-  /** @name SpRuntimeDispatchError (227) */
+  /** @name SpRuntimeDispatchError (250) */
   export interface SpRuntimeDispatchError extends Enum {
     readonly isOther: boolean;
     readonly isCannotLookup: boolean;
@@ -1832,13 +1985,13 @@
     readonly type: 'Other' | 'CannotLookup' | 'BadOrigin' | 'Module' | 'ConsumerRemaining' | 'NoProviders' | 'TooManyConsumers' | 'Token' | 'Arithmetic' | 'Transactional';
   }
 
-  /** @name SpRuntimeModuleError (228) */
+  /** @name SpRuntimeModuleError (251) */
   export interface SpRuntimeModuleError extends Struct {
     readonly index: u8;
     readonly error: U8aFixed;
   }
 
-  /** @name SpRuntimeTokenError (229) */
+  /** @name SpRuntimeTokenError (252) */
   export interface SpRuntimeTokenError extends Enum {
     readonly isNoFunds: boolean;
     readonly isWouldDie: boolean;
@@ -1850,7 +2003,7 @@
     readonly type: 'NoFunds' | 'WouldDie' | 'BelowMinimum' | 'CannotCreate' | 'UnknownAsset' | 'Frozen' | 'Unsupported';
   }
 
-  /** @name SpRuntimeArithmeticError (230) */
+  /** @name SpRuntimeArithmeticError (253) */
   export interface SpRuntimeArithmeticError extends Enum {
     readonly isUnderflow: boolean;
     readonly isOverflow: boolean;
@@ -1858,20 +2011,20 @@
     readonly type: 'Underflow' | 'Overflow' | 'DivisionByZero';
   }
 
-  /** @name SpRuntimeTransactionalError (231) */
+  /** @name SpRuntimeTransactionalError (254) */
   export interface SpRuntimeTransactionalError extends Enum {
     readonly isLimitReached: boolean;
     readonly isNoLayer: boolean;
     readonly type: 'LimitReached' | 'NoLayer';
   }
 
-  /** @name PalletSudoError (232) */
+  /** @name PalletSudoError (255) */
   export interface PalletSudoError extends Enum {
     readonly isRequireSudo: boolean;
     readonly type: 'RequireSudo';
   }
 
-  /** @name FrameSystemAccountInfo (233) */
+  /** @name FrameSystemAccountInfo (256) */
   export interface FrameSystemAccountInfo extends Struct {
     readonly nonce: u32;
     readonly consumers: u32;
@@ -1880,19 +2033,19 @@
     readonly data: PalletBalancesAccountData;
   }
 
-  /** @name FrameSupportWeightsPerDispatchClassU64 (234) */
+  /** @name FrameSupportWeightsPerDispatchClassU64 (257) */
   export interface FrameSupportWeightsPerDispatchClassU64 extends Struct {
     readonly normal: u64;
     readonly operational: u64;
     readonly mandatory: u64;
   }
 
-  /** @name SpRuntimeDigest (235) */
+  /** @name SpRuntimeDigest (258) */
   export interface SpRuntimeDigest extends Struct {
     readonly logs: Vec<SpRuntimeDigestDigestItem>;
   }
 
-  /** @name SpRuntimeDigestDigestItem (237) */
+  /** @name SpRuntimeDigestDigestItem (260) */
   export interface SpRuntimeDigestDigestItem extends Enum {
     readonly isOther: boolean;
     readonly asOther: Bytes;
@@ -1906,14 +2059,14 @@
     readonly type: 'Other' | 'Consensus' | 'Seal' | 'PreRuntime' | 'RuntimeEnvironmentUpdated';
   }
 
-  /** @name FrameSystemEventRecord (239) */
+  /** @name FrameSystemEventRecord (262) */
   export interface FrameSystemEventRecord extends Struct {
     readonly phase: FrameSystemPhase;
     readonly event: Event;
     readonly topics: Vec<H256>;
   }
 
-  /** @name FrameSystemEvent (241) */
+  /** @name FrameSystemEvent (264) */
   export interface FrameSystemEvent extends Enum {
     readonly isExtrinsicSuccess: boolean;
     readonly asExtrinsicSuccess: {
@@ -1941,14 +2094,14 @@
     readonly type: 'ExtrinsicSuccess' | 'ExtrinsicFailed' | 'CodeUpdated' | 'NewAccount' | 'KilledAccount' | 'Remarked';
   }
 
-  /** @name FrameSupportWeightsDispatchInfo (242) */
+  /** @name FrameSupportWeightsDispatchInfo (265) */
   export interface FrameSupportWeightsDispatchInfo extends Struct {
     readonly weight: u64;
     readonly class: FrameSupportWeightsDispatchClass;
     readonly paysFee: FrameSupportWeightsPays;
   }
 
-  /** @name FrameSupportWeightsDispatchClass (243) */
+  /** @name FrameSupportWeightsDispatchClass (266) */
   export interface FrameSupportWeightsDispatchClass extends Enum {
     readonly isNormal: boolean;
     readonly isOperational: boolean;
@@ -1956,14 +2109,14 @@
     readonly type: 'Normal' | 'Operational' | 'Mandatory';
   }
 
-  /** @name FrameSupportWeightsPays (244) */
+  /** @name FrameSupportWeightsPays (267) */
   export interface FrameSupportWeightsPays extends Enum {
     readonly isYes: boolean;
     readonly isNo: boolean;
     readonly type: 'Yes' | 'No';
   }
 
-  /** @name OrmlVestingModuleEvent (245) */
+  /** @name OrmlVestingModuleEvent (268) */
   export interface OrmlVestingModuleEvent extends Enum {
     readonly isVestingScheduleAdded: boolean;
     readonly asVestingScheduleAdded: {
@@ -1983,7 +2136,7 @@
     readonly type: 'VestingScheduleAdded' | 'Claimed' | 'VestingSchedulesUpdated';
   }
 
-  /** @name CumulusPalletXcmpQueueEvent (246) */
+  /** @name CumulusPalletXcmpQueueEvent (269) */
   export interface CumulusPalletXcmpQueueEvent extends Enum {
     readonly isSuccess: boolean;
     readonly asSuccess: Option<H256>;
@@ -2004,7 +2157,7 @@
     readonly type: 'Success' | 'Fail' | 'BadVersion' | 'BadFormat' | 'UpwardMessageSent' | 'XcmpMessageSent' | 'OverweightEnqueued' | 'OverweightServiced';
   }
 
-  /** @name PalletXcmEvent (247) */
+  /** @name PalletXcmEvent (270) */
   export interface PalletXcmEvent extends Enum {
     readonly isAttempted: boolean;
     readonly asAttempted: XcmV2TraitsOutcome;
@@ -2041,7 +2194,7 @@
     readonly type: 'Attempted' | 'Sent' | 'UnexpectedResponse' | 'ResponseReady' | 'Notified' | 'NotifyOverweight' | 'NotifyDispatchError' | 'NotifyDecodeFailed' | 'InvalidResponder' | 'InvalidResponderVersion' | 'ResponseTaken' | 'AssetsTrapped' | 'VersionChangeNotified' | 'SupportedVersionChanged' | 'NotifyTargetSendFail' | 'NotifyTargetMigrationFail';
   }
 
-  /** @name XcmV2TraitsOutcome (248) */
+  /** @name XcmV2TraitsOutcome (271) */
   export interface XcmV2TraitsOutcome extends Enum {
     readonly isComplete: boolean;
     readonly asComplete: u64;
@@ -2052,7 +2205,7 @@
     readonly type: 'Complete' | 'Incomplete' | 'Error';
   }
 
-  /** @name CumulusPalletXcmEvent (250) */
+  /** @name CumulusPalletXcmEvent (273) */
   export interface CumulusPalletXcmEvent extends Enum {
     readonly isInvalidFormat: boolean;
     readonly asInvalidFormat: U8aFixed;
@@ -2063,7 +2216,7 @@
     readonly type: 'InvalidFormat' | 'UnsupportedVersion' | 'ExecutedDownward';
   }
 
-  /** @name CumulusPalletDmpQueueEvent (251) */
+  /** @name CumulusPalletDmpQueueEvent (274) */
   export interface CumulusPalletDmpQueueEvent extends Enum {
     readonly isInvalidFormat: boolean;
     readonly asInvalidFormat: U8aFixed;
@@ -2080,7 +2233,7 @@
     readonly type: 'InvalidFormat' | 'UnsupportedVersion' | 'ExecutedDownward' | 'WeightExhausted' | 'OverweightEnqueued' | 'OverweightServiced';
   }
 
-  /** @name PalletUniqueRawEvent (252) */
+  /** @name PalletUniqueRawEvent (275) */
   export interface PalletUniqueRawEvent extends Enum {
     readonly isCollectionSponsorRemoved: boolean;
     readonly asCollectionSponsorRemoved: u32;
@@ -2105,7 +2258,7 @@
     readonly type: 'CollectionSponsorRemoved' | 'CollectionAdminAdded' | 'CollectionOwnedChanged' | 'CollectionSponsorSet' | 'SponsorshipConfirmed' | 'CollectionAdminRemoved' | 'AllowListAddressRemoved' | 'AllowListAddressAdded' | 'CollectionLimitSet' | 'CollectionPermissionSet';
   }
 
-  /** @name PalletCommonEvent (253) */
+  /** @name PalletCommonEvent (276) */
   export interface PalletCommonEvent extends Enum {
     readonly isCollectionCreated: boolean;
     readonly asCollectionCreated: ITuple<[u32, u8, AccountId32]>;
@@ -2132,14 +2285,73 @@
     readonly type: 'CollectionCreated' | 'CollectionDestroyed' | 'ItemCreated' | 'ItemDestroyed' | 'Transfer' | 'Approved' | 'CollectionPropertySet' | 'CollectionPropertyDeleted' | 'TokenPropertySet' | 'TokenPropertyDeleted' | 'PropertyPermissionSet';
   }
 
-  /** @name PalletStructureEvent (254) */
+  /** @name PalletStructureEvent (277) */
   export interface PalletStructureEvent extends Enum {
     readonly isExecuted: boolean;
     readonly asExecuted: Result<Null, SpRuntimeDispatchError>;
     readonly type: 'Executed';
   }
 
-  /** @name PalletEvmEvent (255) */
+  /** @name PalletRmrkCoreEvent (278) */
+  export interface PalletRmrkCoreEvent extends Enum {
+    readonly isCollectionCreated: boolean;
+    readonly asCollectionCreated: {
+      readonly issuer: AccountId32;
+      readonly collectionId: u32;
+    } & Struct;
+    readonly isCollectionDestroyed: boolean;
+    readonly asCollectionDestroyed: {
+      readonly issuer: AccountId32;
+      readonly collectionId: u32;
+    } & Struct;
+    readonly isIssuerChanged: boolean;
+    readonly asIssuerChanged: {
+      readonly oldIssuer: AccountId32;
+      readonly newIssuer: AccountId32;
+      readonly collectionId: u32;
+    } & Struct;
+    readonly isCollectionLocked: boolean;
+    readonly asCollectionLocked: {
+      readonly issuer: AccountId32;
+      readonly collectionId: u32;
+    } & Struct;
+    readonly isNftMinted: boolean;
+    readonly asNftMinted: {
+      readonly owner: AccountId32;
+      readonly collectionId: u32;
+      readonly nftId: u32;
+    } & Struct;
+    readonly isNftBurned: boolean;
+    readonly asNftBurned: {
+      readonly owner: AccountId32;
+      readonly nftId: u32;
+    } & Struct;
+    readonly isPropertySet: boolean;
+    readonly asPropertySet: {
+      readonly collectionId: u32;
+      readonly maybeNftId: Option<u32>;
+      readonly key: Bytes;
+      readonly value: Bytes;
+    } & Struct;
+    readonly isResourceAdded: boolean;
+    readonly asResourceAdded: {
+      readonly nftId: u32;
+      readonly resourceId: u32;
+    } & Struct;
+    readonly type: 'CollectionCreated' | 'CollectionDestroyed' | 'IssuerChanged' | 'CollectionLocked' | 'NftMinted' | 'NftBurned' | 'PropertySet' | 'ResourceAdded';
+  }
+
+  /** @name PalletRmrkEquipEvent (279) */
+  export interface PalletRmrkEquipEvent extends Enum {
+    readonly isBaseCreated: boolean;
+    readonly asBaseCreated: {
+      readonly issuer: AccountId32;
+      readonly baseId: u32;
+    } & Struct;
+    readonly type: 'BaseCreated';
+  }
+
+  /** @name PalletEvmEvent (280) */
   export interface PalletEvmEvent extends Enum {
     readonly isLog: boolean;
     readonly asLog: EthereumLog;
@@ -2158,21 +2370,21 @@
     readonly type: 'Log' | 'Created' | 'CreatedFailed' | 'Executed' | 'ExecutedFailed' | 'BalanceDeposit' | 'BalanceWithdraw';
   }
 
-  /** @name EthereumLog (256) */
+  /** @name EthereumLog (281) */
   export interface EthereumLog extends Struct {
     readonly address: H160;
     readonly topics: Vec<H256>;
     readonly data: Bytes;
   }
 
-  /** @name PalletEthereumEvent (257) */
+  /** @name PalletEthereumEvent (282) */
   export interface PalletEthereumEvent extends Enum {
     readonly isExecuted: boolean;
     readonly asExecuted: ITuple<[H160, H160, H256, EvmCoreErrorExitReason]>;
     readonly type: 'Executed';
   }
 
-  /** @name EvmCoreErrorExitReason (258) */
+  /** @name EvmCoreErrorExitReason (283) */
   export interface EvmCoreErrorExitReason extends Enum {
     readonly isSucceed: boolean;
     readonly asSucceed: EvmCoreErrorExitSucceed;
@@ -2185,7 +2397,7 @@
     readonly type: 'Succeed' | 'Error' | 'Revert' | 'Fatal';
   }
 
-  /** @name EvmCoreErrorExitSucceed (259) */
+  /** @name EvmCoreErrorExitSucceed (284) */
   export interface EvmCoreErrorExitSucceed extends Enum {
     readonly isStopped: boolean;
     readonly isReturned: boolean;
@@ -2193,7 +2405,7 @@
     readonly type: 'Stopped' | 'Returned' | 'Suicided';
   }
 
-  /** @name EvmCoreErrorExitError (260) */
+  /** @name EvmCoreErrorExitError (285) */
   export interface EvmCoreErrorExitError extends Enum {
     readonly isStackUnderflow: boolean;
     readonly isStackOverflow: boolean;
@@ -2214,13 +2426,13 @@
     readonly type: 'StackUnderflow' | 'StackOverflow' | 'InvalidJump' | 'InvalidRange' | 'DesignatedInvalid' | 'CallTooDeep' | 'CreateCollision' | 'CreateContractLimit' | 'OutOfOffset' | 'OutOfGas' | 'OutOfFund' | 'PcUnderflow' | 'CreateEmpty' | 'Other' | 'InvalidCode';
   }
 
-  /** @name EvmCoreErrorExitRevert (263) */
+  /** @name EvmCoreErrorExitRevert (288) */
   export interface EvmCoreErrorExitRevert extends Enum {
     readonly isReverted: boolean;
     readonly type: 'Reverted';
   }
 
-  /** @name EvmCoreErrorExitFatal (264) */
+  /** @name EvmCoreErrorExitFatal (289) */
   export interface EvmCoreErrorExitFatal extends Enum {
     readonly isNotSupported: boolean;
     readonly isUnhandledInterrupt: boolean;
@@ -2231,7 +2443,7 @@
     readonly type: 'NotSupported' | 'UnhandledInterrupt' | 'CallErrorAsFatal' | 'Other';
   }
 
-  /** @name FrameSystemPhase (265) */
+  /** @name FrameSystemPhase (290) */
   export interface FrameSystemPhase extends Enum {
     readonly isApplyExtrinsic: boolean;
     readonly asApplyExtrinsic: u32;
@@ -2240,27 +2452,27 @@
     readonly type: 'ApplyExtrinsic' | 'Finalization' | 'Initialization';
   }
 
-  /** @name FrameSystemLastRuntimeUpgradeInfo (267) */
+  /** @name FrameSystemLastRuntimeUpgradeInfo (292) */
   export interface FrameSystemLastRuntimeUpgradeInfo extends Struct {
     readonly specVersion: Compact<u32>;
     readonly specName: Text;
   }
 
-  /** @name FrameSystemLimitsBlockWeights (268) */
+  /** @name FrameSystemLimitsBlockWeights (293) */
   export interface FrameSystemLimitsBlockWeights extends Struct {
     readonly baseBlock: u64;
     readonly maxBlock: u64;
     readonly perClass: FrameSupportWeightsPerDispatchClassWeightsPerClass;
   }
 
-  /** @name FrameSupportWeightsPerDispatchClassWeightsPerClass (269) */
+  /** @name FrameSupportWeightsPerDispatchClassWeightsPerClass (294) */
   export interface FrameSupportWeightsPerDispatchClassWeightsPerClass extends Struct {
     readonly normal: FrameSystemLimitsWeightsPerClass;
     readonly operational: FrameSystemLimitsWeightsPerClass;
     readonly mandatory: FrameSystemLimitsWeightsPerClass;
   }
 
-  /** @name FrameSystemLimitsWeightsPerClass (270) */
+  /** @name FrameSystemLimitsWeightsPerClass (295) */
   export interface FrameSystemLimitsWeightsPerClass extends Struct {
     readonly baseExtrinsic: u64;
     readonly maxExtrinsic: Option<u64>;
@@ -2268,25 +2480,25 @@
     readonly reserved: Option<u64>;
   }
 
-  /** @name FrameSystemLimitsBlockLength (272) */
+  /** @name FrameSystemLimitsBlockLength (297) */
   export interface FrameSystemLimitsBlockLength extends Struct {
     readonly max: FrameSupportWeightsPerDispatchClassU32;
   }
 
-  /** @name FrameSupportWeightsPerDispatchClassU32 (273) */
+  /** @name FrameSupportWeightsPerDispatchClassU32 (298) */
   export interface FrameSupportWeightsPerDispatchClassU32 extends Struct {
     readonly normal: u32;
     readonly operational: u32;
     readonly mandatory: u32;
   }
 
-  /** @name FrameSupportWeightsRuntimeDbWeight (274) */
+  /** @name FrameSupportWeightsRuntimeDbWeight (299) */
   export interface FrameSupportWeightsRuntimeDbWeight extends Struct {
     readonly read: u64;
     readonly write: u64;
   }
 
-  /** @name SpVersionRuntimeVersion (275) */
+  /** @name SpVersionRuntimeVersion (300) */
   export interface SpVersionRuntimeVersion extends Struct {
     readonly specName: Text;
     readonly implName: Text;
@@ -2298,7 +2510,7 @@
     readonly stateVersion: u8;
   }
 
-  /** @name FrameSystemError (279) */
+  /** @name FrameSystemError (304) */
   export interface FrameSystemError extends Enum {
     readonly isInvalidSpecName: boolean;
     readonly isSpecVersionNeedsToIncrease: boolean;
@@ -2309,7 +2521,7 @@
     readonly type: 'InvalidSpecName' | 'SpecVersionNeedsToIncrease' | 'FailedToExtractRuntimeVersion' | 'NonDefaultComposite' | 'NonZeroRefCount' | 'CallFiltered';
   }
 
-  /** @name OrmlVestingModuleError (281) */
+  /** @name OrmlVestingModuleError (306) */
   export interface OrmlVestingModuleError extends Enum {
     readonly isZeroVestingPeriod: boolean;
     readonly isZeroVestingPeriodCount: boolean;
@@ -2320,21 +2532,21 @@
     readonly type: 'ZeroVestingPeriod' | 'ZeroVestingPeriodCount' | 'InsufficientBalanceToLock' | 'TooManyVestingSchedules' | 'AmountLow' | 'MaxVestingSchedulesExceeded';
   }
 
-  /** @name CumulusPalletXcmpQueueInboundChannelDetails (283) */
+  /** @name CumulusPalletXcmpQueueInboundChannelDetails (308) */
   export interface CumulusPalletXcmpQueueInboundChannelDetails extends Struct {
     readonly sender: u32;
     readonly state: CumulusPalletXcmpQueueInboundState;
     readonly messageMetadata: Vec<ITuple<[u32, PolkadotParachainPrimitivesXcmpMessageFormat]>>;
   }
 
-  /** @name CumulusPalletXcmpQueueInboundState (284) */
+  /** @name CumulusPalletXcmpQueueInboundState (309) */
   export interface CumulusPalletXcmpQueueInboundState extends Enum {
     readonly isOk: boolean;
     readonly isSuspended: boolean;
     readonly type: 'Ok' | 'Suspended';
   }
 
-  /** @name PolkadotParachainPrimitivesXcmpMessageFormat (287) */
+  /** @name PolkadotParachainPrimitivesXcmpMessageFormat (312) */
   export interface PolkadotParachainPrimitivesXcmpMessageFormat extends Enum {
     readonly isConcatenatedVersionedXcm: boolean;
     readonly isConcatenatedEncodedBlob: boolean;
@@ -2342,7 +2554,7 @@
     readonly type: 'ConcatenatedVersionedXcm' | 'ConcatenatedEncodedBlob' | 'Signals';
   }
 
-  /** @name CumulusPalletXcmpQueueOutboundChannelDetails (290) */
+  /** @name CumulusPalletXcmpQueueOutboundChannelDetails (315) */
   export interface CumulusPalletXcmpQueueOutboundChannelDetails extends Struct {
     readonly recipient: u32;
     readonly state: CumulusPalletXcmpQueueOutboundState;
@@ -2351,14 +2563,14 @@
     readonly lastIndex: u16;
   }
 
-  /** @name CumulusPalletXcmpQueueOutboundState (291) */
+  /** @name CumulusPalletXcmpQueueOutboundState (316) */
   export interface CumulusPalletXcmpQueueOutboundState extends Enum {
     readonly isOk: boolean;
     readonly isSuspended: boolean;
     readonly type: 'Ok' | 'Suspended';
   }
 
-  /** @name CumulusPalletXcmpQueueQueueConfigData (293) */
+  /** @name CumulusPalletXcmpQueueQueueConfigData (318) */
   export interface CumulusPalletXcmpQueueQueueConfigData extends Struct {
     readonly suspendThreshold: u32;
     readonly dropThreshold: u32;
@@ -2368,7 +2580,7 @@
     readonly xcmpMaxIndividualWeight: u64;
   }
 
-  /** @name CumulusPalletXcmpQueueError (295) */
+  /** @name CumulusPalletXcmpQueueError (320) */
   export interface CumulusPalletXcmpQueueError extends Enum {
     readonly isFailedToSend: boolean;
     readonly isBadXcmOrigin: boolean;
@@ -2378,7 +2590,7 @@
     readonly type: 'FailedToSend' | 'BadXcmOrigin' | 'BadXcm' | 'BadOverweightIndex' | 'WeightOverLimit';
   }
 
-  /** @name PalletXcmError (296) */
+  /** @name PalletXcmError (321) */
   export interface PalletXcmError extends Enum {
     readonly isUnreachable: boolean;
     readonly isSendFailure: boolean;
@@ -2396,29 +2608,29 @@
     readonly type: 'Unreachable' | 'SendFailure' | 'Filtered' | 'UnweighableMessage' | 'DestinationNotInvertible' | 'Empty' | 'CannotReanchor' | 'TooManyAssets' | 'InvalidOrigin' | 'BadVersion' | 'BadLocation' | 'NoSubscription' | 'AlreadySubscribed';
   }
 
-  /** @name CumulusPalletXcmError (297) */
+  /** @name CumulusPalletXcmError (322) */
   export type CumulusPalletXcmError = Null;
 
-  /** @name CumulusPalletDmpQueueConfigData (298) */
+  /** @name CumulusPalletDmpQueueConfigData (323) */
   export interface CumulusPalletDmpQueueConfigData extends Struct {
     readonly maxIndividual: u64;
   }
 
-  /** @name CumulusPalletDmpQueuePageIndexData (299) */
+  /** @name CumulusPalletDmpQueuePageIndexData (324) */
   export interface CumulusPalletDmpQueuePageIndexData extends Struct {
     readonly beginUsed: u32;
     readonly endUsed: u32;
     readonly overweightCount: u64;
   }
 
-  /** @name CumulusPalletDmpQueueError (302) */
+  /** @name CumulusPalletDmpQueueError (327) */
   export interface CumulusPalletDmpQueueError extends Enum {
     readonly isUnknown: boolean;
     readonly isOverLimit: boolean;
     readonly type: 'Unknown' | 'OverLimit';
   }
 
-  /** @name PalletUniqueError (306) */
+  /** @name PalletUniqueError (331) */
   export interface PalletUniqueError extends Enum {
     readonly isCollectionDecimalPointLimitExceeded: boolean;
     readonly isConfirmUnsetSponsorFail: boolean;
@@ -2426,7 +2638,7 @@
     readonly type: 'CollectionDecimalPointLimitExceeded' | 'ConfirmUnsetSponsorFail' | 'EmptyArgument';
   }
 
-  /** @name UpDataStructsCollection (307) */
+  /** @name UpDataStructsCollection (332) */
   export interface UpDataStructsCollection extends Struct {
     readonly owner: AccountId32;
     readonly mode: UpDataStructsCollectionMode;
@@ -2438,7 +2650,7 @@
     readonly permissions: UpDataStructsCollectionPermissions;
   }
 
-  /** @name UpDataStructsSponsorshipState (308) */
+  /** @name UpDataStructsSponsorshipState (333) */
   export interface UpDataStructsSponsorshipState extends Enum {
     readonly isDisabled: boolean;
     readonly isUnconfirmed: boolean;
@@ -2448,20 +2660,20 @@
     readonly type: 'Disabled' | 'Unconfirmed' | 'Confirmed';
   }
 
-  /** @name UpDataStructsProperties (309) */
+  /** @name UpDataStructsProperties (334) */
   export interface UpDataStructsProperties extends Struct {
     readonly map: UpDataStructsPropertiesMapBoundedVec;
     readonly consumedSpace: u32;
     readonly spaceLimit: u32;
   }
 
-  /** @name UpDataStructsPropertiesMapBoundedVec (310) */
+  /** @name UpDataStructsPropertiesMapBoundedVec (335) */
   export interface UpDataStructsPropertiesMapBoundedVec extends BTreeMap<Bytes, Bytes> {}
 
-  /** @name UpDataStructsPropertiesMapPropertyPermission (315) */
+  /** @name UpDataStructsPropertiesMapPropertyPermission (340) */
   export interface UpDataStructsPropertiesMapPropertyPermission extends BTreeMap<Bytes, UpDataStructsPropertyPermission> {}
 
-  /** @name UpDataStructsCollectionStats (322) */
+  /** @name UpDataStructsCollectionStats (347) */
   export interface UpDataStructsCollectionStats extends Struct {
     readonly created: u32;
     readonly destroyed: u32;
@@ -2532,7 +2744,7 @@
 
   /** @name UpDataStructsRmrkResourceInfo (336) */
   export interface UpDataStructsRmrkResourceInfo extends Struct {
-    readonly id: Bytes;
+    readonly id: u32;
     readonly resource: UpDataStructsRmrkResourceTypes;
     readonly pending: bool;
     readonly pendingRemoval: bool;
modifiedtests/src/interfaces/types.tsdiffbeforeafterboth
--- a/tests/src/interfaces/types.ts
+++ b/tests/src/interfaces/types.ts
@@ -2,4 +2,5 @@
 /* eslint-disable */
 
 export * from './unique/types';
+export * from './rmrk/types';
 export * from './default/types';