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

difftreelog

test(properties)

Fahrrader2022-05-06parent: #761b2c7.patch.diff
in: master

13 files changed

modifiedtests/package.jsondiffbeforeafterboth
--- a/tests/package.json
+++ b/tests/package.json
@@ -34,6 +34,7 @@
     "testCollision": "mocha --timeout 9999999 -r ts-node/register ./src/collision-tests/*.test.ts",
     "testEvent": "mocha --timeout 9999999 -r ts-node/register ./src/check-event/*.test.ts",
     "testNesting": "mocha --timeout 9999999 -r ts-node/register ./**/nesting/**.test.ts",
+    "testProperties": "mocha --timeout 9999999 -r ts-node/register ./**/properties.test.ts",
     "testMigrationStructure": "mocha --timeout 9999999 -r ts-node/register ./**/nesting/migration-check.test.ts",
     "testAddCollectionAdmin": "mocha --timeout 9999999 -r ts-node/register ./**/addCollectionAdmin.test.ts",
     "testSetSchemaVersion": "mocha --timeout 9999999 -r ts-node/register ./**/setSchemaVersion.test.ts",
modifiedtests/src/interfaces/augment-api-errors.tsdiffbeforeafterboth
--- a/tests/src/interfaces/augment-api-errors.ts
+++ b/tests/src/interfaces/augment-api-errors.ts
@@ -271,9 +271,9 @@
        **/
       NotFungibleDataUsedToMintFungibleCollectionToken: AugmentedError<ApiType>;
       /**
-       * Item properties are not allowed
+       * Setting item properties is not allowed
        **/
-      PropertiesNotAllowed: AugmentedError<ApiType>;
+      SettingPropertiesNotAllowed: AugmentedError<ApiType>;
       /**
        * Generic error
        **/
@@ -399,13 +399,13 @@
        **/
       NotRefungibleDataUsedToMintFungibleCollectionToken: AugmentedError<ApiType>;
       /**
-       * Item properties are not allowed
+       * Refungible token can't nest other tokens
        **/
-      PropertiesNotAllowed: AugmentedError<ApiType>;
+      RefungibleDisallowsNesting: AugmentedError<ApiType>;
       /**
-       * Refungible token can't nest other tokens
+       * Setting item properties is not allowed
        **/
-      RefungibleDisallowsNesting: AugmentedError<ApiType>;
+      SettingPropertiesNotAllowed: AugmentedError<ApiType>;
       /**
        * Maximum refungibility exceeded
        **/
modifiedtests/src/interfaces/augment-api-query.tsdiffbeforeafterboth
--- a/tests/src/interfaces/augment-api-query.ts
+++ b/tests/src/interfaces/augment-api-query.ts
@@ -5,7 +5,7 @@
 import type { BTreeMap, Bytes, Option, U256, Vec, bool, u128, u16, u32, u64 } from '@polkadot/types-codec';
 import type { AnyNumber, ITuple } from '@polkadot/types-codec/types';
 import type { AccountId32, H160, H256 } from '@polkadot/types/interfaces/runtime';
