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
before · tests/src/interfaces/augment-types.ts
1// Auto-generated via `yarn polkadot-types-from-defs`, do not edit2/* eslint-disable */34import 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';5import type { Data, StorageKey } from '@polkadot/types';6import 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';7import type { AssetApproval, AssetApprovalKey, AssetBalance, AssetDestroyWitness, AssetDetails, AssetMetadata, TAssetBalance, TAssetDepositBalance } from '@polkadot/types/interfaces/assets';8import type { BlockAttestations, IncludedBlocks, MoreAttestations } from '@polkadot/types/interfaces/attestations';9import type { RawAuraPreDigest } from '@polkadot/types/interfaces/aura';10import type { ExtrinsicOrHash, ExtrinsicStatus } from '@polkadot/types/interfaces/author';11import type { UncleEntryItem } from '@polkadot/types/interfaces/authorship';12import type { AllowedSlots, BabeAuthorityWeight, BabeBlockWeight, BabeEpochConfiguration, BabeEquivocationProof, BabeWeight, EpochAuthorship, MaybeRandomness, MaybeVrf, NextConfigDescriptor, NextConfigDescriptorV1, Randomness, RawBabePreDigest, RawBabePreDigestCompat, RawBabePreDigestPrimary, RawBabePreDigestPrimaryTo159, RawBabePreDigestSecondaryPlain, RawBabePreDigestSecondaryTo159, RawBabePreDigestSecondaryVRF, RawBabePreDigestTo159, SlotNumber, VrfData, VrfOutput, VrfProof } from '@polkadot/types/interfaces/babe';13import type { AccountData, BalanceLock, BalanceLockTo212, BalanceStatus, Reasons, ReserveData, ReserveIdentifier, VestingSchedule, WithdrawReasons } from '@polkadot/types/interfaces/balances';14import type { BeefyCommitment, BeefyId, BeefyNextAuthoritySet, BeefyPayload, BeefySignedCommitment, MmrRootHash, ValidatorSetId } from '@polkadot/types/interfaces/beefy';15import type { BridgeMessageId, BridgedBlockHash, BridgedBlockNumber, BridgedHeader, CallOrigin, ChainId, DeliveredMessages, DispatchFeePayment, InboundLaneData, InboundRelayer, InitializationData, LaneId, MessageData, MessageKey, MessageNonce, MessagesDeliveryProofOf, MessagesProofOf, OperatingMode, OutboundLaneData, OutboundMessageFee, OutboundPayload, Parameter, RelayerId, UnrewardedRelayer, UnrewardedRelayersState } from '@polkadot/types/interfaces/bridges';16import type { BlockHash } from '@polkadot/types/interfaces/chain';17import type { PrefixedStorageKey } from '@polkadot/types/interfaces/childstate';18import type { StatementKind } from '@polkadot/types/interfaces/claims';19import type { CollectiveOrigin, MemberCount, ProposalIndex, Votes, VotesTo230 } from '@polkadot/types/interfaces/collective';20import type { AuthorityId, RawVRFOutput } from '@polkadot/types/interfaces/consensus';21import type { AliveContractInfo, CodeHash, CodeSource, CodeUploadRequest, CodeUploadResult, CodeUploadResultValue, ContractCallFlags, ContractCallRequest, ContractExecResult, ContractExecResultErr, ContractExecResultErrModule, ContractExecResultOk, ContractExecResultResult, ContractExecResultSuccessTo255, ContractExecResultSuccessTo260, ContractExecResultTo255, ContractExecResultTo260, ContractExecResultTo267, ContractInfo, ContractInstantiateResult, ContractInstantiateResultTo267, ContractInstantiateResultTo299, ContractReturnFlags, ContractStorageKey, DeletedContract, ExecReturnValue, Gas, HostFnWeights, HostFnWeightsTo264, InstantiateRequest, InstantiateRequestV1, InstantiateRequestV2, InstantiateReturnValue, InstantiateReturnValueOk, InstantiateReturnValueTo267, InstructionWeights, Limits, LimitsTo264, PrefabWasmModule, RentProjection, Schedule, ScheduleTo212, ScheduleTo258, ScheduleTo264, SeedOf, StorageDeposit, TombstoneContractInfo, TrieId } from '@polkadot/types/interfaces/contracts';22import type { ContractConstructorSpecLatest, ContractConstructorSpecV0, ContractConstructorSpecV1, ContractConstructorSpecV2, ContractConstructorSpecV3, ContractContractSpecV0, ContractContractSpecV1, ContractContractSpecV2, ContractContractSpecV3, ContractCryptoHasher, ContractDiscriminant, ContractDisplayName, ContractEventParamSpecLatest, ContractEventParamSpecV0, ContractEventParamSpecV2, ContractEventSpecLatest, ContractEventSpecV0, ContractEventSpecV1, ContractEventSpecV2, ContractLayoutArray, ContractLayoutCell, ContractLayoutEnum, ContractLayoutHash, ContractLayoutHashingStrategy, ContractLayoutKey, ContractLayoutStruct, ContractLayoutStructField, ContractMessageParamSpecLatest, ContractMessageParamSpecV0, ContractMessageParamSpecV2, ContractMessageSpecLatest, ContractMessageSpecV0, ContractMessageSpecV1, ContractMessageSpecV2, ContractMetadata, ContractMetadataLatest, ContractMetadataV0, ContractMetadataV1, ContractMetadataV2, ContractMetadataV3, ContractProject, ContractProjectContract, ContractProjectInfo, ContractProjectSource, ContractProjectV0, ContractSelector, ContractStorageLayout, ContractTypeSpec } from '@polkadot/types/interfaces/contractsAbi';23import type { FundIndex, FundInfo, LastContribution, TrieIndex } from '@polkadot/types/interfaces/crowdloan';24import type { ConfigData, MessageId, OverweightIndex, PageCounter, PageIndexData } from '@polkadot/types/interfaces/cumulus';25import 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';26import type { BlockStats } from '@polkadot/types/interfaces/dev';27import type { ApprovalFlag, DefunctVoter, Renouncing, SetIndex, Vote, VoteIndex, VoteThreshold, VoterInfo } from '@polkadot/types/interfaces/elections';28import type { CreatedBlock, ImportedAux } from '@polkadot/types/interfaces/engine';29import 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';30import type { EvmAccount, EvmLog, EvmVicinity, ExitError, ExitFatal, ExitReason, ExitRevert, ExitSucceed } from '@polkadot/types/interfaces/evm';31import type { AnySignature, EcdsaSignature, Ed25519Signature, Era, Extrinsic, ExtrinsicEra, ExtrinsicPayload, ExtrinsicPayloadUnknown, ExtrinsicPayloadV4, ExtrinsicSignature, ExtrinsicSignatureV4, ExtrinsicUnknown, ExtrinsicV4, ImmortalEra, MortalEra, MultiSignature, Signature, SignerPayload, Sr25519Signature } from '@polkadot/types/interfaces/extrinsics';32import type { AssetOptions, Owner, PermissionLatest, PermissionVersions, PermissionsV1 } from '@polkadot/types/interfaces/genericAsset';33import type { ActiveGilt, ActiveGiltsTotal, ActiveIndex, GiltBid } from '@polkadot/types/interfaces/gilt';34import type { AuthorityIndex, AuthorityList, AuthoritySet, AuthoritySetChange, AuthoritySetChanges, AuthorityWeight, DelayKind, DelayKindBest, EncodedFinalityProofs, ForkTreePendingChange, ForkTreePendingChangeNode, GrandpaCommit, GrandpaEquivocation, GrandpaEquivocationProof, GrandpaEquivocationValue, GrandpaJustification, GrandpaPrecommit, GrandpaPrevote, GrandpaSignedPrecommit, JustificationNotification, KeyOwnerProof, NextAuthority, PendingChange, PendingPause, PendingResume, Precommits, Prevotes, ReportedRoundStates, RoundState, SetId, StoredPendingChange, StoredState } from '@polkadot/types/interfaces/grandpa';35import type { IdentityFields, IdentityInfo, IdentityInfoAdditional, IdentityInfoTo198, IdentityJudgement, RegistrarIndex, RegistrarInfo, Registration, RegistrationJudgement, RegistrationTo198 } from '@polkadot/types/interfaces/identity';36import type { AuthIndex, AuthoritySignature, Heartbeat, HeartbeatTo244, OpaqueMultiaddr, OpaqueNetworkState, OpaquePeerId } from '@polkadot/types/interfaces/imOnline';37import type { CallIndex, LotteryConfig } from '@polkadot/types/interfaces/lottery';38import type { ErrorMetadataLatest, ErrorMetadataV10, ErrorMetadataV11, ErrorMetadataV12, ErrorMetadataV13, ErrorMetadataV14, ErrorMetadataV9, EventMetadataLatest, EventMetadataV10, EventMetadataV11, EventMetadataV12, EventMetadataV13, EventMetadataV14, EventMetadataV9, ExtrinsicMetadataLatest, ExtrinsicMetadataV11, ExtrinsicMetadataV12, ExtrinsicMetadataV13, ExtrinsicMetadataV14, FunctionArgumentMetadataLatest, FunctionArgumentMetadataV10, FunctionArgumentMetadataV11, FunctionArgumentMetadataV12, FunctionArgumentMetadataV13, FunctionArgumentMetadataV14, FunctionArgumentMetadataV9, FunctionMetadataLatest, FunctionMetadataV10, FunctionMetadataV11, FunctionMetadataV12, FunctionMetadataV13, FunctionMetadataV14, FunctionMetadataV9, MetadataAll, MetadataLatest, MetadataV10, MetadataV11, MetadataV12, MetadataV13, MetadataV14, MetadataV9, ModuleConstantMetadataV10, ModuleConstantMetadataV11, ModuleConstantMetadataV12, ModuleConstantMetadataV13, ModuleConstantMetadataV9, ModuleMetadataV10, ModuleMetadataV11, ModuleMetadataV12, ModuleMetadataV13, ModuleMetadataV9, PalletCallMetadataLatest, PalletCallMetadataV14, PalletConstantMetadataLatest, PalletConstantMetadataV14, PalletErrorMetadataLatest, PalletErrorMetadataV14, PalletEventMetadataLatest, PalletEventMetadataV14, PalletMetadataLatest, PalletMetadataV14, PalletStorageMetadataLatest, PalletStorageMetadataV14, PortableType, PortableTypeV14, SignedExtensionMetadataLatest, SignedExtensionMetadataV14, StorageEntryMetadataLatest, StorageEntryMetadataV10, StorageEntryMetadataV11, StorageEntryMetadataV12, StorageEntryMetadataV13, StorageEntryMetadataV14, StorageEntryMetadataV9, StorageEntryModifierLatest, StorageEntryModifierV10, StorageEntryModifierV11, StorageEntryModifierV12, StorageEntryModifierV13, StorageEntryModifierV14, StorageEntryModifierV9, StorageEntryTypeLatest, StorageEntryTypeV10, StorageEntryTypeV11, StorageEntryTypeV12, StorageEntryTypeV13, StorageEntryTypeV14, StorageEntryTypeV9, StorageHasher, StorageHasherV10, StorageHasherV11, StorageHasherV12, StorageHasherV13, StorageHasherV14, StorageHasherV9, StorageMetadataV10, StorageMetadataV11, StorageMetadataV12, StorageMetadataV13, StorageMetadataV9 } from '@polkadot/types/interfaces/metadata';39import type { MmrLeafProof } from '@polkadot/types/interfaces/mmr';40import type { StorageKind } from '@polkadot/types/interfaces/offchain';41import type { DeferredOffenceOf, Kind, OffenceDetails, Offender, OpaqueTimeSlot, ReportIdOf, Reporter } from '@polkadot/types/interfaces/offences';42import type { AbridgedCandidateReceipt, AbridgedHostConfiguration, AbridgedHrmpChannel, AssignmentId, AssignmentKind, AttestedCandidate, AuctionIndex, AuthorityDiscoveryId, AvailabilityBitfield, AvailabilityBitfieldRecord, BackedCandidate, Bidder, BufferedSessionChange, CandidateCommitments, CandidateDescriptor, CandidateHash, CandidateInfo, CandidatePendingAvailability, CandidateReceipt, CollatorId, CollatorSignature, CommittedCandidateReceipt, CoreAssignment, CoreIndex, CoreOccupied, DisputeLocation, DisputeResult, DisputeState, DisputeStatement, DisputeStatementSet, DoubleVoteReport, DownwardMessage, ExplicitDisputeStatement, GlobalValidationData, GlobalValidationSchedule, GroupIndex, HeadData, HostConfiguration, HrmpChannel, HrmpChannelId, HrmpOpenChannelRequest, InboundDownwardMessage, InboundHrmpMessage, InboundHrmpMessages, IncomingParachain, IncomingParachainDeploy, IncomingParachainFixed, InvalidDisputeStatementKind, LeasePeriod, LeasePeriodOf, LocalValidationData, MessageIngestionType, MessageQueueChain, MessagingStateSnapshot, MessagingStateSnapshotEgressEntry, MultiDisputeStatementSet, NewBidder, OutboundHrmpMessage, ParaGenesisArgs, ParaId, ParaInfo, ParaLifecycle, ParaPastCodeMeta, ParaScheduling, ParaValidatorIndex, ParachainDispatchOrigin, ParachainInherentData, ParachainProposal, ParachainsInherentData, ParathreadClaim, ParathreadClaimQueue, ParathreadEntry, PersistedValidationData, QueuedParathread, RegisteredParachainInfo, RelayBlockNumber, RelayChainBlockNumber, RelayChainHash, RelayHash, Remark, ReplacementTimes, Retriable, Scheduling, ServiceQuality, SessionInfo, SessionInfoValidatorGroup, SignedAvailabilityBitfield, SignedAvailabilityBitfields, SigningContext, SlotRange, SlotRange10, Statement, SubId, SystemInherentData, TransientValidationData, UpgradeGoAhead, UpgradeRestriction, UpwardMessage, ValidDisputeStatementKind, ValidationCode, ValidationCodeHash, ValidationData, ValidationDataType, ValidationFunctionParams, ValidatorSignature, ValidityAttestation, VecInboundHrmpMessage, WinnersData, WinnersData10, WinnersDataTuple, WinnersDataTuple10, WinningData, WinningData10, WinningDataEntry } from '@polkadot/types/interfaces/parachains';43import type { FeeDetails, InclusionFee, RuntimeDispatchInfo } from '@polkadot/types/interfaces/payment';44import type { Approvals } from '@polkadot/types/interfaces/poll';45import type { ProxyAnnouncement, ProxyDefinition, ProxyType } from '@polkadot/types/interfaces/proxy';46import type { AccountStatus, AccountValidity } from '@polkadot/types/interfaces/purchase';47import type { ActiveRecovery, RecoveryConfig } from '@polkadot/types/interfaces/recovery';48import type { RpcMethods } from '@polkadot/types/interfaces/rpc';49import type { AccountId, AccountId20, AccountId32, AccountIdOf, AccountIndex, Address, AssetId, Balance, BalanceOf, Block, BlockNumber, BlockNumberFor, BlockNumberOf, Call, CallHash, CallHashOf, ChangesTrieConfiguration, ChangesTrieSignal, CodecHash, Consensus, ConsensusEngineId, CrateVersion, Digest, DigestItem, EncodedJustification, ExtrinsicsWeight, Fixed128, Fixed64, FixedI128, FixedI64, FixedU128, FixedU64, H1024, H128, H160, H2048, H256, H32, H512, H64, Hash, Header, HeaderPartial, I32F32, Index, IndicesLookupSource, Justification, Justifications, KeyTypeId, KeyValue, LockIdentifier, LookupSource, LookupTarget, ModuleId, Moment, MultiAddress, MultiSigner, OpaqueCall, Origin, OriginCaller, PalletId, PalletVersion, PalletsOrigin, Pays, PerU16, Perbill, Percent, Permill, Perquintill, Phantom, PhantomData, PreRuntime, Releases, RuntimeDbWeight, Seal, SealV0, SignedBlock, SignedBlockWithJustification, SignedBlockWithJustifications, Slot, StorageData, StorageProof, TransactionInfo, TransactionPriority, TransactionStorageProof, U32F32, ValidatorId, ValidatorIdOf, Weight, WeightMultiplier } from '@polkadot/types/interfaces/runtime';50import type { Si0Field, Si0LookupTypeId, Si0Path, Si0Type, Si0TypeDef, Si0TypeDefArray, Si0TypeDefBitSequence, Si0TypeDefCompact, Si0TypeDefComposite, Si0TypeDefPhantom, Si0TypeDefPrimitive, Si0TypeDefSequence, Si0TypeDefTuple, Si0TypeDefVariant, Si0TypeParameter, Si0Variant, Si1Field, Si1LookupTypeId, Si1Path, Si1Type, Si1TypeDef, Si1TypeDefArray, Si1TypeDefBitSequence, Si1TypeDefCompact, Si1TypeDefComposite, Si1TypeDefPrimitive, Si1TypeDefSequence, Si1TypeDefTuple, Si1TypeDefVariant, Si1TypeParameter, Si1Variant, SiField, SiLookupTypeId, SiPath, SiType, SiTypeDef, SiTypeDefArray, SiTypeDefBitSequence, SiTypeDefCompact, SiTypeDefComposite, SiTypeDefPrimitive, SiTypeDefSequence, SiTypeDefTuple, SiTypeDefVariant, SiTypeParameter, SiVariant } from '@polkadot/types/interfaces/scaleInfo';51import type { Period, Priority, SchedulePeriod, SchedulePriority, Scheduled, ScheduledTo254, TaskAddress } from '@polkadot/types/interfaces/scheduler';52import 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';53import type { Bid, BidKind, SocietyJudgement, SocietyVote, StrikeCount, VouchingStatus } from '@polkadot/types/interfaces/society';54import 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';55import type { ApiId, BlockTrace, BlockTraceEvent, BlockTraceEventData, BlockTraceSpan, KeyValueOption, MigrationStatusResult, ReadProof, RuntimeVersion, RuntimeVersionApi, RuntimeVersionPartial, SpecVersion, StorageChangeSet, TraceBlockResponse, TraceError } from '@polkadot/types/interfaces/state';56import type { WeightToFeeCoefficient } from '@polkadot/types/interfaces/support';57import 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';58import type { Bounty, BountyIndex, BountyStatus, BountyStatusActive, BountyStatusCuratorProposed, BountyStatusPendingPayout, OpenTip, OpenTipFinderTo225, OpenTipTip, OpenTipTo225, TreasuryProposal } from '@polkadot/types/interfaces/treasury';59import type { Multiplier } from '@polkadot/types/interfaces/txpayment';60import type { ClassDetails, ClassId, ClassMetadata, DepositBalance, DepositBalanceOf, DestroyWitness, InstanceDetails, InstanceId, InstanceMetadata } from '@polkadot/types/interfaces/uniques';61import type { Multisig, Timepoint } from '@polkadot/types/interfaces/utility';62import type { VestingInfo } from '@polkadot/types/interfaces/vesting';63import type { AssetInstance, AssetInstanceV0, AssetInstanceV1, AssetInstanceV2, BodyId, BodyPart, DoubleEncodedCall, Fungibility, FungibilityV0, FungibilityV1, FungibilityV2, InboundStatus, InstructionV2, InteriorMultiLocation, Junction, JunctionV0, JunctionV1, JunctionV2, Junctions, JunctionsV1, JunctionsV2, MultiAsset, MultiAssetFilter, MultiAssetFilterV1, MultiAssetFilterV2, MultiAssetV0, MultiAssetV1, MultiAssetV2, MultiAssets, MultiAssetsV1, MultiAssetsV2, MultiLocation, MultiLocationV0, MultiLocationV1, MultiLocationV2, NetworkId, OriginKindV0, OriginKindV1, OriginKindV2, OutboundStatus, Outcome, QueryId, QueryStatus, QueueConfigData, Response, ResponseV0, ResponseV1, ResponseV2, ResponseV2Error, ResponseV2Result, VersionMigrationStage, VersionedMultiAsset, VersionedMultiAssets, VersionedMultiLocation, VersionedResponse, VersionedXcm, WeightLimitV2, WildFungibility, WildFungibilityV0, WildFungibilityV1, WildFungibilityV2, WildMultiAsset, WildMultiAssetV1, WildMultiAssetV2, Xcm, XcmAssetId, XcmError, XcmErrorV0, XcmErrorV1, XcmErrorV2, XcmOrder, XcmOrderV0, XcmOrderV1, XcmOrderV2, XcmOrigin, XcmOriginKind, XcmV0, XcmV1, XcmV2, XcmVersion, XcmpMessageFormat } from '@polkadot/types/interfaces/xcm';6465declare module '@polkadot/types/types/registry' {66  export interface InterfaceTypes {67    AbridgedCandidateReceipt: AbridgedCandidateReceipt;68    AbridgedHostConfiguration: AbridgedHostConfiguration;69    AbridgedHrmpChannel: AbridgedHrmpChannel;70    AccountData: AccountData;71    AccountId: AccountId;72    AccountId20: AccountId20;73    AccountId32: AccountId32;74    AccountIdOf: AccountIdOf;75    AccountIndex: AccountIndex;76    AccountInfo: AccountInfo;77    AccountInfoWithDualRefCount: AccountInfoWithDualRefCount;78    AccountInfoWithProviders: AccountInfoWithProviders;79    AccountInfoWithRefCount: AccountInfoWithRefCount;80    AccountInfoWithRefCountU8: AccountInfoWithRefCountU8;81    AccountInfoWithTripleRefCount: AccountInfoWithTripleRefCount;82    AccountStatus: AccountStatus;83    AccountValidity: AccountValidity;84    AccountVote: AccountVote;85    AccountVoteSplit: AccountVoteSplit;86    AccountVoteStandard: AccountVoteStandard;87    ActiveEraInfo: ActiveEraInfo;88    ActiveGilt: ActiveGilt;89    ActiveGiltsTotal: ActiveGiltsTotal;90    ActiveIndex: ActiveIndex;91    ActiveRecovery: ActiveRecovery;92    Address: Address;93    AliveContractInfo: AliveContractInfo;94    AllowedSlots: AllowedSlots;95    AnySignature: AnySignature;96    ApiId: ApiId;97    ApplyExtrinsicResult: ApplyExtrinsicResult;98    ApprovalFlag: ApprovalFlag;99    Approvals: Approvals;100    ArithmeticError: ArithmeticError;101    AssetApproval: AssetApproval;102    AssetApprovalKey: AssetApprovalKey;103    AssetBalance: AssetBalance;104    AssetDestroyWitness: AssetDestroyWitness;105    AssetDetails: AssetDetails;106    AssetId: AssetId;107    AssetInstance: AssetInstance;108    AssetInstanceV0: AssetInstanceV0;109    AssetInstanceV1: AssetInstanceV1;110    AssetInstanceV2: AssetInstanceV2;111    AssetMetadata: AssetMetadata;112    AssetOptions: AssetOptions;113    AssignmentId: AssignmentId;114    AssignmentKind: AssignmentKind;115    AttestedCandidate: AttestedCandidate;116    AuctionIndex: AuctionIndex;117    AuthIndex: AuthIndex;118    AuthorityDiscoveryId: AuthorityDiscoveryId;119    AuthorityId: AuthorityId;120    AuthorityIndex: AuthorityIndex;121    AuthorityList: AuthorityList;122    AuthoritySet: AuthoritySet;123    AuthoritySetChange: AuthoritySetChange;124    AuthoritySetChanges: AuthoritySetChanges;125    AuthoritySignature: AuthoritySignature;126    AuthorityWeight: AuthorityWeight;127    AvailabilityBitfield: AvailabilityBitfield;128    AvailabilityBitfieldRecord: AvailabilityBitfieldRecord;129    BabeAuthorityWeight: BabeAuthorityWeight;130    BabeBlockWeight: BabeBlockWeight;131    BabeEpochConfiguration: BabeEpochConfiguration;132    BabeEquivocationProof: BabeEquivocationProof;133    BabeWeight: BabeWeight;134    BackedCandidate: BackedCandidate;135    Balance: Balance;136    BalanceLock: BalanceLock;137    BalanceLockTo212: BalanceLockTo212;138    BalanceOf: BalanceOf;139    BalanceStatus: BalanceStatus;140    BeefyCommitment: BeefyCommitment;141    BeefyId: BeefyId;142    BeefyKey: BeefyKey;143    BeefyNextAuthoritySet: BeefyNextAuthoritySet;144    BeefyPayload: BeefyPayload;145    BeefySignedCommitment: BeefySignedCommitment;146    Bid: Bid;147    Bidder: Bidder;148    BidKind: BidKind;149    BitVec: BitVec;150    Block: Block;151    BlockAttestations: BlockAttestations;152    BlockHash: BlockHash;153    BlockLength: BlockLength;154    BlockNumber: BlockNumber;155    BlockNumberFor: BlockNumberFor;156    BlockNumberOf: BlockNumberOf;157    BlockStats: BlockStats;158    BlockTrace: BlockTrace;159    BlockTraceEvent: BlockTraceEvent;160    BlockTraceEventData: BlockTraceEventData;161    BlockTraceSpan: BlockTraceSpan;162    BlockV0: BlockV0;163    BlockV1: BlockV1;164    BlockV2: BlockV2;165    BlockWeights: BlockWeights;166    BodyId: BodyId;167    BodyPart: BodyPart;168    bool: bool;169    Bool: Bool;170    Bounty: Bounty;171    BountyIndex: BountyIndex;172    BountyStatus: BountyStatus;173    BountyStatusActive: BountyStatusActive;174    BountyStatusCuratorProposed: BountyStatusCuratorProposed;175    BountyStatusPendingPayout: BountyStatusPendingPayout;176    BridgedBlockHash: BridgedBlockHash;177    BridgedBlockNumber: BridgedBlockNumber;178    BridgedHeader: BridgedHeader;179    BridgeMessageId: BridgeMessageId;180    BufferedSessionChange: BufferedSessionChange;181    Bytes: Bytes;182    Call: Call;183    CallHash: CallHash;184    CallHashOf: CallHashOf;185    CallIndex: CallIndex;186    CallOrigin: CallOrigin;187    CandidateCommitments: CandidateCommitments;188    CandidateDescriptor: CandidateDescriptor;189    CandidateHash: CandidateHash;190    CandidateInfo: CandidateInfo;191    CandidatePendingAvailability: CandidatePendingAvailability;192    CandidateReceipt: CandidateReceipt;193    ChainId: ChainId;194    ChainProperties: ChainProperties;195    ChainType: ChainType;196    ChangesTrieConfiguration: ChangesTrieConfiguration;197    ChangesTrieSignal: ChangesTrieSignal;198    ClassDetails: ClassDetails;199    ClassId: ClassId;200    ClassMetadata: ClassMetadata;201    CodecHash: CodecHash;202    CodeHash: CodeHash;203    CodeSource: CodeSource;204    CodeUploadRequest: CodeUploadRequest;205    CodeUploadResult: CodeUploadResult;206    CodeUploadResultValue: CodeUploadResultValue;207    CollatorId: CollatorId;208    CollatorSignature: CollatorSignature;209    CollectiveOrigin: CollectiveOrigin;210    CommittedCandidateReceipt: CommittedCandidateReceipt;211    CompactAssignments: CompactAssignments;212    CompactAssignmentsTo257: CompactAssignmentsTo257;213    CompactAssignmentsTo265: CompactAssignmentsTo265;214    CompactAssignmentsWith16: CompactAssignmentsWith16;215    CompactAssignmentsWith24: CompactAssignmentsWith24;216    CompactScore: CompactScore;217    CompactScoreCompact: CompactScoreCompact;218    ConfigData: ConfigData;219    Consensus: Consensus;220    ConsensusEngineId: ConsensusEngineId;221    ConsumedWeight: ConsumedWeight;222    ContractCallFlags: ContractCallFlags;223    ContractCallRequest: ContractCallRequest;224    ContractConstructorSpecLatest: ContractConstructorSpecLatest;225    ContractConstructorSpecV0: ContractConstructorSpecV0;226    ContractConstructorSpecV1: ContractConstructorSpecV1;227    ContractConstructorSpecV2: ContractConstructorSpecV2;228    ContractConstructorSpecV3: ContractConstructorSpecV3;229    ContractContractSpecV0: ContractContractSpecV0;230    ContractContractSpecV1: ContractContractSpecV1;231    ContractContractSpecV2: ContractContractSpecV2;232    ContractContractSpecV3: ContractContractSpecV3;233    ContractCryptoHasher: ContractCryptoHasher;234    ContractDiscriminant: ContractDiscriminant;235    ContractDisplayName: ContractDisplayName;236    ContractEventParamSpecLatest: ContractEventParamSpecLatest;237    ContractEventParamSpecV0: ContractEventParamSpecV0;238    ContractEventParamSpecV2: ContractEventParamSpecV2;239    ContractEventSpecLatest: ContractEventSpecLatest;240    ContractEventSpecV0: ContractEventSpecV0;241    ContractEventSpecV1: ContractEventSpecV1;242    ContractEventSpecV2: ContractEventSpecV2;243    ContractExecResult: ContractExecResult;244    ContractExecResultErr: ContractExecResultErr;245    ContractExecResultErrModule: ContractExecResultErrModule;246    ContractExecResultOk: ContractExecResultOk;247    ContractExecResultResult: ContractExecResultResult;248    ContractExecResultSuccessTo255: ContractExecResultSuccessTo255;249    ContractExecResultSuccessTo260: ContractExecResultSuccessTo260;250    ContractExecResultTo255: ContractExecResultTo255;251    ContractExecResultTo260: ContractExecResultTo260;252    ContractExecResultTo267: ContractExecResultTo267;253    ContractInfo: ContractInfo;254    ContractInstantiateResult: ContractInstantiateResult;255    ContractInstantiateResultTo267: ContractInstantiateResultTo267;256    ContractInstantiateResultTo299: ContractInstantiateResultTo299;257    ContractLayoutArray: ContractLayoutArray;258    ContractLayoutCell: ContractLayoutCell;259    ContractLayoutEnum: ContractLayoutEnum;260    ContractLayoutHash: ContractLayoutHash;261    ContractLayoutHashingStrategy: ContractLayoutHashingStrategy;262    ContractLayoutKey: ContractLayoutKey;263    ContractLayoutStruct: ContractLayoutStruct;264    ContractLayoutStructField: ContractLayoutStructField;265    ContractMessageParamSpecLatest: ContractMessageParamSpecLatest;266    ContractMessageParamSpecV0: ContractMessageParamSpecV0;267    ContractMessageParamSpecV2: ContractMessageParamSpecV2;268    ContractMessageSpecLatest: ContractMessageSpecLatest;269    ContractMessageSpecV0: ContractMessageSpecV0;270    ContractMessageSpecV1: ContractMessageSpecV1;271    ContractMessageSpecV2: ContractMessageSpecV2;272    ContractMetadata: ContractMetadata;273    ContractMetadataLatest: ContractMetadataLatest;274    ContractMetadataV0: ContractMetadataV0;275    ContractMetadataV1: ContractMetadataV1;276    ContractMetadataV2: ContractMetadataV2;277    ContractMetadataV3: ContractMetadataV3;278    ContractProject: ContractProject;279    ContractProjectContract: ContractProjectContract;280    ContractProjectInfo: ContractProjectInfo;281    ContractProjectSource: ContractProjectSource;282    ContractProjectV0: ContractProjectV0;283    ContractReturnFlags: ContractReturnFlags;284    ContractSelector: ContractSelector;285    ContractStorageKey: ContractStorageKey;286    ContractStorageLayout: ContractStorageLayout;287    ContractTypeSpec: ContractTypeSpec;288    Conviction: Conviction;289    CoreAssignment: CoreAssignment;290    CoreIndex: CoreIndex;291    CoreOccupied: CoreOccupied;292    CrateVersion: CrateVersion;293    CreatedBlock: CreatedBlock;294    CumulusPalletDmpQueueCall: CumulusPalletDmpQueueCall;295    CumulusPalletDmpQueueConfigData: CumulusPalletDmpQueueConfigData;296    CumulusPalletDmpQueueError: CumulusPalletDmpQueueError;297    CumulusPalletDmpQueueEvent: CumulusPalletDmpQueueEvent;298    CumulusPalletDmpQueuePageIndexData: CumulusPalletDmpQueuePageIndexData;299    CumulusPalletParachainSystemCall: CumulusPalletParachainSystemCall;300    CumulusPalletParachainSystemError: CumulusPalletParachainSystemError;301    CumulusPalletParachainSystemEvent: CumulusPalletParachainSystemEvent;302    CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot: CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot;303    CumulusPalletXcmCall: CumulusPalletXcmCall;304    CumulusPalletXcmError: CumulusPalletXcmError;305    CumulusPalletXcmEvent: CumulusPalletXcmEvent;306    CumulusPalletXcmpQueueCall: CumulusPalletXcmpQueueCall;307    CumulusPalletXcmpQueueError: CumulusPalletXcmpQueueError;308    CumulusPalletXcmpQueueEvent: CumulusPalletXcmpQueueEvent;309    CumulusPalletXcmpQueueInboundChannelDetails: CumulusPalletXcmpQueueInboundChannelDetails;310    CumulusPalletXcmpQueueInboundState: CumulusPalletXcmpQueueInboundState;311    CumulusPalletXcmpQueueOutboundChannelDetails: CumulusPalletXcmpQueueOutboundChannelDetails;312    CumulusPalletXcmpQueueOutboundState: CumulusPalletXcmpQueueOutboundState;313    CumulusPalletXcmpQueueQueueConfigData: CumulusPalletXcmpQueueQueueConfigData;314    CumulusPrimitivesParachainInherentParachainInherentData: CumulusPrimitivesParachainInherentParachainInherentData;315    Data: Data;316    DeferredOffenceOf: DeferredOffenceOf;317    DefunctVoter: DefunctVoter;318    DelayKind: DelayKind;319    DelayKindBest: DelayKindBest;320    Delegations: Delegations;321    DeletedContract: DeletedContract;322    DeliveredMessages: DeliveredMessages;323    DepositBalance: DepositBalance;324    DepositBalanceOf: DepositBalanceOf;325    DestroyWitness: DestroyWitness;326    Digest: Digest;327    DigestItem: DigestItem;328    DigestOf: DigestOf;329    DispatchClass: DispatchClass;330    DispatchError: DispatchError;331    DispatchErrorModule: DispatchErrorModule;332    DispatchErrorModuleU8a: DispatchErrorModuleU8a;333    DispatchErrorTo198: DispatchErrorTo198;334    DispatchFeePayment: DispatchFeePayment;335    DispatchInfo: DispatchInfo;336    DispatchInfoTo190: DispatchInfoTo190;337    DispatchInfoTo244: DispatchInfoTo244;338    DispatchOutcome: DispatchOutcome;339    DispatchResult: DispatchResult;340    DispatchResultOf: DispatchResultOf;341    DispatchResultTo198: DispatchResultTo198;342    DisputeLocation: DisputeLocation;343    DisputeResult: DisputeResult;344    DisputeState: DisputeState;345    DisputeStatement: DisputeStatement;346    DisputeStatementSet: DisputeStatementSet;347    DoubleEncodedCall: DoubleEncodedCall;348    DoubleVoteReport: DoubleVoteReport;349    DownwardMessage: DownwardMessage;350    EcdsaSignature: EcdsaSignature;351    Ed25519Signature: Ed25519Signature;352    EIP1559Transaction: EIP1559Transaction;353    EIP2930Transaction: EIP2930Transaction;354    ElectionCompute: ElectionCompute;355    ElectionPhase: ElectionPhase;356    ElectionResult: ElectionResult;357    ElectionScore: ElectionScore;358    ElectionSize: ElectionSize;359    ElectionStatus: ElectionStatus;360    EncodedFinalityProofs: EncodedFinalityProofs;361    EncodedJustification: EncodedJustification;362    EpochAuthorship: EpochAuthorship;363    Era: Era;364    EraIndex: EraIndex;365    EraPoints: EraPoints;366    EraRewardPoints: EraRewardPoints;367    EraRewards: EraRewards;368    ErrorMetadataLatest: ErrorMetadataLatest;369    ErrorMetadataV10: ErrorMetadataV10;370    ErrorMetadataV11: ErrorMetadataV11;371    ErrorMetadataV12: ErrorMetadataV12;372    ErrorMetadataV13: ErrorMetadataV13;373    ErrorMetadataV14: ErrorMetadataV14;374    ErrorMetadataV9: ErrorMetadataV9;375    EthAccessList: EthAccessList;376    EthAccessListItem: EthAccessListItem;377    EthAccount: EthAccount;378    EthAddress: EthAddress;379    EthBlock: EthBlock;380    EthBloom: EthBloom;381    EthbloomBloom: EthbloomBloom;382    EthCallRequest: EthCallRequest;383    EthereumAccountId: EthereumAccountId;384    EthereumAddress: EthereumAddress;385    EthereumBlock: EthereumBlock;386    EthereumHeader: EthereumHeader;387    EthereumLog: EthereumLog;388    EthereumLookupSource: EthereumLookupSource;389    EthereumReceiptEip658ReceiptData: EthereumReceiptEip658ReceiptData;390    EthereumReceiptReceiptV3: EthereumReceiptReceiptV3;391    EthereumSignature: EthereumSignature;392    EthereumTransactionAccessListItem: EthereumTransactionAccessListItem;393    EthereumTransactionEip1559Transaction: EthereumTransactionEip1559Transaction;394    EthereumTransactionEip2930Transaction: EthereumTransactionEip2930Transaction;395    EthereumTransactionLegacyTransaction: EthereumTransactionLegacyTransaction;396    EthereumTransactionTransactionAction: EthereumTransactionTransactionAction;397    EthereumTransactionTransactionSignature: EthereumTransactionTransactionSignature;398    EthereumTransactionTransactionV2: EthereumTransactionTransactionV2;399    EthereumTypesHashH64: EthereumTypesHashH64;400    EthFilter: EthFilter;401    EthFilterAddress: EthFilterAddress;402    EthFilterChanges: EthFilterChanges;403    EthFilterTopic: EthFilterTopic;404    EthFilterTopicEntry: EthFilterTopicEntry;405    EthFilterTopicInner: EthFilterTopicInner;406    EthHeader: EthHeader;407    EthLog: EthLog;408    EthReceipt: EthReceipt;409    EthRichBlock: EthRichBlock;410    EthRichHeader: EthRichHeader;411    EthStorageProof: EthStorageProof;412    EthSubKind: EthSubKind;413    EthSubParams: EthSubParams;414    EthSubResult: EthSubResult;415    EthSyncInfo: EthSyncInfo;416    EthSyncStatus: EthSyncStatus;417    EthTransaction: EthTransaction;418    EthTransactionAction: EthTransactionAction;419    EthTransactionCondition: EthTransactionCondition;420    EthTransactionRequest: EthTransactionRequest;421    EthTransactionSignature: EthTransactionSignature;422    EthTransactionStatus: EthTransactionStatus;423    EthWork: EthWork;424    Event: Event;425    EventId: EventId;426    EventIndex: EventIndex;427    EventMetadataLatest: EventMetadataLatest;428    EventMetadataV10: EventMetadataV10;429    EventMetadataV11: EventMetadataV11;430    EventMetadataV12: EventMetadataV12;431    EventMetadataV13: EventMetadataV13;432    EventMetadataV14: EventMetadataV14;433    EventMetadataV9: EventMetadataV9;434    EventRecord: EventRecord;435    EvmAccount: EvmAccount;436    EvmCoreErrorExitError: EvmCoreErrorExitError;437    EvmCoreErrorExitFatal: EvmCoreErrorExitFatal;438    EvmCoreErrorExitReason: EvmCoreErrorExitReason;439    EvmCoreErrorExitRevert: EvmCoreErrorExitRevert;440    EvmCoreErrorExitSucceed: EvmCoreErrorExitSucceed;441    EvmLog: EvmLog;442    EvmVicinity: EvmVicinity;443    ExecReturnValue: ExecReturnValue;444    ExitError: ExitError;445    ExitFatal: ExitFatal;446    ExitReason: ExitReason;447    ExitRevert: ExitRevert;448    ExitSucceed: ExitSucceed;449    ExplicitDisputeStatement: ExplicitDisputeStatement;450    Exposure: Exposure;451    ExtendedBalance: ExtendedBalance;452    Extrinsic: Extrinsic;453    ExtrinsicEra: ExtrinsicEra;454    ExtrinsicMetadataLatest: ExtrinsicMetadataLatest;455    ExtrinsicMetadataV11: ExtrinsicMetadataV11;456    ExtrinsicMetadataV12: ExtrinsicMetadataV12;457    ExtrinsicMetadataV13: ExtrinsicMetadataV13;458    ExtrinsicMetadataV14: ExtrinsicMetadataV14;459    ExtrinsicOrHash: ExtrinsicOrHash;460    ExtrinsicPayload: ExtrinsicPayload;461    ExtrinsicPayloadUnknown: ExtrinsicPayloadUnknown;462    ExtrinsicPayloadV4: ExtrinsicPayloadV4;463    ExtrinsicSignature: ExtrinsicSignature;464    ExtrinsicSignatureV4: ExtrinsicSignatureV4;465    ExtrinsicStatus: ExtrinsicStatus;466    ExtrinsicsWeight: ExtrinsicsWeight;467    ExtrinsicUnknown: ExtrinsicUnknown;468    ExtrinsicV4: ExtrinsicV4;469    FeeDetails: FeeDetails;470    Fixed128: Fixed128;471    Fixed64: Fixed64;472    FixedI128: FixedI128;473    FixedI64: FixedI64;474    FixedU128: FixedU128;475    FixedU64: FixedU64;476    Forcing: Forcing;477    ForkTreePendingChange: ForkTreePendingChange;478    ForkTreePendingChangeNode: ForkTreePendingChangeNode;479    FpRpcTransactionStatus: FpRpcTransactionStatus;480    FrameSupportPalletId: FrameSupportPalletId;481    FrameSupportStorageBoundedBTreeSet: FrameSupportStorageBoundedBTreeSet;482    FrameSupportTokensMiscBalanceStatus: FrameSupportTokensMiscBalanceStatus;483    FrameSupportWeightsDispatchClass: FrameSupportWeightsDispatchClass;484    FrameSupportWeightsDispatchInfo: FrameSupportWeightsDispatchInfo;485    FrameSupportWeightsPays: FrameSupportWeightsPays;486    FrameSupportWeightsPerDispatchClassU32: FrameSupportWeightsPerDispatchClassU32;487    FrameSupportWeightsPerDispatchClassU64: FrameSupportWeightsPerDispatchClassU64;488    FrameSupportWeightsPerDispatchClassWeightsPerClass: FrameSupportWeightsPerDispatchClassWeightsPerClass;489    FrameSupportWeightsRuntimeDbWeight: FrameSupportWeightsRuntimeDbWeight;490    FrameSupportWeightsWeightToFeeCoefficient: FrameSupportWeightsWeightToFeeCoefficient;491    FrameSystemAccountInfo: FrameSystemAccountInfo;492    FrameSystemCall: FrameSystemCall;493    FrameSystemError: FrameSystemError;494    FrameSystemEvent: FrameSystemEvent;495    FrameSystemEventRecord: FrameSystemEventRecord;496    FrameSystemExtensionsCheckGenesis: FrameSystemExtensionsCheckGenesis;497    FrameSystemExtensionsCheckNonce: FrameSystemExtensionsCheckNonce;498    FrameSystemExtensionsCheckSpecVersion: FrameSystemExtensionsCheckSpecVersion;499    FrameSystemExtensionsCheckWeight: FrameSystemExtensionsCheckWeight;500    FrameSystemLastRuntimeUpgradeInfo: FrameSystemLastRuntimeUpgradeInfo;501    FrameSystemLimitsBlockLength: FrameSystemLimitsBlockLength;502    FrameSystemLimitsBlockWeights: FrameSystemLimitsBlockWeights;503    FrameSystemLimitsWeightsPerClass: FrameSystemLimitsWeightsPerClass;504    FrameSystemPhase: FrameSystemPhase;505    FullIdentification: FullIdentification;506    FunctionArgumentMetadataLatest: FunctionArgumentMetadataLatest;507    FunctionArgumentMetadataV10: FunctionArgumentMetadataV10;508    FunctionArgumentMetadataV11: FunctionArgumentMetadataV11;509    FunctionArgumentMetadataV12: FunctionArgumentMetadataV12;510    FunctionArgumentMetadataV13: FunctionArgumentMetadataV13;511    FunctionArgumentMetadataV14: FunctionArgumentMetadataV14;512    FunctionArgumentMetadataV9: FunctionArgumentMetadataV9;513    FunctionMetadataLatest: FunctionMetadataLatest;514    FunctionMetadataV10: FunctionMetadataV10;515    FunctionMetadataV11: FunctionMetadataV11;516    FunctionMetadataV12: FunctionMetadataV12;517    FunctionMetadataV13: FunctionMetadataV13;518    FunctionMetadataV14: FunctionMetadataV14;519    FunctionMetadataV9: FunctionMetadataV9;520    FundIndex: FundIndex;521    FundInfo: FundInfo;522    Fungibility: Fungibility;523    FungibilityV0: FungibilityV0;524    FungibilityV1: FungibilityV1;525    FungibilityV2: FungibilityV2;526    Gas: Gas;527    GiltBid: GiltBid;528    GlobalValidationData: GlobalValidationData;529    GlobalValidationSchedule: GlobalValidationSchedule;530    GrandpaCommit: GrandpaCommit;531    GrandpaEquivocation: GrandpaEquivocation;532    GrandpaEquivocationProof: GrandpaEquivocationProof;533    GrandpaEquivocationValue: GrandpaEquivocationValue;534    GrandpaJustification: GrandpaJustification;535    GrandpaPrecommit: GrandpaPrecommit;536    GrandpaPrevote: GrandpaPrevote;537    GrandpaSignedPrecommit: GrandpaSignedPrecommit;538    GroupIndex: GroupIndex;539    H1024: H1024;540    H128: H128;541    H160: H160;542    H2048: H2048;543    H256: H256;544    H32: H32;545    H512: H512;546    H64: H64;547    Hash: Hash;548    HeadData: HeadData;549    Header: Header;550    HeaderPartial: HeaderPartial;551    Health: Health;552    Heartbeat: Heartbeat;553    HeartbeatTo244: HeartbeatTo244;554    HostConfiguration: HostConfiguration;555    HostFnWeights: HostFnWeights;556    HostFnWeightsTo264: HostFnWeightsTo264;557    HrmpChannel: HrmpChannel;558    HrmpChannelId: HrmpChannelId;559    HrmpOpenChannelRequest: HrmpOpenChannelRequest;560    i128: i128;561    I128: I128;562    i16: i16;563    I16: I16;564    i256: i256;565    I256: I256;566    i32: i32;567    I32: I32;568    I32F32: I32F32;569    i64: i64;570    I64: I64;571    i8: i8;572    I8: I8;573    IdentificationTuple: IdentificationTuple;574    IdentityFields: IdentityFields;575    IdentityInfo: IdentityInfo;576    IdentityInfoAdditional: IdentityInfoAdditional;577    IdentityInfoTo198: IdentityInfoTo198;578    IdentityJudgement: IdentityJudgement;579    ImmortalEra: ImmortalEra;580    ImportedAux: ImportedAux;581    InboundDownwardMessage: InboundDownwardMessage;582    InboundHrmpMessage: InboundHrmpMessage;583    InboundHrmpMessages: InboundHrmpMessages;584    InboundLaneData: InboundLaneData;585    InboundRelayer: InboundRelayer;586    InboundStatus: InboundStatus;587    IncludedBlocks: IncludedBlocks;588    InclusionFee: InclusionFee;589    IncomingParachain: IncomingParachain;590    IncomingParachainDeploy: IncomingParachainDeploy;591    IncomingParachainFixed: IncomingParachainFixed;592    Index: Index;593    IndicesLookupSource: IndicesLookupSource;594    IndividualExposure: IndividualExposure;595    InitializationData: InitializationData;596    InstanceDetails: InstanceDetails;597    InstanceId: InstanceId;598    InstanceMetadata: InstanceMetadata;599    InstantiateRequest: InstantiateRequest;600    InstantiateRequestV1: InstantiateRequestV1;601    InstantiateRequestV2: InstantiateRequestV2;602    InstantiateReturnValue: InstantiateReturnValue;603    InstantiateReturnValueOk: InstantiateReturnValueOk;604    InstantiateReturnValueTo267: InstantiateReturnValueTo267;605    InstructionV2: InstructionV2;606    InstructionWeights: InstructionWeights;607    InteriorMultiLocation: InteriorMultiLocation;608    InvalidDisputeStatementKind: InvalidDisputeStatementKind;609    InvalidTransaction: InvalidTransaction;610    Json: Json;611    Junction: Junction;612    Junctions: Junctions;613    JunctionsV1: JunctionsV1;614    JunctionsV2: JunctionsV2;615    JunctionV0: JunctionV0;616    JunctionV1: JunctionV1;617    JunctionV2: JunctionV2;618    Justification: Justification;619    JustificationNotification: JustificationNotification;620    Justifications: Justifications;621    Key: Key;622    KeyOwnerProof: KeyOwnerProof;623    Keys: Keys;624    KeyType: KeyType;625    KeyTypeId: KeyTypeId;626    KeyValue: KeyValue;627    KeyValueOption: KeyValueOption;628    Kind: Kind;629    LaneId: LaneId;630    LastContribution: LastContribution;631    LastRuntimeUpgradeInfo: LastRuntimeUpgradeInfo;632    LeasePeriod: LeasePeriod;633    LeasePeriodOf: LeasePeriodOf;634    LegacyTransaction: LegacyTransaction;635    Limits: Limits;636    LimitsTo264: LimitsTo264;637    LocalValidationData: LocalValidationData;638    LockIdentifier: LockIdentifier;639    LookupSource: LookupSource;640    LookupTarget: LookupTarget;641    LotteryConfig: LotteryConfig;642    MaybeRandomness: MaybeRandomness;643    MaybeVrf: MaybeVrf;644    MemberCount: MemberCount;645    MembershipProof: MembershipProof;646    MessageData: MessageData;647    MessageId: MessageId;648    MessageIngestionType: MessageIngestionType;649    MessageKey: MessageKey;650    MessageNonce: MessageNonce;651    MessageQueueChain: MessageQueueChain;652    MessagesDeliveryProofOf: MessagesDeliveryProofOf;653    MessagesProofOf: MessagesProofOf;654    MessagingStateSnapshot: MessagingStateSnapshot;655    MessagingStateSnapshotEgressEntry: MessagingStateSnapshotEgressEntry;656    MetadataAll: MetadataAll;657    MetadataLatest: MetadataLatest;658    MetadataV10: MetadataV10;659    MetadataV11: MetadataV11;660    MetadataV12: MetadataV12;661    MetadataV13: MetadataV13;662    MetadataV14: MetadataV14;663    MetadataV9: MetadataV9;664    MigrationStatusResult: MigrationStatusResult;665    MmrLeafProof: MmrLeafProof;666    MmrRootHash: MmrRootHash;667    ModuleConstantMetadataV10: ModuleConstantMetadataV10;668    ModuleConstantMetadataV11: ModuleConstantMetadataV11;669    ModuleConstantMetadataV12: ModuleConstantMetadataV12;670    ModuleConstantMetadataV13: ModuleConstantMetadataV13;671    ModuleConstantMetadataV9: ModuleConstantMetadataV9;672    ModuleId: ModuleId;673    ModuleMetadataV10: ModuleMetadataV10;674    ModuleMetadataV11: ModuleMetadataV11;675    ModuleMetadataV12: ModuleMetadataV12;676    ModuleMetadataV13: ModuleMetadataV13;677    ModuleMetadataV9: ModuleMetadataV9;678    Moment: Moment;679    MomentOf: MomentOf;680    MoreAttestations: MoreAttestations;681    MortalEra: MortalEra;682    MultiAddress: MultiAddress;683    MultiAsset: MultiAsset;684    MultiAssetFilter: MultiAssetFilter;685    MultiAssetFilterV1: MultiAssetFilterV1;686    MultiAssetFilterV2: MultiAssetFilterV2;687    MultiAssets: MultiAssets;688    MultiAssetsV1: MultiAssetsV1;689    MultiAssetsV2: MultiAssetsV2;690    MultiAssetV0: MultiAssetV0;691    MultiAssetV1: MultiAssetV1;692    MultiAssetV2: MultiAssetV2;693    MultiDisputeStatementSet: MultiDisputeStatementSet;694    MultiLocation: MultiLocation;695    MultiLocationV0: MultiLocationV0;696    MultiLocationV1: MultiLocationV1;697    MultiLocationV2: MultiLocationV2;698    Multiplier: Multiplier;699    Multisig: Multisig;700    MultiSignature: MultiSignature;701    MultiSigner: MultiSigner;702    NetworkId: NetworkId;703    NetworkState: NetworkState;704    NetworkStatePeerset: NetworkStatePeerset;705    NetworkStatePeersetInfo: NetworkStatePeersetInfo;706    NewBidder: NewBidder;707    NextAuthority: NextAuthority;708    NextConfigDescriptor: NextConfigDescriptor;709    NextConfigDescriptorV1: NextConfigDescriptorV1;710    NodeRole: NodeRole;711    Nominations: Nominations;712    NominatorIndex: NominatorIndex;713    NominatorIndexCompact: NominatorIndexCompact;714    NotConnectedPeer: NotConnectedPeer;715    Null: Null;716    OffchainAccuracy: OffchainAccuracy;717    OffchainAccuracyCompact: OffchainAccuracyCompact;718    OffenceDetails: OffenceDetails;719    Offender: Offender;720    OpalRuntimeRuntime: OpalRuntimeRuntime;721    OpaqueCall: OpaqueCall;722    OpaqueMultiaddr: OpaqueMultiaddr;723    OpaqueNetworkState: OpaqueNetworkState;724    OpaquePeerId: OpaquePeerId;725    OpaqueTimeSlot: OpaqueTimeSlot;726    OpenTip: OpenTip;727    OpenTipFinderTo225: OpenTipFinderTo225;728    OpenTipTip: OpenTipTip;729    OpenTipTo225: OpenTipTo225;730    OperatingMode: OperatingMode;731    Origin: Origin;732    OriginCaller: OriginCaller;733    OriginKindV0: OriginKindV0;734    OriginKindV1: OriginKindV1;735    OriginKindV2: OriginKindV2;736    OrmlVestingModuleCall: OrmlVestingModuleCall;737    OrmlVestingModuleError: OrmlVestingModuleError;738    OrmlVestingModuleEvent: OrmlVestingModuleEvent;739    OrmlVestingVestingSchedule: OrmlVestingVestingSchedule;740    OutboundHrmpMessage: OutboundHrmpMessage;741    OutboundLaneData: OutboundLaneData;742    OutboundMessageFee: OutboundMessageFee;743    OutboundPayload: OutboundPayload;744    OutboundStatus: OutboundStatus;745    Outcome: Outcome;746    OverweightIndex: OverweightIndex;747    Owner: Owner;748    PageCounter: PageCounter;749    PageIndexData: PageIndexData;750    PalletBalancesAccountData: PalletBalancesAccountData;751    PalletBalancesBalanceLock: PalletBalancesBalanceLock;752    PalletBalancesCall: PalletBalancesCall;753    PalletBalancesError: PalletBalancesError;754    PalletBalancesEvent: PalletBalancesEvent;755    PalletBalancesReasons: PalletBalancesReasons;756    PalletBalancesReleases: PalletBalancesReleases;757    PalletBalancesReserveData: PalletBalancesReserveData;758    PalletCallMetadataLatest: PalletCallMetadataLatest;759    PalletCallMetadataV14: PalletCallMetadataV14;760    PalletCommonError: PalletCommonError;761    PalletCommonEvent: PalletCommonEvent;762    PalletConstantMetadataLatest: PalletConstantMetadataLatest;763    PalletConstantMetadataV14: PalletConstantMetadataV14;764    PalletErrorMetadataLatest: PalletErrorMetadataLatest;765    PalletErrorMetadataV14: PalletErrorMetadataV14;766    PalletEthereumCall: PalletEthereumCall;767    PalletEthereumError: PalletEthereumError;768    PalletEthereumEvent: PalletEthereumEvent;769    PalletEventMetadataLatest: PalletEventMetadataLatest;770    PalletEventMetadataV14: PalletEventMetadataV14;771    PalletEvmAccountBasicCrossAccountIdRepr: PalletEvmAccountBasicCrossAccountIdRepr;772    PalletEvmCall: PalletEvmCall;773    PalletEvmCoderSubstrateError: PalletEvmCoderSubstrateError;774    PalletEvmContractHelpersError: PalletEvmContractHelpersError;775    PalletEvmContractHelpersSponsoringModeT: PalletEvmContractHelpersSponsoringModeT;776    PalletEvmError: PalletEvmError;777    PalletEvmEvent: PalletEvmEvent;778    PalletEvmMigrationCall: PalletEvmMigrationCall;779    PalletEvmMigrationError: PalletEvmMigrationError;780    PalletFungibleError: PalletFungibleError;781    PalletId: PalletId;782    PalletInflationCall: PalletInflationCall;783    PalletMetadataLatest: PalletMetadataLatest;784    PalletMetadataV14: PalletMetadataV14;785    PalletNonfungibleError: PalletNonfungibleError;786    PalletNonfungibleItemData: PalletNonfungibleItemData;787    PalletRefungibleError: PalletRefungibleError;788    PalletRefungibleItemData: PalletRefungibleItemData;789    PalletsOrigin: PalletsOrigin;790    PalletStorageMetadataLatest: PalletStorageMetadataLatest;791    PalletStorageMetadataV14: PalletStorageMetadataV14;792    PalletStructureCall: PalletStructureCall;793    PalletStructureError: PalletStructureError;794    PalletStructureEvent: PalletStructureEvent;795    PalletSudoCall: PalletSudoCall;796    PalletSudoError: PalletSudoError;797    PalletSudoEvent: PalletSudoEvent;798    PalletTemplateTransactionPaymentCall: PalletTemplateTransactionPaymentCall;799    PalletTemplateTransactionPaymentChargeTransactionPayment: PalletTemplateTransactionPaymentChargeTransactionPayment;800    PalletTimestampCall: PalletTimestampCall;801    PalletTransactionPaymentReleases: PalletTransactionPaymentReleases;802    PalletTreasuryCall: PalletTreasuryCall;803    PalletTreasuryError: PalletTreasuryError;804    PalletTreasuryEvent: PalletTreasuryEvent;805    PalletTreasuryProposal: PalletTreasuryProposal;806    PalletUniqueCall: PalletUniqueCall;807    PalletUniqueError: PalletUniqueError;808    PalletUniqueRawEvent: PalletUniqueRawEvent;809    PalletVersion: PalletVersion;810    PalletXcmCall: PalletXcmCall;811    PalletXcmError: PalletXcmError;812    PalletXcmEvent: PalletXcmEvent;813    ParachainDispatchOrigin: ParachainDispatchOrigin;814    ParachainInherentData: ParachainInherentData;815    ParachainProposal: ParachainProposal;816    ParachainsInherentData: ParachainsInherentData;817    ParaGenesisArgs: ParaGenesisArgs;818    ParaId: ParaId;819    ParaInfo: ParaInfo;820    ParaLifecycle: ParaLifecycle;821    Parameter: Parameter;822    ParaPastCodeMeta: ParaPastCodeMeta;823    ParaScheduling: ParaScheduling;824    ParathreadClaim: ParathreadClaim;825    ParathreadClaimQueue: ParathreadClaimQueue;826    ParathreadEntry: ParathreadEntry;827    ParaValidatorIndex: ParaValidatorIndex;828    Pays: Pays;829    Peer: Peer;830    PeerEndpoint: PeerEndpoint;831    PeerEndpointAddr: PeerEndpointAddr;832    PeerInfo: PeerInfo;833    PeerPing: PeerPing;834    PendingChange: PendingChange;835    PendingPause: PendingPause;836    PendingResume: PendingResume;837    Perbill: Perbill;838    Percent: Percent;839    PerDispatchClassU32: PerDispatchClassU32;840    PerDispatchClassWeight: PerDispatchClassWeight;841    PerDispatchClassWeightsPerClass: PerDispatchClassWeightsPerClass;842    Period: Period;843    Permill: Permill;844    PermissionLatest: PermissionLatest;845    PermissionsV1: PermissionsV1;846    PermissionVersions: PermissionVersions;847    Perquintill: Perquintill;848    PersistedValidationData: PersistedValidationData;849    PerU16: PerU16;850    Phantom: Phantom;851    PhantomData: PhantomData;852    PhantomTypeUpDataStructs: PhantomTypeUpDataStructs;853    Phase: Phase;854    PhragmenScore: PhragmenScore;855    Points: Points;856    PolkadotCorePrimitivesInboundDownwardMessage: PolkadotCorePrimitivesInboundDownwardMessage;857    PolkadotCorePrimitivesInboundHrmpMessage: PolkadotCorePrimitivesInboundHrmpMessage;858    PolkadotCorePrimitivesOutboundHrmpMessage: PolkadotCorePrimitivesOutboundHrmpMessage;859    PolkadotParachainPrimitivesXcmpMessageFormat: PolkadotParachainPrimitivesXcmpMessageFormat;860    PolkadotPrimitivesV1AbridgedHostConfiguration: PolkadotPrimitivesV1AbridgedHostConfiguration;861    PolkadotPrimitivesV1AbridgedHrmpChannel: PolkadotPrimitivesV1AbridgedHrmpChannel;862    PolkadotPrimitivesV1PersistedValidationData: PolkadotPrimitivesV1PersistedValidationData;863    PolkadotPrimitivesV1UpgradeRestriction: PolkadotPrimitivesV1UpgradeRestriction;864    PortableType: PortableType;865    PortableTypeV14: PortableTypeV14;866    Precommits: Precommits;867    PrefabWasmModule: PrefabWasmModule;868    PrefixedStorageKey: PrefixedStorageKey;869    PreimageStatus: PreimageStatus;870    PreimageStatusAvailable: PreimageStatusAvailable;871    PreRuntime: PreRuntime;872    Prevotes: Prevotes;873    Priority: Priority;874    PriorLock: PriorLock;875    PropIndex: PropIndex;876    Proposal: Proposal;877    ProposalIndex: ProposalIndex;878    ProxyAnnouncement: ProxyAnnouncement;879    ProxyDefinition: ProxyDefinition;880    ProxyState: ProxyState;881    ProxyType: ProxyType;882    QueryId: QueryId;883    QueryStatus: QueryStatus;884    QueueConfigData: QueueConfigData;885    QueuedParathread: QueuedParathread;886    Randomness: Randomness;887    Raw: Raw;888    RawAuraPreDigest: RawAuraPreDigest;889    RawBabePreDigest: RawBabePreDigest;890    RawBabePreDigestCompat: RawBabePreDigestCompat;891    RawBabePreDigestPrimary: RawBabePreDigestPrimary;892    RawBabePreDigestPrimaryTo159: RawBabePreDigestPrimaryTo159;893    RawBabePreDigestSecondaryPlain: RawBabePreDigestSecondaryPlain;894    RawBabePreDigestSecondaryTo159: RawBabePreDigestSecondaryTo159;895    RawBabePreDigestSecondaryVRF: RawBabePreDigestSecondaryVRF;896    RawBabePreDigestTo159: RawBabePreDigestTo159;897    RawOrigin: RawOrigin;898    RawSolution: RawSolution;899    RawSolutionTo265: RawSolutionTo265;900    RawSolutionWith16: RawSolutionWith16;901    RawSolutionWith24: RawSolutionWith24;902    RawVRFOutput: RawVRFOutput;903    ReadProof: ReadProof;904    ReadySolution: ReadySolution;905    Reasons: Reasons;906    RecoveryConfig: RecoveryConfig;907    RefCount: RefCount;908    RefCountTo259: RefCountTo259;909    ReferendumIndex: ReferendumIndex;910    ReferendumInfo: ReferendumInfo;911    ReferendumInfoFinished: ReferendumInfoFinished;912    ReferendumInfoTo239: ReferendumInfoTo239;913    ReferendumStatus: ReferendumStatus;914    RegisteredParachainInfo: RegisteredParachainInfo;915    RegistrarIndex: RegistrarIndex;916    RegistrarInfo: RegistrarInfo;917    Registration: Registration;918    RegistrationJudgement: RegistrationJudgement;919    RegistrationTo198: RegistrationTo198;920    RelayBlockNumber: RelayBlockNumber;921    RelayChainBlockNumber: RelayChainBlockNumber;922    RelayChainHash: RelayChainHash;923    RelayerId: RelayerId;924    RelayHash: RelayHash;925    Releases: Releases;926    Remark: Remark;927    Renouncing: Renouncing;928    RentProjection: RentProjection;929    ReplacementTimes: ReplacementTimes;930    ReportedRoundStates: ReportedRoundStates;931    Reporter: Reporter;932    ReportIdOf: ReportIdOf;933    ReserveData: ReserveData;934    ReserveIdentifier: ReserveIdentifier;935    Response: Response;936    ResponseV0: ResponseV0;937    ResponseV1: ResponseV1;938    ResponseV2: ResponseV2;939    ResponseV2Error: ResponseV2Error;940    ResponseV2Result: ResponseV2Result;941    Retriable: Retriable;942    RewardDestination: RewardDestination;943    RewardPoint: RewardPoint;944    RoundSnapshot: RoundSnapshot;945    RoundState: RoundState;946    RpcMethods: RpcMethods;947    RuntimeDbWeight: RuntimeDbWeight;948    RuntimeDispatchInfo: RuntimeDispatchInfo;949    RuntimeVersion: RuntimeVersion;950    RuntimeVersionApi: RuntimeVersionApi;951    RuntimeVersionPartial: RuntimeVersionPartial;952    Schedule: Schedule;953    Scheduled: Scheduled;954    ScheduledTo254: ScheduledTo254;955    SchedulePeriod: SchedulePeriod;956    SchedulePriority: SchedulePriority;957    ScheduleTo212: ScheduleTo212;958    ScheduleTo258: ScheduleTo258;959    ScheduleTo264: ScheduleTo264;960    Scheduling: Scheduling;961    Seal: Seal;962    SealV0: SealV0;963    SeatHolder: SeatHolder;964    SeedOf: SeedOf;965    ServiceQuality: ServiceQuality;966    SessionIndex: SessionIndex;967    SessionInfo: SessionInfo;968    SessionInfoValidatorGroup: SessionInfoValidatorGroup;969    SessionKeys1: SessionKeys1;970    SessionKeys10: SessionKeys10;971    SessionKeys10B: SessionKeys10B;972    SessionKeys2: SessionKeys2;973    SessionKeys3: SessionKeys3;974    SessionKeys4: SessionKeys4;975    SessionKeys5: SessionKeys5;976    SessionKeys6: SessionKeys6;977    SessionKeys6B: SessionKeys6B;978    SessionKeys7: SessionKeys7;979    SessionKeys7B: SessionKeys7B;980    SessionKeys8: SessionKeys8;981    SessionKeys8B: SessionKeys8B;982    SessionKeys9: SessionKeys9;983    SessionKeys9B: SessionKeys9B;984    SetId: SetId;985    SetIndex: SetIndex;986    Si0Field: Si0Field;987    Si0LookupTypeId: Si0LookupTypeId;988    Si0Path: Si0Path;989    Si0Type: Si0Type;990    Si0TypeDef: Si0TypeDef;991    Si0TypeDefArray: Si0TypeDefArray;992    Si0TypeDefBitSequence: Si0TypeDefBitSequence;993    Si0TypeDefCompact: Si0TypeDefCompact;994    Si0TypeDefComposite: Si0TypeDefComposite;995    Si0TypeDefPhantom: Si0TypeDefPhantom;996    Si0TypeDefPrimitive: Si0TypeDefPrimitive;997    Si0TypeDefSequence: Si0TypeDefSequence;998    Si0TypeDefTuple: Si0TypeDefTuple;999    Si0TypeDefVariant: Si0TypeDefVariant;1000    Si0TypeParameter: Si0TypeParameter;1001    Si0Variant: Si0Variant;1002    Si1Field: Si1Field;1003    Si1LookupTypeId: Si1LookupTypeId;1004    Si1Path: Si1Path;1005    Si1Type: Si1Type;1006    Si1TypeDef: Si1TypeDef;1007    Si1TypeDefArray: Si1TypeDefArray;1008    Si1TypeDefBitSequence: Si1TypeDefBitSequence;1009    Si1TypeDefCompact: Si1TypeDefCompact;1010    Si1TypeDefComposite: Si1TypeDefComposite;1011    Si1TypeDefPrimitive: Si1TypeDefPrimitive;1012    Si1TypeDefSequence: Si1TypeDefSequence;1013    Si1TypeDefTuple: Si1TypeDefTuple;1014    Si1TypeDefVariant: Si1TypeDefVariant;1015    Si1TypeParameter: Si1TypeParameter;1016    Si1Variant: Si1Variant;1017    SiField: SiField;1018    Signature: Signature;1019    SignedAvailabilityBitfield: SignedAvailabilityBitfield;1020    SignedAvailabilityBitfields: SignedAvailabilityBitfields;1021    SignedBlock: SignedBlock;1022    SignedBlockWithJustification: SignedBlockWithJustification;1023    SignedBlockWithJustifications: SignedBlockWithJustifications;1024    SignedExtensionMetadataLatest: SignedExtensionMetadataLatest;1025    SignedExtensionMetadataV14: SignedExtensionMetadataV14;1026    SignedSubmission: SignedSubmission;1027    SignedSubmissionOf: SignedSubmissionOf;1028    SignedSubmissionTo276: SignedSubmissionTo276;1029    SignerPayload: SignerPayload;1030    SigningContext: SigningContext;1031    SiLookupTypeId: SiLookupTypeId;1032    SiPath: SiPath;1033    SiType: SiType;1034    SiTypeDef: SiTypeDef;1035    SiTypeDefArray: SiTypeDefArray;1036    SiTypeDefBitSequence: SiTypeDefBitSequence;1037    SiTypeDefCompact: SiTypeDefCompact;1038    SiTypeDefComposite: SiTypeDefComposite;1039    SiTypeDefPrimitive: SiTypeDefPrimitive;1040    SiTypeDefSequence: SiTypeDefSequence;1041    SiTypeDefTuple: SiTypeDefTuple;1042    SiTypeDefVariant: SiTypeDefVariant;1043    SiTypeParameter: SiTypeParameter;1044    SiVariant: SiVariant;1045    SlashingSpans: SlashingSpans;1046    SlashingSpansTo204: SlashingSpansTo204;1047    SlashJournalEntry: SlashJournalEntry;1048    Slot: Slot;1049    SlotNumber: SlotNumber;1050    SlotRange: SlotRange;1051    SlotRange10: SlotRange10;1052    SocietyJudgement: SocietyJudgement;1053    SocietyVote: SocietyVote;1054    SolutionOrSnapshotSize: SolutionOrSnapshotSize;1055    SolutionSupport: SolutionSupport;1056    SolutionSupports: SolutionSupports;1057    SpanIndex: SpanIndex;1058    SpanRecord: SpanRecord;1059    SpCoreEcdsaSignature: SpCoreEcdsaSignature;1060    SpCoreEd25519Signature: SpCoreEd25519Signature;1061    SpCoreSr25519Signature: SpCoreSr25519Signature;1062    SpecVersion: SpecVersion;1063    SpRuntimeArithmeticError: SpRuntimeArithmeticError;1064    SpRuntimeDigest: SpRuntimeDigest;1065    SpRuntimeDigestDigestItem: SpRuntimeDigestDigestItem;1066    SpRuntimeDispatchError: SpRuntimeDispatchError;1067    SpRuntimeModuleError: SpRuntimeModuleError;1068    SpRuntimeMultiSignature: SpRuntimeMultiSignature;1069    SpRuntimeTokenError: SpRuntimeTokenError;1070    SpTrieStorageProof: SpTrieStorageProof;1071    SpVersionRuntimeVersion: SpVersionRuntimeVersion;1072    Sr25519Signature: Sr25519Signature;1073    StakingLedger: StakingLedger;1074    StakingLedgerTo223: StakingLedgerTo223;1075    StakingLedgerTo240: StakingLedgerTo240;1076    Statement: Statement;1077    StatementKind: StatementKind;1078    StorageChangeSet: StorageChangeSet;1079    StorageData: StorageData;1080    StorageDeposit: StorageDeposit;1081    StorageEntryMetadataLatest: StorageEntryMetadataLatest;1082    StorageEntryMetadataV10: StorageEntryMetadataV10;1083    StorageEntryMetadataV11: StorageEntryMetadataV11;1084    StorageEntryMetadataV12: StorageEntryMetadataV12;1085    StorageEntryMetadataV13: StorageEntryMetadataV13;1086    StorageEntryMetadataV14: StorageEntryMetadataV14;1087    StorageEntryMetadataV9: StorageEntryMetadataV9;1088    StorageEntryModifierLatest: StorageEntryModifierLatest;1089    StorageEntryModifierV10: StorageEntryModifierV10;1090    StorageEntryModifierV11: StorageEntryModifierV11;1091    StorageEntryModifierV12: StorageEntryModifierV12;1092    StorageEntryModifierV13: StorageEntryModifierV13;1093    StorageEntryModifierV14: StorageEntryModifierV14;1094    StorageEntryModifierV9: StorageEntryModifierV9;1095    StorageEntryTypeLatest: StorageEntryTypeLatest;1096    StorageEntryTypeV10: StorageEntryTypeV10;1097    StorageEntryTypeV11: StorageEntryTypeV11;1098    StorageEntryTypeV12: StorageEntryTypeV12;1099    StorageEntryTypeV13: StorageEntryTypeV13;1100    StorageEntryTypeV14: StorageEntryTypeV14;1101    StorageEntryTypeV9: StorageEntryTypeV9;1102    StorageHasher: StorageHasher;1103    StorageHasherV10: StorageHasherV10;1104    StorageHasherV11: StorageHasherV11;1105    StorageHasherV12: StorageHasherV12;1106    StorageHasherV13: StorageHasherV13;1107    StorageHasherV14: StorageHasherV14;1108    StorageHasherV9: StorageHasherV9;1109    StorageKey: StorageKey;1110    StorageKind: StorageKind;1111    StorageMetadataV10: StorageMetadataV10;1112    StorageMetadataV11: StorageMetadataV11;1113    StorageMetadataV12: StorageMetadataV12;1114    StorageMetadataV13: StorageMetadataV13;1115    StorageMetadataV9: StorageMetadataV9;1116    StorageProof: StorageProof;1117    StoredPendingChange: StoredPendingChange;1118    StoredState: StoredState;1119    StrikeCount: StrikeCount;1120    SubId: SubId;1121    SubmissionIndicesOf: SubmissionIndicesOf;1122    Supports: Supports;1123    SyncState: SyncState;1124    SystemInherentData: SystemInherentData;1125    SystemOrigin: SystemOrigin;1126    Tally: Tally;1127    TaskAddress: TaskAddress;1128    TAssetBalance: TAssetBalance;1129    TAssetDepositBalance: TAssetDepositBalance;1130    Text: Text;1131    Timepoint: Timepoint;1132    TokenError: TokenError;1133    TombstoneContractInfo: TombstoneContractInfo;1134    TraceBlockResponse: TraceBlockResponse;1135    TraceError: TraceError;1136    TransactionInfo: TransactionInfo;1137    TransactionPriority: TransactionPriority;1138    TransactionStorageProof: TransactionStorageProof;1139    TransactionV0: TransactionV0;1140    TransactionV1: TransactionV1;1141    TransactionV2: TransactionV2;1142    TransactionValidityError: TransactionValidityError;1143    TransientValidationData: TransientValidationData;1144    TreasuryProposal: TreasuryProposal;1145    TrieId: TrieId;1146    TrieIndex: TrieIndex;1147    Type: Type;1148    u128: u128;1149    U128: U128;1150    u16: u16;1151    U16: U16;1152    u256: u256;1153    U256: U256;1154    u32: u32;1155    U32: U32;1156    U32F32: U32F32;1157    u64: u64;1158    U64: U64;1159    u8: u8;1160    U8: U8;1161    UnappliedSlash: UnappliedSlash;1162    UnappliedSlashOther: UnappliedSlashOther;1163    UncleEntryItem: UncleEntryItem;1164    UnknownTransaction: UnknownTransaction;1165    UnlockChunk: UnlockChunk;1166    UnrewardedRelayer: UnrewardedRelayer;1167    UnrewardedRelayersState: UnrewardedRelayersState;1168    UpDataStructsAccessMode: UpDataStructsAccessMode;1169    UpDataStructsCollection: UpDataStructsCollection;1170    UpDataStructsCollectionField: UpDataStructsCollectionField;1171    UpDataStructsCollectionLimits: UpDataStructsCollectionLimits;1172    UpDataStructsCollectionMode: UpDataStructsCollectionMode;1173    UpDataStructsCollectionStats: UpDataStructsCollectionStats;1174    UpDataStructsCreateCollectionData: UpDataStructsCreateCollectionData;1175    UpDataStructsCreateFungibleData: UpDataStructsCreateFungibleData;1176    UpDataStructsCreateItemData: UpDataStructsCreateItemData;1177    UpDataStructsCreateItemExData: UpDataStructsCreateItemExData;1178    UpDataStructsCreateNftData: UpDataStructsCreateNftData;1179    UpDataStructsCreateNftExData: UpDataStructsCreateNftExData;1180    UpDataStructsCreateReFungibleData: UpDataStructsCreateReFungibleData;1181    UpDataStructsCreateRefungibleExData: UpDataStructsCreateRefungibleExData;1182    UpDataStructsMetaUpdatePermission: UpDataStructsMetaUpdatePermission;1183    UpDataStructsNestingRule: UpDataStructsNestingRule;1184    UpDataStructsProperties: UpDataStructsProperties;1185    UpDataStructsProperty: UpDataStructsProperty;1186    UpDataStructsPropertyKeyPermission: UpDataStructsPropertyKeyPermission;1187    UpDataStructsPropertyPermission: UpDataStructsPropertyPermission;1188    UpDataStructsRpcCollection: UpDataStructsRpcCollection;1189    UpDataStructsSchemaVersion: UpDataStructsSchemaVersion;1190    UpDataStructsSponsoringRateLimit: UpDataStructsSponsoringRateLimit;1191    UpDataStructsSponsorshipState: UpDataStructsSponsorshipState;1192    UpgradeGoAhead: UpgradeGoAhead;1193    UpgradeRestriction: UpgradeRestriction;1194    UpwardMessage: UpwardMessage;1195    usize: usize;1196    USize: USize;1197    ValidationCode: ValidationCode;1198    ValidationCodeHash: ValidationCodeHash;1199    ValidationData: ValidationData;1200    ValidationDataType: ValidationDataType;1201    ValidationFunctionParams: ValidationFunctionParams;1202    ValidatorCount: ValidatorCount;1203    ValidatorId: ValidatorId;1204    ValidatorIdOf: ValidatorIdOf;1205    ValidatorIndex: ValidatorIndex;1206    ValidatorIndexCompact: ValidatorIndexCompact;1207    ValidatorPrefs: ValidatorPrefs;1208    ValidatorPrefsTo145: ValidatorPrefsTo145;1209    ValidatorPrefsTo196: ValidatorPrefsTo196;1210    ValidatorPrefsWithBlocked: ValidatorPrefsWithBlocked;1211    ValidatorPrefsWithCommission: ValidatorPrefsWithCommission;1212    ValidatorSetId: ValidatorSetId;1213    ValidatorSignature: ValidatorSignature;1214    ValidDisputeStatementKind: ValidDisputeStatementKind;1215    ValidityAttestation: ValidityAttestation;1216    VecInboundHrmpMessage: VecInboundHrmpMessage;1217    VersionedMultiAsset: VersionedMultiAsset;1218    VersionedMultiAssets: VersionedMultiAssets;1219    VersionedMultiLocation: VersionedMultiLocation;1220    VersionedResponse: VersionedResponse;1221    VersionedXcm: VersionedXcm;1222    VersionMigrationStage: VersionMigrationStage;1223    VestingInfo: VestingInfo;1224    VestingSchedule: VestingSchedule;1225    Vote: Vote;1226    VoteIndex: VoteIndex;1227    Voter: Voter;1228    VoterInfo: VoterInfo;1229    Votes: Votes;1230    VotesTo230: VotesTo230;1231    VoteThreshold: VoteThreshold;1232    VoteWeight: VoteWeight;1233    Voting: Voting;1234    VotingDelegating: VotingDelegating;1235    VotingDirect: VotingDirect;1236    VotingDirectVote: VotingDirectVote;1237    VouchingStatus: VouchingStatus;1238    VrfData: VrfData;1239    VrfOutput: VrfOutput;1240    VrfProof: VrfProof;1241    Weight: Weight;1242    WeightLimitV2: WeightLimitV2;1243    WeightMultiplier: WeightMultiplier;1244    WeightPerClass: WeightPerClass;1245    WeightToFeeCoefficient: WeightToFeeCoefficient;1246    WildFungibility: WildFungibility;1247    WildFungibilityV0: WildFungibilityV0;1248    WildFungibilityV1: WildFungibilityV1;1249    WildFungibilityV2: WildFungibilityV2;1250    WildMultiAsset: WildMultiAsset;1251    WildMultiAssetV1: WildMultiAssetV1;1252    WildMultiAssetV2: WildMultiAssetV2;1253    WinnersData: WinnersData;1254    WinnersData10: WinnersData10;1255    WinnersDataTuple: WinnersDataTuple;1256    WinnersDataTuple10: WinnersDataTuple10;1257    WinningData: WinningData;1258    WinningData10: WinningData10;1259    WinningDataEntry: WinningDataEntry;1260    WithdrawReasons: WithdrawReasons;1261    Xcm: Xcm;1262    XcmAssetId: XcmAssetId;1263    XcmDoubleEncoded: XcmDoubleEncoded;1264    XcmError: XcmError;1265    XcmErrorV0: XcmErrorV0;1266    XcmErrorV1: XcmErrorV1;1267    XcmErrorV2: XcmErrorV2;1268    XcmOrder: XcmOrder;1269    XcmOrderV0: XcmOrderV0;1270    XcmOrderV1: XcmOrderV1;1271    XcmOrderV2: XcmOrderV2;1272    XcmOrigin: XcmOrigin;1273    XcmOriginKind: XcmOriginKind;1274    XcmpMessageFormat: XcmpMessageFormat;1275    XcmV0: XcmV0;1276    XcmV0Junction: XcmV0Junction;1277    XcmV0JunctionBodyId: XcmV0JunctionBodyId;1278    XcmV0JunctionBodyPart: XcmV0JunctionBodyPart;1279    XcmV0JunctionNetworkId: XcmV0JunctionNetworkId;1280    XcmV0MultiAsset: XcmV0MultiAsset;1281    XcmV0MultiLocation: XcmV0MultiLocation;1282    XcmV0Order: XcmV0Order;1283    XcmV0OriginKind: XcmV0OriginKind;1284    XcmV0Response: XcmV0Response;1285    XcmV0Xcm: XcmV0Xcm;1286    XcmV1: XcmV1;1287    XcmV1Junction: XcmV1Junction;1288    XcmV1MultiAsset: XcmV1MultiAsset;1289    XcmV1MultiassetAssetId: XcmV1MultiassetAssetId;1290    XcmV1MultiassetAssetInstance: XcmV1MultiassetAssetInstance;1291    XcmV1MultiassetFungibility: XcmV1MultiassetFungibility;1292    XcmV1MultiassetMultiAssetFilter: XcmV1MultiassetMultiAssetFilter;1293    XcmV1MultiassetMultiAssets: XcmV1MultiassetMultiAssets;1294    XcmV1MultiassetWildFungibility: XcmV1MultiassetWildFungibility;1295    XcmV1MultiassetWildMultiAsset: XcmV1MultiassetWildMultiAsset;1296    XcmV1MultiLocation: XcmV1MultiLocation;1297    XcmV1MultilocationJunctions: XcmV1MultilocationJunctions;1298    XcmV1Order: XcmV1Order;1299    XcmV1Response: XcmV1Response;1300    XcmV1Xcm: XcmV1Xcm;1301    XcmV2: XcmV2;1302    XcmV2Instruction: XcmV2Instruction;1303    XcmV2Response: XcmV2Response;1304    XcmV2TraitsError: XcmV2TraitsError;1305    XcmV2TraitsOutcome: XcmV2TraitsOutcome;1306    XcmV2WeightLimit: XcmV2WeightLimit;1307    XcmV2Xcm: XcmV2Xcm;1308    XcmVersion: XcmVersion;1309    XcmVersionedMultiAssets: XcmVersionedMultiAssets;1310    XcmVersionedMultiLocation: XcmVersionedMultiLocation;1311    XcmVersionedXcm: XcmVersionedXcm;1312  } // InterfaceTypes1313} // declare module
modifiedtests/src/interfaces/lookup.tsdiffbeforeafterboth
--- a/tests/src/interfaces/lookup.ts
+++ b/tests/src/interfaces/lookup.ts
@@ -23,7 +23,7 @@
    * Lookup10: sp_trie::storage_proof::StorageProof
    **/
   SpTrieStorageProof: {
-    trieNodes: 'BTreeSet<Bytes>'
+    trieNodes: 'Vec<Bytes>'
   },
   /**
    * Lookup13: cumulus_pallet_parachain_system::relay_state_snapshot::MessagingStateSnapshot
@@ -1469,7 +1469,7 @@
   /**
    * Lookup171: frame_support::storage::bounded_btree_set::BoundedBTreeSet<up_data_structs::CollectionId, S>
    **/