-import type { CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmpQueueInboundChannelDetails, CumulusPalletXcmpQueueOutboundChannelDetails, CumulusPalletXcmpQueueQueueConfigData, EthereumBlock, EthereumReceiptReceiptV3, EthereumTransactionTransactionV2, FpRpcTransactionStatus, FrameSupportWeightsPerDispatchClassU64, FrameSystemAccountInfo, FrameSystemEventRecord, FrameSystemLastRuntimeUpgradeInfo, FrameSystemPhase, OrmlVestingVestingSchedule, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesReleases, PalletBalancesReserveData, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmContractHelpersSponsoringModeT, PalletNonfungibleItemData, PalletRefungibleItemData, PalletTransactionPaymentReleases, PalletTreasuryProposal, PhantomTypeUpDataStructs, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotPrimitivesV1AbridgedHostConfiguration, PolkadotPrimitivesV1PersistedValidationData, PolkadotPrimitivesV1UpgradeRestriction, SpRuntimeDigest, SpTrieStorageProof, UpDataStructsCollection, UpDataStructsCollectionField, UpDataStructsCollectionStats, UpDataStructsProperties, UpDataStructsPropertyPermission } from '@polkadot/types/lookup';
+import type { CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmpQueueInboundChannelDetails, CumulusPalletXcmpQueueOutboundChannelDetails, CumulusPalletXcmpQueueQueueConfigData, EthereumBlock, EthereumReceiptReceiptV3, EthereumTransactionTransactionV2, FpRpcTransactionStatus, FrameSupportWeightsPerDispatchClassU64, FrameSystemAccountInfo, FrameSystemEventRecord, FrameSystemLastRuntimeUpgradeInfo, FrameSystemPhase, OrmlVestingVestingSchedule, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesReleases, PalletBalancesReserveData, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmContractHelpersSponsoringModeT, PalletNonfungibleItemData, PalletRefungibleItemData, PalletTransactionPaymentReleases, PalletTreasuryProposal, PhantomTypeUpDataStructsRpcCollection, PhantomTypeUpDataStructsTokenData, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotPrimitivesV1AbridgedHostConfiguration, PolkadotPrimitivesV1PersistedValidationData, PolkadotPrimitivesV1UpgradeRestriction, SpRuntimeDigest, SpTrieStorageProof, UpDataStructsCollection, UpDataStructsCollectionField, UpDataStructsCollectionStats, UpDataStructsProperties, UpDataStructsPropertyPermission } from '@polkadot/types/lookup';
 import type { Observable } from '@polkadot/types/types';
 
 declare module '@polkadot/api-base/types/storage' {
@@ -92,7 +92,7 @@
       /**
        * Not used by code, exists only to provide some types to metadata
        **/
-      dummyStorageValue: AugmentedQuery<ApiType, () => Observable<Option<ITuple<[UpDataStructsCollectionStats, u32, u32, PhantomTypeUpDataStructs]>>>, []> & QueryableStorageEntry<ApiType, []>;
+      dummyStorageValue: AugmentedQuery<ApiType, () => Observable<Option<ITuple<[UpDataStructsCollectionStats, u32, u32, PhantomTypeUpDataStructsTokenData, PhantomTypeUpDataStructsRpcCollection]>>>, []> & QueryableStorageEntry<ApiType, []>;
       /**
        * List of collection admins
        **/
modifiedtests/src/interfaces/augment-api-rpc.tsdiffbeforeafterboth
--- a/tests/src/interfaces/augment-api-rpc.ts
+++ b/tests/src/interfaces/augment-api-rpc.ts
@@ -1,7 +1,7 @@
 // Auto-generated via `yarn polkadot-types-from-chain`, do not edit
 /* eslint-disable */
 
-import type { PalletEvmAccountBasicCrossAccountIdRepr, UpDataStructsCollectionLimits, UpDataStructsCollectionStats, UpDataStructsProperty, UpDataStructsRpcCollection } from './unique';
+import type { PalletEvmAccountBasicCrossAccountIdRepr, UpDataStructsCollectionLimits, UpDataStructsCollectionStats, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, UpDataStructsRpcCollection, UpDataStructsTokenData } from './unique';
 import type { AugmentedRpc } from '@polkadot/rpc-core/types';
 import type { Metadata, StorageKey } from '@polkadot/types';
 import type { Bytes, HashMap, Json, Null, Option, Text, U256, U64, Vec, bool, u128, u32, u64 } from '@polkadot/types-codec';
@@ -13,7 +13,6 @@
 import type { PrefixedStorageKey } from '@polkadot/types/interfaces/childstate';
 import type { AuthorityId } from '@polkadot/types/interfaces/consensus';
 import type { CodeUploadRequest, CodeUploadResult, ContractCallRequest, ContractExecResult, ContractInstantiateResult, InstantiateRequest } from '@polkadot/types/interfaces/contracts';
-import type { BlockStats } from '@polkadot/types/interfaces/dev';
 import type { CreatedBlock } from '@polkadot/types/interfaces/engine';
 import type { EthAccount, EthCallRequest, EthFilter, EthFilterChanges, EthLog, EthReceipt, EthRichBlock, EthSubKind, EthSubParams, EthSyncStatus, EthTransaction, EthTransactionRequest, EthWork } from '@polkadot/types/interfaces/eth';
 import type { Extrinsic } from '@polkadot/types/interfaces/extrinsics';
@@ -23,7 +22,7 @@
 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 { MigrationStatusResult, ReadProof, RuntimeVersion, TraceBlockResponse } from '@polkadot/types/interfaces/state';
+import type { 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';
 
@@ -156,12 +155,6 @@
        * Upload new code without instantiating a contract from it
        **/
       uploadCode: AugmentedRpc<(uploadRequest: CodeUploadRequest | { origin?: any; code?: any; storageDepositLimit?: any } | string | Uint8Array, at?: BlockHash | string | Uint8Array) => Observable<CodeUploadResult>>;
-    };
-    dev: {
-      /**
-       * Reexecute the specified `block_hash` and gather statistics while doing so
-       **/
-      getBlockStats: AugmentedRpc<(at: Hash | string | Uint8Array) => Observable<Option<BlockStats>>>;
     };
     engine: {
       /**
@@ -341,9 +334,9 @@
     };
     grandpa: {
       /**
-       * Prove finality for the given block number, returning the Justification for the last block in the set.
+       * Prove finality for the range (begin; end] hash.
        **/
-      proveFinality: AugmentedRpc<(blockNumber: BlockNumber | AnyNumber | Uint8Array) => Observable<Option<EncodedFinalityProofs>>>;
+      proveFinality: AugmentedRpc<(begin: BlockHash | string | Uint8Array, end: BlockHash | string | Uint8Array, authoritiesSetId?: u64 | AnyNumber | Uint8Array) => Observable<Option<EncodedFinalityProofs>>>;
       /**
        * Returns the state of the current best round state as well as the ongoing background rounds
        **/
@@ -480,10 +473,6 @@
        * Provides a way to trace the re-execution of a single block
        **/
       traceBlock: AugmentedRpc<(block: Hash | string | Uint8Array, targets: Option<Text> | null | object | string | Uint8Array, storageKeys: Option<Text> | null | object | string | Uint8Array, methods: Option<Text> | null | object | string | Uint8Array) => Observable<TraceBlockResponse>>;
-      /**
-       * Check current migration state
-       **/
-      trieMigrationStatus: AugmentedRpc<(at?: BlockHash | string | Uint8Array) => Observable<MigrationStatusResult>>;
     };
     syncstate: {
       /**
@@ -631,6 +620,14 @@
        **/
       nextSponsored: AugmentedRpc<(collection: u32 | AnyNumber | Uint8Array, account: PalletEvmAccountBasicCrossAccountIdRepr | { Substrate: any } | { Ethereum: any } | string | Uint8Array, tokenId: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Option<u64>>>;
       /**
+       * Get property permissions
+       **/
+      propertyPermissions: AugmentedRpc<(collection: u32 | AnyNumber | Uint8Array, propertyKeys: Vec<Text> | (Text | string)[], at?: Hash | string | Uint8Array) => Observable<Vec<UpDataStructsPropertyKeyPermission>>>;
+      /**
+       * Get token data
+       **/
+      tokenData: AugmentedRpc<(collection: u32 | AnyNumber | Uint8Array, tokenId: u32 | AnyNumber | Uint8Array, propertyKeys: Vec<Text> | (Text | string)[], at?: Hash | string | Uint8Array) => Observable<UpDataStructsTokenData>>;
+      /**
        * Check if token exists
        **/
       tokenExists: AugmentedRpc<(collection: u32 | AnyNumber | Uint8Array, tokenId: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<bool>>;
@@ -639,6 +636,10 @@
        **/
       tokenOwner: AugmentedRpc<(collection: u32 | AnyNumber | Uint8Array, tokenId: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Option<PalletEvmAccountBasicCrossAccountIdRepr>>>;
       /**
+       * Get token properties
+       **/
+      tokenProperties: AugmentedRpc<(collection: u32 | AnyNumber | Uint8Array, tokenId: u32 | AnyNumber | Uint8Array, propertyKeys: Vec<Text> | (Text | string)[], at?: Hash | string | Uint8Array) => Observable<Vec<UpDataStructsProperty>>>;
+      /**
        * Get token owner, in case of nested token - find parent recursive
        **/
       topmostTokenOwner: AugmentedRpc<(collection: u32 | AnyNumber | Uint8Array, tokenId: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Option<PalletEvmAccountBasicCrossAccountIdRepr>>>;
modifiedtests/src/interfaces/augment-api-tx.tsdiffbeforeafterboth
--- a/tests/src/interfaces/augment-api-tx.ts
+++ b/tests/src/interfaces/augment-api-tx.ts
@@ -378,7 +378,7 @@
        * - Weight of derivative `call` execution + 10,000.
        * # </weight>
        **/
-      sudo: AugmentedSubmittable<(call: Call) => SubmittableExtrinsic<ApiType>, [Call]>;
+      sudo: AugmentedSubmittable<(call: Call | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [Call]>;
       /**
        * Authenticates the sudo key and dispatches a function call with `Signed` origin from
        * a given account.
@@ -392,7 +392,7 @@
        * - Weight of derivative `call` execution + 10,000.
        * # </weight>
        **/
-      sudoAs: AugmentedSubmittable<(who: MultiAddress | { Id: any } | { Index: any } | { Raw: any } | { Address32: any } | { Address20: any } | string | Uint8Array, call: Call) => SubmittableExtrinsic<ApiType>, [MultiAddress, Call]>;
+      sudoAs: AugmentedSubmittable<(who: MultiAddress | { Id: any } | { Index: any } | { Raw: any } | { Address32: any } | { Address20: any } | string | Uint8Array, call: Call | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [MultiAddress, Call]>;
       /**
        * Authenticates the sudo key and dispatches a function call with `Root` origin.
        * This function does not check the weight of the call, and instead allows the
@@ -405,7 +405,7 @@
        * - The weight of this call is defined by the caller.
        * # </weight>
        **/
-      sudoUncheckedWeight: AugmentedSubmittable<(call: Call, weight: u64 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [Call, u64]>;
+      sudoUncheckedWeight: AugmentedSubmittable<(call: Call | string | Uint8Array, weight: u64 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [Call, u64]>;
       /**
        * Generic tx
        **/
modifiedtests/src/interfaces/augment-types.tsdiffbeforeafterboth
--- a/tests/src/interfaces/augment-types.ts
+++ b/tests/src/interfaces/augment-types.ts
@@ -1,7 +1,7 @@
 // Auto-generated via `yarn polkadot-types-from-defs`, do not edit
 /* eslint-disable */
 
-import type { CumulusPalletDmpQueueCall, CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueueError, CumulusPalletDmpQueueEvent, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemCall, CumulusPalletParachainSystemError, CumulusPalletParachainSystemEvent, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmCall, CumulusPalletXcmError, CumulusPalletXcmEvent, CumulusPalletXcmpQueueCall, CumulusPalletXcmpQueueError, CumulusPalletXcmpQueueEvent, CumulusPalletXcmpQueueInboundChannelDetails, CumulusPalletXcmpQueueInboundState, CumulusPalletXcmpQueueOutboundChannelDetails, CumulusPalletXcmpQueueOutboundState, CumulusPalletXcmpQueueQueueConfigData, CumulusPrimitivesParachainInherentParachainInherentData, EthbloomBloom, EthereumBlock, EthereumHeader, EthereumLog, EthereumReceiptEip658ReceiptData, EthereumReceiptReceiptV3, EthereumTransactionAccessListItem, EthereumTransactionEip1559Transaction, EthereumTransactionEip2930Transaction, EthereumTransactionLegacyTransaction, EthereumTransactionTransactionAction, EthereumTransactionTransactionSignature, EthereumTransactionTransactionV2, EthereumTypesHashH64, EvmCoreErrorExitError, EvmCoreErrorExitFatal, EvmCoreErrorExitReason, EvmCoreErrorExitRevert, EvmCoreErrorExitSucceed, FpRpcTransactionStatus, FrameSupportPalletId, FrameSupportStorageBoundedBTreeSet, FrameSupportTokensMiscBalanceStatus, FrameSupportWeightsDispatchClass, FrameSupportWeightsDispatchInfo, FrameSupportWeightsPays, FrameSupportWeightsPerDispatchClassU32, FrameSupportWeightsPerDispatchClassU64, FrameSupportWeightsPerDispatchClassWeightsPerClass, FrameSupportWeightsRuntimeDbWeight, FrameSupportWeightsWeightToFeeCoefficient, FrameSystemAccountInfo, FrameSystemCall, FrameSystemError, FrameSystemEvent, FrameSystemEventRecord, FrameSystemExtensionsCheckGenesis, FrameSystemExtensionsCheckNonce, FrameSystemExtensionsCheckSpecVersion, FrameSystemExtensionsCheckWeight, FrameSystemLastRuntimeUpgradeInfo, FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, FrameSystemLimitsWeightsPerClass, FrameSystemPhase, OpalRuntimeRuntime, OrmlVestingModuleCall, OrmlVestingModuleError, OrmlVestingModuleEvent, OrmlVestingVestingSchedule, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesCall, PalletBalancesError, PalletBalancesEvent, PalletBalancesReasons, PalletBalancesReleases, PalletBalancesReserveData, PalletCommonError, PalletCommonEvent, PalletEthereumCall, PalletEthereumError, PalletEthereumEvent, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmCall, PalletEvmCoderSubstrateError, PalletEvmContractHelpersError, PalletEvmContractHelpersSponsoringModeT, PalletEvmError, PalletEvmEvent, PalletEvmMigrationCall, PalletEvmMigrationError, PalletFungibleError, PalletInflationCall, PalletNonfungibleError, PalletNonfungibleItemData, PalletRefungibleError, PalletRefungibleItemData, PalletStructureCall, PalletStructureError, PalletStructureEvent, PalletSudoCall, PalletSudoError, PalletSudoEvent, PalletTemplateTransactionPaymentCall, PalletTemplateTransactionPaymentChargeTransactionPayment, PalletTimestampCall, PalletTransactionPaymentReleases, PalletTreasuryCall, PalletTreasuryError, PalletTreasuryEvent, PalletTreasuryProposal, PalletUniqueCall, PalletUniqueError, PalletUniqueRawEvent, PalletXcmCall, PalletXcmError, PalletXcmEvent, PhantomTypeUpDataStructs, PolkadotCorePrimitivesInboundDownwardMessage, PolkadotCorePrimitivesInboundHrmpMessage, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotParachainPrimitivesXcmpMessageFormat, PolkadotPrimitivesV1AbridgedHostConfiguration, PolkadotPrimitivesV1AbridgedHrmpChannel, PolkadotPrimitivesV1PersistedValidationData, PolkadotPrimitivesV1UpgradeRestriction, SpCoreEcdsaSignature, SpCoreEd25519Signature, SpCoreSr25519Signature, SpRuntimeArithmeticError, SpRuntimeDigest, SpRuntimeDigestDigestItem, SpRuntimeDispatchError, SpRuntimeModuleError, SpRuntimeMultiSignature, SpRuntimeTokenError, SpTrieStorageProof, SpVersionRuntimeVersion, UpDataStructsAccessMode, UpDataStructsCollection, UpDataStructsCollectionField, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCollectionStats, UpDataStructsCreateCollectionData, UpDataStructsCreateFungibleData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsCreateNftData, UpDataStructsCreateNftExData, UpDataStructsCreateReFungibleData, UpDataStructsCreateRefungibleExData, UpDataStructsMetaUpdatePermission, UpDataStructsNestingRule, UpDataStructsProperties, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, UpDataStructsPropertyPermission, UpDataStructsRpcCollection, UpDataStructsSchemaVersion, UpDataStructsSponsoringRateLimit, UpDataStructsSponsorshipState, XcmDoubleEncoded, XcmV0Junction, XcmV0JunctionBodyId, XcmV0JunctionBodyPart, XcmV0JunctionNetworkId, XcmV0MultiAsset, XcmV0MultiLocation, XcmV0Order, XcmV0OriginKind, XcmV0Response, XcmV0Xcm, XcmV1Junction, XcmV1MultiAsset, XcmV1MultiLocation, XcmV1MultiassetAssetId, XcmV1MultiassetAssetInstance, XcmV1MultiassetFungibility, XcmV1MultiassetMultiAssetFilter, XcmV1MultiassetMultiAssets, XcmV1MultiassetWildFungibility, XcmV1MultiassetWildMultiAsset, XcmV1MultilocationJunctions, XcmV1Order, XcmV1Response, XcmV1Xcm, XcmV2Instruction, XcmV2Response, XcmV2TraitsError, XcmV2TraitsOutcome, XcmV2WeightLimit, XcmV2Xcm, XcmVersionedMultiAssets, XcmVersionedMultiLocation, XcmVersionedXcm } from './unique';
+import type { CumulusPalletDmpQueueCall, CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueueError, CumulusPalletDmpQueueEvent, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemCall, CumulusPalletParachainSystemError, CumulusPalletParachainSystemEvent, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmCall, CumulusPalletXcmError, CumulusPalletXcmEvent, CumulusPalletXcmpQueueCall, CumulusPalletXcmpQueueError, CumulusPalletXcmpQueueEvent, CumulusPalletXcmpQueueInboundChannelDetails, CumulusPalletXcmpQueueInboundState, CumulusPalletXcmpQueueOutboundChannelDetails, CumulusPalletXcmpQueueOutboundState, CumulusPalletXcmpQueueQueueConfigData, CumulusPrimitivesParachainInherentParachainInherentData, EthbloomBloom, EthereumBlock, EthereumHeader, EthereumLog, EthereumReceiptEip658ReceiptData, EthereumReceiptReceiptV3, EthereumTransactionAccessListItem, EthereumTransactionEip1559Transaction, EthereumTransactionEip2930Transaction, EthereumTransactionLegacyTransaction, EthereumTransactionTransactionAction, EthereumTransactionTransactionSignature, EthereumTransactionTransactionV2, EthereumTypesHashH64, EvmCoreErrorExitError, EvmCoreErrorExitFatal, EvmCoreErrorExitReason, EvmCoreErrorExitRevert, EvmCoreErrorExitSucceed, FpRpcTransactionStatus, FrameSupportPalletId, FrameSupportStorageBoundedBTreeSet, FrameSupportTokensMiscBalanceStatus, FrameSupportWeightsDispatchClass, FrameSupportWeightsDispatchInfo, FrameSupportWeightsPays, FrameSupportWeightsPerDispatchClassU32, FrameSupportWeightsPerDispatchClassU64, FrameSupportWeightsPerDispatchClassWeightsPerClass, FrameSupportWeightsRuntimeDbWeight, FrameSupportWeightsWeightToFeeCoefficient, FrameSystemAccountInfo, FrameSystemCall, FrameSystemError, FrameSystemEvent, FrameSystemEventRecord, FrameSystemExtensionsCheckGenesis, FrameSystemExtensionsCheckNonce, FrameSystemExtensionsCheckSpecVersion, FrameSystemExtensionsCheckWeight, FrameSystemLastRuntimeUpgradeInfo, FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, FrameSystemLimitsWeightsPerClass, FrameSystemPhase, OpalRuntimeRuntime, OrmlVestingModuleCall, OrmlVestingModuleError, OrmlVestingModuleEvent, OrmlVestingVestingSchedule, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesCall, PalletBalancesError, PalletBalancesEvent, PalletBalancesReasons, PalletBalancesReleases, PalletBalancesReserveData, PalletCommonError, PalletCommonEvent, PalletEthereumCall, PalletEthereumError, PalletEthereumEvent, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmCall, PalletEvmCoderSubstrateError, PalletEvmContractHelpersError, PalletEvmContractHelpersSponsoringModeT, PalletEvmError, PalletEvmEvent, PalletEvmMigrationCall, PalletEvmMigrationError, PalletFungibleError, PalletInflationCall, PalletNonfungibleError, PalletNonfungibleItemData, PalletRefungibleError, PalletRefungibleItemData, PalletStructureCall, PalletStructureError, PalletStructureEvent, PalletSudoCall, PalletSudoError, PalletSudoEvent, PalletTemplateTransactionPaymentCall, PalletTemplateTransactionPaymentChargeTransactionPayment, PalletTimestampCall, PalletTransactionPaymentReleases, PalletTreasuryCall, PalletTreasuryError, PalletTreasuryEvent, PalletTreasuryProposal, PalletUniqueCall, PalletUniqueError, PalletUniqueRawEvent, PalletXcmCall, PalletXcmError, PalletXcmEvent, PhantomTypeUpDataStructsRpcCollection, PhantomTypeUpDataStructsTokenData, PolkadotCorePrimitivesInboundDownwardMessage, PolkadotCorePrimitivesInboundHrmpMessage, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotParachainPrimitivesXcmpMessageFormat, PolkadotPrimitivesV1AbridgedHostConfiguration, PolkadotPrimitivesV1AbridgedHrmpChannel, PolkadotPrimitivesV1PersistedValidationData, PolkadotPrimitivesV1UpgradeRestriction, SpCoreEcdsaSignature, SpCoreEd25519Signature, SpCoreSr25519Signature, SpRuntimeArithmeticError, SpRuntimeDigest, SpRuntimeDigestDigestItem, SpRuntimeDispatchError, SpRuntimeModuleError, SpRuntimeMultiSignature, SpRuntimeTokenError, SpTrieStorageProof, SpVersionRuntimeVersion, UpDataStructsAccessMode, UpDataStructsCollection, UpDataStructsCollectionField, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCollectionStats, UpDataStructsCreateCollectionData, UpDataStructsCreateFungibleData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsCreateNftData, UpDataStructsCreateNftExData, UpDataStructsCreateReFungibleData, UpDataStructsCreateRefungibleExData, UpDataStructsMetaUpdatePermission, UpDataStructsNestingRule, UpDataStructsProperties, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, UpDataStructsPropertyPermission, UpDataStructsRpcCollection, UpDataStructsSchemaVersion, UpDataStructsSponsoringRateLimit, UpDataStructsSponsorshipState, UpDataStructsTokenData, XcmDoubleEncoded, XcmV0Junction, XcmV0JunctionBodyId, XcmV0JunctionBodyPart, XcmV0JunctionNetworkId, XcmV0MultiAsset, XcmV0MultiLocation, XcmV0Order, XcmV0OriginKind, XcmV0Response, XcmV0Xcm, XcmV1Junction, XcmV1MultiAsset, XcmV1MultiLocation, XcmV1MultiassetAssetId, XcmV1MultiassetAssetInstance, XcmV1MultiassetFungibility, XcmV1MultiassetMultiAssetFilter, XcmV1MultiassetMultiAssets, XcmV1MultiassetWildFungibility, XcmV1MultiassetWildMultiAsset, XcmV1MultilocationJunctions, XcmV1Order, XcmV1Response, XcmV1Xcm, XcmV2Instruction, XcmV2Response, XcmV2TraitsError, XcmV2TraitsOutcome, XcmV2WeightLimit, XcmV2Xcm, XcmVersionedMultiAssets, XcmVersionedMultiLocation, XcmVersionedXcm } from './unique';
 import type { Data, StorageKey } from '@polkadot/types';
 import type { BitVec, Bool, Bytes, I128, I16, I256, I32, I64, I8, Json, Null, Raw, Text, Type, U128, U16, U256, U32, U64, U8, USize, bool, i128, i16, i256, i32, i64, i8, u128, u16, u256, u32, u64, u8, usize } from '@polkadot/types-codec';
 import type { AssetApproval, AssetApprovalKey, AssetBalance, AssetDestroyWitness, AssetDetails, AssetMetadata, TAssetBalance, TAssetDepositBalance } from '@polkadot/types/interfaces/assets';
@@ -23,7 +23,6 @@
 import type { FundIndex, FundInfo, LastContribution, TrieIndex } from '@polkadot/types/interfaces/crowdloan';
 import type { ConfigData, MessageId, OverweightIndex, PageCounter, PageIndexData } from '@polkadot/types/interfaces/cumulus';
 import type { AccountVote, AccountVoteSplit, AccountVoteStandard, Conviction, Delegations, PreimageStatus, PreimageStatusAvailable, PriorLock, PropIndex, Proposal, ProxyState, ReferendumIndex, ReferendumInfo, ReferendumInfoFinished, ReferendumInfoTo239, ReferendumStatus, Tally, Voting, VotingDelegating, VotingDirect, VotingDirectVote } from '@polkadot/types/interfaces/democracy';
-import type { BlockStats } from '@polkadot/types/interfaces/dev';
 import type { ApprovalFlag, DefunctVoter, Renouncing, SetIndex, Vote, VoteIndex, VoteThreshold, VoterInfo } from '@polkadot/types/interfaces/elections';
 import type { CreatedBlock, ImportedAux } from '@polkadot/types/interfaces/engine';
 import type { BlockV0, BlockV1, BlockV2, EIP1559Transaction, EIP2930Transaction, EthAccessList, EthAccessListItem, EthAccount, EthAddress, EthBlock, EthBloom, EthCallRequest, EthFilter, EthFilterAddress, EthFilterChanges, EthFilterTopic, EthFilterTopicEntry, EthFilterTopicInner, EthHeader, EthLog, EthReceipt, EthRichBlock, EthRichHeader, EthStorageProof, EthSubKind, EthSubParams, EthSubResult, EthSyncInfo, EthSyncStatus, EthTransaction, EthTransactionAction, EthTransactionCondition, EthTransactionRequest, EthTransactionSignature, EthTransactionStatus, EthWork, EthereumAccountId, EthereumAddress, EthereumLookupSource, EthereumSignature, LegacyTransaction, TransactionV0, TransactionV1, TransactionV2 } from '@polkadot/types/interfaces/eth';
@@ -52,9 +51,9 @@
 import type { BeefyKey, FullIdentification, IdentificationTuple, Keys, MembershipProof, SessionIndex, SessionKeys1, SessionKeys10, SessionKeys10B, SessionKeys2, SessionKeys3, SessionKeys4, SessionKeys5, SessionKeys6, SessionKeys6B, SessionKeys7, SessionKeys7B, SessionKeys8, SessionKeys8B, SessionKeys9, SessionKeys9B, ValidatorCount } from '@polkadot/types/interfaces/session';
 import type { Bid, BidKind, SocietyJudgement, SocietyVote, StrikeCount, VouchingStatus } from '@polkadot/types/interfaces/society';
 import type { ActiveEraInfo, CompactAssignments, CompactAssignmentsTo257, CompactAssignmentsTo265, CompactAssignmentsWith16, CompactAssignmentsWith24, CompactScore, CompactScoreCompact, ElectionCompute, ElectionPhase, ElectionResult, ElectionScore, ElectionSize, ElectionStatus, EraIndex, EraPoints, EraRewardPoints, EraRewards, Exposure, ExtendedBalance, Forcing, IndividualExposure, KeyType, MomentOf, Nominations, NominatorIndex, NominatorIndexCompact, OffchainAccuracy, OffchainAccuracyCompact, PhragmenScore, Points, RawSolution, RawSolutionTo265, RawSolutionWith16, RawSolutionWith24, ReadySolution, RewardDestination, RewardPoint, RoundSnapshot, SeatHolder, SignedSubmission, SignedSubmissionOf, SignedSubmissionTo276, SlashJournalEntry, SlashingSpans, SlashingSpansTo204, SolutionOrSnapshotSize, SolutionSupport, SolutionSupports, SpanIndex, SpanRecord, StakingLedger, StakingLedgerTo223, StakingLedgerTo240, SubmissionIndicesOf, Supports, UnappliedSlash, UnappliedSlashOther, UnlockChunk, ValidatorIndex, ValidatorIndexCompact, ValidatorPrefs, ValidatorPrefsTo145, ValidatorPrefsTo196, ValidatorPrefsWithBlocked, ValidatorPrefsWithCommission, VoteWeight, Voter } from '@polkadot/types/interfaces/staking';
-import type { ApiId, BlockTrace, BlockTraceEvent, BlockTraceEventData, BlockTraceSpan, KeyValueOption, MigrationStatusResult, ReadProof, RuntimeVersion, RuntimeVersionApi, RuntimeVersionPartial, SpecVersion, StorageChangeSet, TraceBlockResponse, TraceError } from '@polkadot/types/interfaces/state';
+import type { ApiId, BlockTrace, BlockTraceEvent, BlockTraceEventData, BlockTraceSpan, KeyValueOption, ReadProof, RuntimeVersion, RuntimeVersionApi, RuntimeVersionPartial, SpecVersion, StorageChangeSet, TraceBlockResponse, TraceError } from '@polkadot/types/interfaces/state';
 import type { WeightToFeeCoefficient } from '@polkadot/types/interfaces/support';
-import type { AccountInfo, AccountInfoWithDualRefCount, AccountInfoWithProviders, AccountInfoWithRefCount, AccountInfoWithRefCountU8, AccountInfoWithTripleRefCount, ApplyExtrinsicResult, ArithmeticError, BlockLength, BlockWeights, ChainProperties, ChainType, ConsumedWeight, DigestOf, DispatchClass, DispatchError, DispatchErrorModule, DispatchErrorModuleU8a, DispatchErrorTo198, DispatchInfo, DispatchInfoTo190, DispatchInfoTo244, DispatchOutcome, DispatchResult, DispatchResultOf, DispatchResultTo198, Event, EventId, EventIndex, EventRecord, Health, InvalidTransaction, Key, LastRuntimeUpgradeInfo, NetworkState, NetworkStatePeerset, NetworkStatePeersetInfo, NodeRole, NotConnectedPeer, Peer, PeerEndpoint, PeerEndpointAddr, PeerInfo, PeerPing, PerDispatchClassU32, PerDispatchClassWeight, PerDispatchClassWeightsPerClass, Phase, RawOrigin, RefCount, RefCountTo259, SyncState, SystemOrigin, TokenError, TransactionValidityError, UnknownTransaction, WeightPerClass } from '@polkadot/types/interfaces/system';
+import type { AccountInfo, AccountInfoWithDualRefCount, AccountInfoWithProviders, AccountInfoWithRefCount, AccountInfoWithRefCountU8, AccountInfoWithTripleRefCount, ApplyExtrinsicResult, ArithmeticError, BlockLength, BlockWeights, ChainProperties, ChainType, ConsumedWeight, DigestOf, DispatchClass, DispatchError, DispatchErrorModule, DispatchErrorTo198, DispatchInfo, DispatchInfoTo190, DispatchInfoTo244, DispatchOutcome, DispatchResult, DispatchResultOf, DispatchResultTo198, Event, EventId, EventIndex, EventRecord, Health, InvalidTransaction, Key, LastRuntimeUpgradeInfo, NetworkState, NetworkStatePeerset, NetworkStatePeersetInfo, NodeRole, NotConnectedPeer, Peer, PeerEndpoint, PeerEndpointAddr, PeerInfo, PeerPing, PerDispatchClassU32, PerDispatchClassWeight, PerDispatchClassWeightsPerClass, Phase, RawOrigin, RefCount, RefCountTo259, SyncState, SystemOrigin, TokenError, TransactionValidityError, UnknownTransaction, WeightPerClass } from '@polkadot/types/interfaces/system';
 import type { Bounty, BountyIndex, BountyStatus, BountyStatusActive, BountyStatusCuratorProposed, BountyStatusPendingPayout, OpenTip, OpenTipFinderTo225, OpenTipTip, OpenTipTo225, TreasuryProposal } from '@polkadot/types/interfaces/treasury';
 import type { Multiplier } from '@polkadot/types/interfaces/txpayment';
 import type { ClassDetails, ClassId, ClassMetadata, DepositBalance, DepositBalanceOf, DestroyWitness, InstanceDetails, InstanceId, InstanceMetadata } from '@polkadot/types/interfaces/uniques';
@@ -154,7 +153,6 @@
     BlockNumber: BlockNumber;
     BlockNumberFor: BlockNumberFor;
     BlockNumberOf: BlockNumberOf;
-    BlockStats: BlockStats;
     BlockTrace: BlockTrace;
     BlockTraceEvent: BlockTraceEvent;
     BlockTraceEventData: BlockTraceEventData;
@@ -329,7 +327,6 @@
     DispatchClass: DispatchClass;
     DispatchError: DispatchError;
     DispatchErrorModule: DispatchErrorModule;
-    DispatchErrorModuleU8a: DispatchErrorModuleU8a;
     DispatchErrorTo198: DispatchErrorTo198;
     DispatchFeePayment: DispatchFeePayment;
     DispatchInfo: DispatchInfo;
@@ -661,7 +658,6 @@
     MetadataV13: MetadataV13;
     MetadataV14: MetadataV14;
     MetadataV9: MetadataV9;
-    MigrationStatusResult: MigrationStatusResult;
     MmrLeafProof: MmrLeafProof;
     MmrRootHash: MmrRootHash;
     ModuleConstantMetadataV10: ModuleConstantMetadataV10;
@@ -849,7 +845,8 @@
     PerU16: PerU16;
     Phantom: Phantom;
     PhantomData: PhantomData;
-    PhantomTypeUpDataStructs: PhantomTypeUpDataStructs;
+    PhantomTypeUpDataStructsRpcCollection: PhantomTypeUpDataStructsRpcCollection;
+    PhantomTypeUpDataStructsTokenData: PhantomTypeUpDataStructsTokenData;
     Phase: Phase;
     PhragmenScore: PhragmenScore;
     Points: Points;
@@ -1189,6 +1186,7 @@
     UpDataStructsSchemaVersion: UpDataStructsSchemaVersion;
     UpDataStructsSponsoringRateLimit: UpDataStructsSponsoringRateLimit;
     UpDataStructsSponsorshipState: UpDataStructsSponsorshipState;
+    UpDataStructsTokenData: UpDataStructsTokenData;
     UpgradeGoAhead: UpgradeGoAhead;
     UpgradeRestriction: UpgradeRestriction;
     UpwardMessage: UpwardMessage;
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::v1::PersistedValidationData<primitive_types::H256, N>9   **/10  PolkadotPrimitivesV1PersistedValidationData: {11    parentHead: 'Bytes',12    relayParentNumber: 'u32',13    relayParentStorageRoot: 'H256',14    maxPovSize: 'u32'15  },16  /**17   * Lookup9: polkadot_primitives::v1::UpgradeRestriction18   **/19  PolkadotPrimitivesV1UpgradeRestriction: {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,PolkadotPrimitivesV1AbridgedHrmpChannel)>',35    egressChannels: 'Vec<(u32,PolkadotPrimitivesV1AbridgedHrmpChannel)>'36  },37  /**38   * Lookup18: polkadot_primitives::v1::AbridgedHrmpChannel39   **/40  PolkadotPrimitivesV1AbridgedHrmpChannel: {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::v1::AbridgedHostConfiguration50   **/51  PolkadotPrimitivesV1AbridgedHostConfiguration: {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: 'PolkadotPrimitivesV1PersistedValidationData',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      set_public_access_mode: {1264        collectionId: 'u32',1265        mode: 'UpDataStructsAccessMode',1266      },1267      set_mint_permission: {1268        collectionId: 'u32',1269        mintPermission: 'bool',1270      },1271      change_collection_owner: {1272        collectionId: 'u32',1273        newOwner: 'AccountId32',1274      },1275      add_collection_admin: {1276        collectionId: 'u32',1277        newAdminId: 'PalletEvmAccountBasicCrossAccountIdRepr',1278      },1279      remove_collection_admin: {1280        collectionId: 'u32',1281        accountId: 'PalletEvmAccountBasicCrossAccountIdRepr',1282      },1283      set_collection_sponsor: {1284        collectionId: 'u32',1285        newSponsor: 'AccountId32',1286      },1287      confirm_sponsorship: {1288        collectionId: 'u32',1289      },1290      remove_collection_sponsor: {1291        collectionId: 'u32',1292      },1293      create_item: {1294        collectionId: 'u32',1295        owner: 'PalletEvmAccountBasicCrossAccountIdRepr',1296        data: 'UpDataStructsCreateItemData',1297      },1298      create_multiple_items: {1299        collectionId: 'u32',1300        owner: 'PalletEvmAccountBasicCrossAccountIdRepr',1301        itemsData: 'Vec<UpDataStructsCreateItemData>',1302      },1303      set_collection_properties: {1304        collectionId: 'u32',1305        properties: 'Vec<UpDataStructsProperty>',1306      },1307      delete_collection_properties: {1308        collectionId: 'u32',1309        propertyKeys: 'Vec<Bytes>',1310      },1311      set_token_properties: {1312        collectionId: 'u32',1313        tokenId: 'u32',1314        properties: 'Vec<UpDataStructsProperty>',1315      },1316      delete_token_properties: {1317        collectionId: 'u32',1318        tokenId: 'u32',1319        propertyKeys: 'Vec<Bytes>',1320      },1321      set_property_permissions: {1322        collectionId: 'u32',1323        propertyPermissions: 'Vec<UpDataStructsPropertyKeyPermission>',1324      },1325      create_multiple_items_ex: {1326        collectionId: 'u32',1327        data: 'UpDataStructsCreateItemExData',1328      },1329      set_transfers_enabled_flag: {1330        collectionId: 'u32',1331        value: 'bool',1332      },1333      burn_item: {1334        collectionId: 'u32',1335        itemId: 'u32',1336        value: 'u128',1337      },1338      burn_from: {1339        collectionId: 'u32',1340        from: 'PalletEvmAccountBasicCrossAccountIdRepr',1341        itemId: 'u32',1342        value: 'u128',1343      },1344      transfer: {1345        recipient: 'PalletEvmAccountBasicCrossAccountIdRepr',1346        collectionId: 'u32',1347        itemId: 'u32',1348        value: 'u128',1349      },1350      approve: {1351        spender: 'PalletEvmAccountBasicCrossAccountIdRepr',1352        collectionId: 'u32',1353        itemId: 'u32',1354        amount: 'u128',1355      },1356      transfer_from: {1357        from: 'PalletEvmAccountBasicCrossAccountIdRepr',1358        recipient: 'PalletEvmAccountBasicCrossAccountIdRepr',1359        collectionId: 'u32',1360        itemId: 'u32',1361        value: 'u128',1362      },1363      set_variable_meta_data: {1364        collectionId: 'u32',1365        itemId: 'u32',1366        data: 'Bytes',1367      },1368      set_meta_update_permission_flag: {1369        collectionId: 'u32',1370        value: 'UpDataStructsMetaUpdatePermission',1371      },1372      set_schema_version: {1373        collectionId: 'u32',1374        version: 'UpDataStructsSchemaVersion',1375      },1376      set_offchain_schema: {1377        collectionId: 'u32',1378        schema: 'Bytes',1379      },1380      set_const_on_chain_schema: {1381        collectionId: 'u32',1382        schema: 'Bytes',1383      },1384      set_variable_on_chain_schema: {1385        collectionId: 'u32',1386        schema: 'Bytes',1387      },1388      set_collection_limits: {1389        collectionId: 'u32',1390        newLimit: 'UpDataStructsCollectionLimits'1391      }1392    }1393  },1394  /**1395   * Lookup156: up_data_structs::CollectionMode1396   **/1397  UpDataStructsCollectionMode: {1398    _enum: {1399      NFT: 'Null',1400      Fungible: 'u8',1401      ReFungible: 'Null'1402    }1403  },1404  /**1405   * Lookup157: up_data_structs::CreateCollectionData<sp_core::crypto::AccountId32>1406   **/1407  UpDataStructsCreateCollectionData: {1408    mode: 'UpDataStructsCollectionMode',1409    access: 'Option<UpDataStructsAccessMode>',1410    name: 'Vec<u16>',1411    description: 'Vec<u16>',1412    tokenPrefix: 'Bytes',1413    offchainSchema: 'Bytes',1414    schemaVersion: 'Option<UpDataStructsSchemaVersion>',1415    pendingSponsor: 'Option<AccountId32>',1416    limits: 'Option<UpDataStructsCollectionLimits>',1417    variableOnChainSchema: 'Bytes',1418    constOnChainSchema: 'Bytes',1419    metaUpdatePermission: 'Option<UpDataStructsMetaUpdatePermission>',1420    tokenPropertyPermissions: 'Vec<UpDataStructsPropertyKeyPermission>',1421    properties: 'Vec<UpDataStructsProperty>'1422  },1423  /**1424   * Lookup159: up_data_structs::AccessMode1425   **/1426  UpDataStructsAccessMode: {1427    _enum: ['Normal', 'AllowList']1428  },1429  /**1430   * Lookup162: up_data_structs::SchemaVersion1431   **/1432  UpDataStructsSchemaVersion: {1433    _enum: ['ImageURL', 'Unique']1434  },1435  /**1436   * Lookup165: up_data_structs::CollectionLimits1437   **/1438  UpDataStructsCollectionLimits: {1439    accountTokenOwnershipLimit: 'Option<u32>',1440    sponsoredDataSize: 'Option<u32>',1441    sponsoredDataRateLimit: 'Option<UpDataStructsSponsoringRateLimit>',1442    tokenLimit: 'Option<u32>',1443    sponsorTransferTimeout: 'Option<u32>',1444    sponsorApproveTimeout: 'Option<u32>',1445    ownerCanTransfer: 'Option<bool>',1446    ownerCanDestroy: 'Option<bool>',1447    transfersEnabled: 'Option<bool>',1448    nestingRule: 'Option<UpDataStructsNestingRule>'1449  },1450  /**1451   * Lookup167: up_data_structs::SponsoringRateLimit1452   **/1453  UpDataStructsSponsoringRateLimit: {1454    _enum: {1455      SponsoringDisabled: 'Null',1456      Blocks: 'u32'1457    }1458  },1459  /**1460   * Lookup170: up_data_structs::NestingRule1461   **/1462  UpDataStructsNestingRule: {1463    _enum: {1464      Disabled: 'Null',1465      Owner: 'Null',1466      OwnerRestricted: 'FrameSupportStorageBoundedBTreeSet'1467    }1468  },1469  /**1470   * Lookup171: frame_support::storage::bounded_btree_set::BoundedBTreeSet<up_data_structs::CollectionId, S>1471   **/1472  FrameSupportStorageBoundedBTreeSet: 'BTreeSet<u32>',1473  /**1474   * Lookup177: up_data_structs::MetaUpdatePermission1475   **/1476  UpDataStructsMetaUpdatePermission: {1477    _enum: ['ItemOwner', 'Admin', 'None']1478  },1479  /**1480   * Lookup179: up_data_structs::PropertyKeyPermission1481   **/1482  UpDataStructsPropertyKeyPermission: {1483    key: 'Bytes',1484    permission: 'UpDataStructsPropertyPermission'1485  },1486  /**1487   * Lookup181: up_data_structs::PropertyPermission1488   **/1489  UpDataStructsPropertyPermission: {1490    _enum: ['None', 'AdminConst', 'Admin', 'ItemOwnerConst', 'ItemOwner', 'ItemOwnerOrAdmin']1491  },1492  /**1493   * Lookup184: up_data_structs::Property1494   **/1495  UpDataStructsProperty: {1496    key: 'Bytes',1497    value: 'Bytes'1498  },1499  /**1500   * Lookup186: pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>1501   **/1502  PalletEvmAccountBasicCrossAccountIdRepr: {1503    _enum: {1504      Substrate: 'AccountId32',1505      Ethereum: 'H160'1506    }1507  },1508  /**1509   * Lookup188: up_data_structs::CreateItemData1510   **/1511  UpDataStructsCreateItemData: {1512    _enum: {1513      NFT: 'UpDataStructsCreateNftData',1514      Fungible: 'UpDataStructsCreateFungibleData',1515      ReFungible: 'UpDataStructsCreateReFungibleData'1516    }1517  },1518  /**1519   * Lookup189: up_data_structs::CreateNftData1520   **/1521  UpDataStructsCreateNftData: {1522    constData: 'Bytes',1523    variableData: 'Bytes'1524  },1525  /**1526   * Lookup191: up_data_structs::CreateFungibleData1527   **/1528  UpDataStructsCreateFungibleData: {1529    value: 'u128'1530  },1531  /**1532   * Lookup192: up_data_structs::CreateReFungibleData1533   **/1534  UpDataStructsCreateReFungibleData: {1535    constData: 'Bytes',1536    variableData: 'Bytes',1537    pieces: 'u128'1538  },1539  /**1540   * Lookup196: up_data_structs::CreateItemExData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>1541   **/1542  UpDataStructsCreateItemExData: {1543    _enum: {1544      NFT: 'Vec<UpDataStructsCreateNftExData>',1545      Fungible: 'BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr, u128>',1546      RefungibleMultipleItems: 'Vec<UpDataStructsCreateRefungibleExData>',1547      RefungibleMultipleOwners: 'UpDataStructsCreateRefungibleExData'1548    }1549  },1550  /**1551   * Lookup198: up_data_structs::CreateNftExData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>1552   **/1553  UpDataStructsCreateNftExData: {1554    constData: 'Bytes',1555    variableData: 'Bytes',1556    owner: 'PalletEvmAccountBasicCrossAccountIdRepr'1557  },1558  /**1559   * Lookup205: up_data_structs::CreateRefungibleExData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>1560   **/1561  UpDataStructsCreateRefungibleExData: {1562    constData: 'Bytes',1563    variableData: 'Bytes',1564    users: 'BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr, u128>'1565  },1566  /**1567   * Lookup207: pallet_template_transaction_payment::Call<T>1568   **/1569  PalletTemplateTransactionPaymentCall: 'Null',1570  /**1571   * Lookup208: pallet_structure::pallet::Call<T>1572   **/1573  PalletStructureCall: 'Null',1574  /**1575   * Lookup209: pallet_evm::pallet::Call<T>1576   **/1577  PalletEvmCall: {1578    _enum: {1579      withdraw: {1580        address: 'H160',1581        value: 'u128',1582      },1583      call: {1584        source: 'H160',1585        target: 'H160',1586        input: 'Bytes',1587        value: 'U256',1588        gasLimit: 'u64',1589        maxFeePerGas: 'U256',1590        maxPriorityFeePerGas: 'Option<U256>',1591        nonce: 'Option<U256>',1592        accessList: 'Vec<(H160,Vec<H256>)>',1593      },1594      create: {1595        source: 'H160',1596        init: 'Bytes',1597        value: 'U256',1598        gasLimit: 'u64',1599        maxFeePerGas: 'U256',1600        maxPriorityFeePerGas: 'Option<U256>',1601        nonce: 'Option<U256>',1602        accessList: 'Vec<(H160,Vec<H256>)>',1603      },1604      create2: {1605        source: 'H160',1606        init: 'Bytes',1607        salt: 'H256',1608        value: 'U256',1609        gasLimit: 'u64',1610        maxFeePerGas: 'U256',1611        maxPriorityFeePerGas: 'Option<U256>',1612        nonce: 'Option<U256>',1613        accessList: 'Vec<(H160,Vec<H256>)>'1614      }1615    }1616  },1617  /**1618   * Lookup215: pallet_ethereum::pallet::Call<T>1619   **/1620  PalletEthereumCall: {1621    _enum: {1622      transact: {1623        transaction: 'EthereumTransactionTransactionV2'1624      }1625    }1626  },1627  /**1628   * Lookup216: ethereum::transaction::TransactionV21629   **/1630  EthereumTransactionTransactionV2: {1631    _enum: {1632      Legacy: 'EthereumTransactionLegacyTransaction',1633      EIP2930: 'EthereumTransactionEip2930Transaction',1634      EIP1559: 'EthereumTransactionEip1559Transaction'1635    }1636  },1637  /**1638   * Lookup217: ethereum::transaction::LegacyTransaction1639   **/1640  EthereumTransactionLegacyTransaction: {1641    nonce: 'U256',1642    gasPrice: 'U256',1643    gasLimit: 'U256',1644    action: 'EthereumTransactionTransactionAction',1645    value: 'U256',1646    input: 'Bytes',1647    signature: 'EthereumTransactionTransactionSignature'1648  },1649  /**1650   * Lookup218: ethereum::transaction::TransactionAction1651   **/1652  EthereumTransactionTransactionAction: {1653    _enum: {1654      Call: 'H160',1655      Create: 'Null'1656    }1657  },1658  /**1659   * Lookup219: ethereum::transaction::TransactionSignature1660   **/1661  EthereumTransactionTransactionSignature: {1662    v: 'u64',1663    r: 'H256',1664    s: 'H256'1665  },1666  /**1667   * Lookup221: ethereum::transaction::EIP2930Transaction1668   **/1669  EthereumTransactionEip2930Transaction: {1670    chainId: 'u64',1671    nonce: 'U256',1672    gasPrice: 'U256',1673    gasLimit: 'U256',1674    action: 'EthereumTransactionTransactionAction',1675    value: 'U256',1676    input: 'Bytes',1677    accessList: 'Vec<EthereumTransactionAccessListItem>',1678    oddYParity: 'bool',1679    r: 'H256',1680    s: 'H256'1681  },1682  /**1683   * Lookup223: ethereum::transaction::AccessListItem1684   **/1685  EthereumTransactionAccessListItem: {1686    address: 'H160',1687    storageKeys: 'Vec<H256>'1688  },1689  /**1690   * Lookup224: ethereum::transaction::EIP1559Transaction1691   **/1692  EthereumTransactionEip1559Transaction: {1693    chainId: 'u64',1694    nonce: 'U256',1695    maxPriorityFeePerGas: 'U256',1696    maxFeePerGas: 'U256',1697    gasLimit: 'U256',1698    action: 'EthereumTransactionTransactionAction',1699    value: 'U256',1700    input: 'Bytes',1701    accessList: 'Vec<EthereumTransactionAccessListItem>',1702    oddYParity: 'bool',1703    r: 'H256',1704    s: 'H256'1705  },1706  /**1707   * Lookup225: pallet_evm_migration::pallet::Call<T>1708   **/1709  PalletEvmMigrationCall: {1710    _enum: {1711      begin: {1712        address: 'H160',1713      },1714      set_data: {1715        address: 'H160',1716        data: 'Vec<(H256,H256)>',1717      },1718      finish: {1719        address: 'H160',1720        code: 'Bytes'1721      }1722    }1723  },1724  /**1725   * Lookup228: pallet_sudo::pallet::Event<T>1726   **/1727  PalletSudoEvent: {1728    _enum: {1729      Sudid: {1730        sudoResult: 'Result<Null, SpRuntimeDispatchError>',1731      },1732      KeyChanged: {1733        oldSudoer: 'Option<AccountId32>',1734      },1735      SudoAsDone: {1736        sudoResult: 'Result<Null, SpRuntimeDispatchError>'1737      }1738    }1739  },1740  /**1741   * Lookup230: sp_runtime::DispatchError1742   **/1743  SpRuntimeDispatchError: {1744    _enum: {1745      Other: 'Null',1746      CannotLookup: 'Null',1747      BadOrigin: 'Null',1748      Module: 'SpRuntimeModuleError',1749      ConsumerRemaining: 'Null',1750      NoProviders: 'Null',1751      TooManyConsumers: 'Null',1752      Token: 'SpRuntimeTokenError',1753      Arithmetic: 'SpRuntimeArithmeticError'1754    }1755  },1756  /**1757   * Lookup231: sp_runtime::ModuleError1758   **/1759  SpRuntimeModuleError: {1760    index: 'u8',1761    error: 'u8'1762  },1763  /**1764   * Lookup232: sp_runtime::TokenError1765   **/1766  SpRuntimeTokenError: {1767    _enum: ['NoFunds', 'WouldDie', 'BelowMinimum', 'CannotCreate', 'UnknownAsset', 'Frozen', 'Unsupported']1768  },1769  /**1770   * Lookup233: sp_runtime::ArithmeticError1771   **/1772  SpRuntimeArithmeticError: {1773    _enum: ['Underflow', 'Overflow', 'DivisionByZero']1774  },1775  /**1776   * Lookup234: pallet_sudo::pallet::Error<T>1777   **/1778  PalletSudoError: {1779    _enum: ['RequireSudo']1780  },1781  /**1782   * Lookup235: frame_system::AccountInfo<Index, pallet_balances::AccountData<Balance>>1783   **/1784  FrameSystemAccountInfo: {1785    nonce: 'u32',1786    consumers: 'u32',1787    providers: 'u32',1788    sufficients: 'u32',1789    data: 'PalletBalancesAccountData'1790  },1791  /**1792   * Lookup236: frame_support::weights::PerDispatchClass<T>1793   **/1794  FrameSupportWeightsPerDispatchClassU64: {1795    normal: 'u64',1796    operational: 'u64',1797    mandatory: 'u64'1798  },1799  /**1800   * Lookup237: sp_runtime::generic::digest::Digest1801   **/1802  SpRuntimeDigest: {1803    logs: 'Vec<SpRuntimeDigestDigestItem>'1804  },1805  /**1806   * Lookup239: sp_runtime::generic::digest::DigestItem1807   **/1808  SpRuntimeDigestDigestItem: {1809    _enum: {1810      Other: 'Bytes',1811      __Unused1: 'Null',1812      __Unused2: 'Null',1813      __Unused3: 'Null',1814      Consensus: '([u8;4],Bytes)',1815      Seal: '([u8;4],Bytes)',1816      PreRuntime: '([u8;4],Bytes)',1817      __Unused7: 'Null',1818      RuntimeEnvironmentUpdated: 'Null'1819    }1820  },1821  /**1822   * Lookup241: frame_system::EventRecord<opal_runtime::Event, primitive_types::H256>1823   **/1824  FrameSystemEventRecord: {1825    phase: 'FrameSystemPhase',1826    event: 'Event',1827    topics: 'Vec<H256>'1828  },1829  /**1830   * Lookup243: frame_system::pallet::Event<T>1831   **/1832  FrameSystemEvent: {1833    _enum: {1834      ExtrinsicSuccess: {1835        dispatchInfo: 'FrameSupportWeightsDispatchInfo',1836      },1837      ExtrinsicFailed: {1838        dispatchError: 'SpRuntimeDispatchError',1839        dispatchInfo: 'FrameSupportWeightsDispatchInfo',1840      },1841      CodeUpdated: 'Null',1842      NewAccount: {1843        account: 'AccountId32',1844      },1845      KilledAccount: {1846        account: 'AccountId32',1847      },1848      Remarked: {1849        _alias: {1850          hash_: 'hash',1851        },1852        sender: 'AccountId32',1853        hash_: 'H256'1854      }1855    }1856  },1857  /**1858   * Lookup244: frame_support::weights::DispatchInfo1859   **/1860  FrameSupportWeightsDispatchInfo: {1861    weight: 'u64',1862    class: 'FrameSupportWeightsDispatchClass',1863    paysFee: 'FrameSupportWeightsPays'1864  },1865  /**1866   * Lookup245: frame_support::weights::DispatchClass1867   **/1868  FrameSupportWeightsDispatchClass: {1869    _enum: ['Normal', 'Operational', 'Mandatory']1870  },1871  /**1872   * Lookup246: frame_support::weights::Pays1873   **/1874  FrameSupportWeightsPays: {1875    _enum: ['Yes', 'No']1876  },1877  /**1878   * Lookup247: orml_vesting::module::Event<T>1879   **/1880  OrmlVestingModuleEvent: {1881    _enum: {1882      VestingScheduleAdded: {1883        from: 'AccountId32',1884        to: 'AccountId32',1885        vestingSchedule: 'OrmlVestingVestingSchedule',1886      },1887      Claimed: {1888        who: 'AccountId32',1889        amount: 'u128',1890      },1891      VestingSchedulesUpdated: {1892        who: 'AccountId32'1893      }1894    }1895  },1896  /**1897   * Lookup248: cumulus_pallet_xcmp_queue::pallet::Event<T>1898   **/1899  CumulusPalletXcmpQueueEvent: {1900    _enum: {1901      Success: 'Option<H256>',1902      Fail: '(Option<H256>,XcmV2TraitsError)',1903      BadVersion: 'Option<H256>',1904      BadFormat: 'Option<H256>',1905      UpwardMessageSent: 'Option<H256>',1906      XcmpMessageSent: 'Option<H256>',1907      OverweightEnqueued: '(u32,u32,u64,u64)',1908      OverweightServiced: '(u64,u64)'1909    }1910  },1911  /**1912   * Lookup249: pallet_xcm::pallet::Event<T>1913   **/1914  PalletXcmEvent: {1915    _enum: {1916      Attempted: 'XcmV2TraitsOutcome',1917      Sent: '(XcmV1MultiLocation,XcmV1MultiLocation,XcmV2Xcm)',1918      UnexpectedResponse: '(XcmV1MultiLocation,u64)',1919      ResponseReady: '(u64,XcmV2Response)',1920      Notified: '(u64,u8,u8)',1921      NotifyOverweight: '(u64,u8,u8,u64,u64)',1922      NotifyDispatchError: '(u64,u8,u8)',1923      NotifyDecodeFailed: '(u64,u8,u8)',1924      InvalidResponder: '(XcmV1MultiLocation,u64,Option<XcmV1MultiLocation>)',1925      InvalidResponderVersion: '(XcmV1MultiLocation,u64)',1926      ResponseTaken: 'u64',1927      AssetsTrapped: '(H256,XcmV1MultiLocation,XcmVersionedMultiAssets)',1928      VersionChangeNotified: '(XcmV1MultiLocation,u32)',1929      SupportedVersionChanged: '(XcmV1MultiLocation,u32)',1930      NotifyTargetSendFail: '(XcmV1MultiLocation,u64,XcmV2TraitsError)',1931      NotifyTargetMigrationFail: '(XcmVersionedMultiLocation,u64)'1932    }1933  },1934  /**1935   * Lookup250: xcm::v2::traits::Outcome1936   **/1937  XcmV2TraitsOutcome: {1938    _enum: {1939      Complete: 'u64',1940      Incomplete: '(u64,XcmV2TraitsError)',1941      Error: 'XcmV2TraitsError'1942    }1943  },1944  /**1945   * Lookup252: cumulus_pallet_xcm::pallet::Event<T>1946   **/1947  CumulusPalletXcmEvent: {1948    _enum: {1949      InvalidFormat: '[u8;8]',1950      UnsupportedVersion: '[u8;8]',1951      ExecutedDownward: '([u8;8],XcmV2TraitsOutcome)'1952    }1953  },1954  /**1955   * Lookup253: cumulus_pallet_dmp_queue::pallet::Event<T>1956   **/1957  CumulusPalletDmpQueueEvent: {1958    _enum: {1959      InvalidFormat: '[u8;32]',1960      UnsupportedVersion: '[u8;32]',1961      ExecutedDownward: '([u8;32],XcmV2TraitsOutcome)',1962      WeightExhausted: '([u8;32],u64,u64)',1963      OverweightEnqueued: '([u8;32],u64,u64)',1964      OverweightServiced: '(u64,u64)'1965    }1966  },1967  /**1968   * Lookup254: pallet_unique::RawEvent<sp_core::crypto::AccountId32, pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>1969   **/1970  PalletUniqueRawEvent: {1971    _enum: {1972      CollectionSponsorRemoved: 'u32',1973      CollectionAdminAdded: '(u32,PalletEvmAccountBasicCrossAccountIdRepr)',1974      CollectionOwnedChanged: '(u32,AccountId32)',1975      CollectionSponsorSet: '(u32,AccountId32)',1976      ConstOnChainSchemaSet: 'u32',1977      SponsorshipConfirmed: '(u32,AccountId32)',1978      CollectionAdminRemoved: '(u32,PalletEvmAccountBasicCrossAccountIdRepr)',1979      AllowListAddressRemoved: '(u32,PalletEvmAccountBasicCrossAccountIdRepr)',1980      AllowListAddressAdded: '(u32,PalletEvmAccountBasicCrossAccountIdRepr)',1981      CollectionLimitSet: 'u32',1982      MintPermissionSet: 'u32',1983      OffchainSchemaSet: 'u32',1984      PublicAccessModeSet: '(u32,UpDataStructsAccessMode)',1985      SchemaVersionSet: 'u32',1986      VariableOnChainSchemaSet: 'u32'1987    }1988  },1989  /**1990   * Lookup255: pallet_common::pallet::Event<T>1991   **/1992  PalletCommonEvent: {1993    _enum: {1994      CollectionCreated: '(u32,u8,AccountId32)',1995      CollectionDestroyed: 'u32',1996      ItemCreated: '(u32,u32,PalletEvmAccountBasicCrossAccountIdRepr,u128)',1997      ItemDestroyed: '(u32,u32,PalletEvmAccountBasicCrossAccountIdRepr,u128)',1998      Transfer: '(u32,u32,PalletEvmAccountBasicCrossAccountIdRepr,PalletEvmAccountBasicCrossAccountIdRepr,u128)',1999      Approved: '(u32,u32,PalletEvmAccountBasicCrossAccountIdRepr,PalletEvmAccountBasicCrossAccountIdRepr,u128)',2000      CollectionPropertySet: '(u32,UpDataStructsProperty)',2001      CollectionPropertyDeleted: '(u32,Bytes)',2002      TokenPropertySet: '(u32,u32,UpDataStructsProperty)',2003      TokenPropertyDeleted: '(u32,u32,Bytes)',2004      PropertyPermissionSet: '(u32,UpDataStructsPropertyKeyPermission)'2005    }2006  },2007  /**2008   * Lookup256: pallet_structure::pallet::Event<T>2009   **/2010  PalletStructureEvent: {2011    _enum: {2012      Executed: 'Result<Null, SpRuntimeDispatchError>'2013    }2014  },2015  /**2016   * Lookup257: pallet_evm::pallet::Event<T>2017   **/2018  PalletEvmEvent: {2019    _enum: {2020      Log: 'EthereumLog',2021      Created: 'H160',2022      CreatedFailed: 'H160',2023      Executed: 'H160',2024      ExecutedFailed: 'H160',2025      BalanceDeposit: '(AccountId32,H160,U256)',2026      BalanceWithdraw: '(AccountId32,H160,U256)'2027    }2028  },2029  /**2030   * Lookup258: ethereum::log::Log2031   **/2032  EthereumLog: {2033    address: 'H160',2034    topics: 'Vec<H256>',2035    data: 'Bytes'2036  },2037  /**2038   * Lookup259: pallet_ethereum::pallet::Event2039   **/2040  PalletEthereumEvent: {2041    _enum: {2042      Executed: '(H160,H160,H256,EvmCoreErrorExitReason)'2043    }2044  },2045  /**2046   * Lookup260: evm_core::error::ExitReason2047   **/2048  EvmCoreErrorExitReason: {2049    _enum: {2050      Succeed: 'EvmCoreErrorExitSucceed',2051      Error: 'EvmCoreErrorExitError',2052      Revert: 'EvmCoreErrorExitRevert',2053      Fatal: 'EvmCoreErrorExitFatal'2054    }2055  },2056  /**2057   * Lookup261: evm_core::error::ExitSucceed2058   **/2059  EvmCoreErrorExitSucceed: {2060    _enum: ['Stopped', 'Returned', 'Suicided']2061  },2062  /**2063   * Lookup262: evm_core::error::ExitError2064   **/2065  EvmCoreErrorExitError: {2066    _enum: {2067      StackUnderflow: 'Null',2068      StackOverflow: 'Null',2069      InvalidJump: 'Null',2070      InvalidRange: 'Null',2071      DesignatedInvalid: 'Null',2072      CallTooDeep: 'Null',2073      CreateCollision: 'Null',2074      CreateContractLimit: 'Null',2075      InvalidCode: 'Null',2076      OutOfOffset: 'Null',2077      OutOfGas: 'Null',2078      OutOfFund: 'Null',2079      PCUnderflow: 'Null',2080      CreateEmpty: 'Null',2081      Other: 'Text'2082    }2083  },2084  /**2085   * Lookup265: evm_core::error::ExitRevert2086   **/2087  EvmCoreErrorExitRevert: {2088    _enum: ['Reverted']2089  },2090  /**2091   * Lookup266: evm_core::error::ExitFatal2092   **/2093  EvmCoreErrorExitFatal: {2094    _enum: {2095      NotSupported: 'Null',2096      UnhandledInterrupt: 'Null',2097      CallErrorAsFatal: 'EvmCoreErrorExitError',2098      Other: 'Text'2099    }2100  },2101  /**2102   * Lookup267: frame_system::Phase2103   **/2104  FrameSystemPhase: {2105    _enum: {2106      ApplyExtrinsic: 'u32',2107      Finalization: 'Null',2108      Initialization: 'Null'2109    }2110  },2111  /**2112   * Lookup269: frame_system::LastRuntimeUpgradeInfo2113   **/2114  FrameSystemLastRuntimeUpgradeInfo: {2115    specVersion: 'Compact<u32>',2116    specName: 'Text'2117  },2118  /**2119   * Lookup270: frame_system::limits::BlockWeights2120   **/2121  FrameSystemLimitsBlockWeights: {2122    baseBlock: 'u64',2123    maxBlock: 'u64',2124    perClass: 'FrameSupportWeightsPerDispatchClassWeightsPerClass'2125  },2126  /**2127   * Lookup271: frame_support::weights::PerDispatchClass<frame_system::limits::WeightsPerClass>2128   **/2129  FrameSupportWeightsPerDispatchClassWeightsPerClass: {2130    normal: 'FrameSystemLimitsWeightsPerClass',2131    operational: 'FrameSystemLimitsWeightsPerClass',2132    mandatory: 'FrameSystemLimitsWeightsPerClass'2133  },2134  /**2135   * Lookup272: frame_system::limits::WeightsPerClass2136   **/2137  FrameSystemLimitsWeightsPerClass: {2138    baseExtrinsic: 'u64',2139    maxExtrinsic: 'Option<u64>',2140    maxTotal: 'Option<u64>',2141    reserved: 'Option<u64>'2142  },2143  /**2144   * Lookup274: frame_system::limits::BlockLength2145   **/2146  FrameSystemLimitsBlockLength: {2147    max: 'FrameSupportWeightsPerDispatchClassU32'2148  },2149  /**2150   * Lookup275: frame_support::weights::PerDispatchClass<T>2151   **/2152  FrameSupportWeightsPerDispatchClassU32: {2153    normal: 'u32',2154    operational: 'u32',2155    mandatory: 'u32'2156  },2157  /**2158   * Lookup276: frame_support::weights::RuntimeDbWeight2159   **/2160  FrameSupportWeightsRuntimeDbWeight: {2161    read: 'u64',2162    write: 'u64'2163  },2164  /**2165   * Lookup277: sp_version::RuntimeVersion2166   **/2167  SpVersionRuntimeVersion: {2168    specName: 'Text',2169    implName: 'Text',2170    authoringVersion: 'u32',2171    specVersion: 'u32',2172    implVersion: 'u32',2173    apis: 'Vec<([u8;8],u32)>',2174    transactionVersion: 'u32',2175    stateVersion: 'u8'2176  },2177  /**2178   * Lookup281: frame_system::pallet::Error<T>2179   **/2180  FrameSystemError: {2181    _enum: ['InvalidSpecName', 'SpecVersionNeedsToIncrease', 'FailedToExtractRuntimeVersion', 'NonDefaultComposite', 'NonZeroRefCount', 'CallFiltered']2182  },2183  /**2184   * Lookup283: orml_vesting::module::Error<T>2185   **/2186  OrmlVestingModuleError: {2187    _enum: ['ZeroVestingPeriod', 'ZeroVestingPeriodCount', 'InsufficientBalanceToLock', 'TooManyVestingSchedules', 'AmountLow', 'MaxVestingSchedulesExceeded']2188  },2189  /**2190   * Lookup285: cumulus_pallet_xcmp_queue::InboundChannelDetails2191   **/2192  CumulusPalletXcmpQueueInboundChannelDetails: {2193    sender: 'u32',2194    state: 'CumulusPalletXcmpQueueInboundState',2195    messageMetadata: 'Vec<(u32,PolkadotParachainPrimitivesXcmpMessageFormat)>'2196  },2197  /**2198   * Lookup286: cumulus_pallet_xcmp_queue::InboundState2199   **/2200  CumulusPalletXcmpQueueInboundState: {2201    _enum: ['Ok', 'Suspended']2202  },2203  /**2204   * Lookup289: polkadot_parachain::primitives::XcmpMessageFormat2205   **/2206  PolkadotParachainPrimitivesXcmpMessageFormat: {2207    _enum: ['ConcatenatedVersionedXcm', 'ConcatenatedEncodedBlob', 'Signals']2208  },2209  /**2210   * Lookup292: cumulus_pallet_xcmp_queue::OutboundChannelDetails2211   **/2212  CumulusPalletXcmpQueueOutboundChannelDetails: {2213    recipient: 'u32',2214    state: 'CumulusPalletXcmpQueueOutboundState',2215    signalsExist: 'bool',2216    firstIndex: 'u16',2217    lastIndex: 'u16'2218  },2219  /**2220   * Lookup293: cumulus_pallet_xcmp_queue::OutboundState2221   **/2222  CumulusPalletXcmpQueueOutboundState: {2223    _enum: ['Ok', 'Suspended']2224  },2225  /**2226   * Lookup295: cumulus_pallet_xcmp_queue::QueueConfigData2227   **/2228  CumulusPalletXcmpQueueQueueConfigData: {2229    suspendThreshold: 'u32',2230    dropThreshold: 'u32',2231    resumeThreshold: 'u32',2232    thresholdWeight: 'u64',2233    weightRestrictDecay: 'u64',2234    xcmpMaxIndividualWeight: 'u64'2235  },2236  /**2237   * Lookup297: cumulus_pallet_xcmp_queue::pallet::Error<T>2238   **/2239  CumulusPalletXcmpQueueError: {2240    _enum: ['FailedToSend', 'BadXcmOrigin', 'BadXcm', 'BadOverweightIndex', 'WeightOverLimit']2241  },2242  /**2243   * Lookup298: pallet_xcm::pallet::Error<T>2244   **/2245  PalletXcmError: {2246    _enum: ['Unreachable', 'SendFailure', 'Filtered', 'UnweighableMessage', 'DestinationNotInvertible', 'Empty', 'CannotReanchor', 'TooManyAssets', 'InvalidOrigin', 'BadVersion', 'BadLocation', 'NoSubscription', 'AlreadySubscribed']2247  },2248  /**2249   * Lookup299: cumulus_pallet_xcm::pallet::Error<T>2250   **/2251  CumulusPalletXcmError: 'Null',2252  /**2253   * Lookup300: cumulus_pallet_dmp_queue::ConfigData2254   **/2255  CumulusPalletDmpQueueConfigData: {2256    maxIndividual: 'u64'2257  },2258  /**2259   * Lookup301: cumulus_pallet_dmp_queue::PageIndexData2260   **/2261  CumulusPalletDmpQueuePageIndexData: {2262    beginUsed: 'u32',2263    endUsed: 'u32',2264    overweightCount: 'u64'2265  },2266  /**2267   * Lookup304: cumulus_pallet_dmp_queue::pallet::Error<T>2268   **/2269  CumulusPalletDmpQueueError: {2270    _enum: ['Unknown', 'OverLimit']2271  },2272  /**2273   * Lookup308: pallet_unique::Error<T>2274   **/2275  PalletUniqueError: {2276    _enum: ['CollectionDecimalPointLimitExceeded', 'ConfirmUnsetSponsorFail', 'EmptyArgument']2277  },2278  /**2279   * Lookup309: up_data_structs::Collection<sp_core::crypto::AccountId32>2280   **/2281  UpDataStructsCollection: {2282    owner: 'AccountId32',2283    mode: 'UpDataStructsCollectionMode',2284    access: 'UpDataStructsAccessMode',2285    name: 'Vec<u16>',2286    description: 'Vec<u16>',2287    tokenPrefix: 'Bytes',2288    mintMode: 'bool',2289    schemaVersion: 'UpDataStructsSchemaVersion',2290    sponsorship: 'UpDataStructsSponsorshipState',2291    limits: 'UpDataStructsCollectionLimits',2292    metaUpdatePermission: 'UpDataStructsMetaUpdatePermission'2293  },2294  /**2295   * Lookup310: up_data_structs::SponsorshipState<sp_core::crypto::AccountId32>2296   **/2297  UpDataStructsSponsorshipState: {2298    _enum: {2299      Disabled: 'Null',2300      Unconfirmed: 'AccountId32',2301      Confirmed: 'AccountId32'2302    }2303  },2304  /**2305   * Lookup311: up_data_structs::Properties2306   **/2307  UpDataStructsProperties: {2308    map: 'BTreeMap<Bytes, Bytes>',2309    consumedSpace: 'u32',2310    spaceLimit: 'u32'2311  },2312  /**2313   * Lookup321: up_data_structs::CollectionField2314   **/2315  UpDataStructsCollectionField: {2316    _enum: ['VariableOnChainSchema', 'ConstOnChainSchema', 'OffchainSchema']2317  },2318  /**2319   * Lookup324: up_data_structs::CollectionStats2320   **/2321  UpDataStructsCollectionStats: {2322    created: 'u32',2323    destroyed: 'u32',2324    alive: 'u32'2325  },2326  /**2327   * Lookup325: PhantomType::up_data_structs<up_data_structs::RpcCollection<sp_core::crypto::AccountId32>>2328   **/2329  PhantomTypeUpDataStructs: '[Lookup326;0]',2330  /**2331   * Lookup326: up_data_structs::RpcCollection<sp_core::crypto::AccountId32>2332   **/2333  UpDataStructsRpcCollection: {2334    owner: 'AccountId32',2335    mode: 'UpDataStructsCollectionMode',2336    access: 'UpDataStructsAccessMode',2337    name: 'Vec<u16>',2338    description: 'Vec<u16>',2339    tokenPrefix: 'Bytes',2340    mintMode: 'bool',2341    offchainSchema: 'Bytes',2342    schemaVersion: 'UpDataStructsSchemaVersion',2343    sponsorship: 'UpDataStructsSponsorshipState',2344    limits: 'UpDataStructsCollectionLimits',2345    variableOnChainSchema: 'Bytes',2346    constOnChainSchema: 'Bytes',2347    metaUpdatePermission: 'UpDataStructsMetaUpdatePermission'2348  },2349  /**2350   * Lookup328: pallet_common::pallet::Error<T>2351   **/2352  PalletCommonError: {2353    _enum: ['CollectionNotFound', 'MustBeTokenOwner', 'NoPermission', 'PublicMintingNotAllowed', 'AddressNotInAllowlist', 'CollectionNameLimitExceeded', 'CollectionDescriptionLimitExceeded', 'CollectionTokenPrefixLimitExceeded', 'TotalCollectionsLimitExceeded', 'TokenVariableDataLimitExceeded', 'CollectionAdminCountExceeded', 'CollectionLimitBoundsExceeded', 'OwnerPermissionsCantBeReverted', 'TransferNotAllowed', 'AccountTokenLimitExceeded', 'CollectionTokenLimitExceeded', 'MetadataFlagFrozen', 'TokenNotFound', 'TokenValueTooLow', 'ApprovedValueTooLow', 'CantApproveMoreThanOwned', 'AddressIsZero', 'UnsupportedOperation', 'NotSufficientFounds', 'NestingIsDisabled', 'OnlyOwnerAllowedToNest', 'SourceCollectionIsNotAllowedToNest', 'CollectionFieldSizeExceeded', 'NoSpaceForProperty', 'PropertyLimitReached']2354  },2355  /**2356   * Lookup330: pallet_fungible::pallet::Error<T>2357   **/2358  PalletFungibleError: {2359    _enum: ['NotFungibleDataUsedToMintFungibleCollectionToken', 'FungibleItemsHaveNoId', 'FungibleItemsDontHaveData', 'FungibleDisallowsNesting', 'PropertiesNotAllowed']2360  },2361  /**2362   * Lookup331: pallet_refungible::ItemData2363   **/2364  PalletRefungibleItemData: {2365    constData: 'Bytes',2366    variableData: 'Bytes'2367  },2368  /**2369   * Lookup335: pallet_refungible::pallet::Error<T>2370   **/2371  PalletRefungibleError: {2372    _enum: ['NotRefungibleDataUsedToMintFungibleCollectionToken', 'WrongRefungiblePieces', 'RefungibleDisallowsNesting', 'PropertiesNotAllowed']2373  },2374  /**2375   * Lookup336: pallet_nonfungible::ItemData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>2376   **/2377  PalletNonfungibleItemData: {2378    constData: 'Bytes',2379    variableData: 'Bytes',2380    owner: 'PalletEvmAccountBasicCrossAccountIdRepr'2381  },2382  /**2383   * Lookup337: pallet_nonfungible::pallet::Error<T>2384   **/2385  PalletNonfungibleError: {2386    _enum: ['NotNonfungibleDataUsedToMintFungibleCollectionToken', 'NonfungibleItemsHaveNoAmount']2387  },2388  /**2389   * Lookup338: pallet_structure::pallet::Error<T>2390   **/2391  PalletStructureError: {2392    _enum: ['OuroborosDetected', 'DepthLimit', 'TokenNotFound']2393  },2394  /**2395   * Lookup340: pallet_evm::pallet::Error<T>2396   **/2397  PalletEvmError: {2398    _enum: ['BalanceLow', 'FeeOverflow', 'PaymentOverflow', 'WithdrawFailed', 'GasPriceTooLow', 'InvalidNonce']2399  },2400  /**2401   * Lookup343: fp_rpc::TransactionStatus2402   **/2403  FpRpcTransactionStatus: {2404    transactionHash: 'H256',2405    transactionIndex: 'u32',2406    from: 'H160',2407    to: 'Option<H160>',2408    contractAddress: 'Option<H160>',2409    logs: 'Vec<EthereumLog>',2410    logsBloom: 'EthbloomBloom'2411  },2412  /**2413   * Lookup346: ethbloom::Bloom2414   **/2415  EthbloomBloom: '[u8;256]',2416  /**2417   * Lookup348: ethereum::receipt::ReceiptV32418   **/2419  EthereumReceiptReceiptV3: {2420    _enum: {2421      Legacy: 'EthereumReceiptEip658ReceiptData',2422      EIP2930: 'EthereumReceiptEip658ReceiptData',2423      EIP1559: 'EthereumReceiptEip658ReceiptData'2424    }2425  },2426  /**2427   * Lookup349: ethereum::receipt::EIP658ReceiptData2428   **/2429  EthereumReceiptEip658ReceiptData: {2430    statusCode: 'u8',2431    usedGas: 'U256',2432    logsBloom: 'EthbloomBloom',2433    logs: 'Vec<EthereumLog>'2434  },2435  /**2436   * Lookup350: ethereum::block::Block<ethereum::transaction::TransactionV2>2437   **/2438  EthereumBlock: {2439    header: 'EthereumHeader',2440    transactions: 'Vec<EthereumTransactionTransactionV2>',2441    ommers: 'Vec<EthereumHeader>'2442  },2443  /**2444   * Lookup351: ethereum::header::Header2445   **/2446  EthereumHeader: {2447    parentHash: 'H256',2448    ommersHash: 'H256',2449    beneficiary: 'H160',2450    stateRoot: 'H256',2451    transactionsRoot: 'H256',2452    receiptsRoot: 'H256',2453    logsBloom: 'EthbloomBloom',2454    difficulty: 'U256',2455    number: 'U256',2456    gasLimit: 'U256',2457    gasUsed: 'U256',2458    timestamp: 'u64',2459    extraData: 'Bytes',2460    mixHash: 'H256',2461    nonce: 'EthereumTypesHashH64'2462  },2463  /**2464   * Lookup352: ethereum_types::hash::H642465   **/2466  EthereumTypesHashH64: '[u8;8]',2467  /**2468   * Lookup357: pallet_ethereum::pallet::Error<T>2469   **/2470  PalletEthereumError: {2471    _enum: ['InvalidSignature', 'PreLogExists']2472  },2473  /**2474   * Lookup358: pallet_evm_coder_substrate::pallet::Error<T>2475   **/2476  PalletEvmCoderSubstrateError: {2477    _enum: ['OutOfGas', 'OutOfFund']2478  },2479  /**2480   * Lookup359: pallet_evm_contract_helpers::SponsoringModeT2481   **/2482  PalletEvmContractHelpersSponsoringModeT: {2483    _enum: ['Disabled', 'Allowlisted', 'Generous']2484  },2485  /**2486   * Lookup361: pallet_evm_contract_helpers::pallet::Error<T>2487   **/2488  PalletEvmContractHelpersError: {2489    _enum: ['NoPermission']2490  },2491  /**2492   * Lookup362: pallet_evm_migration::pallet::Error<T>2493   **/2494  PalletEvmMigrationError: {2495    _enum: ['AccountNotEmpty', 'AccountIsNotMigrating']2496  },2497  /**2498   * Lookup364: sp_runtime::MultiSignature2499   **/2500  SpRuntimeMultiSignature: {2501    _enum: {2502      Ed25519: 'SpCoreEd25519Signature',2503      Sr25519: 'SpCoreSr25519Signature',2504      Ecdsa: 'SpCoreEcdsaSignature'2505    }2506  },2507  /**2508   * Lookup365: sp_core::ed25519::Signature2509   **/2510  SpCoreEd25519Signature: '[u8;64]',2511  /**2512   * Lookup367: sp_core::sr25519::Signature2513   **/2514  SpCoreSr25519Signature: '[u8;64]',2515  /**2516   * Lookup368: sp_core::ecdsa::Signature2517   **/2518  SpCoreEcdsaSignature: '[u8;65]',2519  /**2520   * Lookup371: frame_system::extensions::check_spec_version::CheckSpecVersion<T>2521   **/2522  FrameSystemExtensionsCheckSpecVersion: 'Null',2523  /**2524   * Lookup372: frame_system::extensions::check_genesis::CheckGenesis<T>2525   **/2526  FrameSystemExtensionsCheckGenesis: 'Null',2527  /**2528   * Lookup375: frame_system::extensions::check_nonce::CheckNonce<T>2529   **/2530  FrameSystemExtensionsCheckNonce: 'Compact<u32>',2531  /**2532   * Lookup376: frame_system::extensions::check_weight::CheckWeight<T>2533   **/2534  FrameSystemExtensionsCheckWeight: 'Null',2535  /**2536   * Lookup377: pallet_template_transaction_payment::ChargeTransactionPayment<opal_runtime::Runtime>2537   **/2538  PalletTemplateTransactionPaymentChargeTransactionPayment: 'Compact<u128>',2539  /**2540   * Lookup378: opal_runtime::Runtime2541   **/2542  OpalRuntimeRuntime: 'Null'2543};
modifiedtests/src/interfaces/types-lookup.tsdiffbeforeafterboth
--- a/tests/src/interfaces/types-lookup.ts
+++ b/tests/src/interfaces/types-lookup.ts
@@ -2,7 +2,7 @@
 /* eslint-disable */
 
 declare module '@polkadot/types/lookup' {
-  import type { BTreeMap, BTreeSet, Bytes, Compact, Enum, Null, Option, Result, Struct, Text, U256, U8aFixed, Vec, bool, u128, u16, u32, u64, u8 } from '@polkadot/types-codec';
+  import type { BTreeMap, Bytes, Compact, Enum, Null, Option, Result, Struct, Text, U256, U8aFixed, Vec, bool, u128, u16, u32, u64, u8 } from '@polkadot/types-codec';
   import type { ITuple } from '@polkadot/types-codec/types';
   import type { AccountId32, Call, H160, H256, MultiAddress, Perbill } from '@polkadot/types/interfaces/runtime';
   import type { Event } from '@polkadot/types/interfaces/system';
@@ -23,7 +23,7 @@
 
   /** @name SpTrieStorageProof (10) */
   export interface SpTrieStorageProof extends Struct {
-    readonly trieNodes: BTreeSet<Bytes>;
+    readonly trieNodes: Vec<Bytes>;
   }
 
   /** @name CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot (13) */
@@ -1605,7 +1605,7 @@
   }
 
   /** @name FrameSupportStorageBoundedBTreeSet (171) */
-  export interface FrameSupportStorageBoundedBTreeSet extends BTreeSet<u32> {}
+  export interface FrameSupportStorageBoundedBTreeSet extends Vec<u32> {}
 
   /** @name UpDataStructsMetaUpdatePermission (177) */
   export interface UpDataStructsMetaUpdatePermission extends Enum {
@@ -1622,14 +1622,10 @@
   }
 
   /** @name UpDataStructsPropertyPermission (181) */
-  export interface UpDataStructsPropertyPermission extends Enum {
-    readonly isNone: boolean;
-    readonly isAdminConst: boolean;
-    readonly isAdmin: boolean;
-    readonly isItemOwnerConst: boolean;
-    readonly isItemOwner: boolean;
-    readonly isItemOwnerOrAdmin: boolean;
-    readonly type: 'None' | 'AdminConst' | 'Admin' | 'ItemOwnerConst' | 'ItemOwner' | 'ItemOwnerOrAdmin';
+  export interface UpDataStructsPropertyPermission extends Struct {
+    readonly mutable: bool;
+    readonly collectionAdmin: bool;
+    readonly tokenOwner: bool;
   }
 
   /** @name UpDataStructsProperty (184) */
@@ -1662,6 +1658,7 @@
   export interface UpDataStructsCreateNftData extends Struct {
     readonly constData: Bytes;
     readonly variableData: Bytes;
+    readonly properties: Vec<UpDataStructsProperty>;
   }
 
   /** @name UpDataStructsCreateFungibleData (191) */
@@ -1693,6 +1690,7 @@
   export interface UpDataStructsCreateNftExData extends Struct {
     readonly constData: Bytes;
     readonly variableData: Bytes;
+    readonly properties: Vec<UpDataStructsProperty>;
     readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;
   }
 
@@ -2534,10 +2532,20 @@
     readonly alive: u32;
   }
 
-  /** @name PhantomTypeUpDataStructs (325) */
-  export interface PhantomTypeUpDataStructs extends Vec<UpDataStructsRpcCollection> {}
+  /** @name PhantomTypeUpDataStructsTokenData (325) */
+  export interface PhantomTypeUpDataStructsTokenData extends Vec<UpDataStructsTokenData> {}
+
+  /** @name UpDataStructsTokenData (326) */
+  export interface UpDataStructsTokenData extends Struct {
+    readonly constData: Bytes;
+    readonly properties: Vec<UpDataStructsProperty>;
+    readonly owner: Option<PalletEvmAccountBasicCrossAccountIdRepr>;
+  }
+
+  /** @name PhantomTypeUpDataStructsRpcCollection (329) */
+  export interface PhantomTypeUpDataStructsRpcCollection extends Vec<UpDataStructsRpcCollection> {}
 
-  /** @name UpDataStructsRpcCollection (326) */
+  /** @name UpDataStructsRpcCollection (330) */
   export interface UpDataStructsRpcCollection extends Struct {
     readonly owner: AccountId32;
     readonly mode: UpDataStructsCollectionMode;
@@ -2555,7 +2563,7 @@
     readonly metaUpdatePermission: UpDataStructsMetaUpdatePermission;
   }
 
-  /** @name PalletCommonError (328) */
+  /** @name PalletCommonError (332) */
   export interface PalletCommonError extends Enum {
     readonly isCollectionNotFound: boolean;
     readonly isMustBeTokenOwner: boolean;
@@ -2590,46 +2598,46 @@
     readonly type: 'CollectionNotFound' | 'MustBeTokenOwner' | 'NoPermission' | 'PublicMintingNotAllowed' | 'AddressNotInAllowlist' | 'CollectionNameLimitExceeded' | 'CollectionDescriptionLimitExceeded' | 'CollectionTokenPrefixLimitExceeded' | 'TotalCollectionsLimitExceeded' | 'TokenVariableDataLimitExceeded' | 'CollectionAdminCountExceeded' | 'CollectionLimitBoundsExceeded' | 'OwnerPermissionsCantBeReverted' | 'TransferNotAllowed' | 'AccountTokenLimitExceeded' | 'CollectionTokenLimitExceeded' | 'MetadataFlagFrozen' | 'TokenNotFound' | 'TokenValueTooLow' | 'ApprovedValueTooLow' | 'CantApproveMoreThanOwned' | 'AddressIsZero' | 'UnsupportedOperation' | 'NotSufficientFounds' | 'NestingIsDisabled' | 'OnlyOwnerAllowedToNest' | 'SourceCollectionIsNotAllowedToNest' | 'CollectionFieldSizeExceeded' | 'NoSpaceForProperty' | 'PropertyLimitReached';
   }
 
-  /** @name PalletFungibleError (330) */
+  /** @name PalletFungibleError (334) */
   export interface PalletFungibleError extends Enum {
     readonly isNotFungibleDataUsedToMintFungibleCollectionToken: boolean;
     readonly isFungibleItemsHaveNoId: boolean;
     readonly isFungibleItemsDontHaveData: boolean;
     readonly isFungibleDisallowsNesting: boolean;
-    readonly isPropertiesNotAllowed: boolean;
-    readonly type: 'NotFungibleDataUsedToMintFungibleCollectionToken' | 'FungibleItemsHaveNoId' | 'FungibleItemsDontHaveData' | 'FungibleDisallowsNesting' | 'PropertiesNotAllowed';
+    readonly isSettingPropertiesNotAllowed: boolean;
+    readonly type: 'NotFungibleDataUsedToMintFungibleCollectionToken' | 'FungibleItemsHaveNoId' | 'FungibleItemsDontHaveData' | 'FungibleDisallowsNesting' | 'SettingPropertiesNotAllowed';
   }
 
-  /** @name PalletRefungibleItemData (331) */
+  /** @name PalletRefungibleItemData (335) */
   export interface PalletRefungibleItemData extends Struct {
     readonly constData: Bytes;
     readonly variableData: Bytes;
   }
 
-  /** @name PalletRefungibleError (335) */
+  /** @name PalletRefungibleError (339) */
   export interface PalletRefungibleError extends Enum {
     readonly isNotRefungibleDataUsedToMintFungibleCollectionToken: boolean;
     readonly isWrongRefungiblePieces: boolean;
     readonly isRefungibleDisallowsNesting: boolean;
-    readonly isPropertiesNotAllowed: boolean;
-    readonly type: 'NotRefungibleDataUsedToMintFungibleCollectionToken' | 'WrongRefungiblePieces' | 'RefungibleDisallowsNesting' | 'PropertiesNotAllowed';
+    readonly isSettingPropertiesNotAllowed: boolean;
+    readonly type: 'NotRefungibleDataUsedToMintFungibleCollectionToken' | 'WrongRefungiblePieces' | 'RefungibleDisallowsNesting' | 'SettingPropertiesNotAllowed';
   }
 
-  /** @name PalletNonfungibleItemData (336) */
+  /** @name PalletNonfungibleItemData (340) */
   export interface PalletNonfungibleItemData extends Struct {
     readonly constData: Bytes;
     readonly variableData: Bytes;
     readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;
   }
 
-  /** @name PalletNonfungibleError (337) */
+  /** @name PalletNonfungibleError (341) */
   export interface PalletNonfungibleError extends Enum {
     readonly isNotNonfungibleDataUsedToMintFungibleCollectionToken: boolean;
     readonly isNonfungibleItemsHaveNoAmount: boolean;
     readonly type: 'NotNonfungibleDataUsedToMintFungibleCollectionToken' | 'NonfungibleItemsHaveNoAmount';
   }
 
-  /** @name PalletStructureError (338) */
+  /** @name PalletStructureError (342) */
   export interface PalletStructureError extends Enum {
     readonly isOuroborosDetected: boolean;
     readonly isDepthLimit: boolean;
@@ -2637,7 +2645,7 @@
     readonly type: 'OuroborosDetected' | 'DepthLimit' | 'TokenNotFound';
   }
 
-  /** @name PalletEvmError (340) */
+  /** @name PalletEvmError (344) */
   export interface PalletEvmError extends Enum {
     readonly isBalanceLow: boolean;
     readonly isFeeOverflow: boolean;
@@ -2648,7 +2656,7 @@
     readonly type: 'BalanceLow' | 'FeeOverflow' | 'PaymentOverflow' | 'WithdrawFailed' | 'GasPriceTooLow' | 'InvalidNonce';
   }
 
-  /** @name FpRpcTransactionStatus (343) */
+  /** @name FpRpcTransactionStatus (347) */
   export interface FpRpcTransactionStatus extends Struct {
     readonly transactionHash: H256;
     readonly transactionIndex: u32;
@@ -2659,10 +2667,10 @@
     readonly logsBloom: EthbloomBloom;
   }
 
-  /** @name EthbloomBloom (346) */
+  /** @name EthbloomBloom (350) */
   export interface EthbloomBloom extends U8aFixed {}
 
-  /** @name EthereumReceiptReceiptV3 (348) */
+  /** @name EthereumReceiptReceiptV3 (352) */
   export interface EthereumReceiptReceiptV3 extends Enum {
     readonly isLegacy: boolean;
     readonly asLegacy: EthereumReceiptEip658ReceiptData;
@@ -2673,7 +2681,7 @@
     readonly type: 'Legacy' | 'Eip2930' | 'Eip1559';
   }
 
-  /** @name EthereumReceiptEip658ReceiptData (349) */
+  /** @name EthereumReceiptEip658ReceiptData (353) */
   export interface EthereumReceiptEip658ReceiptData extends Struct {
     readonly statusCode: u8;
     readonly usedGas: U256;
@@ -2681,14 +2689,14 @@
     readonly logs: Vec<EthereumLog>;
   }
 
-  /** @name EthereumBlock (350) */
+  /** @name EthereumBlock (354) */
   export interface EthereumBlock extends Struct {
     readonly header: EthereumHeader;
     readonly transactions: Vec<EthereumTransactionTransactionV2>;
     readonly ommers: Vec<EthereumHeader>;
   }
 
-  /** @name EthereumHeader (351) */
+  /** @name EthereumHeader (355) */
   export interface EthereumHeader extends Struct {
     readonly parentHash: H256;
     readonly ommersHash: H256;
@@ -2707,24 +2715,24 @@
     readonly nonce: EthereumTypesHashH64;
   }
 
-  /** @name EthereumTypesHashH64 (352) */
+  /** @name EthereumTypesHashH64 (356) */
   export interface EthereumTypesHashH64 extends U8aFixed {}
 
-  /** @name PalletEthereumError (357) */
+  /** @name PalletEthereumError (361) */
   export interface PalletEthereumError extends Enum {
     readonly isInvalidSignature: boolean;
     readonly isPreLogExists: boolean;
     readonly type: 'InvalidSignature' | 'PreLogExists';
   }
 
-  /** @name PalletEvmCoderSubstrateError (358) */
+  /** @name PalletEvmCoderSubstrateError (362) */
   export interface PalletEvmCoderSubstrateError extends Enum {
     readonly isOutOfGas: boolean;
     readonly isOutOfFund: boolean;
     readonly type: 'OutOfGas' | 'OutOfFund';
   }
 
-  /** @name PalletEvmContractHelpersSponsoringModeT (359) */
+  /** @name PalletEvmContractHelpersSponsoringModeT (363) */
   export interface PalletEvmContractHelpersSponsoringModeT extends Enum {
     readonly isDisabled: boolean;
     readonly isAllowlisted: boolean;
@@ -2732,20 +2740,20 @@
     readonly type: 'Disabled' | 'Allowlisted' | 'Generous';
   }
 
-  /** @name PalletEvmContractHelpersError (361) */
+  /** @name PalletEvmContractHelpersError (365) */
   export interface PalletEvmContractHelpersError extends Enum {
     readonly isNoPermission: boolean;
     readonly type: 'NoPermission';
   }
 
-  /** @name PalletEvmMigrationError (362) */
+  /** @name PalletEvmMigrationError (366) */
   export interface PalletEvmMigrationError extends Enum {
     readonly isAccountNotEmpty: boolean;
     readonly isAccountIsNotMigrating: boolean;
     readonly type: 'AccountNotEmpty' | 'AccountIsNotMigrating';
   }
 
-  /** @name SpRuntimeMultiSignature (364) */
+  /** @name SpRuntimeMultiSignature (368) */
   export interface SpRuntimeMultiSignature extends Enum {
     readonly isEd25519: boolean;
     readonly asEd25519: SpCoreEd25519Signature;
@@ -2756,31 +2764,31 @@
     readonly type: 'Ed25519' | 'Sr25519' | 'Ecdsa';
   }
 
-  /** @name SpCoreEd25519Signature (365) */
+  /** @name SpCoreEd25519Signature (369) */
   export interface SpCoreEd25519Signature extends U8aFixed {}
 
-  /** @name SpCoreSr25519Signature (367) */
+  /** @name SpCoreSr25519Signature (371) */
   export interface SpCoreSr25519Signature extends U8aFixed {}
 
-  /** @name SpCoreEcdsaSignature (368) */
+  /** @name SpCoreEcdsaSignature (372) */
   export interface SpCoreEcdsaSignature extends U8aFixed {}
 
-  /** @name FrameSystemExtensionsCheckSpecVersion (371) */
+  /** @name FrameSystemExtensionsCheckSpecVersion (375) */
   export type FrameSystemExtensionsCheckSpecVersion = Null;
 
-  /** @name FrameSystemExtensionsCheckGenesis (372) */
+  /** @name FrameSystemExtensionsCheckGenesis (376) */
   export type FrameSystemExtensionsCheckGenesis = Null;
 
-  /** @name FrameSystemExtensionsCheckNonce (375) */
+  /** @name FrameSystemExtensionsCheckNonce (379) */
   export interface FrameSystemExtensionsCheckNonce extends Compact<u32> {}
 
-  /** @name FrameSystemExtensionsCheckWeight (376) */
+  /** @name FrameSystemExtensionsCheckWeight (380) */
   export type FrameSystemExtensionsCheckWeight = Null;
 
-  /** @name PalletTemplateTransactionPaymentChargeTransactionPayment (377) */
+  /** @name PalletTemplateTransactionPaymentChargeTransactionPayment (381) */
   export interface PalletTemplateTransactionPaymentChargeTransactionPayment extends Compact<u128> {}
 
-  /** @name OpalRuntimeRuntime (378) */
+  /** @name OpalRuntimeRuntime (382) */
   export type OpalRuntimeRuntime = Null;
 
 } // declare module
modifiedtests/src/interfaces/unique/definitions.tsdiffbeforeafterboth
--- a/tests/src/interfaces/unique/definitions.ts
+++ b/tests/src/interfaces/unique/definitions.ts
@@ -54,13 +54,26 @@
     topmostTokenOwner: fun('Get token owner, in case of nested token - find parent recursive', [collectionParam, tokenParam], `Option<${CROSS_ACCOUNT_ID_TYPE}>`),
     constMetadata: fun('Get token constant metadata', [collectionParam, tokenParam], 'Vec<u8>'),
     variableMetadata: fun('Get token variable metadata', [collectionParam, tokenParam], 'Vec<u8>'),
-
     collectionProperties: fun(
       'Get collection properties',
       [collectionParam, propertyKeysParam],
       'Vec<UpDataStructsProperty>',
     ),
-
+    tokenProperties: fun(
+      'Get token properties',
+      [collectionParam, tokenParam, propertyKeysParam],
+      'Vec<UpDataStructsProperty>',
+    ),
+    propertyPermissions: fun(
+      'Get property permissions',
+      [collectionParam, propertyKeysParam],
+      'Vec<UpDataStructsPropertyKeyPermission>',
+    ),
+    tokenData: fun(
+      'Get token data',
+      [collectionParam, tokenParam, propertyKeysParam],
+      'UpDataStructsTokenData',
+    ),
     tokenExists: fun('Check if token exists', [collectionParam, tokenParam], 'bool'),
     collectionById: fun('Get collection by specified id', [collectionParam], 'Option<UpDataStructsRpcCollection>'),
     collectionStats: fun('Get collection stats', [], 'UpDataStructsCollectionStats'),
modifiedtests/src/interfaces/unique/types.tsdiffbeforeafterboth
--- a/tests/src/interfaces/unique/types.ts
+++ b/tests/src/interfaces/unique/types.ts
@@ -1,7 +1,7 @@
 // Auto-generated via `yarn polkadot-types-from-defs`, do not edit
 /* eslint-disable */
 
-import type { BTreeMap, BTreeSet, Bytes, Compact, Enum, Null, Option, Result, Struct, Text, U256, U8aFixed, Vec, bool, u128, u16, u32, u64, u8 } from '@polkadot/types-codec';
+import type { BTreeMap, Bytes, Compact, Enum, Null, Option, Result, Struct, Text, U256, U8aFixed, Vec, bool, u128, u16, u32, u64, u8 } from '@polkadot/types-codec';
 import type { ITuple } from '@polkadot/types-codec/types';
 import type { AccountId32, Call, H160, H256, MultiAddress, Perbill } from '@polkadot/types/interfaces/runtime';
 import type { Event } from '@polkadot/types/interfaces/system';
@@ -447,7 +447,7 @@
 export interface FrameSupportPalletId extends U8aFixed {}
 
 /** @name FrameSupportStorageBoundedBTreeSet */
-export interface FrameSupportStorageBoundedBTreeSet extends BTreeSet<u32> {}
+export interface FrameSupportStorageBoundedBTreeSet extends Vec<u32> {}
 
 /** @name FrameSupportTokensMiscBalanceStatus */
 export interface FrameSupportTokensMiscBalanceStatus extends Enum {
@@ -1086,8 +1086,8 @@
   readonly isFungibleItemsHaveNoId: boolean;
   readonly isFungibleItemsDontHaveData: boolean;
   readonly isFungibleDisallowsNesting: boolean;
-  readonly isPropertiesNotAllowed: boolean;
-  readonly type: 'NotFungibleDataUsedToMintFungibleCollectionToken' | 'FungibleItemsHaveNoId' | 'FungibleItemsDontHaveData' | 'FungibleDisallowsNesting' | 'PropertiesNotAllowed';
+  readonly isSettingPropertiesNotAllowed: boolean;
+  readonly type: 'NotFungibleDataUsedToMintFungibleCollectionToken' | 'FungibleItemsHaveNoId' | 'FungibleItemsDontHaveData' | 'FungibleDisallowsNesting' | 'SettingPropertiesNotAllowed';
 }
 
 /** @name PalletInflationCall */
@@ -1118,8 +1118,8 @@
   readonly isNotRefungibleDataUsedToMintFungibleCollectionToken: boolean;
   readonly isWrongRefungiblePieces: boolean;
   readonly isRefungibleDisallowsNesting: boolean;
-  readonly isPropertiesNotAllowed: boolean;
-  readonly type: 'NotRefungibleDataUsedToMintFungibleCollectionToken' | 'WrongRefungiblePieces' | 'RefungibleDisallowsNesting' | 'PropertiesNotAllowed';
+  readonly isSettingPropertiesNotAllowed: boolean;
+  readonly type: 'NotRefungibleDataUsedToMintFungibleCollectionToken' | 'WrongRefungiblePieces' | 'RefungibleDisallowsNesting' | 'SettingPropertiesNotAllowed';
 }
 
 /** @name PalletRefungibleItemData */
@@ -1632,8 +1632,11 @@
   readonly type: 'Attempted' | 'Sent' | 'UnexpectedResponse' | 'ResponseReady' | 'Notified' | 'NotifyOverweight' | 'NotifyDispatchError' | 'NotifyDecodeFailed' | 'InvalidResponder' | 'InvalidResponderVersion' | 'ResponseTaken' | 'AssetsTrapped' | 'VersionChangeNotified' | 'SupportedVersionChanged' | 'NotifyTargetSendFail' | 'NotifyTargetMigrationFail';
 }
 
-/** @name PhantomTypeUpDataStructs */
-export interface PhantomTypeUpDataStructs extends Vec<Lookup326> {}
+/** @name PhantomTypeUpDataStructsRpcCollection */
+export interface PhantomTypeUpDataStructsRpcCollection extends Vec<Lookup330> {}
+
+/** @name PhantomTypeUpDataStructsTokenData */
+export interface PhantomTypeUpDataStructsTokenData extends Vec<Lookup326> {}
 
 /** @name PolkadotCorePrimitivesInboundDownwardMessage */
 export interface PolkadotCorePrimitivesInboundDownwardMessage extends Struct {
@@ -1782,7 +1785,7 @@
 
 /** @name SpTrieStorageProof */
 export interface SpTrieStorageProof extends Struct {
-  readonly trieNodes: BTreeSet<Bytes>;
+  readonly trieNodes: Vec<Bytes>;
 }
 
 /** @name SpVersionRuntimeVersion */
@@ -1908,12 +1911,14 @@
 export interface UpDataStructsCreateNftData extends Struct {
   readonly constData: Bytes;
   readonly variableData: Bytes;
+  readonly properties: Vec<UpDataStructsProperty>;
 }
 
 /** @name UpDataStructsCreateNftExData */
 export interface UpDataStructsCreateNftExData extends Struct {
   readonly constData: Bytes;
   readonly variableData: Bytes;
+  readonly properties: Vec<UpDataStructsProperty>;
   readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;
 }
 
@@ -1968,14 +1973,10 @@
 }
 
 /** @name UpDataStructsPropertyPermission */
-export interface UpDataStructsPropertyPermission extends Enum {
-  readonly isNone: boolean;
-  readonly isAdminConst: boolean;
-  readonly isAdmin: boolean;
-  readonly isItemOwnerConst: boolean;
-  readonly isItemOwner: boolean;
-  readonly isItemOwnerOrAdmin: boolean;
-  readonly type: 'None' | 'AdminConst' | 'Admin' | 'ItemOwnerConst' | 'ItemOwner' | 'ItemOwnerOrAdmin';
+export interface UpDataStructsPropertyPermission extends Struct {
+  readonly mutable: bool;
+  readonly collectionAdmin: bool;
+  readonly tokenOwner: bool;
 }
 
 /** @name UpDataStructsRpcCollection */
@@ -2021,6 +2022,13 @@
   readonly type: 'Disabled' | 'Unconfirmed' | 'Confirmed';
 }
 
+/** @name UpDataStructsTokenData */
+export interface UpDataStructsTokenData extends Struct {
+  readonly constData: Bytes;
+  readonly properties: Vec<UpDataStructsProperty>;
+  readonly owner: Option<PalletEvmAccountBasicCrossAccountIdRepr>;
+}
+
 /** @name XcmDoubleEncoded */
 export interface XcmDoubleEncoded extends Struct {
   readonly encoded: Bytes;
modifiedtests/src/nesting/migration-check.test.tsdiffbeforeafterboth
--- a/tests/src/nesting/migration-check.test.ts
+++ b/tests/src/nesting/migration-check.test.ts
@@ -5,6 +5,8 @@
 import {IKeyringPair} from '@polkadot/types/types';
 import {strToUTF16} from '../util/util';
 import waitNewBlocks from '../substrate/wait-new-blocks';
+// Used for polkadot-launch signalling
+import find from 'find-process';
 
 // todo skip
 describe('Migration testing for pallet-common', () => {
@@ -54,13 +56,12 @@
     let newVersion = oldVersion!;
     let connectionFailCounter = 0;
 
-    // Cooperate with polkadot-launch if it's running (assuming custom name change), and send a custom signal
-    const find = require('find-process');
-    find('name', 'polkadot-launch', true).then(function (list: [any]) {
-      for (let proc of list) {
+    // Cooperate with polkadot-launch if it's running (assuming custom name change to 'polkadot-launch'), and send a custom signal
+    find('name', 'polkadot-launch', true).then((list) => {
+      for (const proc of list) {
         process.kill(proc.pid, 'SIGUSR1');
       }
-    })
+    });
 
     // And wait for the parachain upgrade
     while (newVersion == oldVersion! && connectionFailCounter < 2) {
addedtests/src/nesting/properties.test.tsdiffbeforeafterboth
--- /dev/null
+++ b/tests/src/nesting/properties.test.ts
@@ -0,0 +1,652 @@
+import {expect} from 'chai';
+import privateKey from '../substrate/privateKey';
+import usingApi, {executeTransaction} from '../substrate/substrate-api';
+import {
+  addCollectionAdminExpectSuccess,
+  createCollectionExpectSuccess,
+  createItemExpectSuccess,
+  getCreateCollectionResult,
+  transferExpectSuccess,
+} from '../util/helpers';
+import {IKeyringPair} from '@polkadot/types/types';
+
+let alice: IKeyringPair;
+let bob: IKeyringPair;
+let charlie: IKeyringPair;
+
+// ---------- COLLECTION PROPERTIES
+
+describe('Integration Test: Collection Properties', () => {
+  before(async () => {
+    alice = privateKey('//Alice');
+    bob = privateKey('//Bob');
+  });
+
+  it('Reads properties from a collection', async () => {
+    await usingApi(async api => {
+      const collection = await createCollectionExpectSuccess();
+      const properties = (await api.query.common.collectionProperties(collection)).toJSON();
+      expect(properties.map).to.be.empty;
+      expect(properties.consumedSpace).to.equal(0);
+    });
+  });
+
+  it('Sets properties for a collection', async () => {
+    await usingApi(async api => {
+      const events = await executeTransaction(api, bob, api.tx.unique.createCollectionEx({mode: 'NFT'}));
+      const {collectionId} = getCreateCollectionResult(events);
+
+      // As owner
+      await expect(executeTransaction(
+        api, 
+        bob, 
+        api.tx.unique.setCollectionProperties(collectionId, [{key: 'electron', value: 'come bond'}]), 
+      )).to.not.be.rejected;
+
+      await addCollectionAdminExpectSuccess(bob, collectionId, alice.address);
+
+      // As administrator
+      await expect(executeTransaction(
+        api, 
+        alice, 
+        api.tx.unique.setCollectionProperties(collectionId, [{key: 'black hole'}]), 
+      )).to.not.be.rejected;
+
+      const properties = (await api.rpc.unique.collectionProperties(collectionId, ['electron', 'black hole'])).toJSON();
+      expect(properties).to.be.deep.equal([
+        {key: `0x${Buffer.from('electron').toString('hex')}`, value: `0x${Buffer.from('come bond').toString('hex')}`},
+        {key: `0x${Buffer.from('black hole').toString('hex')}`, value: `0x${Buffer.from('').toString('hex')}`},
+      ]);
+    });
+  });
+
+  it('Changes properties of a collection', async () => {
+    await usingApi(async api => {
+      const collection = await createCollectionExpectSuccess();
+
+      await expect(executeTransaction(
+        api, 
+        alice, 
+        api.tx.unique.setCollectionProperties(collection, [{key: 'electron', value: 'come bond'}, {key: 'black hole'}]), 
+      )).to.not.be.rejected;
+
+      // Mutate the properties
+      await expect(executeTransaction(
+        api, 
+        alice, 
+        api.tx.unique.setCollectionProperties(collection, [{key: 'electron', value: 'bonded'}, {key: 'black hole', value: 'LIGO'}]), 
+      )).to.not.be.rejected;
+
+      const properties = (await api.rpc.unique.collectionProperties(collection, ['electron', 'black hole'])).toJSON();
+      expect(properties).to.be.deep.equal([
+        {key: `0x${Buffer.from('electron').toString('hex')}`, value: `0x${Buffer.from('bonded').toString('hex')}`},
+        {key: `0x${Buffer.from('black hole').toString('hex')}`, value: `0x${Buffer.from('LIGO').toString('hex')}`},
+      ]);
+    });
+  });
+
+  it('Deletes properties of a collection', async () => {
+    await usingApi(async api => {
+      const collection = await createCollectionExpectSuccess();
+
+      await expect(executeTransaction(
+        api, 
+        alice, 
+        api.tx.unique.setCollectionProperties(collection, [{key: 'electron', value: 'come bond'}, {key: 'black hole', value: 'LIGO'}]), 
+      )).to.not.be.rejected;
+
+      await expect(executeTransaction(
+        api, 
+        alice, 
+        api.tx.unique.deleteCollectionProperties(collection, ['electron']), 
+      )).to.not.be.rejected;
+
+      const properties = (await api.rpc.unique.collectionProperties(collection, ['electron', 'black hole'])).toJSON();
+      expect(properties).to.be.deep.equal([
+        {key: `0x${Buffer.from('black hole').toString('hex')}`, value: `0x${Buffer.from('LIGO').toString('hex')}`},
+      ]);
+    });
+  });
+});
+
+describe('Negative Integration Test: Collection Properties', () => {
+  before(async () => {
+    alice = privateKey('//Alice');
+    bob = privateKey('//Bob');
+  });
+  
+  it('Fails to set properties in a collection if not its onwer/administrator', async () => {
+    await usingApi(async api => {
+      const collection = await createCollectionExpectSuccess();
+
+      await expect(executeTransaction(
+        api, 
+        bob, 
+        api.tx.unique.setCollectionProperties(collection, [{key: 'electron', value: 'come bond'}, {key: 'black hole', value: 'LIGO'}]), 
+      )).to.be.rejectedWith(/common\.NoPermission/);
+  
+      const properties = (await api.query.common.collectionProperties(collection)).toJSON();
+      expect(properties.map).to.be.empty;
+      expect(properties.consumedSpace).to.equal(0);
+    });
+  });
+  
+  it('Fails to set properties that exceed the limits', async () => {
+    await usingApi(async api => {
+      const collection = await createCollectionExpectSuccess();
+      const spaceLimit = (await api.query.common.collectionProperties(collection)).toJSON().spaceLimit as number; 
+
+      // Mute the general tx parsing error, too many bytes to process
+      {
+        console.error = () => {};
+        await expect(executeTransaction(
+          api, 
+          alice, 
+          api.tx.unique.setCollectionProperties(collection, [{key: 'electron', value: 'low high '.repeat(Math.ceil(spaceLimit! / 9))}]), 
+        )).to.be.rejected;
+      }
+
+      let properties = (await api.rpc.unique.collectionProperties(collection, ['electron'])).toJSON();
+      expect(properties).to.be.empty;
+
+      await expect(executeTransaction(
+        api, 
+        alice, 
+        api.tx.unique.setCollectionProperties(collection, [
+          {key: 'electron', value: 'low high '.repeat(Math.ceil(spaceLimit! / 18))}, 
+          {key: 'black hole', value: '0'.repeat(Math.ceil(spaceLimit! / 2))}, 
+        ]), 
+      )).to.be.rejectedWith(/common\.NoSpaceForProperty/);
+
+      properties = (await api.rpc.unique.collectionProperties(collection, ['electron', 'black hole'])).toJSON();
+      expect(properties).to.be.empty;
+    });
+  });
+  
+  it('Fails to set more properties than it is allowed', async () => {
+    await usingApi(async api => {
+      const collection = await createCollectionExpectSuccess();
+
+      const propertiesToBeSet = [];
+      for (let i = 0; i < 65; i++) {
+        propertiesToBeSet.push({
+          key: 'electron ' + i,
+          value: Math.random() > 0.5 ? 'high' : 'low',
+        });
+      }
+
+      await expect(executeTransaction(
+        api, 
+        alice, 
+        api.tx.unique.setCollectionProperties(collection, propertiesToBeSet), 
+      )).to.be.rejectedWith(/common\.PropertyLimitReached/);
+
+      const properties = (await api.query.common.collectionProperties(collection)).toJSON();
+      expect(properties.map).to.be.empty;
+      expect(properties.consumedSpace).to.equal(0);
+    });
+  });
+});
+
+// ---------- ACCESS RIGHTS
+
+describe('Integration Test: Access Rights to Token Properties', () => {
+  before(async () => {
+    alice = privateKey('//Alice');
+    bob = privateKey('//Bob');
+  });
+  
+  it('Reads access rights to properties of a collection', async () => {
+    await usingApi(async api => {
+      const collection = await createCollectionExpectSuccess();
+      const propertyRights = (await api.query.common.collectionPropertyPermissions(collection)).toJSON();
+      expect(propertyRights).to.be.empty;
+    });
+  });
+  
+  it('Sets access rights to properties of a collection', async () => {
+    await usingApi(async api => {
+      const collection = await createCollectionExpectSuccess();
+
+      await expect(executeTransaction(
+        api, 
+        alice, 
+        api.tx.unique.setPropertyPermissions(collection, [{key: 'skullduggery', permission: {mutable: true}}]), 
+      )).to.not.be.rejected;
+
+      await addCollectionAdminExpectSuccess(alice, collection, bob.address);
+
+      await expect(executeTransaction(
+        api, 
+        alice, 
+        api.tx.unique.setPropertyPermissions(collection, [{key: 'mindgame', permission: {collectionAdmin: true, tokenOwner: false}}]), 
+      )).to.not.be.rejected;
+
+      const propertyRights = (await api.rpc.unique.propertyPermissions(collection, ['skullduggery', 'mindgame'])).toJSON();
+      expect(propertyRights).to.be.deep.equal([
+        {key: `0x${Buffer.from('skullduggery').toString('hex')}`, permission: {'mutable': true, 'collectionAdmin': false, 'tokenOwner': false}},
+        {key: `0x${Buffer.from('mindgame').toString('hex')}`, permission: {'mutable': false, 'collectionAdmin': true, 'tokenOwner': false}},
+      ]);
+    });
+  });
+  
+  it('Changes access rights to properties of a collection', async () => {
+    await usingApi(async api => {
+      const collection = await createCollectionExpectSuccess();
+
+      await expect(executeTransaction(
+        api, 
+        alice, 
+        api.tx.unique.setPropertyPermissions(collection, [{key: 'skullduggery', permission: {mutable: true, collectionAdmin: true}}]), 
+      )).to.not.be.rejected;
+
+      await expect(executeTransaction(
+        api, 
+        alice, 
+        api.tx.unique.setPropertyPermissions(collection, [{key: 'skullduggery', permission: {mutable: false, tokenOwner: true}}]), 
+      )).to.not.be.rejected;
+
+      const propertyRights = (await api.rpc.unique.propertyPermissions(collection, ['skullduggery'])).toJSON();
+      expect(propertyRights).to.be.deep.equal([
+        {key: `0x${Buffer.from('skullduggery').toString('hex')}`, permission: {'mutable': false, 'collectionAdmin': false, 'tokenOwner': true}},
+      ]);
+    });
+  });
+});
+
+describe('Negative Integration Test: Access Rights to Token Properties', () => {
+  before(async () => {
+    alice = privateKey('//Alice');
+    bob = privateKey('//Bob');
+  });
+
+  it('Prevents from setting access rights to properties of a collection if not an onwer/admin', async () => {
+    await usingApi(async api => {
+      const collection = await createCollectionExpectSuccess();
+
+      await expect(executeTransaction(
+        api, 
+        bob, 
+        api.tx.unique.setPropertyPermissions(collection, [{key: 'skullduggery', permission: {mutable: true, tokenOwner: true}}]), 
+      )).to.be.rejectedWith(/common\.NoPermission/);
+
+      const propertyRights = (await api.rpc.unique.propertyPermissions(collection, ['skullduggery'])).toJSON();
+      expect(propertyRights).to.be.empty;
+    });
+  });
+
+  it('Prevents from adding too many possible properties', async () => {
+    await usingApi(async api => {
+      const collection = await createCollectionExpectSuccess();
+
+      const constitution = [];
+      for (let i = 0; i < 65; i++) {
+        constitution.push({
+          key: 'property ' + i,
+          permission: Math.random() > 0.5 ? {mutable: true, collectionAdmin: true, tokenOwner: true} : {},
+        });
+      }
+
+      await expect(executeTransaction(
+        api, 
+        alice, 
+        api.tx.unique.setPropertyPermissions(collection, constitution), 
+      )).to.be.rejectedWith(/common\.PropertyLimitReached/);
+
+      const propertyRights = (await api.query.common.collectionPropertyPermissions(collection)).toJSON();
+      expect(propertyRights).to.be.empty;
+    });
+  });
+
+  it('Prevents access rights to be modified if constant', async () => {
+    await usingApi(async api => {
+      const collection = await createCollectionExpectSuccess();
+
+      await expect(executeTransaction(
+        api, 
+        alice, 
+        api.tx.unique.setPropertyPermissions(collection, [{key: 'skullduggery', permission: {mutable: false, tokenOwner: true}}]), 
+      )).to.not.be.rejected;
+
+      await expect(executeTransaction(
+        api, 
+        alice, 
+        api.tx.unique.setPropertyPermissions(collection, [{key: 'skullduggery', permission: {}}]), 
+      )).to.be.rejectedWith(/common\.NoPermission/);
+
+      const propertyRights = (await api.rpc.unique.propertyPermissions(collection, ['skullduggery'])).toJSON();
+      expect(propertyRights).to.deep.equal([
+        {key: `0x${Buffer.from('skullduggery').toString('hex')}`, permission: {'mutable': false, 'collectionAdmin': false, 'tokenOwner': true}},
+      ]);
+    });
+  });
+});
+
+// ---------- TOKEN PROPERTIES
+
+describe('Integration Test: Token Properties', () => {
+  let collection: number;
+  let token: number;
+  let permissions: {permission: any, signers: IKeyringPair[]}[];
+
+  before(async () => {
+    alice = privateKey('//Alice');
+    bob = privateKey('//Bob');
+    charlie = privateKey('//Charlie');
+
+    permissions = [
+      {permission: {mutable: true, collectionAdmin: true}, signers: [alice, bob]},
+      {permission: {mutable: false, collectionAdmin: true}, signers: [alice, bob]},
+      {permission: {mutable: true, tokenOwner: true}, signers: [charlie]},
+      {permission: {mutable: false, tokenOwner: true}, signers: [charlie]},
+      {permission: {mutable: true, collectionAdmin: true, tokenOwner: true}, signers: [alice, bob, charlie]},
+      {permission: {mutable: false, collectionAdmin: true, tokenOwner: true}, signers: [alice, bob, charlie]},
+    ];
+  });
+
+  beforeEach(async () => {
+    collection = await createCollectionExpectSuccess();
+    token = await createItemExpectSuccess(alice, collection, 'NFT');
+    await addCollectionAdminExpectSuccess(alice, collection, bob.address);
+    await transferExpectSuccess(collection, token, alice, charlie);
+  });
+  
+  it('Reads properties of a token', async () => {
+    await usingApi(async api => {
+      const collection = await createCollectionExpectSuccess();
+      const token = await createItemExpectSuccess(alice, collection, 'NFT');
+  
+      const properties = (await api.query.nonfungible.tokenProperties(collection, token)).toJSON();
+      expect(properties.map).to.be.empty;
+      expect(properties.consumedSpace).to.be.equal(0);
+
+      const tokenData = (await api.rpc.unique.tokenData(collection, token, ['anything'])).toJSON().properties;
+      expect(tokenData).to.be.empty;
+    });
+  });
+
+  it('Assigns properties to a token according to permissions', async () => {
+    await usingApi(async api => {
+      const propertyKeys: string[] = [];
+      let i = 0;
+      for (const permission of permissions) {
+        for (const signer of permission.signers) {
+          const key = i + ' ' + signer.address;
+          propertyKeys.push(key);
+
+          await expect(executeTransaction(
+            api, 
+            alice, 
+            api.tx.unique.setPropertyPermissions(collection, [{key: key, permission: permission.permission}]), 
+          ), `on setting permission ${i} by ${signer.address}`).to.not.be.rejected;
+
+          await expect(executeTransaction(
+            api, 
+            signer, 
+            api.tx.unique.setTokenProperties(collection, token, [{key: key, value: 'Serotonin increase'}]), 
+          ), `on adding property ${i} by ${signer.address}`).to.not.be.rejected;
+        }
+
+        i++;
+      }
+
+      const properties = (await api.rpc.unique.tokenProperties(collection, token, propertyKeys)).toJSON() as any[];
+      const tokensData = (await api.rpc.unique.tokenData(collection, token, propertyKeys)).toJSON().properties as any[];
+      for (let i = 0; i < properties.length; i++) {
+        expect(properties[i].value).to.be.equal(`0x${Buffer.from('Serotonin increase').toString('hex')}`);
+        expect(tokensData[i].value).to.be.equal(`0x${Buffer.from('Serotonin increase').toString('hex')}`);
+      }
+    });
+  });
+
+  it('Changes properties of a token according to permissions', async () => {
+    await usingApi(async api => {
+      const propertyKeys: string[] = [];
+      let i = 0;
+      for (const permission of permissions) {
+        if (!permission.permission.mutable) continue;
+        
+        for (const signer of permission.signers) {
+          const key = i + ' ' + signer.address;
+          propertyKeys.push(key);
+
+          await expect(executeTransaction(
+            api, 
+            alice, 
+            api.tx.unique.setPropertyPermissions(collection, [{key: key, permission: permission.permission}]), 
+          ), `on setting permission ${i} by ${signer.address}`).to.not.be.rejected;
+
+          await expect(executeTransaction(
+            api, 
+            signer, 
+            api.tx.unique.setTokenProperties(collection, token, [{key: key, value: 'Serotonin increase'}]), 
+          ), `on adding property ${i} by ${signer.address}`).to.not.be.rejected;
+
+          await expect(executeTransaction(
+            api, 
+            signer, 
+            api.tx.unique.setTokenProperties(collection, token, [{key: key, value: 'Serotonin stable'}]), 
+          ), `on changing property ${i} by ${signer.address}`).to.not.be.rejected;
+        }
+
+        i++;
+      }
+
+      const properties = (await api.rpc.unique.tokenProperties(collection, token, propertyKeys)).toJSON() as any[];
+      const tokensData = (await api.rpc.unique.tokenData(collection, token, propertyKeys)).toJSON().properties as any[];
+      for (let i = 0; i < properties.length; i++) {
+        expect(properties[i].value).to.be.equal(`0x${Buffer.from('Serotonin stable').toString('hex')}`);
+        expect(tokensData[i].value).to.be.equal(`0x${Buffer.from('Serotonin stable').toString('hex')}`);
+      }
+    });
+  });
+
+  it('Deletes properties of a token according to permissions', async () => {
+    await usingApi(async api => {
+      const propertyKeys: string[] = [];
+      let i = 0;
+
+      for (const permission of permissions) {
+        if (!permission.permission.mutable) continue;
+        
+        for (const signer of permission.signers) {
+          const key = i + ' ' + signer.address;
+          propertyKeys.push(key);
+
+          await expect(executeTransaction(
+            api, 
+            alice, 
+            api.tx.unique.setPropertyPermissions(collection, [{key: key, permission: permission.permission}]), 
+          ), `on setting permission ${i} by ${signer.address}`).to.not.be.rejected;
+
+          await expect(executeTransaction(
+            api, 
+            signer, 
+            api.tx.unique.setTokenProperties(collection, token, [{key: key, value: 'Serotonin increase'}]), 
+          ), `on adding property ${i} by ${signer.address}`).to.not.be.rejected;
+
+          await expect(executeTransaction(
+            api, 
+            signer, 
+            api.tx.unique.deleteTokenProperties(collection, token, [key]), 
+          ), `on deleting property ${i} by ${signer.address}`).to.not.be.rejected;
+        }
+        
+        i++;
+      }
+
+      const properties = (await api.rpc.unique.tokenProperties(collection, token, propertyKeys)).toJSON() as any[];
+      expect(properties).to.be.empty;
+      const tokensData = (await api.rpc.unique.tokenData(collection, token, propertyKeys)).toJSON().properties as any[];
+      expect(tokensData).to.be.empty;
+      expect((await api.query.nonfungible.tokenProperties(collection, token)).toJSON().consumedSpace).to.be.equal(0);
+    });
+  });
+});
+
+describe('Negative Integration Test: Token Properties', () => {
+  let collection: number;
+  let token: number;
+  let originalSpace: number;
+  let constitution: {permission: any, signers: IKeyringPair[], sinner: IKeyringPair}[];
+
+  before(async () => {
+    alice = privateKey('//Alice');
+    bob = privateKey('//Bob');
+    charlie = privateKey('//Charlie');
+    const dave = privateKey('//Dave');
+
+    constitution = [
+      {permission: {mutable: true, collectionAdmin: true}, signers: [alice, bob], sinner: charlie},
+      {permission: {mutable: false, collectionAdmin: true}, signers: [alice, bob], sinner: charlie},
+      {permission: {mutable: true, tokenOwner: true}, signers: [charlie], sinner: alice},
+      {permission: {mutable: false, tokenOwner: true}, signers: [charlie], sinner: alice},
+      {permission: {mutable: true, collectionAdmin: true, tokenOwner: true}, signers: [alice, bob, charlie], sinner: dave},
+      {permission: {mutable: false, collectionAdmin: true, tokenOwner: true}, signers: [alice, bob, charlie], sinner: dave},
+    ];
+  });
+
+  beforeEach(async () => {
+    collection = await createCollectionExpectSuccess();
+    token = await createItemExpectSuccess(alice, collection, 'NFT');
+    await addCollectionAdminExpectSuccess(alice, collection, bob.address);
+    await transferExpectSuccess(collection, token, alice, charlie);
+        
+    await usingApi(async api => {
+      let i = 0;
+      for (const passage of constitution) {
+        const signer = passage.signers[0];
+        
+        await expect(executeTransaction(
+          api, 
+          alice, 
+          api.tx.unique.setPropertyPermissions(collection, [{key: i, permission: passage.permission}]), 
+        ), `on setting permission ${i} by ${signer.address}`).to.not.be.rejected;
+
+        await expect(executeTransaction(
+          api, 
+          signer, 
+          api.tx.unique.setTokenProperties(collection, token, [{key: i, value: 'Serotonin increase'}]), 
+        ), `on adding property ${i} by ${signer.address}`).to.not.be.rejected;
+
+        i++;
+      }
+
+      originalSpace = (await api.query.nonfungible.tokenProperties(collection, token)).toJSON().consumedSpace as number;
+    });
+  });
+
+  it('Forbids changing/deleting properties of a token if the user is outside of permissions', async () => {
+    await usingApi(async api => {
+      let i = -1;
+      for (const forbiddance of constitution) {
+        i++;
+        if (!forbiddance.permission.mutable) continue;
+
+        await expect(executeTransaction(
+          api, 
+          forbiddance.sinner, 
+          api.tx.unique.setTokenProperties(collection, token, [{key: i, value: 'Serotonin down'}]), 
+        ), `on failing to change property ${i} by ${forbiddance.sinner.address}`).to.be.rejectedWith(/common\.NoPermission/);
+
+        await expect(executeTransaction(
+          api, 
+          forbiddance.sinner, 
+          api.tx.unique.deleteTokenProperties(collection, token, [forbiddance.permission]), 
+        ), `on failing to delete property ${i} by ${forbiddance.sinner.address}`).to.be.rejectedWith(/common\.NoPermission/);
+      }
+
+      // todo RPC?
+      const properties = (await api.query.nonfungible.tokenProperties(collection, token)).toJSON();
+      expect(properties.consumedSpace).to.be.equal(originalSpace);
+    });
+  });
+
+  it('Forbids changing/deleting properties of a token if the property is permanent (constant)', async () => {
+    await usingApi(async api => {
+      let i = -1;
+      for (const permission of constitution) {
+        i++;
+        if (permission.permission.mutable) continue;
+
+        await expect(executeTransaction(
+          api, 
+          permission.signers[0], 
+          api.tx.unique.setTokenProperties(collection, token, [{key: i, value: 'Serotonin down'}]), 
+        ), `on failing to change property ${i} by ${permission.signers[0].address}`).to.be.rejectedWith(/common\.NoPermission/);
+
+        await expect(executeTransaction(
+          api, 
+          permission.signers[0], 
+          api.tx.unique.deleteTokenProperties(collection, token, [i.toString()]), 
+        ), `on failing to delete property ${i} by ${permission.signers[0].address}`).to.be.rejectedWith(/common\.NoPermission/);
+      }
+
+      // todo RPC?
+      const properties = (await api.query.nonfungible.tokenProperties(collection, token)).toJSON();
+      expect(properties.consumedSpace).to.be.equal(originalSpace);
+    });
+  });
+
+  it('Forbids adding properties to a token if the property is not declared / forbidden with the \'None\' permission', async () => {
+    await usingApi(async api => {
+      await expect(executeTransaction(
+        api, 
+        alice, 
+        api.tx.unique.setTokenProperties(collection, token, [{key: 'non-existent', value: 'I exist!'}]), 
+      ), 'on failing to add a previously non-existent property').to.be.rejectedWith(/common\.NoPermission/);
+        
+      await expect(executeTransaction(
+        api, 
+        alice, 
+        api.tx.unique.setPropertyPermissions(collection, [{key: 'now-existent', permission: {}}]), 
+      ), 'on setting a new non-permitted property').to.not.be.rejected;
+
+      await expect(executeTransaction(
+        api, 
+        alice, 
+        api.tx.unique.setTokenProperties(collection, token, [{key: 'now-existent', value: 'I exist!'}]), 
+      ), 'on failing to add a property forbidden by the \'None\' permission').to.be.rejectedWith(/common\.NoPermission/);
+
+      expect((await api.rpc.unique.tokenProperties(collection, token, ['non-existent', 'now-existent'])).toJSON()).to.be.empty;
+      const properties = (await api.query.nonfungible.tokenProperties(collection, token)).toJSON();
+      expect(properties.consumedSpace).to.be.equal(originalSpace);
+    });
+  });
+
+  it('Forbids adding too many properties to a token', async () => {
+    await usingApi(async api => {
+      await expect(executeTransaction(
+        api, 
+        alice, 
+        api.tx.unique.setPropertyPermissions(collection, [
+          {key: 'a holy book', permission: {collectionAdmin: true, tokenOwner: true}}, 
+          {key: 'young years', permission: {collectionAdmin: true, tokenOwner: true}},
+        ]), 
+      ), 'on setting a new non-permitted property').to.not.be.rejected;
+
+      // Mute the general tx parsing error
+      {
+        console.error = () => {};
+        await expect(executeTransaction(
+          api, 
+          alice, 
+          api.tx.unique.setCollectionProperties(collection, [{key: 'a holy book', value: 'word '.repeat(6554)}]), 
+        )).to.be.rejected;
+      }
+
+      await expect(executeTransaction(
+        api, 
+        alice, 
+        api.tx.unique.setTokenProperties(collection, token, [
+          {key: 'a holy book', value: 'word '.repeat(3277)}, 
+          {key: 'young years', value: 'neverending'.repeat(1490)},
+        ]), 
+      )).to.be.rejectedWith(/common\.NoSpaceForProperty/);
+
+      expect((await api.rpc.unique.tokenProperties(collection, token, ['a holy book', 'young years'])).toJSON()).to.be.empty;
+      const propertiesMap = (await api.query.nonfungible.tokenProperties(collection, token)).toJSON();
+      expect(propertiesMap.consumedSpace).to.be.equal(originalSpace);
+    });
+  });
+});
\ No newline at end of file
modifiedtests/src/nesting/unnest.test.tsdiffbeforeafterboth
--- a/tests/src/nesting/unnest.test.ts
+++ b/tests/src/nesting/unnest.test.ts
@@ -10,7 +10,6 @@
   getTopmostTokenOwner, 
   normalizeAccountId, 
   setCollectionLimitsExpectSuccess, 
-  transferExpectFailure, 
   transferExpectSuccess, 
 } from '../util/helpers';
 import {IKeyringPair} from '@polkadot/types/types';