-  FrameSupportStorageBoundedBTreeSet: 'BTreeSet<u32>',
+  FrameSupportStorageBoundedBTreeSet: 'Vec<u32>',
   /**
    * Lookup177: up_data_structs::MetaUpdatePermission
    **/
@@ -1487,7 +1487,9 @@
    * Lookup181: up_data_structs::PropertyPermission
    **/
   UpDataStructsPropertyPermission: {
-    _enum: ['None', 'AdminConst', 'Admin', 'ItemOwnerConst', 'ItemOwner', 'ItemOwnerOrAdmin']
+    mutable: 'bool',
+    collectionAdmin: 'bool',
+    tokenOwner: 'bool'
   },
   /**
    * Lookup184: up_data_structs::Property
@@ -1520,7 +1522,8 @@
    **/
   UpDataStructsCreateNftData: {
     constData: 'Bytes',
-    variableData: 'Bytes'
+    variableData: 'Bytes',
+    properties: 'Vec<UpDataStructsProperty>'
   },
   /**
    * Lookup191: up_data_structs::CreateFungibleData
@@ -1553,6 +1556,7 @@
   UpDataStructsCreateNftExData: {
     constData: 'Bytes',
     variableData: 'Bytes',
+    properties: 'Vec<UpDataStructsProperty>',
     owner: 'PalletEvmAccountBasicCrossAccountIdRepr'
   },
   /**
@@ -2324,12 +2328,24 @@
     alive: 'u32'
   },
   /**
-   * Lookup325: PhantomType::up_data_structs<up_data_structs::RpcCollection<sp_core::crypto::AccountId32>>
+   * Lookup325: PhantomType::up_data_structs<up_data_structs::TokenData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>>
    **/
-  PhantomTypeUpDataStructs: '[Lookup326;0]',
+  PhantomTypeUpDataStructsTokenData: '[Lookup326;0]',
   /**
-   * Lookup326: up_data_structs::RpcCollection<sp_core::crypto::AccountId32>
+   * Lookup326: up_data_structs::TokenData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
    **/
+  UpDataStructsTokenData: {
+    constData: 'Bytes',
+    properties: 'Vec<UpDataStructsProperty>',
+    owner: 'Option<PalletEvmAccountBasicCrossAccountIdRepr>'
+  },
+  /**
+   * Lookup329: PhantomType::up_data_structs<up_data_structs::RpcCollection<sp_core::crypto::AccountId32>>
+   **/
+  PhantomTypeUpDataStructsRpcCollection: '[Lookup330;0]',
+  /**
+   * Lookup330: up_data_structs::RpcCollection<sp_core::crypto::AccountId32>
+   **/
   UpDataStructsRpcCollection: {
     owner: 'AccountId32',
     mode: 'UpDataStructsCollectionMode',
@@ -2347,32 +2363,32 @@
     metaUpdatePermission: 'UpDataStructsMetaUpdatePermission'
   },
   /**
-   * Lookup328: pallet_common::pallet::Error<T>
+   * Lookup332: pallet_common::pallet::Error<T>
    **/
   PalletCommonError: {
     _enum: ['CollectionNotFound', 'MustBeTokenOwner', 'NoPermission', 'PublicMintingNotAllowed', 'AddressNotInAllowlist', 'CollectionNameLimitExceeded', 'CollectionDescriptionLimitExceeded', 'CollectionTokenPrefixLimitExceeded', 'TotalCollectionsLimitExceeded', 'TokenVariableDataLimitExceeded', 'CollectionAdminCountExceeded', 'CollectionLimitBoundsExceeded', 'OwnerPermissionsCantBeReverted', 'TransferNotAllowed', 'AccountTokenLimitExceeded', 'CollectionTokenLimitExceeded', 'MetadataFlagFrozen', 'TokenNotFound', 'TokenValueTooLow', 'ApprovedValueTooLow', 'CantApproveMoreThanOwned', 'AddressIsZero', 'UnsupportedOperation', 'NotSufficientFounds', 'NestingIsDisabled', 'OnlyOwnerAllowedToNest', 'SourceCollectionIsNotAllowedToNest', 'CollectionFieldSizeExceeded', 'NoSpaceForProperty', 'PropertyLimitReached']
   },
   /**
-   * Lookup330: pallet_fungible::pallet::Error<T>
+   * Lookup334: pallet_fungible::pallet::Error<T>
    **/
   PalletFungibleError: {
-    _enum: ['NotFungibleDataUsedToMintFungibleCollectionToken', 'FungibleItemsHaveNoId', 'FungibleItemsDontHaveData', 'FungibleDisallowsNesting', 'PropertiesNotAllowed']
+    _enum: ['NotFungibleDataUsedToMintFungibleCollectionToken', 'FungibleItemsHaveNoId', 'FungibleItemsDontHaveData', 'FungibleDisallowsNesting', 'SettingPropertiesNotAllowed']
   },
   /**
-   * Lookup331: pallet_refungible::ItemData
+   * Lookup335: pallet_refungible::ItemData
    **/
   PalletRefungibleItemData: {
     constData: 'Bytes',
     variableData: 'Bytes'
   },
   /**
-   * Lookup335: pallet_refungible::pallet::Error<T>
+   * Lookup339: pallet_refungible::pallet::Error<T>
    **/
   PalletRefungibleError: {
-    _enum: ['NotRefungibleDataUsedToMintFungibleCollectionToken', 'WrongRefungiblePieces', 'RefungibleDisallowsNesting', 'PropertiesNotAllowed']
+    _enum: ['NotRefungibleDataUsedToMintFungibleCollectionToken', 'WrongRefungiblePieces', 'RefungibleDisallowsNesting', 'SettingPropertiesNotAllowed']
   },
   /**
-   * Lookup336: pallet_nonfungible::ItemData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
+   * Lookup340: pallet_nonfungible::ItemData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>
    **/
   PalletNonfungibleItemData: {
     constData: 'Bytes',
@@ -2380,25 +2396,25 @@
     owner: 'PalletEvmAccountBasicCrossAccountIdRepr'
   },
   /**
-   * Lookup337: pallet_nonfungible::pallet::Error<T>
+   * Lookup341: pallet_nonfungible::pallet::Error<T>
    **/
   PalletNonfungibleError: {
     _enum: ['NotNonfungibleDataUsedToMintFungibleCollectionToken', 'NonfungibleItemsHaveNoAmount']
   },
   /**
-   * Lookup338: pallet_structure::pallet::Error<T>
+   * Lookup342: pallet_structure::pallet::Error<T>
    **/
   PalletStructureError: {
     _enum: ['OuroborosDetected', 'DepthLimit', 'TokenNotFound']
   },
   /**
-   * Lookup340: pallet_evm::pallet::Error<T>
+   * Lookup344: pallet_evm::pallet::Error<T>
    **/
   PalletEvmError: {
     _enum: ['BalanceLow', 'FeeOverflow', 'PaymentOverflow', 'WithdrawFailed', 'GasPriceTooLow', 'InvalidNonce']
   },
   /**
-   * Lookup343: fp_rpc::TransactionStatus
+   * Lookup347: fp_rpc::TransactionStatus
    **/
   FpRpcTransactionStatus: {
     transactionHash: 'H256',
@@ -2410,11 +2426,11 @@
     logsBloom: 'EthbloomBloom'
   },
   /**
-   * Lookup346: ethbloom::Bloom
+   * Lookup350: ethbloom::Bloom
    **/
   EthbloomBloom: '[u8;256]',
   /**
-   * Lookup348: ethereum::receipt::ReceiptV3
+   * Lookup352: ethereum::receipt::ReceiptV3
    **/
   EthereumReceiptReceiptV3: {
     _enum: {
@@ -2424,7 +2440,7 @@
     }
   },
   /**
-   * Lookup349: ethereum::receipt::EIP658ReceiptData
+   * Lookup353: ethereum::receipt::EIP658ReceiptData
    **/
   EthereumReceiptEip658ReceiptData: {
     statusCode: 'u8',
@@ -2433,7 +2449,7 @@
     logs: 'Vec<EthereumLog>'
   },
   /**
-   * Lookup350: ethereum::block::Block<ethereum::transaction::TransactionV2>
+   * Lookup354: ethereum::block::Block<ethereum::transaction::TransactionV2>
    **/
   EthereumBlock: {
     header: 'EthereumHeader',
@@ -2441,7 +2457,7 @@
     ommers: 'Vec<EthereumHeader>'
   },
   /**
-   * Lookup351: ethereum::header::Header
+   * Lookup355: ethereum::header::Header
    **/
   EthereumHeader: {
     parentHash: 'H256',
@@ -2461,41 +2477,41 @@
     nonce: 'EthereumTypesHashH64'
   },
   /**
-   * Lookup352: ethereum_types::hash::H64
+   * Lookup356: ethereum_types::hash::H64
    **/
   EthereumTypesHashH64: '[u8;8]',
   /**
-   * Lookup357: pallet_ethereum::pallet::Error<T>
+   * Lookup361: pallet_ethereum::pallet::Error<T>
    **/
   PalletEthereumError: {
     _enum: ['InvalidSignature', 'PreLogExists']
   },
   /**
-   * Lookup358: pallet_evm_coder_substrate::pallet::Error<T>
+   * Lookup362: pallet_evm_coder_substrate::pallet::Error<T>
    **/
   PalletEvmCoderSubstrateError: {
     _enum: ['OutOfGas', 'OutOfFund']
   },
   /**
-   * Lookup359: pallet_evm_contract_helpers::SponsoringModeT
+   * Lookup363: pallet_evm_contract_helpers::SponsoringModeT
    **/
   PalletEvmContractHelpersSponsoringModeT: {
     _enum: ['Disabled', 'Allowlisted', 'Generous']
   },
   /**
-   * Lookup361: pallet_evm_contract_helpers::pallet::Error<T>
+   * Lookup365: pallet_evm_contract_helpers::pallet::Error<T>
    **/
   PalletEvmContractHelpersError: {
     _enum: ['NoPermission']
   },
   /**
-   * Lookup362: pallet_evm_migration::pallet::Error<T>
+   * Lookup366: pallet_evm_migration::pallet::Error<T>
    **/
   PalletEvmMigrationError: {
     _enum: ['AccountNotEmpty', 'AccountIsNotMigrating']
   },
   /**
-   * Lookup364: sp_runtime::MultiSignature
+   * Lookup368: sp_runtime::MultiSignature
    **/
   SpRuntimeMultiSignature: {
     _enum: {
@@ -2505,39 +2521,39 @@
     }
   },
   /**
-   * Lookup365: sp_core::ed25519::Signature
+   * Lookup369: sp_core::ed25519::Signature
    **/
   SpCoreEd25519Signature: '[u8;64]',
   /**
-   * Lookup367: sp_core::sr25519::Signature
+   * Lookup371: sp_core::sr25519::Signature
    **/
   SpCoreSr25519Signature: '[u8;64]',
   /**
-   * Lookup368: sp_core::ecdsa::Signature
+   * Lookup372: sp_core::ecdsa::Signature
    **/
   SpCoreEcdsaSignature: '[u8;65]',
   /**
-   * Lookup371: frame_system::extensions::check_spec_version::CheckSpecVersion<T>
+   * Lookup375: frame_system::extensions::check_spec_version::CheckSpecVersion<T>
    **/
   FrameSystemExtensionsCheckSpecVersion: 'Null',
   /**
-   * Lookup372: frame_system::extensions::check_genesis::CheckGenesis<T>
+   * Lookup376: frame_system::extensions::check_genesis::CheckGenesis<T>
    **/
   FrameSystemExtensionsCheckGenesis: 'Null',
   /**
-   * Lookup375: frame_system::extensions::check_nonce::CheckNonce<T>
+   * Lookup379: frame_system::extensions::check_nonce::CheckNonce<T>
    **/
   FrameSystemExtensionsCheckNonce: 'Compact<u32>',
   /**
-   * Lookup376: frame_system::extensions::check_weight::CheckWeight<T>
+   * Lookup380: frame_system::extensions::check_weight::CheckWeight<T>
    **/
   FrameSystemExtensionsCheckWeight: 'Null',
   /**
-   * Lookup377: pallet_template_transaction_payment::ChargeTransactionPayment<opal_runtime::Runtime>
+   * Lookup381: pallet_template_transaction_payment::ChargeTransactionPayment<opal_runtime::Runtime>
    **/
   PalletTemplateTransactionPaymentChargeTransactionPayment: 'Compact<u128>',
   /**
-   * Lookup378: opal_runtime::Runtime
+   * Lookup382: opal_runtime::Runtime
    **/
   OpalRuntimeRuntime: 'Null'
 };
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';