From 63b9443a2b7f7359c15bfc87da8b048e043a2d48 Mon Sep 17 00:00:00 2001 From: ut-akuznetsov <59873862+ut-akuznetsov@users.noreply.github.com> Date: Tue, 14 Jun 2022 15:37:19 +0000 Subject: [PATCH] Merge pull request #383 from UniqueNetwork/test/nesting-admin --- --- a/pallets/common/src/benchmarking.rs +++ b/pallets/common/src/benchmarking.rs @@ -96,7 +96,7 @@ permissions: Some(CollectionPermissions { nesting: Some(NestingPermissions { token_owner: false, - admin: false, + collection_admin: false, restricted: None, permissive: true, }), --- a/pallets/nonfungible/src/lib.rs +++ b/pallets/nonfungible/src/lib.rs @@ -1008,7 +1008,7 @@ nesting_budget, )? { // Pass - } else if nesting.admin && handle.is_owner_or_admin(&sender) { + } else if nesting.collection_admin && handle.is_owner_or_admin(&sender) { // Pass } else { fail!(>::UserIsNotAllowedToNest); --- a/pallets/proxy-rmrk-core/src/lib.rs +++ b/pallets/proxy-rmrk-core/src/lib.rs @@ -199,7 +199,7 @@ permissions: Some(CollectionPermissions { nesting: Some(NestingPermissions { token_owner: true, - admin: false, + collection_admin: false, restricted: None, permissive: false, --- a/primitives/data-structs/src/lib.rs +++ b/primitives/data-structs/src/lib.rs @@ -447,7 +447,7 @@ pub fn nesting(&self) -> &NestingPermissions { static DEFAULT: NestingPermissions = NestingPermissions { token_owner: false, - admin: false, + collection_admin: false, restricted: None, permissive: false, @@ -490,7 +490,7 @@ /// Owner of token can nest tokens under it pub token_owner: bool, /// Admin of token collection can nest tokens under token - pub admin: bool, + pub collection_admin: bool, /// If set - only tokens from specified collections can be nested pub restricted: Option, --- a/tests/src/interfaces/augment-api-errors.ts +++ b/tests/src/interfaces/augment-api-errors.ts @@ -458,6 +458,7 @@ ResourceNotPending: AugmentedError; RmrkPropertyKeyIsTooLong: AugmentedError; RmrkPropertyValueIsTooLong: AugmentedError; + UnableToDecodeRmrkData: AugmentedError; /** * Generic error **/ --- a/tests/src/interfaces/augment-api-query.ts +++ b/tests/src/interfaces/augment-api-query.ts @@ -417,7 +417,6 @@ }; rmrkCore: { collectionIndex: AugmentedQuery Observable, []> & QueryableStorageEntry; - rmrkInernalCollectionId: AugmentedQuery Observable, [u32]> & QueryableStorageEntry; uniqueCollectionId: AugmentedQuery Observable, [u32]> & QueryableStorageEntry; /** * Generic query --- a/tests/src/interfaces/augment-api-tx.ts +++ b/tests/src/interfaces/augment-api-tx.ts @@ -5,7 +5,7 @@ import type { Bytes, Compact, Option, U256, U8aFixed, Vec, bool, u128, u16, u32, u64, u8 } from '@polkadot/types-codec'; import type { AnyNumber, IMethod, ITuple } from '@polkadot/types-codec/types'; import type { AccountId32, Call, H160, H256, MultiAddress, Perbill, Permill } from '@polkadot/types/interfaces/runtime'; -import type { CumulusPrimitivesParachainInherentParachainInherentData, EthereumTransactionTransactionV2, FrameSupportScheduleMaybeHashed, OrmlVestingVestingSchedule, PalletEvmAccountBasicCrossAccountIdRepr, RmrkTraitsNftAccountIdOrCollectionNftTuple, RmrkTraitsPartPartType, RmrkTraitsResourceBasicResource, RmrkTraitsResourceComposableResource, RmrkTraitsResourceSlotResource, RmrkTraitsTheme, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCollectionPermissions, UpDataStructsCreateCollectionData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, XcmV1MultiLocation, XcmV2WeightLimit, XcmVersionedMultiAssets, XcmVersionedMultiLocation, XcmVersionedXcm } from '@polkadot/types/lookup'; +import type { CumulusPrimitivesParachainInherentParachainInherentData, EthereumTransactionTransactionV2, FrameSupportScheduleMaybeHashed, OrmlVestingVestingSchedule, PalletEvmAccountBasicCrossAccountIdRepr, RmrkTraitsNftAccountIdOrCollectionNftTuple, RmrkTraitsPartPartType, RmrkTraitsResourceBasicResource, RmrkTraitsResourceComposableResource, RmrkTraitsResourceResourceTypes, RmrkTraitsResourceSlotResource, RmrkTraitsTheme, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCollectionPermissions, UpDataStructsCreateCollectionData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, XcmV1MultiLocation, XcmV2WeightLimit, XcmVersionedMultiAssets, XcmVersionedMultiLocation, XcmVersionedXcm } from '@polkadot/types/lookup'; declare module '@polkadot/api-base/types/submittable' { export interface AugmentedSubmittables { @@ -373,7 +373,7 @@ /** * Create composable resource **/ - addComposableResource: AugmentedSubmittable<(rmrkCollectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array, resourceId: Bytes | string | Uint8Array, resource: RmrkTraitsResourceComposableResource | { parts?: any; base?: any; src?: any; metadata?: any; license?: any; thumb?: any } | string | Uint8Array) => SubmittableExtrinsic, [u32, u32, Bytes, RmrkTraitsResourceComposableResource]>; + addComposableResource: AugmentedSubmittable<(rmrkCollectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array, resource: RmrkTraitsResourceComposableResource | { parts?: any; base?: any; src?: any; metadata?: any; license?: any; thumb?: any } | string | Uint8Array) => SubmittableExtrinsic, [u32, u32, RmrkTraitsResourceComposableResource]>; /** * Create slot resource **/ @@ -381,7 +381,7 @@ /** * burn nft **/ - burnNft: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u32, u32]>; + burnNft: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array, maxBurns: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u32, u32, u32]>; /** * Change the issuer of a collection * @@ -415,7 +415,7 @@ * - `metadata`: Arbitrary data about an nft, e.g. IPFS hash * - `transferable`: Ability to transfer this NFT **/ - mintNft: AugmentedSubmittable<(owner: AccountId32 | string | Uint8Array, collectionId: u32 | AnyNumber | Uint8Array, recipient: Option | null | object | string | Uint8Array, royaltyAmount: Option | null | object | string | Uint8Array, metadata: Bytes | string | Uint8Array, transferable: bool | boolean | Uint8Array) => SubmittableExtrinsic, [AccountId32, u32, Option, Option, Bytes, bool]>; + mintNft: AugmentedSubmittable<(owner: AccountId32 | string | Uint8Array, collectionId: u32 | AnyNumber | Uint8Array, recipient: Option | null | object | string | Uint8Array, royaltyAmount: Option | null | object | string | Uint8Array, metadata: Bytes | string | Uint8Array, transferable: bool | boolean | Uint8Array, resources: Option> | null | object | string | Uint8Array) => SubmittableExtrinsic, [AccountId32, u32, Option, Option, Bytes, bool, Option>]>; /** * Rejects an NFT sent from another account to self or owned NFT * --- a/tests/src/interfaces/default/types.ts +++ b/tests/src/interfaces/default/types.ts @@ -1214,11 +1214,13 @@ readonly royaltyAmount: Option; readonly metadata: Bytes; readonly transferable: bool; + readonly resources: Option>; } & Struct; readonly isBurnNft: boolean; readonly asBurnNft: { readonly collectionId: u32; readonly nftId: u32; + readonly maxBurns: u32; } & Struct; readonly isSend: boolean; readonly asSend: { @@ -1272,7 +1274,6 @@ readonly asAddComposableResource: { readonly rmrkCollectionId: u32; readonly nftId: u32; - readonly resourceId: Bytes; readonly resource: RmrkTraitsResourceComposableResource; } & Struct; readonly isAddSlotResource: boolean; @@ -1296,6 +1297,7 @@ readonly isNftTypeEncodeError: boolean; readonly isRmrkPropertyKeyIsTooLong: boolean; readonly isRmrkPropertyValueIsTooLong: boolean; + readonly isUnableToDecodeRmrkData: boolean; readonly isCollectionNotEmpty: boolean; readonly isNoAvailableCollectionId: boolean; readonly isNoAvailableNftId: boolean; @@ -1308,7 +1310,7 @@ readonly isCannotAcceptNonOwnedNft: boolean; readonly isCannotRejectNonOwnedNft: boolean; readonly isResourceNotPending: boolean; - readonly type: 'CorruptedCollectionType' | 'NftTypeEncodeError' | 'RmrkPropertyKeyIsTooLong' | 'RmrkPropertyValueIsTooLong' | 'CollectionNotEmpty' | 'NoAvailableCollectionId' | 'NoAvailableNftId' | 'CollectionUnknown' | 'NoPermission' | 'NonTransferable' | 'CollectionFullOrLocked' | 'ResourceDoesntExist' | 'CannotSendToDescendentOrSelf' | 'CannotAcceptNonOwnedNft' | 'CannotRejectNonOwnedNft' | 'ResourceNotPending'; + readonly type: 'CorruptedCollectionType' | 'NftTypeEncodeError' | 'RmrkPropertyKeyIsTooLong' | 'RmrkPropertyValueIsTooLong' | 'UnableToDecodeRmrkData' | 'CollectionNotEmpty' | 'NoAvailableCollectionId' | 'NoAvailableNftId' | 'CollectionUnknown' | 'NoPermission' | 'NonTransferable' | 'CollectionFullOrLocked' | 'ResourceDoesntExist' | 'CannotSendToDescendentOrSelf' | 'CannotAcceptNonOwnedNft' | 'CannotRejectNonOwnedNft' | 'ResourceNotPending'; } /** @name PalletRmrkCoreEvent */ @@ -2427,7 +2429,7 @@ /** @name UpDataStructsNestingPermissions */ export interface UpDataStructsNestingPermissions extends Struct { readonly tokenOwner: bool; - readonly admin: bool; + readonly collectionAdmin: bool; readonly restricted: Option; readonly permissive: bool; } --- a/tests/src/interfaces/lookup.ts +++ b/tests/src/interfaces/lookup.ts @@ -1432,7 +1432,7 @@ **/ UpDataStructsNestingPermissions: { tokenOwner: 'bool', - admin: 'bool', + collectionAdmin: 'bool', restricted: 'Option', permissive: 'bool' }, @@ -1593,10 +1593,12 @@ royaltyAmount: 'Option', metadata: 'Bytes', transferable: 'bool', + resources: 'Option>', }, burn_nft: { collectionId: 'u32', nftId: 'u32', + maxBurns: 'u32', }, send: { rmrkCollectionId: 'u32', @@ -1641,7 +1643,6 @@ add_composable_resource: { rmrkCollectionId: 'u32', nftId: 'u32', - resourceId: 'Bytes', resource: 'RmrkTraitsResourceComposableResource', }, add_slot_resource: { @@ -1657,12 +1658,13 @@ } }, /** - * Lookup215: rmrk_traits::nft::AccountIdOrCollectionNftTuple + * Lookup217: rmrk_traits::resource::ResourceTypes, frame_support::storage::bounded_vec::BoundedVec> **/ - RmrkTraitsNftAccountIdOrCollectionNftTuple: { + RmrkTraitsResourceResourceTypes: { _enum: { - AccountId: 'AccountId32', - CollectionAndNftTuple: '(u32,u32)' + Basic: 'RmrkTraitsResourceBasicResource', + Composable: 'RmrkTraitsResourceComposableResource', + Slot: 'RmrkTraitsResourceSlotResource' } }, /** @@ -1675,7 +1677,7 @@ thumb: 'Option' }, /** - * Lookup222: rmrk_traits::resource::ComposableResource, frame_support::storage::bounded_vec::BoundedVec> + * Lookup221: rmrk_traits::resource::ComposableResource, frame_support::storage::bounded_vec::BoundedVec> **/ RmrkTraitsResourceComposableResource: { parts: 'Vec', @@ -1686,7 +1688,7 @@ thumb: 'Option' }, /** - * Lookup224: rmrk_traits::resource::SlotResource> + * Lookup222: rmrk_traits::resource::SlotResource> **/ RmrkTraitsResourceSlotResource: { base: 'u32', @@ -1697,8 +1699,17 @@ thumb: 'Option' }, /** - * Lookup225: pallet_rmrk_equip::pallet::Call + * Lookup224: rmrk_traits::nft::AccountIdOrCollectionNftTuple **/ + RmrkTraitsNftAccountIdOrCollectionNftTuple: { + _enum: { + AccountId: 'AccountId32', + CollectionAndNftTuple: '(u32,u32)' + } + }, + /** + * Lookup228: pallet_rmrk_equip::pallet::Call + **/ PalletRmrkEquipCall: { _enum: { create_base: { @@ -1713,7 +1724,7 @@ } }, /** - * Lookup227: rmrk_traits::part::PartType, frame_support::storage::bounded_vec::BoundedVec> + * Lookup230: rmrk_traits::part::PartType, frame_support::storage::bounded_vec::BoundedVec> **/ RmrkTraitsPartPartType: { _enum: { @@ -1722,7 +1733,7 @@ } }, /** - * Lookup229: rmrk_traits::part::FixedPart> + * Lookup232: rmrk_traits::part::FixedPart> **/ RmrkTraitsPartFixedPart: { id: 'u32', @@ -1730,7 +1741,7 @@ src: 'Bytes' }, /** - * Lookup230: rmrk_traits::part::SlotPart, frame_support::storage::bounded_vec::BoundedVec> + * Lookup233: rmrk_traits::part::SlotPart, frame_support::storage::bounded_vec::BoundedVec> **/ RmrkTraitsPartSlotPart: { id: 'u32', @@ -1739,7 +1750,7 @@ z: 'u32' }, /** - * Lookup231: rmrk_traits::part::EquippableList> + * Lookup234: rmrk_traits::part::EquippableList> **/ RmrkTraitsPartEquippableList: { _enum: { @@ -1749,7 +1760,7 @@ } }, /** - * Lookup233: rmrk_traits::theme::Theme, PropertyList> + * Lookup236: rmrk_traits::theme::Theme, PropertyList> **/ RmrkTraitsTheme: { name: 'Bytes', @@ -1757,14 +1768,14 @@ inherit: 'bool' }, /** - * Lookup235: rmrk_traits::theme::ThemeProperty> + * Lookup238: rmrk_traits::theme::ThemeProperty> **/ RmrkTraitsThemeThemeProperty: { key: 'Bytes', value: 'Bytes' }, /** - * Lookup236: pallet_evm::pallet::Call + * Lookup239: pallet_evm::pallet::Call **/ PalletEvmCall: { _enum: { @@ -1807,7 +1818,7 @@ } }, /** - * Lookup242: pallet_ethereum::pallet::Call + * Lookup245: pallet_ethereum::pallet::Call **/ PalletEthereumCall: { _enum: { @@ -1817,7 +1828,7 @@ } }, /** - * Lookup243: ethereum::transaction::TransactionV2 + * Lookup246: ethereum::transaction::TransactionV2 **/ EthereumTransactionTransactionV2: { _enum: { @@ -1827,7 +1838,7 @@ } }, /** - * Lookup244: ethereum::transaction::LegacyTransaction + * Lookup247: ethereum::transaction::LegacyTransaction **/ EthereumTransactionLegacyTransaction: { nonce: 'U256', @@ -1839,7 +1850,7 @@ signature: 'EthereumTransactionTransactionSignature' }, /** - * Lookup245: ethereum::transaction::TransactionAction + * Lookup248: ethereum::transaction::TransactionAction **/ EthereumTransactionTransactionAction: { _enum: { @@ -1848,7 +1859,7 @@ } }, /** - * Lookup246: ethereum::transaction::TransactionSignature + * Lookup249: ethereum::transaction::TransactionSignature **/ EthereumTransactionTransactionSignature: { v: 'u64', @@ -1856,7 +1867,7 @@ s: 'H256' }, /** - * Lookup248: ethereum::transaction::EIP2930Transaction + * Lookup251: ethereum::transaction::EIP2930Transaction **/ EthereumTransactionEip2930Transaction: { chainId: 'u64', @@ -1872,14 +1883,14 @@ s: 'H256' }, /** - * Lookup250: ethereum::transaction::AccessListItem + * Lookup253: ethereum::transaction::AccessListItem **/ EthereumTransactionAccessListItem: { address: 'H160', storageKeys: 'Vec' }, /** - * Lookup251: ethereum::transaction::EIP1559Transaction + * Lookup254: ethereum::transaction::EIP1559Transaction **/ EthereumTransactionEip1559Transaction: { chainId: 'u64', @@ -1896,7 +1907,7 @@ s: 'H256' }, /** - * Lookup252: pallet_evm_migration::pallet::Call + * Lookup255: pallet_evm_migration::pallet::Call **/ PalletEvmMigrationCall: { _enum: { @@ -1914,7 +1925,7 @@ } }, /** - * Lookup255: pallet_sudo::pallet::Event + * Lookup258: pallet_sudo::pallet::Event **/ PalletSudoEvent: { _enum: { @@ -1930,7 +1941,7 @@ } }, /** - * Lookup257: sp_runtime::DispatchError + * Lookup260: sp_runtime::DispatchError **/ SpRuntimeDispatchError: { _enum: { @@ -1947,38 +1958,38 @@ } }, /** - * Lookup258: sp_runtime::ModuleError + * Lookup261: sp_runtime::ModuleError **/ SpRuntimeModuleError: { index: 'u8', error: '[u8;4]' }, /** - * Lookup259: sp_runtime::TokenError + * Lookup262: sp_runtime::TokenError **/ SpRuntimeTokenError: { _enum: ['NoFunds', 'WouldDie', 'BelowMinimum', 'CannotCreate', 'UnknownAsset', 'Frozen', 'Unsupported'] }, /** - * Lookup260: sp_runtime::ArithmeticError + * Lookup263: sp_runtime::ArithmeticError **/ SpRuntimeArithmeticError: { _enum: ['Underflow', 'Overflow', 'DivisionByZero'] }, /** - * Lookup261: sp_runtime::TransactionalError + * Lookup264: sp_runtime::TransactionalError **/ SpRuntimeTransactionalError: { _enum: ['LimitReached', 'NoLayer'] }, /** - * Lookup262: pallet_sudo::pallet::Error + * Lookup265: pallet_sudo::pallet::Error **/ PalletSudoError: { _enum: ['RequireSudo'] }, /** - * Lookup263: frame_system::AccountInfo> + * Lookup266: frame_system::AccountInfo> **/ FrameSystemAccountInfo: { nonce: 'u32', @@ -1988,7 +1999,7 @@ data: 'PalletBalancesAccountData' }, /** - * Lookup264: frame_support::weights::PerDispatchClass + * Lookup267: frame_support::weights::PerDispatchClass **/ FrameSupportWeightsPerDispatchClassU64: { normal: 'u64', @@ -1996,13 +2007,13 @@ mandatory: 'u64' }, /** - * Lookup265: sp_runtime::generic::digest::Digest + * Lookup268: sp_runtime::generic::digest::Digest **/ SpRuntimeDigest: { logs: 'Vec' }, /** - * Lookup267: sp_runtime::generic::digest::DigestItem + * Lookup270: sp_runtime::generic::digest::DigestItem **/ SpRuntimeDigestDigestItem: { _enum: { @@ -2018,7 +2029,7 @@ } }, /** - * Lookup269: frame_system::EventRecord + * Lookup272: frame_system::EventRecord **/ FrameSystemEventRecord: { phase: 'FrameSystemPhase', @@ -2026,7 +2037,7 @@ topics: 'Vec' }, /** - * Lookup271: frame_system::pallet::Event + * Lookup274: frame_system::pallet::Event **/ FrameSystemEvent: { _enum: { @@ -2054,7 +2065,7 @@ } }, /** - * Lookup272: frame_support::weights::DispatchInfo + * Lookup275: frame_support::weights::DispatchInfo **/ FrameSupportWeightsDispatchInfo: { weight: 'u64', @@ -2062,19 +2073,19 @@ paysFee: 'FrameSupportWeightsPays' }, /** - * Lookup273: frame_support::weights::DispatchClass + * Lookup276: frame_support::weights::DispatchClass **/ FrameSupportWeightsDispatchClass: { _enum: ['Normal', 'Operational', 'Mandatory'] }, /** - * Lookup274: frame_support::weights::Pays + * Lookup277: frame_support::weights::Pays **/ FrameSupportWeightsPays: { _enum: ['Yes', 'No'] }, /** - * Lookup275: orml_vesting::module::Event + * Lookup278: orml_vesting::module::Event **/ OrmlVestingModuleEvent: { _enum: { @@ -2093,7 +2104,7 @@ } }, /** - * Lookup276: cumulus_pallet_xcmp_queue::pallet::Event + * Lookup279: cumulus_pallet_xcmp_queue::pallet::Event **/ CumulusPalletXcmpQueueEvent: { _enum: { @@ -2108,7 +2119,7 @@ } }, /** - * Lookup277: pallet_xcm::pallet::Event + * Lookup280: pallet_xcm::pallet::Event **/ PalletXcmEvent: { _enum: { @@ -2131,7 +2142,7 @@ } }, /** - * Lookup278: xcm::v2::traits::Outcome + * Lookup281: xcm::v2::traits::Outcome **/ XcmV2TraitsOutcome: { _enum: { @@ -2141,7 +2152,7 @@ } }, /** - * Lookup280: cumulus_pallet_xcm::pallet::Event + * Lookup283: cumulus_pallet_xcm::pallet::Event **/ CumulusPalletXcmEvent: { _enum: { @@ -2151,7 +2162,7 @@ } }, /** - * Lookup281: cumulus_pallet_dmp_queue::pallet::Event + * Lookup284: cumulus_pallet_dmp_queue::pallet::Event **/ CumulusPalletDmpQueueEvent: { _enum: { @@ -2164,7 +2175,7 @@ } }, /** - * Lookup282: pallet_unique::RawEvent> + * Lookup285: pallet_unique::RawEvent> **/ PalletUniqueRawEvent: { _enum: { @@ -2181,7 +2192,7 @@ } }, /** - * Lookup283: pallet_unique_scheduler::pallet::Event + * Lookup286: pallet_unique_scheduler::pallet::Event **/ PalletUniqueSchedulerEvent: { _enum: { @@ -2206,13 +2217,13 @@ } }, /** - * Lookup285: frame_support::traits::schedule::LookupError + * Lookup288: frame_support::traits::schedule::LookupError **/ FrameSupportScheduleLookupError: { _enum: ['Unknown', 'BadFormat'] }, /** - * Lookup286: pallet_common::pallet::Event + * Lookup289: pallet_common::pallet::Event **/ PalletCommonEvent: { _enum: { @@ -2230,7 +2241,7 @@ } }, /** - * Lookup287: pallet_structure::pallet::Event + * Lookup290: pallet_structure::pallet::Event **/ PalletStructureEvent: { _enum: { @@ -2238,7 +2249,7 @@ } }, /** - * Lookup288: pallet_rmrk_core::pallet::Event + * Lookup291: pallet_rmrk_core::pallet::Event **/ PalletRmrkCoreEvent: { _enum: { @@ -2315,7 +2326,7 @@ } }, /** - * Lookup289: pallet_rmrk_equip::pallet::Event + * Lookup292: pallet_rmrk_equip::pallet::Event **/ PalletRmrkEquipEvent: { _enum: { @@ -2326,7 +2337,7 @@ } }, /** - * Lookup290: pallet_evm::pallet::Event + * Lookup293: pallet_evm::pallet::Event **/ PalletEvmEvent: { _enum: { @@ -2340,7 +2351,7 @@ } }, /** - * Lookup291: ethereum::log::Log + * Lookup294: ethereum::log::Log **/ EthereumLog: { address: 'H160', @@ -2348,7 +2359,7 @@ data: 'Bytes' }, /** - * Lookup292: pallet_ethereum::pallet::Event + * Lookup295: pallet_ethereum::pallet::Event **/ PalletEthereumEvent: { _enum: { @@ -2356,7 +2367,7 @@ } }, /** - * Lookup293: evm_core::error::ExitReason + * Lookup296: evm_core::error::ExitReason **/ EvmCoreErrorExitReason: { _enum: { @@ -2367,13 +2378,13 @@ } }, /** - * Lookup294: evm_core::error::ExitSucceed + * Lookup297: evm_core::error::ExitSucceed **/ EvmCoreErrorExitSucceed: { _enum: ['Stopped', 'Returned', 'Suicided'] }, /** - * Lookup295: evm_core::error::ExitError + * Lookup298: evm_core::error::ExitError **/ EvmCoreErrorExitError: { _enum: { @@ -2395,13 +2406,13 @@ } }, /** - * Lookup298: evm_core::error::ExitRevert + * Lookup301: evm_core::error::ExitRevert **/ EvmCoreErrorExitRevert: { _enum: ['Reverted'] }, /** - * Lookup299: evm_core::error::ExitFatal + * Lookup302: evm_core::error::ExitFatal **/ EvmCoreErrorExitFatal: { _enum: { @@ -2412,7 +2423,7 @@ } }, /** - * Lookup300: frame_system::Phase + * Lookup303: frame_system::Phase **/ FrameSystemPhase: { _enum: { @@ -2422,14 +2433,14 @@ } }, /** - * Lookup302: frame_system::LastRuntimeUpgradeInfo + * Lookup305: frame_system::LastRuntimeUpgradeInfo **/ FrameSystemLastRuntimeUpgradeInfo: { specVersion: 'Compact', specName: 'Text' }, /** - * Lookup303: frame_system::limits::BlockWeights + * Lookup306: frame_system::limits::BlockWeights **/ FrameSystemLimitsBlockWeights: { baseBlock: 'u64', @@ -2437,7 +2448,7 @@ perClass: 'FrameSupportWeightsPerDispatchClassWeightsPerClass' }, /** - * Lookup304: frame_support::weights::PerDispatchClass + * Lookup307: frame_support::weights::PerDispatchClass **/ FrameSupportWeightsPerDispatchClassWeightsPerClass: { normal: 'FrameSystemLimitsWeightsPerClass', @@ -2445,7 +2456,7 @@ mandatory: 'FrameSystemLimitsWeightsPerClass' }, /** - * Lookup305: frame_system::limits::WeightsPerClass + * Lookup308: frame_system::limits::WeightsPerClass **/ FrameSystemLimitsWeightsPerClass: { baseExtrinsic: 'u64', @@ -2454,13 +2465,13 @@ reserved: 'Option' }, /** - * Lookup307: frame_system::limits::BlockLength + * Lookup310: frame_system::limits::BlockLength **/ FrameSystemLimitsBlockLength: { max: 'FrameSupportWeightsPerDispatchClassU32' }, /** - * Lookup308: frame_support::weights::PerDispatchClass + * Lookup311: frame_support::weights::PerDispatchClass **/ FrameSupportWeightsPerDispatchClassU32: { normal: 'u32', @@ -2468,14 +2479,14 @@ mandatory: 'u32' }, /** - * Lookup309: frame_support::weights::RuntimeDbWeight + * Lookup312: frame_support::weights::RuntimeDbWeight **/ FrameSupportWeightsRuntimeDbWeight: { read: 'u64', write: 'u64' }, /** - * Lookup310: sp_version::RuntimeVersion + * Lookup313: sp_version::RuntimeVersion **/ SpVersionRuntimeVersion: { specName: 'Text', @@ -2488,19 +2499,19 @@ stateVersion: 'u8' }, /** - * Lookup314: frame_system::pallet::Error + * Lookup317: frame_system::pallet::Error **/ FrameSystemError: { _enum: ['InvalidSpecName', 'SpecVersionNeedsToIncrease', 'FailedToExtractRuntimeVersion', 'NonDefaultComposite', 'NonZeroRefCount', 'CallFiltered'] }, /** - * Lookup316: orml_vesting::module::Error + * Lookup319: orml_vesting::module::Error **/ OrmlVestingModuleError: { _enum: ['ZeroVestingPeriod', 'ZeroVestingPeriodCount', 'InsufficientBalanceToLock', 'TooManyVestingSchedules', 'AmountLow', 'MaxVestingSchedulesExceeded'] }, /** - * Lookup318: cumulus_pallet_xcmp_queue::InboundChannelDetails + * Lookup321: cumulus_pallet_xcmp_queue::InboundChannelDetails **/ CumulusPalletXcmpQueueInboundChannelDetails: { sender: 'u32', @@ -2508,19 +2519,19 @@ messageMetadata: 'Vec<(u32,PolkadotParachainPrimitivesXcmpMessageFormat)>' }, /** - * Lookup319: cumulus_pallet_xcmp_queue::InboundState + * Lookup322: cumulus_pallet_xcmp_queue::InboundState **/ CumulusPalletXcmpQueueInboundState: { _enum: ['Ok', 'Suspended'] }, /** - * Lookup322: polkadot_parachain::primitives::XcmpMessageFormat + * Lookup325: polkadot_parachain::primitives::XcmpMessageFormat **/ PolkadotParachainPrimitivesXcmpMessageFormat: { _enum: ['ConcatenatedVersionedXcm', 'ConcatenatedEncodedBlob', 'Signals'] }, /** - * Lookup325: cumulus_pallet_xcmp_queue::OutboundChannelDetails + * Lookup328: cumulus_pallet_xcmp_queue::OutboundChannelDetails **/ CumulusPalletXcmpQueueOutboundChannelDetails: { recipient: 'u32', @@ -2530,13 +2541,13 @@ lastIndex: 'u16' }, /** - * Lookup326: cumulus_pallet_xcmp_queue::OutboundState + * Lookup329: cumulus_pallet_xcmp_queue::OutboundState **/ CumulusPalletXcmpQueueOutboundState: { _enum: ['Ok', 'Suspended'] }, /** - * Lookup328: cumulus_pallet_xcmp_queue::QueueConfigData + * Lookup331: cumulus_pallet_xcmp_queue::QueueConfigData **/ CumulusPalletXcmpQueueQueueConfigData: { suspendThreshold: 'u32', @@ -2547,29 +2558,29 @@ xcmpMaxIndividualWeight: 'u64' }, /** - * Lookup330: cumulus_pallet_xcmp_queue::pallet::Error + * Lookup333: cumulus_pallet_xcmp_queue::pallet::Error **/ CumulusPalletXcmpQueueError: { _enum: ['FailedToSend', 'BadXcmOrigin', 'BadXcm', 'BadOverweightIndex', 'WeightOverLimit'] }, /** - * Lookup331: pallet_xcm::pallet::Error + * Lookup334: pallet_xcm::pallet::Error **/ PalletXcmError: { _enum: ['Unreachable', 'SendFailure', 'Filtered', 'UnweighableMessage', 'DestinationNotInvertible', 'Empty', 'CannotReanchor', 'TooManyAssets', 'InvalidOrigin', 'BadVersion', 'BadLocation', 'NoSubscription', 'AlreadySubscribed'] }, /** - * Lookup332: cumulus_pallet_xcm::pallet::Error + * Lookup335: cumulus_pallet_xcm::pallet::Error **/ CumulusPalletXcmError: 'Null', /** - * Lookup333: cumulus_pallet_dmp_queue::ConfigData + * Lookup336: cumulus_pallet_dmp_queue::ConfigData **/ CumulusPalletDmpQueueConfigData: { maxIndividual: 'u64' }, /** - * Lookup334: cumulus_pallet_dmp_queue::PageIndexData + * Lookup337: cumulus_pallet_dmp_queue::PageIndexData **/ CumulusPalletDmpQueuePageIndexData: { beginUsed: 'u32', @@ -2577,19 +2588,19 @@ overweightCount: 'u64' }, /** - * Lookup337: cumulus_pallet_dmp_queue::pallet::Error + * Lookup340: cumulus_pallet_dmp_queue::pallet::Error **/ CumulusPalletDmpQueueError: { _enum: ['Unknown', 'OverLimit'] }, /** - * Lookup341: pallet_unique::Error + * Lookup344: pallet_unique::Error **/ PalletUniqueError: { _enum: ['CollectionDecimalPointLimitExceeded', 'ConfirmUnsetSponsorFail', 'EmptyArgument'] }, /** - * Lookup344: pallet_unique_scheduler::ScheduledV3, BlockNumber, opal_runtime::OriginCaller, sp_core::crypto::AccountId32> + * Lookup347: pallet_unique_scheduler::ScheduledV3, BlockNumber, opal_runtime::OriginCaller, sp_core::crypto::AccountId32> **/ PalletUniqueSchedulerScheduledV3: { maybeId: 'Option<[u8;16]>', @@ -2599,7 +2610,7 @@ origin: 'OpalRuntimeOriginCaller' }, /** - * Lookup345: opal_runtime::OriginCaller + * Lookup348: opal_runtime::OriginCaller **/ OpalRuntimeOriginCaller: { _enum: { @@ -2708,7 +2719,7 @@ } }, /** - * Lookup346: frame_support::dispatch::RawOrigin + * Lookup349: frame_support::dispatch::RawOrigin **/ FrameSupportDispatchRawOrigin: { _enum: { @@ -2718,7 +2729,7 @@ } }, /** - * Lookup347: pallet_xcm::pallet::Origin + * Lookup350: pallet_xcm::pallet::Origin **/ PalletXcmOrigin: { _enum: { @@ -2727,7 +2738,7 @@ } }, /** - * Lookup348: cumulus_pallet_xcm::pallet::Origin + * Lookup351: cumulus_pallet_xcm::pallet::Origin **/ CumulusPalletXcmOrigin: { _enum: { @@ -2736,7 +2747,7 @@ } }, /** - * Lookup349: pallet_ethereum::RawOrigin + * Lookup352: pallet_ethereum::RawOrigin **/ PalletEthereumRawOrigin: { _enum: { @@ -2744,17 +2755,17 @@ } }, /** - * Lookup350: sp_core::Void + * Lookup353: sp_core::Void **/ SpCoreVoid: 'Null', /** - * Lookup351: pallet_unique_scheduler::pallet::Error + * Lookup354: pallet_unique_scheduler::pallet::Error **/ PalletUniqueSchedulerError: { _enum: ['FailedToSchedule', 'NotFound', 'TargetBlockNumberInPast', 'RescheduleNoChange'] }, /** - * Lookup352: up_data_structs::Collection + * Lookup355: up_data_structs::Collection **/ UpDataStructsCollection: { owner: 'AccountId32', @@ -2768,7 +2779,7 @@ externalCollection: 'bool' }, /** - * Lookup353: up_data_structs::SponsorshipState + * Lookup356: up_data_structs::SponsorshipState **/ UpDataStructsSponsorshipState: { _enum: { @@ -2778,7 +2789,7 @@ } }, /** - * Lookup354: up_data_structs::Properties + * Lookup357: up_data_structs::Properties **/ UpDataStructsProperties: { map: 'UpDataStructsPropertiesMapBoundedVec', @@ -2786,15 +2797,15 @@ spaceLimit: 'u32' }, /** - * Lookup355: up_data_structs::PropertiesMap> + * Lookup358: up_data_structs::PropertiesMap> **/ UpDataStructsPropertiesMapBoundedVec: 'BTreeMap', /** - * Lookup360: up_data_structs::PropertiesMap + * Lookup363: up_data_structs::PropertiesMap **/ UpDataStructsPropertiesMapPropertyPermission: 'BTreeMap', /** - * Lookup367: up_data_structs::CollectionStats + * Lookup370: up_data_structs::CollectionStats **/ UpDataStructsCollectionStats: { created: 'u32', @@ -2802,25 +2813,25 @@ alive: 'u32' }, /** - * Lookup368: up_data_structs::TokenChild + * Lookup371: up_data_structs::TokenChild **/ UpDataStructsTokenChild: { token: 'u32', collection: 'u32' }, /** - * Lookup369: PhantomType::up_data_structs + * Lookup372: PhantomType::up_data_structs **/ PhantomTypeUpDataStructs: '[(UpDataStructsTokenData,UpDataStructsRpcCollection,RmrkTraitsCollectionCollectionInfo,RmrkTraitsNftNftInfo,RmrkTraitsResourceResourceInfo,RmrkTraitsPropertyPropertyInfo,RmrkTraitsBaseBaseInfo,RmrkTraitsPartPartType,RmrkTraitsTheme,RmrkTraitsNftNftChild);0]', /** - * Lookup371: up_data_structs::TokenData> + * Lookup374: up_data_structs::TokenData> **/ UpDataStructsTokenData: { properties: 'Vec', owner: 'Option' }, /** - * Lookup373: up_data_structs::RpcCollection + * Lookup376: up_data_structs::RpcCollection **/ UpDataStructsRpcCollection: { owner: 'AccountId32', @@ -2836,7 +2847,7 @@ readOnly: 'bool' }, /** - * Lookup374: rmrk_traits::collection::CollectionInfo, frame_support::storage::bounded_vec::BoundedVec, sp_core::crypto::AccountId32> + * Lookup377: rmrk_traits::collection::CollectionInfo, frame_support::storage::bounded_vec::BoundedVec, sp_core::crypto::AccountId32> **/ RmrkTraitsCollectionCollectionInfo: { issuer: 'AccountId32', @@ -2846,7 +2857,7 @@ nftsCount: 'u32' }, /** - * Lookup375: rmrk_traits::nft::NftInfo> + * Lookup378: rmrk_traits::nft::NftInfo> **/ RmrkTraitsNftNftInfo: { owner: 'RmrkTraitsNftAccountIdOrCollectionNftTuple', @@ -2856,14 +2867,14 @@ pending: 'bool' }, /** - * Lookup377: rmrk_traits::nft::RoyaltyInfo + * Lookup380: rmrk_traits::nft::RoyaltyInfo **/ RmrkTraitsNftRoyaltyInfo: { recipient: 'AccountId32', amount: 'Permill' }, /** - * Lookup378: rmrk_traits::resource::ResourceInfo, frame_support::storage::bounded_vec::BoundedVec> + * Lookup381: rmrk_traits::resource::ResourceInfo, frame_support::storage::bounded_vec::BoundedVec> **/ RmrkTraitsResourceResourceInfo: { id: 'u32', @@ -2872,24 +2883,14 @@ pendingRemoval: 'bool' }, /** - * Lookup379: rmrk_traits::resource::ResourceTypes, frame_support::storage::bounded_vec::BoundedVec> - **/ - RmrkTraitsResourceResourceTypes: { - _enum: { - Basic: 'RmrkTraitsResourceBasicResource', - Composable: 'RmrkTraitsResourceComposableResource', - Slot: 'RmrkTraitsResourceSlotResource' - } - }, - /** - * Lookup380: rmrk_traits::property::PropertyInfo, frame_support::storage::bounded_vec::BoundedVec> + * Lookup382: rmrk_traits::property::PropertyInfo, frame_support::storage::bounded_vec::BoundedVec> **/ RmrkTraitsPropertyPropertyInfo: { key: 'Bytes', value: 'Bytes' }, /** - * Lookup381: rmrk_traits::base::BaseInfo> + * Lookup383: rmrk_traits::base::BaseInfo> **/ RmrkTraitsBaseBaseInfo: { issuer: 'AccountId32', @@ -2897,74 +2898,74 @@ symbol: 'Bytes' }, /** - * Lookup382: rmrk_traits::nft::NftChild + * Lookup384: rmrk_traits::nft::NftChild **/ RmrkTraitsNftNftChild: { collectionId: 'u32', nftId: 'u32' }, /** - * Lookup384: pallet_common::pallet::Error + * Lookup386: pallet_common::pallet::Error **/ PalletCommonError: { _enum: ['CollectionNotFound', 'MustBeTokenOwner', 'NoPermission', 'CantDestroyNotEmptyCollection', 'PublicMintingNotAllowed', 'AddressNotInAllowlist', 'CollectionNameLimitExceeded', 'CollectionDescriptionLimitExceeded', 'CollectionTokenPrefixLimitExceeded', 'TotalCollectionsLimitExceeded', 'CollectionAdminCountExceeded', 'CollectionLimitBoundsExceeded', 'OwnerPermissionsCantBeReverted', 'TransferNotAllowed', 'AccountTokenLimitExceeded', 'CollectionTokenLimitExceeded', 'MetadataFlagFrozen', 'TokenNotFound', 'TokenValueTooLow', 'ApprovedValueTooLow', 'CantApproveMoreThanOwned', 'AddressIsZero', 'UnsupportedOperation', 'NotSufficientFounds', 'UserIsNotAllowedToNest', 'SourceCollectionIsNotAllowedToNest', 'CollectionFieldSizeExceeded', 'NoSpaceForProperty', 'PropertyLimitReached', 'PropertyKeyIsTooLong', 'InvalidCharacterInPropertyKey', 'EmptyPropertyKey', 'CollectionIsExternal', 'CollectionIsInternal'] }, /** - * Lookup386: pallet_fungible::pallet::Error + * Lookup388: pallet_fungible::pallet::Error **/ PalletFungibleError: { _enum: ['NotFungibleDataUsedToMintFungibleCollectionToken', 'FungibleItemsHaveNoId', 'FungibleItemsDontHaveData', 'FungibleDisallowsNesting', 'SettingPropertiesNotAllowed'] }, /** - * Lookup387: pallet_refungible::ItemData + * Lookup389: pallet_refungible::ItemData **/ PalletRefungibleItemData: { constData: 'Bytes' }, /** - * Lookup391: pallet_refungible::pallet::Error + * Lookup393: pallet_refungible::pallet::Error **/ PalletRefungibleError: { _enum: ['NotRefungibleDataUsedToMintFungibleCollectionToken', 'WrongRefungiblePieces', 'RefungibleDisallowsNesting', 'SettingPropertiesNotAllowed'] }, /** - * Lookup392: pallet_nonfungible::ItemData> + * Lookup394: pallet_nonfungible::ItemData> **/ PalletNonfungibleItemData: { owner: 'PalletEvmAccountBasicCrossAccountIdRepr' }, /** - * Lookup394: pallet_nonfungible::pallet::Error + * Lookup396: pallet_nonfungible::pallet::Error **/ PalletNonfungibleError: { _enum: ['NotNonfungibleDataUsedToMintFungibleCollectionToken', 'NonfungibleItemsHaveNoAmount', 'CantBurnNftWithChildren'] }, /** - * Lookup395: pallet_structure::pallet::Error + * Lookup397: pallet_structure::pallet::Error **/ PalletStructureError: { _enum: ['OuroborosDetected', 'DepthLimit', 'BreadthLimit', 'TokenNotFound'] }, /** - * Lookup396: pallet_rmrk_core::pallet::Error + * Lookup398: pallet_rmrk_core::pallet::Error **/ PalletRmrkCoreError: { - _enum: ['CorruptedCollectionType', 'NftTypeEncodeError', 'RmrkPropertyKeyIsTooLong', 'RmrkPropertyValueIsTooLong', 'CollectionNotEmpty', 'NoAvailableCollectionId', 'NoAvailableNftId', 'CollectionUnknown', 'NoPermission', 'NonTransferable', 'CollectionFullOrLocked', 'ResourceDoesntExist', 'CannotSendToDescendentOrSelf', 'CannotAcceptNonOwnedNft', 'CannotRejectNonOwnedNft', 'ResourceNotPending'] + _enum: ['CorruptedCollectionType', 'NftTypeEncodeError', 'RmrkPropertyKeyIsTooLong', 'RmrkPropertyValueIsTooLong', 'UnableToDecodeRmrkData', 'CollectionNotEmpty', 'NoAvailableCollectionId', 'NoAvailableNftId', 'CollectionUnknown', 'NoPermission', 'NonTransferable', 'CollectionFullOrLocked', 'ResourceDoesntExist', 'CannotSendToDescendentOrSelf', 'CannotAcceptNonOwnedNft', 'CannotRejectNonOwnedNft', 'ResourceNotPending'] }, /** - * Lookup398: pallet_rmrk_equip::pallet::Error + * Lookup400: pallet_rmrk_equip::pallet::Error **/ PalletRmrkEquipError: { _enum: ['PermissionError', 'NoAvailableBaseId', 'NoAvailablePartId', 'BaseDoesntExist', 'NeedsDefaultThemeFirst'] }, /** - * Lookup401: pallet_evm::pallet::Error + * Lookup403: pallet_evm::pallet::Error **/ PalletEvmError: { _enum: ['BalanceLow', 'FeeOverflow', 'PaymentOverflow', 'WithdrawFailed', 'GasPriceTooLow', 'InvalidNonce'] }, /** - * Lookup404: fp_rpc::TransactionStatus + * Lookup406: fp_rpc::TransactionStatus **/ FpRpcTransactionStatus: { transactionHash: 'H256', @@ -2976,11 +2977,11 @@ logsBloom: 'EthbloomBloom' }, /** - * Lookup406: ethbloom::Bloom + * Lookup408: ethbloom::Bloom **/ EthbloomBloom: '[u8;256]', /** - * Lookup408: ethereum::receipt::ReceiptV3 + * Lookup410: ethereum::receipt::ReceiptV3 **/ EthereumReceiptReceiptV3: { _enum: { @@ -2990,7 +2991,7 @@ } }, /** - * Lookup409: ethereum::receipt::EIP658ReceiptData + * Lookup411: ethereum::receipt::EIP658ReceiptData **/ EthereumReceiptEip658ReceiptData: { statusCode: 'u8', @@ -2999,7 +3000,7 @@ logs: 'Vec' }, /** - * Lookup410: ethereum::block::Block + * Lookup412: ethereum::block::Block **/ EthereumBlock: { header: 'EthereumHeader', @@ -3007,7 +3008,7 @@ ommers: 'Vec' }, /** - * Lookup411: ethereum::header::Header + * Lookup413: ethereum::header::Header **/ EthereumHeader: { parentHash: 'H256', @@ -3027,41 +3028,41 @@ nonce: 'EthereumTypesHashH64' }, /** - * Lookup412: ethereum_types::hash::H64 + * Lookup414: ethereum_types::hash::H64 **/ EthereumTypesHashH64: '[u8;8]', /** - * Lookup417: pallet_ethereum::pallet::Error + * Lookup419: pallet_ethereum::pallet::Error **/ PalletEthereumError: { _enum: ['InvalidSignature', 'PreLogExists'] }, /** - * Lookup418: pallet_evm_coder_substrate::pallet::Error + * Lookup420: pallet_evm_coder_substrate::pallet::Error **/ PalletEvmCoderSubstrateError: { _enum: ['OutOfGas', 'OutOfFund'] }, /** - * Lookup419: pallet_evm_contract_helpers::SponsoringModeT + * Lookup421: pallet_evm_contract_helpers::SponsoringModeT **/ PalletEvmContractHelpersSponsoringModeT: { _enum: ['Disabled', 'Allowlisted', 'Generous'] }, /** - * Lookup421: pallet_evm_contract_helpers::pallet::Error + * Lookup423: pallet_evm_contract_helpers::pallet::Error **/ PalletEvmContractHelpersError: { _enum: ['NoPermission'] }, /** - * Lookup422: pallet_evm_migration::pallet::Error + * Lookup424: pallet_evm_migration::pallet::Error **/ PalletEvmMigrationError: { _enum: ['AccountNotEmpty', 'AccountIsNotMigrating'] }, /** - * Lookup424: sp_runtime::MultiSignature + * Lookup426: sp_runtime::MultiSignature **/ SpRuntimeMultiSignature: { _enum: { @@ -3071,43 +3072,43 @@ } }, /** - * Lookup425: sp_core::ed25519::Signature + * Lookup427: sp_core::ed25519::Signature **/ SpCoreEd25519Signature: '[u8;64]', /** - * Lookup427: sp_core::sr25519::Signature + * Lookup429: sp_core::sr25519::Signature **/ SpCoreSr25519Signature: '[u8;64]', /** - * Lookup428: sp_core::ecdsa::Signature + * Lookup430: sp_core::ecdsa::Signature **/ SpCoreEcdsaSignature: '[u8;65]', /** - * Lookup431: frame_system::extensions::check_spec_version::CheckSpecVersion + * Lookup433: frame_system::extensions::check_spec_version::CheckSpecVersion **/ FrameSystemExtensionsCheckSpecVersion: 'Null', /** - * Lookup432: frame_system::extensions::check_genesis::CheckGenesis + * Lookup434: frame_system::extensions::check_genesis::CheckGenesis **/ FrameSystemExtensionsCheckGenesis: 'Null', /** - * Lookup435: frame_system::extensions::check_nonce::CheckNonce + * Lookup437: frame_system::extensions::check_nonce::CheckNonce **/ FrameSystemExtensionsCheckNonce: 'Compact', /** - * Lookup436: frame_system::extensions::check_weight::CheckWeight + * Lookup438: frame_system::extensions::check_weight::CheckWeight **/ FrameSystemExtensionsCheckWeight: 'Null', /** - * Lookup437: pallet_template_transaction_payment::ChargeTransactionPayment + * Lookup439: pallet_template_transaction_payment::ChargeTransactionPayment **/ PalletTemplateTransactionPaymentChargeTransactionPayment: 'Compact', /** - * Lookup438: opal_runtime::Runtime + * Lookup440: opal_runtime::Runtime **/ OpalRuntimeRuntime: 'Null', /** - * Lookup439: pallet_ethereum::FakeTransactionFinalizer + * Lookup441: pallet_ethereum::FakeTransactionFinalizer **/ PalletEthereumFakeTransactionFinalizer: 'Null' }; --- a/tests/src/interfaces/types-lookup.ts +++ b/tests/src/interfaces/types-lookup.ts @@ -1562,7 +1562,7 @@ /** @name UpDataStructsNestingPermissions (169) */ export interface UpDataStructsNestingPermissions extends Struct { readonly tokenOwner: bool; - readonly admin: bool; + readonly collectionAdmin: bool; readonly restricted: Option; readonly permissive: bool; } @@ -1719,11 +1719,13 @@ readonly royaltyAmount: Option; readonly metadata: Bytes; readonly transferable: bool; + readonly resources: Option>; } & Struct; readonly isBurnNft: boolean; readonly asBurnNft: { readonly collectionId: u32; readonly nftId: u32; + readonly maxBurns: u32; } & Struct; readonly isSend: boolean; readonly asSend: { @@ -1777,7 +1779,6 @@ readonly asAddComposableResource: { readonly rmrkCollectionId: u32; readonly nftId: u32; - readonly resourceId: Bytes; readonly resource: RmrkTraitsResourceComposableResource; } & Struct; readonly isAddSlotResource: boolean; @@ -1795,13 +1796,15 @@ readonly type: 'CreateCollection' | 'DestroyCollection' | 'ChangeCollectionIssuer' | 'LockCollection' | 'MintNft' | 'BurnNft' | 'Send' | 'AcceptNft' | 'RejectNft' | 'AcceptResource' | 'AcceptResourceRemoval' | 'SetProperty' | 'SetPriority' | 'AddBasicResource' | 'AddComposableResource' | 'AddSlotResource' | 'RemoveResource'; } - /** @name RmrkTraitsNftAccountIdOrCollectionNftTuple (215) */ - export interface RmrkTraitsNftAccountIdOrCollectionNftTuple extends Enum { - readonly isAccountId: boolean; - readonly asAccountId: AccountId32; - readonly isCollectionAndNftTuple: boolean; - readonly asCollectionAndNftTuple: ITuple<[u32, u32]>; - readonly type: 'AccountId' | 'CollectionAndNftTuple'; + /** @name RmrkTraitsResourceResourceTypes (217) */ + export interface RmrkTraitsResourceResourceTypes extends Enum { + readonly isBasic: boolean; + readonly asBasic: RmrkTraitsResourceBasicResource; + readonly isComposable: boolean; + readonly asComposable: RmrkTraitsResourceComposableResource; + readonly isSlot: boolean; + readonly asSlot: RmrkTraitsResourceSlotResource; + readonly type: 'Basic' | 'Composable' | 'Slot'; } /** @name RmrkTraitsResourceBasicResource (219) */ @@ -1812,7 +1815,7 @@ readonly thumb: Option; } - /** @name RmrkTraitsResourceComposableResource (222) */ + /** @name RmrkTraitsResourceComposableResource (221) */ export interface RmrkTraitsResourceComposableResource extends Struct { readonly parts: Vec; readonly base: u32; @@ -1822,7 +1825,7 @@ readonly thumb: Option; } - /** @name RmrkTraitsResourceSlotResource (224) */ + /** @name RmrkTraitsResourceSlotResource (222) */ export interface RmrkTraitsResourceSlotResource extends Struct { readonly base: u32; readonly src: Option; @@ -1832,7 +1835,16 @@ readonly thumb: Option; } - /** @name PalletRmrkEquipCall (225) */ + /** @name RmrkTraitsNftAccountIdOrCollectionNftTuple (224) */ + export interface RmrkTraitsNftAccountIdOrCollectionNftTuple extends Enum { + readonly isAccountId: boolean; + readonly asAccountId: AccountId32; + readonly isCollectionAndNftTuple: boolean; + readonly asCollectionAndNftTuple: ITuple<[u32, u32]>; + readonly type: 'AccountId' | 'CollectionAndNftTuple'; + } + + /** @name PalletRmrkEquipCall (228) */ export interface PalletRmrkEquipCall extends Enum { readonly isCreateBase: boolean; readonly asCreateBase: { @@ -1848,7 +1860,7 @@ readonly type: 'CreateBase' | 'ThemeAdd'; } - /** @name RmrkTraitsPartPartType (227) */ + /** @name RmrkTraitsPartPartType (230) */ export interface RmrkTraitsPartPartType extends Enum { readonly isFixedPart: boolean; readonly asFixedPart: RmrkTraitsPartFixedPart; @@ -1857,14 +1869,14 @@ readonly type: 'FixedPart' | 'SlotPart'; } - /** @name RmrkTraitsPartFixedPart (229) */ + /** @name RmrkTraitsPartFixedPart (232) */ export interface RmrkTraitsPartFixedPart extends Struct { readonly id: u32; readonly z: u32; readonly src: Bytes; } - /** @name RmrkTraitsPartSlotPart (230) */ + /** @name RmrkTraitsPartSlotPart (233) */ export interface RmrkTraitsPartSlotPart extends Struct { readonly id: u32; readonly equippable: RmrkTraitsPartEquippableList; @@ -1872,7 +1884,7 @@ readonly z: u32; } - /** @name RmrkTraitsPartEquippableList (231) */ + /** @name RmrkTraitsPartEquippableList (234) */ export interface RmrkTraitsPartEquippableList extends Enum { readonly isAll: boolean; readonly isEmpty: boolean; @@ -1881,20 +1893,20 @@ readonly type: 'All' | 'Empty' | 'Custom'; } - /** @name RmrkTraitsTheme (233) */ + /** @name RmrkTraitsTheme (236) */ export interface RmrkTraitsTheme extends Struct { readonly name: Bytes; readonly properties: Vec; readonly inherit: bool; } - /** @name RmrkTraitsThemeThemeProperty (235) */ + /** @name RmrkTraitsThemeThemeProperty (238) */ export interface RmrkTraitsThemeThemeProperty extends Struct { readonly key: Bytes; readonly value: Bytes; } - /** @name PalletEvmCall (236) */ + /** @name PalletEvmCall (239) */ export interface PalletEvmCall extends Enum { readonly isWithdraw: boolean; readonly asWithdraw: { @@ -1939,7 +1951,7 @@ readonly type: 'Withdraw' | 'Call' | 'Create' | 'Create2'; } - /** @name PalletEthereumCall (242) */ + /** @name PalletEthereumCall (245) */ export interface PalletEthereumCall extends Enum { readonly isTransact: boolean; readonly asTransact: { @@ -1948,7 +1960,7 @@ readonly type: 'Transact'; } - /** @name EthereumTransactionTransactionV2 (243) */ + /** @name EthereumTransactionTransactionV2 (246) */ export interface EthereumTransactionTransactionV2 extends Enum { readonly isLegacy: boolean; readonly asLegacy: EthereumTransactionLegacyTransaction; @@ -1959,7 +1971,7 @@ readonly type: 'Legacy' | 'Eip2930' | 'Eip1559'; } - /** @name EthereumTransactionLegacyTransaction (244) */ + /** @name EthereumTransactionLegacyTransaction (247) */ export interface EthereumTransactionLegacyTransaction extends Struct { readonly nonce: U256; readonly gasPrice: U256; @@ -1970,7 +1982,7 @@ readonly signature: EthereumTransactionTransactionSignature; } - /** @name EthereumTransactionTransactionAction (245) */ + /** @name EthereumTransactionTransactionAction (248) */ export interface EthereumTransactionTransactionAction extends Enum { readonly isCall: boolean; readonly asCall: H160; @@ -1978,14 +1990,14 @@ readonly type: 'Call' | 'Create'; } - /** @name EthereumTransactionTransactionSignature (246) */ + /** @name EthereumTransactionTransactionSignature (249) */ export interface EthereumTransactionTransactionSignature extends Struct { readonly v: u64; readonly r: H256; readonly s: H256; } - /** @name EthereumTransactionEip2930Transaction (248) */ + /** @name EthereumTransactionEip2930Transaction (251) */ export interface EthereumTransactionEip2930Transaction extends Struct { readonly chainId: u64; readonly nonce: U256; @@ -2000,13 +2012,13 @@ readonly s: H256; } - /** @name EthereumTransactionAccessListItem (250) */ + /** @name EthereumTransactionAccessListItem (253) */ export interface EthereumTransactionAccessListItem extends Struct { readonly address: H160; readonly storageKeys: Vec; } - /** @name EthereumTransactionEip1559Transaction (251) */ + /** @name EthereumTransactionEip1559Transaction (254) */ export interface EthereumTransactionEip1559Transaction extends Struct { readonly chainId: u64; readonly nonce: U256; @@ -2022,7 +2034,7 @@ readonly s: H256; } - /** @name PalletEvmMigrationCall (252) */ + /** @name PalletEvmMigrationCall (255) */ export interface PalletEvmMigrationCall extends Enum { readonly isBegin: boolean; readonly asBegin: { @@ -2041,7 +2053,7 @@ readonly type: 'Begin' | 'SetData' | 'Finish'; } - /** @name PalletSudoEvent (255) */ + /** @name PalletSudoEvent (258) */ export interface PalletSudoEvent extends Enum { readonly isSudid: boolean; readonly asSudid: { @@ -2058,7 +2070,7 @@ readonly type: 'Sudid' | 'KeyChanged' | 'SudoAsDone'; } - /** @name SpRuntimeDispatchError (257) */ + /** @name SpRuntimeDispatchError (260) */ export interface SpRuntimeDispatchError extends Enum { readonly isOther: boolean; readonly isCannotLookup: boolean; @@ -2077,13 +2089,13 @@ readonly type: 'Other' | 'CannotLookup' | 'BadOrigin' | 'Module' | 'ConsumerRemaining' | 'NoProviders' | 'TooManyConsumers' | 'Token' | 'Arithmetic' | 'Transactional'; } - /** @name SpRuntimeModuleError (258) */ + /** @name SpRuntimeModuleError (261) */ export interface SpRuntimeModuleError extends Struct { readonly index: u8; readonly error: U8aFixed; } - /** @name SpRuntimeTokenError (259) */ + /** @name SpRuntimeTokenError (262) */ export interface SpRuntimeTokenError extends Enum { readonly isNoFunds: boolean; readonly isWouldDie: boolean; @@ -2095,7 +2107,7 @@ readonly type: 'NoFunds' | 'WouldDie' | 'BelowMinimum' | 'CannotCreate' | 'UnknownAsset' | 'Frozen' | 'Unsupported'; } - /** @name SpRuntimeArithmeticError (260) */ + /** @name SpRuntimeArithmeticError (263) */ export interface SpRuntimeArithmeticError extends Enum { readonly isUnderflow: boolean; readonly isOverflow: boolean; @@ -2103,20 +2115,20 @@ readonly type: 'Underflow' | 'Overflow' | 'DivisionByZero'; } - /** @name SpRuntimeTransactionalError (261) */ + /** @name SpRuntimeTransactionalError (264) */ export interface SpRuntimeTransactionalError extends Enum { readonly isLimitReached: boolean; readonly isNoLayer: boolean; readonly type: 'LimitReached' | 'NoLayer'; } - /** @name PalletSudoError (262) */ + /** @name PalletSudoError (265) */ export interface PalletSudoError extends Enum { readonly isRequireSudo: boolean; readonly type: 'RequireSudo'; } - /** @name FrameSystemAccountInfo (263) */ + /** @name FrameSystemAccountInfo (266) */ export interface FrameSystemAccountInfo extends Struct { readonly nonce: u32; readonly consumers: u32; @@ -2125,19 +2137,19 @@ readonly data: PalletBalancesAccountData; } - /** @name FrameSupportWeightsPerDispatchClassU64 (264) */ + /** @name FrameSupportWeightsPerDispatchClassU64 (267) */ export interface FrameSupportWeightsPerDispatchClassU64 extends Struct { readonly normal: u64; readonly operational: u64; readonly mandatory: u64; } - /** @name SpRuntimeDigest (265) */ + /** @name SpRuntimeDigest (268) */ export interface SpRuntimeDigest extends Struct { readonly logs: Vec; } - /** @name SpRuntimeDigestDigestItem (267) */ + /** @name SpRuntimeDigestDigestItem (270) */ export interface SpRuntimeDigestDigestItem extends Enum { readonly isOther: boolean; readonly asOther: Bytes; @@ -2151,14 +2163,14 @@ readonly type: 'Other' | 'Consensus' | 'Seal' | 'PreRuntime' | 'RuntimeEnvironmentUpdated'; } - /** @name FrameSystemEventRecord (269) */ + /** @name FrameSystemEventRecord (272) */ export interface FrameSystemEventRecord extends Struct { readonly phase: FrameSystemPhase; readonly event: Event; readonly topics: Vec; } - /** @name FrameSystemEvent (271) */ + /** @name FrameSystemEvent (274) */ export interface FrameSystemEvent extends Enum { readonly isExtrinsicSuccess: boolean; readonly asExtrinsicSuccess: { @@ -2186,14 +2198,14 @@ readonly type: 'ExtrinsicSuccess' | 'ExtrinsicFailed' | 'CodeUpdated' | 'NewAccount' | 'KilledAccount' | 'Remarked'; } - /** @name FrameSupportWeightsDispatchInfo (272) */ + /** @name FrameSupportWeightsDispatchInfo (275) */ export interface FrameSupportWeightsDispatchInfo extends Struct { readonly weight: u64; readonly class: FrameSupportWeightsDispatchClass; readonly paysFee: FrameSupportWeightsPays; } - /** @name FrameSupportWeightsDispatchClass (273) */ + /** @name FrameSupportWeightsDispatchClass (276) */ export interface FrameSupportWeightsDispatchClass extends Enum { readonly isNormal: boolean; readonly isOperational: boolean; @@ -2201,14 +2213,14 @@ readonly type: 'Normal' | 'Operational' | 'Mandatory'; } - /** @name FrameSupportWeightsPays (274) */ + /** @name FrameSupportWeightsPays (277) */ export interface FrameSupportWeightsPays extends Enum { readonly isYes: boolean; readonly isNo: boolean; readonly type: 'Yes' | 'No'; } - /** @name OrmlVestingModuleEvent (275) */ + /** @name OrmlVestingModuleEvent (278) */ export interface OrmlVestingModuleEvent extends Enum { readonly isVestingScheduleAdded: boolean; readonly asVestingScheduleAdded: { @@ -2228,7 +2240,7 @@ readonly type: 'VestingScheduleAdded' | 'Claimed' | 'VestingSchedulesUpdated'; } - /** @name CumulusPalletXcmpQueueEvent (276) */ + /** @name CumulusPalletXcmpQueueEvent (279) */ export interface CumulusPalletXcmpQueueEvent extends Enum { readonly isSuccess: boolean; readonly asSuccess: Option; @@ -2249,7 +2261,7 @@ readonly type: 'Success' | 'Fail' | 'BadVersion' | 'BadFormat' | 'UpwardMessageSent' | 'XcmpMessageSent' | 'OverweightEnqueued' | 'OverweightServiced'; } - /** @name PalletXcmEvent (277) */ + /** @name PalletXcmEvent (280) */ export interface PalletXcmEvent extends Enum { readonly isAttempted: boolean; readonly asAttempted: XcmV2TraitsOutcome; @@ -2286,7 +2298,7 @@ readonly type: 'Attempted' | 'Sent' | 'UnexpectedResponse' | 'ResponseReady' | 'Notified' | 'NotifyOverweight' | 'NotifyDispatchError' | 'NotifyDecodeFailed' | 'InvalidResponder' | 'InvalidResponderVersion' | 'ResponseTaken' | 'AssetsTrapped' | 'VersionChangeNotified' | 'SupportedVersionChanged' | 'NotifyTargetSendFail' | 'NotifyTargetMigrationFail'; } - /** @name XcmV2TraitsOutcome (278) */ + /** @name XcmV2TraitsOutcome (281) */ export interface XcmV2TraitsOutcome extends Enum { readonly isComplete: boolean; readonly asComplete: u64; @@ -2297,7 +2309,7 @@ readonly type: 'Complete' | 'Incomplete' | 'Error'; } - /** @name CumulusPalletXcmEvent (280) */ + /** @name CumulusPalletXcmEvent (283) */ export interface CumulusPalletXcmEvent extends Enum { readonly isInvalidFormat: boolean; readonly asInvalidFormat: U8aFixed; @@ -2308,7 +2320,7 @@ readonly type: 'InvalidFormat' | 'UnsupportedVersion' | 'ExecutedDownward'; } - /** @name CumulusPalletDmpQueueEvent (281) */ + /** @name CumulusPalletDmpQueueEvent (284) */ export interface CumulusPalletDmpQueueEvent extends Enum { readonly isInvalidFormat: boolean; readonly asInvalidFormat: U8aFixed; @@ -2325,7 +2337,7 @@ readonly type: 'InvalidFormat' | 'UnsupportedVersion' | 'ExecutedDownward' | 'WeightExhausted' | 'OverweightEnqueued' | 'OverweightServiced'; } - /** @name PalletUniqueRawEvent (282) */ + /** @name PalletUniqueRawEvent (285) */ export interface PalletUniqueRawEvent extends Enum { readonly isCollectionSponsorRemoved: boolean; readonly asCollectionSponsorRemoved: u32; @@ -2350,7 +2362,7 @@ readonly type: 'CollectionSponsorRemoved' | 'CollectionAdminAdded' | 'CollectionOwnedChanged' | 'CollectionSponsorSet' | 'SponsorshipConfirmed' | 'CollectionAdminRemoved' | 'AllowListAddressRemoved' | 'AllowListAddressAdded' | 'CollectionLimitSet' | 'CollectionPermissionSet'; } - /** @name PalletUniqueSchedulerEvent (283) */ + /** @name PalletUniqueSchedulerEvent (286) */ export interface PalletUniqueSchedulerEvent extends Enum { readonly isScheduled: boolean; readonly asScheduled: { @@ -2377,14 +2389,14 @@ readonly type: 'Scheduled' | 'Canceled' | 'Dispatched' | 'CallLookupFailed'; } - /** @name FrameSupportScheduleLookupError (285) */ + /** @name FrameSupportScheduleLookupError (288) */ export interface FrameSupportScheduleLookupError extends Enum { readonly isUnknown: boolean; readonly isBadFormat: boolean; readonly type: 'Unknown' | 'BadFormat'; } - /** @name PalletCommonEvent (286) */ + /** @name PalletCommonEvent (289) */ export interface PalletCommonEvent extends Enum { readonly isCollectionCreated: boolean; readonly asCollectionCreated: ITuple<[u32, u8, AccountId32]>; @@ -2411,14 +2423,14 @@ readonly type: 'CollectionCreated' | 'CollectionDestroyed' | 'ItemCreated' | 'ItemDestroyed' | 'Transfer' | 'Approved' | 'CollectionPropertySet' | 'CollectionPropertyDeleted' | 'TokenPropertySet' | 'TokenPropertyDeleted' | 'PropertyPermissionSet'; } - /** @name PalletStructureEvent (287) */ + /** @name PalletStructureEvent (290) */ export interface PalletStructureEvent extends Enum { readonly isExecuted: boolean; readonly asExecuted: Result; readonly type: 'Executed'; } - /** @name PalletRmrkCoreEvent (288) */ + /** @name PalletRmrkCoreEvent (291) */ export interface PalletRmrkCoreEvent extends Enum { readonly isCollectionCreated: boolean; readonly asCollectionCreated: { @@ -2508,7 +2520,7 @@ readonly type: 'CollectionCreated' | 'CollectionDestroyed' | 'IssuerChanged' | 'CollectionLocked' | 'NftMinted' | 'NftBurned' | 'NftSent' | 'NftAccepted' | 'NftRejected' | 'PropertySet' | 'ResourceAdded' | 'ResourceRemoval' | 'ResourceAccepted' | 'ResourceRemovalAccepted' | 'PrioritySet'; } - /** @name PalletRmrkEquipEvent (289) */ + /** @name PalletRmrkEquipEvent (292) */ export interface PalletRmrkEquipEvent extends Enum { readonly isBaseCreated: boolean; readonly asBaseCreated: { @@ -2518,7 +2530,7 @@ readonly type: 'BaseCreated'; } - /** @name PalletEvmEvent (290) */ + /** @name PalletEvmEvent (293) */ export interface PalletEvmEvent extends Enum { readonly isLog: boolean; readonly asLog: EthereumLog; @@ -2537,21 +2549,21 @@ readonly type: 'Log' | 'Created' | 'CreatedFailed' | 'Executed' | 'ExecutedFailed' | 'BalanceDeposit' | 'BalanceWithdraw'; } - /** @name EthereumLog (291) */ + /** @name EthereumLog (294) */ export interface EthereumLog extends Struct { readonly address: H160; readonly topics: Vec; readonly data: Bytes; } - /** @name PalletEthereumEvent (292) */ + /** @name PalletEthereumEvent (295) */ export interface PalletEthereumEvent extends Enum { readonly isExecuted: boolean; readonly asExecuted: ITuple<[H160, H160, H256, EvmCoreErrorExitReason]>; readonly type: 'Executed'; } - /** @name EvmCoreErrorExitReason (293) */ + /** @name EvmCoreErrorExitReason (296) */ export interface EvmCoreErrorExitReason extends Enum { readonly isSucceed: boolean; readonly asSucceed: EvmCoreErrorExitSucceed; @@ -2564,7 +2576,7 @@ readonly type: 'Succeed' | 'Error' | 'Revert' | 'Fatal'; } - /** @name EvmCoreErrorExitSucceed (294) */ + /** @name EvmCoreErrorExitSucceed (297) */ export interface EvmCoreErrorExitSucceed extends Enum { readonly isStopped: boolean; readonly isReturned: boolean; @@ -2572,7 +2584,7 @@ readonly type: 'Stopped' | 'Returned' | 'Suicided'; } - /** @name EvmCoreErrorExitError (295) */ + /** @name EvmCoreErrorExitError (298) */ export interface EvmCoreErrorExitError extends Enum { readonly isStackUnderflow: boolean; readonly isStackOverflow: boolean; @@ -2593,13 +2605,13 @@ readonly type: 'StackUnderflow' | 'StackOverflow' | 'InvalidJump' | 'InvalidRange' | 'DesignatedInvalid' | 'CallTooDeep' | 'CreateCollision' | 'CreateContractLimit' | 'OutOfOffset' | 'OutOfGas' | 'OutOfFund' | 'PcUnderflow' | 'CreateEmpty' | 'Other' | 'InvalidCode'; } - /** @name EvmCoreErrorExitRevert (298) */ + /** @name EvmCoreErrorExitRevert (301) */ export interface EvmCoreErrorExitRevert extends Enum { readonly isReverted: boolean; readonly type: 'Reverted'; } - /** @name EvmCoreErrorExitFatal (299) */ + /** @name EvmCoreErrorExitFatal (302) */ export interface EvmCoreErrorExitFatal extends Enum { readonly isNotSupported: boolean; readonly isUnhandledInterrupt: boolean; @@ -2610,7 +2622,7 @@ readonly type: 'NotSupported' | 'UnhandledInterrupt' | 'CallErrorAsFatal' | 'Other'; } - /** @name FrameSystemPhase (300) */ + /** @name FrameSystemPhase (303) */ export interface FrameSystemPhase extends Enum { readonly isApplyExtrinsic: boolean; readonly asApplyExtrinsic: u32; @@ -2619,27 +2631,27 @@ readonly type: 'ApplyExtrinsic' | 'Finalization' | 'Initialization'; } - /** @name FrameSystemLastRuntimeUpgradeInfo (302) */ + /** @name FrameSystemLastRuntimeUpgradeInfo (305) */ export interface FrameSystemLastRuntimeUpgradeInfo extends Struct { readonly specVersion: Compact; readonly specName: Text; } - /** @name FrameSystemLimitsBlockWeights (303) */ + /** @name FrameSystemLimitsBlockWeights (306) */ export interface FrameSystemLimitsBlockWeights extends Struct { readonly baseBlock: u64; readonly maxBlock: u64; readonly perClass: FrameSupportWeightsPerDispatchClassWeightsPerClass; } - /** @name FrameSupportWeightsPerDispatchClassWeightsPerClass (304) */ + /** @name FrameSupportWeightsPerDispatchClassWeightsPerClass (307) */ export interface FrameSupportWeightsPerDispatchClassWeightsPerClass extends Struct { readonly normal: FrameSystemLimitsWeightsPerClass; readonly operational: FrameSystemLimitsWeightsPerClass; readonly mandatory: FrameSystemLimitsWeightsPerClass; } - /** @name FrameSystemLimitsWeightsPerClass (305) */ + /** @name FrameSystemLimitsWeightsPerClass (308) */ export interface FrameSystemLimitsWeightsPerClass extends Struct { readonly baseExtrinsic: u64; readonly maxExtrinsic: Option; @@ -2647,25 +2659,25 @@ readonly reserved: Option; } - /** @name FrameSystemLimitsBlockLength (307) */ + /** @name FrameSystemLimitsBlockLength (310) */ export interface FrameSystemLimitsBlockLength extends Struct { readonly max: FrameSupportWeightsPerDispatchClassU32; } - /** @name FrameSupportWeightsPerDispatchClassU32 (308) */ + /** @name FrameSupportWeightsPerDispatchClassU32 (311) */ export interface FrameSupportWeightsPerDispatchClassU32 extends Struct { readonly normal: u32; readonly operational: u32; readonly mandatory: u32; } - /** @name FrameSupportWeightsRuntimeDbWeight (309) */ + /** @name FrameSupportWeightsRuntimeDbWeight (312) */ export interface FrameSupportWeightsRuntimeDbWeight extends Struct { readonly read: u64; readonly write: u64; } - /** @name SpVersionRuntimeVersion (310) */ + /** @name SpVersionRuntimeVersion (313) */ export interface SpVersionRuntimeVersion extends Struct { readonly specName: Text; readonly implName: Text; @@ -2677,7 +2689,7 @@ readonly stateVersion: u8; } - /** @name FrameSystemError (314) */ + /** @name FrameSystemError (317) */ export interface FrameSystemError extends Enum { readonly isInvalidSpecName: boolean; readonly isSpecVersionNeedsToIncrease: boolean; @@ -2688,7 +2700,7 @@ readonly type: 'InvalidSpecName' | 'SpecVersionNeedsToIncrease' | 'FailedToExtractRuntimeVersion' | 'NonDefaultComposite' | 'NonZeroRefCount' | 'CallFiltered'; } - /** @name OrmlVestingModuleError (316) */ + /** @name OrmlVestingModuleError (319) */ export interface OrmlVestingModuleError extends Enum { readonly isZeroVestingPeriod: boolean; readonly isZeroVestingPeriodCount: boolean; @@ -2699,21 +2711,21 @@ readonly type: 'ZeroVestingPeriod' | 'ZeroVestingPeriodCount' | 'InsufficientBalanceToLock' | 'TooManyVestingSchedules' | 'AmountLow' | 'MaxVestingSchedulesExceeded'; } - /** @name CumulusPalletXcmpQueueInboundChannelDetails (318) */ + /** @name CumulusPalletXcmpQueueInboundChannelDetails (321) */ export interface CumulusPalletXcmpQueueInboundChannelDetails extends Struct { readonly sender: u32; readonly state: CumulusPalletXcmpQueueInboundState; readonly messageMetadata: Vec>; } - /** @name CumulusPalletXcmpQueueInboundState (319) */ + /** @name CumulusPalletXcmpQueueInboundState (322) */ export interface CumulusPalletXcmpQueueInboundState extends Enum { readonly isOk: boolean; readonly isSuspended: boolean; readonly type: 'Ok' | 'Suspended'; } - /** @name PolkadotParachainPrimitivesXcmpMessageFormat (322) */ + /** @name PolkadotParachainPrimitivesXcmpMessageFormat (325) */ export interface PolkadotParachainPrimitivesXcmpMessageFormat extends Enum { readonly isConcatenatedVersionedXcm: boolean; readonly isConcatenatedEncodedBlob: boolean; @@ -2721,7 +2733,7 @@ readonly type: 'ConcatenatedVersionedXcm' | 'ConcatenatedEncodedBlob' | 'Signals'; } - /** @name CumulusPalletXcmpQueueOutboundChannelDetails (325) */ + /** @name CumulusPalletXcmpQueueOutboundChannelDetails (328) */ export interface CumulusPalletXcmpQueueOutboundChannelDetails extends Struct { readonly recipient: u32; readonly state: CumulusPalletXcmpQueueOutboundState; @@ -2730,14 +2742,14 @@ readonly lastIndex: u16; } - /** @name CumulusPalletXcmpQueueOutboundState (326) */ + /** @name CumulusPalletXcmpQueueOutboundState (329) */ export interface CumulusPalletXcmpQueueOutboundState extends Enum { readonly isOk: boolean; readonly isSuspended: boolean; readonly type: 'Ok' | 'Suspended'; } - /** @name CumulusPalletXcmpQueueQueueConfigData (328) */ + /** @name CumulusPalletXcmpQueueQueueConfigData (331) */ export interface CumulusPalletXcmpQueueQueueConfigData extends Struct { readonly suspendThreshold: u32; readonly dropThreshold: u32; @@ -2747,7 +2759,7 @@ readonly xcmpMaxIndividualWeight: u64; } - /** @name CumulusPalletXcmpQueueError (330) */ + /** @name CumulusPalletXcmpQueueError (333) */ export interface CumulusPalletXcmpQueueError extends Enum { readonly isFailedToSend: boolean; readonly isBadXcmOrigin: boolean; @@ -2757,7 +2769,7 @@ readonly type: 'FailedToSend' | 'BadXcmOrigin' | 'BadXcm' | 'BadOverweightIndex' | 'WeightOverLimit'; } - /** @name PalletXcmError (331) */ + /** @name PalletXcmError (334) */ export interface PalletXcmError extends Enum { readonly isUnreachable: boolean; readonly isSendFailure: boolean; @@ -2775,29 +2787,29 @@ readonly type: 'Unreachable' | 'SendFailure' | 'Filtered' | 'UnweighableMessage' | 'DestinationNotInvertible' | 'Empty' | 'CannotReanchor' | 'TooManyAssets' | 'InvalidOrigin' | 'BadVersion' | 'BadLocation' | 'NoSubscription' | 'AlreadySubscribed'; } - /** @name CumulusPalletXcmError (332) */ + /** @name CumulusPalletXcmError (335) */ export type CumulusPalletXcmError = Null; - /** @name CumulusPalletDmpQueueConfigData (333) */ + /** @name CumulusPalletDmpQueueConfigData (336) */ export interface CumulusPalletDmpQueueConfigData extends Struct { readonly maxIndividual: u64; } - /** @name CumulusPalletDmpQueuePageIndexData (334) */ + /** @name CumulusPalletDmpQueuePageIndexData (337) */ export interface CumulusPalletDmpQueuePageIndexData extends Struct { readonly beginUsed: u32; readonly endUsed: u32; readonly overweightCount: u64; } - /** @name CumulusPalletDmpQueueError (337) */ + /** @name CumulusPalletDmpQueueError (340) */ export interface CumulusPalletDmpQueueError extends Enum { readonly isUnknown: boolean; readonly isOverLimit: boolean; readonly type: 'Unknown' | 'OverLimit'; } - /** @name PalletUniqueError (341) */ + /** @name PalletUniqueError (344) */ export interface PalletUniqueError extends Enum { readonly isCollectionDecimalPointLimitExceeded: boolean; readonly isConfirmUnsetSponsorFail: boolean; @@ -2805,7 +2817,7 @@ readonly type: 'CollectionDecimalPointLimitExceeded' | 'ConfirmUnsetSponsorFail' | 'EmptyArgument'; } - /** @name PalletUniqueSchedulerScheduledV3 (344) */ + /** @name PalletUniqueSchedulerScheduledV3 (347) */ export interface PalletUniqueSchedulerScheduledV3 extends Struct { readonly maybeId: Option; readonly priority: u8; @@ -2814,7 +2826,7 @@ readonly origin: OpalRuntimeOriginCaller; } - /** @name OpalRuntimeOriginCaller (345) */ + /** @name OpalRuntimeOriginCaller (348) */ export interface OpalRuntimeOriginCaller extends Enum { readonly isVoid: boolean; readonly isSystem: boolean; @@ -2828,7 +2840,7 @@ readonly type: 'Void' | 'System' | 'PolkadotXcm' | 'CumulusXcm' | 'Ethereum'; } - /** @name FrameSupportDispatchRawOrigin (346) */ + /** @name FrameSupportDispatchRawOrigin (349) */ export interface FrameSupportDispatchRawOrigin extends Enum { readonly isRoot: boolean; readonly isSigned: boolean; @@ -2837,7 +2849,7 @@ readonly type: 'Root' | 'Signed' | 'None'; } - /** @name PalletXcmOrigin (347) */ + /** @name PalletXcmOrigin (350) */ export interface PalletXcmOrigin extends Enum { readonly isXcm: boolean; readonly asXcm: XcmV1MultiLocation; @@ -2846,7 +2858,7 @@ readonly type: 'Xcm' | 'Response'; } - /** @name CumulusPalletXcmOrigin (348) */ + /** @name CumulusPalletXcmOrigin (351) */ export interface CumulusPalletXcmOrigin extends Enum { readonly isRelay: boolean; readonly isSiblingParachain: boolean; @@ -2854,17 +2866,17 @@ readonly type: 'Relay' | 'SiblingParachain'; } - /** @name PalletEthereumRawOrigin (349) */ + /** @name PalletEthereumRawOrigin (352) */ export interface PalletEthereumRawOrigin extends Enum { readonly isEthereumTransaction: boolean; readonly asEthereumTransaction: H160; readonly type: 'EthereumTransaction'; } - /** @name SpCoreVoid (350) */ + /** @name SpCoreVoid (353) */ export type SpCoreVoid = Null; - /** @name PalletUniqueSchedulerError (351) */ + /** @name PalletUniqueSchedulerError (354) */ export interface PalletUniqueSchedulerError extends Enum { readonly isFailedToSchedule: boolean; readonly isNotFound: boolean; @@ -2873,7 +2885,7 @@ readonly type: 'FailedToSchedule' | 'NotFound' | 'TargetBlockNumberInPast' | 'RescheduleNoChange'; } - /** @name UpDataStructsCollection (352) */ + /** @name UpDataStructsCollection (355) */ export interface UpDataStructsCollection extends Struct { readonly owner: AccountId32; readonly mode: UpDataStructsCollectionMode; @@ -2886,7 +2898,7 @@ readonly externalCollection: bool; } - /** @name UpDataStructsSponsorshipState (353) */ + /** @name UpDataStructsSponsorshipState (356) */ export interface UpDataStructsSponsorshipState extends Enum { readonly isDisabled: boolean; readonly isUnconfirmed: boolean; @@ -2896,42 +2908,42 @@ readonly type: 'Disabled' | 'Unconfirmed' | 'Confirmed'; } - /** @name UpDataStructsProperties (354) */ + /** @name UpDataStructsProperties (357) */ export interface UpDataStructsProperties extends Struct { readonly map: UpDataStructsPropertiesMapBoundedVec; readonly consumedSpace: u32; readonly spaceLimit: u32; } - /** @name UpDataStructsPropertiesMapBoundedVec (355) */ + /** @name UpDataStructsPropertiesMapBoundedVec (358) */ export interface UpDataStructsPropertiesMapBoundedVec extends BTreeMap {} - /** @name UpDataStructsPropertiesMapPropertyPermission (360) */ + /** @name UpDataStructsPropertiesMapPropertyPermission (363) */ export interface UpDataStructsPropertiesMapPropertyPermission extends BTreeMap {} - /** @name UpDataStructsCollectionStats (367) */ + /** @name UpDataStructsCollectionStats (370) */ export interface UpDataStructsCollectionStats extends Struct { readonly created: u32; readonly destroyed: u32; readonly alive: u32; } - /** @name UpDataStructsTokenChild (368) */ + /** @name UpDataStructsTokenChild (371) */ export interface UpDataStructsTokenChild extends Struct { readonly token: u32; readonly collection: u32; } - /** @name PhantomTypeUpDataStructs (369) */ + /** @name PhantomTypeUpDataStructs (372) */ export interface PhantomTypeUpDataStructs extends Vec> {} - /** @name UpDataStructsTokenData (371) */ + /** @name UpDataStructsTokenData (374) */ export interface UpDataStructsTokenData extends Struct { readonly properties: Vec; readonly owner: Option; } - /** @name UpDataStructsRpcCollection (373) */ + /** @name UpDataStructsRpcCollection (376) */ export interface UpDataStructsRpcCollection extends Struct { readonly owner: AccountId32; readonly mode: UpDataStructsCollectionMode; @@ -2946,7 +2958,7 @@ readonly readOnly: bool; } - /** @name RmrkTraitsCollectionCollectionInfo (374) */ + /** @name RmrkTraitsCollectionCollectionInfo (377) */ export interface RmrkTraitsCollectionCollectionInfo extends Struct { readonly issuer: AccountId32; readonly metadata: Bytes; @@ -2955,7 +2967,7 @@ readonly nftsCount: u32; } - /** @name RmrkTraitsNftNftInfo (375) */ + /** @name RmrkTraitsNftNftInfo (378) */ export interface RmrkTraitsNftNftInfo extends Struct { readonly owner: RmrkTraitsNftAccountIdOrCollectionNftTuple; readonly royalty: Option; @@ -2964,13 +2976,13 @@ readonly pending: bool; } - /** @name RmrkTraitsNftRoyaltyInfo (377) */ + /** @name RmrkTraitsNftRoyaltyInfo (380) */ export interface RmrkTraitsNftRoyaltyInfo extends Struct { readonly recipient: AccountId32; readonly amount: Permill; } - /** @name RmrkTraitsResourceResourceInfo (378) */ + /** @name RmrkTraitsResourceResourceInfo (381) */ export interface RmrkTraitsResourceResourceInfo extends Struct { readonly id: u32; readonly resource: RmrkTraitsResourceResourceTypes; @@ -2978,37 +2990,26 @@ readonly pendingRemoval: bool; } - /** @name RmrkTraitsResourceResourceTypes (379) */ - export interface RmrkTraitsResourceResourceTypes extends Enum { - readonly isBasic: boolean; - readonly asBasic: RmrkTraitsResourceBasicResource; - readonly isComposable: boolean; - readonly asComposable: RmrkTraitsResourceComposableResource; - readonly isSlot: boolean; - readonly asSlot: RmrkTraitsResourceSlotResource; - readonly type: 'Basic' | 'Composable' | 'Slot'; - } - - /** @name RmrkTraitsPropertyPropertyInfo (380) */ + /** @name RmrkTraitsPropertyPropertyInfo (382) */ export interface RmrkTraitsPropertyPropertyInfo extends Struct { readonly key: Bytes; readonly value: Bytes; } - /** @name RmrkTraitsBaseBaseInfo (381) */ + /** @name RmrkTraitsBaseBaseInfo (383) */ export interface RmrkTraitsBaseBaseInfo extends Struct { readonly issuer: AccountId32; readonly baseType: Bytes; readonly symbol: Bytes; } - /** @name RmrkTraitsNftNftChild (382) */ + /** @name RmrkTraitsNftNftChild (384) */ export interface RmrkTraitsNftNftChild extends Struct { readonly collectionId: u32; readonly nftId: u32; } - /** @name PalletCommonError (384) */ + /** @name PalletCommonError (386) */ export interface PalletCommonError extends Enum { readonly isCollectionNotFound: boolean; readonly isMustBeTokenOwner: boolean; @@ -3047,7 +3048,7 @@ readonly type: 'CollectionNotFound' | 'MustBeTokenOwner' | 'NoPermission' | 'CantDestroyNotEmptyCollection' | 'PublicMintingNotAllowed' | 'AddressNotInAllowlist' | 'CollectionNameLimitExceeded' | 'CollectionDescriptionLimitExceeded' | 'CollectionTokenPrefixLimitExceeded' | 'TotalCollectionsLimitExceeded' | 'CollectionAdminCountExceeded' | 'CollectionLimitBoundsExceeded' | 'OwnerPermissionsCantBeReverted' | 'TransferNotAllowed' | 'AccountTokenLimitExceeded' | 'CollectionTokenLimitExceeded' | 'MetadataFlagFrozen' | 'TokenNotFound' | 'TokenValueTooLow' | 'ApprovedValueTooLow' | 'CantApproveMoreThanOwned' | 'AddressIsZero' | 'UnsupportedOperation' | 'NotSufficientFounds' | 'UserIsNotAllowedToNest' | 'SourceCollectionIsNotAllowedToNest' | 'CollectionFieldSizeExceeded' | 'NoSpaceForProperty' | 'PropertyLimitReached' | 'PropertyKeyIsTooLong' | 'InvalidCharacterInPropertyKey' | 'EmptyPropertyKey' | 'CollectionIsExternal' | 'CollectionIsInternal'; } - /** @name PalletFungibleError (386) */ + /** @name PalletFungibleError (388) */ export interface PalletFungibleError extends Enum { readonly isNotFungibleDataUsedToMintFungibleCollectionToken: boolean; readonly isFungibleItemsHaveNoId: boolean; @@ -3057,12 +3058,12 @@ readonly type: 'NotFungibleDataUsedToMintFungibleCollectionToken' | 'FungibleItemsHaveNoId' | 'FungibleItemsDontHaveData' | 'FungibleDisallowsNesting' | 'SettingPropertiesNotAllowed'; } - /** @name PalletRefungibleItemData (387) */ + /** @name PalletRefungibleItemData (389) */ export interface PalletRefungibleItemData extends Struct { readonly constData: Bytes; } - /** @name PalletRefungibleError (391) */ + /** @name PalletRefungibleError (393) */ export interface PalletRefungibleError extends Enum { readonly isNotRefungibleDataUsedToMintFungibleCollectionToken: boolean; readonly isWrongRefungiblePieces: boolean; @@ -3071,12 +3072,12 @@ readonly type: 'NotRefungibleDataUsedToMintFungibleCollectionToken' | 'WrongRefungiblePieces' | 'RefungibleDisallowsNesting' | 'SettingPropertiesNotAllowed'; } - /** @name PalletNonfungibleItemData (392) */ + /** @name PalletNonfungibleItemData (394) */ export interface PalletNonfungibleItemData extends Struct { readonly owner: PalletEvmAccountBasicCrossAccountIdRepr; } - /** @name PalletNonfungibleError (394) */ + /** @name PalletNonfungibleError (396) */ export interface PalletNonfungibleError extends Enum { readonly isNotNonfungibleDataUsedToMintFungibleCollectionToken: boolean; readonly isNonfungibleItemsHaveNoAmount: boolean; @@ -3084,7 +3085,7 @@ readonly type: 'NotNonfungibleDataUsedToMintFungibleCollectionToken' | 'NonfungibleItemsHaveNoAmount' | 'CantBurnNftWithChildren'; } - /** @name PalletStructureError (395) */ + /** @name PalletStructureError (397) */ export interface PalletStructureError extends Enum { readonly isOuroborosDetected: boolean; readonly isDepthLimit: boolean; @@ -3093,12 +3094,13 @@ readonly type: 'OuroborosDetected' | 'DepthLimit' | 'BreadthLimit' | 'TokenNotFound'; } - /** @name PalletRmrkCoreError (396) */ + /** @name PalletRmrkCoreError (398) */ export interface PalletRmrkCoreError extends Enum { readonly isCorruptedCollectionType: boolean; readonly isNftTypeEncodeError: boolean; readonly isRmrkPropertyKeyIsTooLong: boolean; readonly isRmrkPropertyValueIsTooLong: boolean; + readonly isUnableToDecodeRmrkData: boolean; readonly isCollectionNotEmpty: boolean; readonly isNoAvailableCollectionId: boolean; readonly isNoAvailableNftId: boolean; @@ -3111,10 +3113,10 @@ readonly isCannotAcceptNonOwnedNft: boolean; readonly isCannotRejectNonOwnedNft: boolean; readonly isResourceNotPending: boolean; - readonly type: 'CorruptedCollectionType' | 'NftTypeEncodeError' | 'RmrkPropertyKeyIsTooLong' | 'RmrkPropertyValueIsTooLong' | 'CollectionNotEmpty' | 'NoAvailableCollectionId' | 'NoAvailableNftId' | 'CollectionUnknown' | 'NoPermission' | 'NonTransferable' | 'CollectionFullOrLocked' | 'ResourceDoesntExist' | 'CannotSendToDescendentOrSelf' | 'CannotAcceptNonOwnedNft' | 'CannotRejectNonOwnedNft' | 'ResourceNotPending'; + readonly type: 'CorruptedCollectionType' | 'NftTypeEncodeError' | 'RmrkPropertyKeyIsTooLong' | 'RmrkPropertyValueIsTooLong' | 'UnableToDecodeRmrkData' | 'CollectionNotEmpty' | 'NoAvailableCollectionId' | 'NoAvailableNftId' | 'CollectionUnknown' | 'NoPermission' | 'NonTransferable' | 'CollectionFullOrLocked' | 'ResourceDoesntExist' | 'CannotSendToDescendentOrSelf' | 'CannotAcceptNonOwnedNft' | 'CannotRejectNonOwnedNft' | 'ResourceNotPending'; } - /** @name PalletRmrkEquipError (398) */ + /** @name PalletRmrkEquipError (400) */ export interface PalletRmrkEquipError extends Enum { readonly isPermissionError: boolean; readonly isNoAvailableBaseId: boolean; @@ -3124,7 +3126,7 @@ readonly type: 'PermissionError' | 'NoAvailableBaseId' | 'NoAvailablePartId' | 'BaseDoesntExist' | 'NeedsDefaultThemeFirst'; } - /** @name PalletEvmError (401) */ + /** @name PalletEvmError (403) */ export interface PalletEvmError extends Enum { readonly isBalanceLow: boolean; readonly isFeeOverflow: boolean; @@ -3135,7 +3137,7 @@ readonly type: 'BalanceLow' | 'FeeOverflow' | 'PaymentOverflow' | 'WithdrawFailed' | 'GasPriceTooLow' | 'InvalidNonce'; } - /** @name FpRpcTransactionStatus (404) */ + /** @name FpRpcTransactionStatus (406) */ export interface FpRpcTransactionStatus extends Struct { readonly transactionHash: H256; readonly transactionIndex: u32; @@ -3146,10 +3148,10 @@ readonly logsBloom: EthbloomBloom; } - /** @name EthbloomBloom (406) */ + /** @name EthbloomBloom (408) */ export interface EthbloomBloom extends U8aFixed {} - /** @name EthereumReceiptReceiptV3 (408) */ + /** @name EthereumReceiptReceiptV3 (410) */ export interface EthereumReceiptReceiptV3 extends Enum { readonly isLegacy: boolean; readonly asLegacy: EthereumReceiptEip658ReceiptData; @@ -3160,7 +3162,7 @@ readonly type: 'Legacy' | 'Eip2930' | 'Eip1559'; } - /** @name EthereumReceiptEip658ReceiptData (409) */ + /** @name EthereumReceiptEip658ReceiptData (411) */ export interface EthereumReceiptEip658ReceiptData extends Struct { readonly statusCode: u8; readonly usedGas: U256; @@ -3168,14 +3170,14 @@ readonly logs: Vec; } - /** @name EthereumBlock (410) */ + /** @name EthereumBlock (412) */ export interface EthereumBlock extends Struct { readonly header: EthereumHeader; readonly transactions: Vec; readonly ommers: Vec; } - /** @name EthereumHeader (411) */ + /** @name EthereumHeader (413) */ export interface EthereumHeader extends Struct { readonly parentHash: H256; readonly ommersHash: H256; @@ -3194,24 +3196,24 @@ readonly nonce: EthereumTypesHashH64; } - /** @name EthereumTypesHashH64 (412) */ + /** @name EthereumTypesHashH64 (414) */ export interface EthereumTypesHashH64 extends U8aFixed {} - /** @name PalletEthereumError (417) */ + /** @name PalletEthereumError (419) */ export interface PalletEthereumError extends Enum { readonly isInvalidSignature: boolean; readonly isPreLogExists: boolean; readonly type: 'InvalidSignature' | 'PreLogExists'; } - /** @name PalletEvmCoderSubstrateError (418) */ + /** @name PalletEvmCoderSubstrateError (420) */ export interface PalletEvmCoderSubstrateError extends Enum { readonly isOutOfGas: boolean; readonly isOutOfFund: boolean; readonly type: 'OutOfGas' | 'OutOfFund'; } - /** @name PalletEvmContractHelpersSponsoringModeT (419) */ + /** @name PalletEvmContractHelpersSponsoringModeT (421) */ export interface PalletEvmContractHelpersSponsoringModeT extends Enum { readonly isDisabled: boolean; readonly isAllowlisted: boolean; @@ -3219,20 +3221,20 @@ readonly type: 'Disabled' | 'Allowlisted' | 'Generous'; } - /** @name PalletEvmContractHelpersError (421) */ + /** @name PalletEvmContractHelpersError (423) */ export interface PalletEvmContractHelpersError extends Enum { readonly isNoPermission: boolean; readonly type: 'NoPermission'; } - /** @name PalletEvmMigrationError (422) */ + /** @name PalletEvmMigrationError (424) */ export interface PalletEvmMigrationError extends Enum { readonly isAccountNotEmpty: boolean; readonly isAccountIsNotMigrating: boolean; readonly type: 'AccountNotEmpty' | 'AccountIsNotMigrating'; } - /** @name SpRuntimeMultiSignature (424) */ + /** @name SpRuntimeMultiSignature (426) */ export interface SpRuntimeMultiSignature extends Enum { readonly isEd25519: boolean; readonly asEd25519: SpCoreEd25519Signature; @@ -3243,34 +3245,34 @@ readonly type: 'Ed25519' | 'Sr25519' | 'Ecdsa'; } - /** @name SpCoreEd25519Signature (425) */ + /** @name SpCoreEd25519Signature (427) */ export interface SpCoreEd25519Signature extends U8aFixed {} - /** @name SpCoreSr25519Signature (427) */ + /** @name SpCoreSr25519Signature (429) */ export interface SpCoreSr25519Signature extends U8aFixed {} - /** @name SpCoreEcdsaSignature (428) */ + /** @name SpCoreEcdsaSignature (430) */ export interface SpCoreEcdsaSignature extends U8aFixed {} - /** @name FrameSystemExtensionsCheckSpecVersion (431) */ + /** @name FrameSystemExtensionsCheckSpecVersion (433) */ export type FrameSystemExtensionsCheckSpecVersion = Null; - /** @name FrameSystemExtensionsCheckGenesis (432) */ + /** @name FrameSystemExtensionsCheckGenesis (434) */ export type FrameSystemExtensionsCheckGenesis = Null; - /** @name FrameSystemExtensionsCheckNonce (435) */ + /** @name FrameSystemExtensionsCheckNonce (437) */ export interface FrameSystemExtensionsCheckNonce extends Compact {} - /** @name FrameSystemExtensionsCheckWeight (436) */ + /** @name FrameSystemExtensionsCheckWeight (438) */ export type FrameSystemExtensionsCheckWeight = Null; - /** @name PalletTemplateTransactionPaymentChargeTransactionPayment (437) */ + /** @name PalletTemplateTransactionPaymentChargeTransactionPayment (439) */ export interface PalletTemplateTransactionPaymentChargeTransactionPayment extends Compact {} - /** @name OpalRuntimeRuntime (438) */ + /** @name OpalRuntimeRuntime (440) */ export type OpalRuntimeRuntime = Null; - /** @name PalletEthereumFakeTransactionFinalizer (439) */ + /** @name PalletEthereumFakeTransactionFinalizer (441) */ export type PalletEthereumFakeTransactionFinalizer = Null; } // declare module --- a/tests/src/nesting/nest.test.ts +++ b/tests/src/nesting/nest.test.ts @@ -2,6 +2,7 @@ import {tokenIdToAddress} from '../eth/util/helpers'; import usingApi, {executeTransaction} from '../substrate/substrate-api'; import { + addCollectionAdminExpectSuccess, addToAllowListExpectSuccess, createCollectionExpectSuccess, createItemExpectSuccess, @@ -20,10 +21,11 @@ let alice: IKeyringPair; let bob: IKeyringPair; +let charlie: IKeyringPair; -describe('Integration Test: Nesting', () => { +describe('Integration Test: Composite nesting tests', () => { before(async () => { - await usingApi(async (api, privateKeyWrapper) => { + await usingApi(async (_, privateKeyWrapper) => { alice = privateKeyWrapper('//Alice'); bob = privateKeyWrapper('//Bob'); }); @@ -145,7 +147,79 @@ ], 'Children contents check at deeper nesting'); }); }); +}); +describe('Integration Test: Various token type nesting', async () => { + before(async () => { + await usingApi(async (_, privateKeyWrapper) => { + alice = privateKeyWrapper('//Alice'); + bob = privateKeyWrapper('//Bob'); + charlie = privateKeyWrapper('//Charlie'); + }); + }); + + it('Admin (NFT): allows an Admin to nest a token', async () => { + await usingApi(async api => { + const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}}); + await setCollectionPermissionsExpectSuccess(alice, collection, {nesting: {collectionAdmin: true}}); + await addCollectionAdminExpectSuccess(alice, collection, bob.address); + const targetToken = await createItemExpectSuccess(alice, collection, 'NFT', charlie.address); + + // Create a nested token + const nestedToken = await createItemExpectSuccess(bob, collection, 'NFT', {Ethereum: tokenIdToAddress(collection, targetToken)}); + expect(await getTopmostTokenOwner(api, collection, nestedToken)).to.be.deep.equal({Substrate: charlie.address}); + expect(await getTokenOwner(api, collection, nestedToken)).to.be.deep.equal({Ethereum: tokenIdToAddress(collection, targetToken).toLowerCase()}); + + // Create a token to be nested and nest + const newToken = await createItemExpectSuccess(bob, collection, 'NFT'); + await transferExpectSuccess(collection, newToken, bob, {Ethereum: tokenIdToAddress(collection, targetToken)}); + expect(await getTopmostTokenOwner(api, collection, newToken)).to.be.deep.equal({Substrate: charlie.address}); + expect(await getTokenOwner(api, collection, newToken)).to.be.deep.equal({Ethereum: tokenIdToAddress(collection, targetToken).toLowerCase()}); + }); + }); + + it('Admin (NFT): Admin and Token Owner can operate together', async () => { + await usingApi(async api => { + const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}}); + await setCollectionPermissionsExpectSuccess(alice, collection, {nesting: {tokenOwner: true, collectionAdmin: true}}); + await addCollectionAdminExpectSuccess(alice, collection, bob.address); + const targetToken = await createItemExpectSuccess(alice, collection, 'NFT', charlie.address); + + // Create a nested token by an administrator + const nestedToken = await createItemExpectSuccess(bob, collection, 'NFT', {Ethereum: tokenIdToAddress(collection, targetToken)}); + expect(await getTopmostTokenOwner(api, collection, nestedToken)).to.be.deep.equal({Substrate: charlie.address}); + expect(await getTokenOwner(api, collection, nestedToken)).to.be.deep.equal({Ethereum: tokenIdToAddress(collection, targetToken).toLowerCase()}); + + // Create a token and allow the owner to nest too + const newToken = await createItemExpectSuccess(alice, collection, 'NFT', charlie.address); + await transferExpectSuccess(collection, newToken, charlie, {Ethereum: tokenIdToAddress(collection, nestedToken)}); + expect(await getTopmostTokenOwner(api, collection, newToken)).to.be.deep.equal({Substrate: charlie.address}); + expect(await getTokenOwner(api, collection, newToken)).to.be.deep.equal({Ethereum: tokenIdToAddress(collection, nestedToken).toLowerCase()}); + }); + }); + + it('Admin (NFT): allows an Admin to nest a token (Restricted nesting)', async () => { + await usingApi(async api => { + const collectionA = await createCollectionExpectSuccess({mode: {type: 'NFT'}}); + await addCollectionAdminExpectSuccess(alice, collectionA, bob.address); + const collectionB = await createCollectionExpectSuccess({mode: {type: 'NFT'}}); + await addCollectionAdminExpectSuccess(alice, collectionB, bob.address); + await setCollectionPermissionsExpectSuccess(alice, collectionA, {nesting: {collectionAdmin: true, restricted:[collectionA, collectionB]}}); + const targetToken = await createItemExpectSuccess(alice, collectionA, 'NFT', charlie.address); + + // Create a nested token + const nestedToken = await createItemExpectSuccess(bob, collectionB, 'NFT', {Ethereum: tokenIdToAddress(collectionA, targetToken)}); + expect(await getTopmostTokenOwner(api, collectionB, nestedToken)).to.be.deep.equal({Substrate: charlie.address}); + expect(await getTokenOwner(api, collectionB, nestedToken)).to.be.deep.equal({Ethereum: tokenIdToAddress(collectionA, targetToken).toLowerCase()}); + + // Create a token to be nested and nest + const newToken = await createItemExpectSuccess(bob, collectionB, 'NFT'); + await transferExpectSuccess(collectionB, newToken, bob, {Ethereum: tokenIdToAddress(collectionA, targetToken)}); + expect(await getTopmostTokenOwner(api, collectionB, newToken)).to.be.deep.equal({Substrate: charlie.address}); + expect(await getTokenOwner(api, collectionB, newToken)).to.be.deep.equal({Ethereum: tokenIdToAddress(collectionA, targetToken).toLowerCase()}); + }); + }); + // ---------- Non-Fungible ---------- it('NFT: allows an Owner to nest/unnest their token', async () => { @@ -248,7 +322,7 @@ await expect(executeTransaction(api, alice, api.tx.unique.createItem( collectionRFT, targetAddress, - {ReFungible: {const_data: [], pieces: 100}}, + {ReFungible: {pieces: 100}}, ))).to.not.be.rejected; // Nest a new token @@ -271,7 +345,7 @@ await expect(executeTransaction(api, alice, api.tx.unique.createItem( collectionRFT, targetAddress, - {ReFungible: {const_data: [], pieces: 100}}, + {ReFungible: {pieces: 100}}, ))).to.not.be.rejected; // Nest a new token @@ -283,7 +357,7 @@ describe('Negative Test: Nesting', async() => { before(async () => { - await usingApi(async (api, privateKeyWrapper) => { + await usingApi(async (_, privateKeyWrapper) => { alice = privateKeyWrapper('//Alice'); bob = privateKeyWrapper('//Bob'); }); @@ -314,13 +388,121 @@ await expect(executeTransaction(api, alice, api.tx.unique.createItem( collection, {Ethereum: tokenIdToAddress(collection, prevToken)}, - {nft: {const_data: [], variable_data: []}} as any, + {nft: {}} as any, )), 'while creating nested token').to.be.rejectedWith(/^structure\.DepthLimit$/); expect(await getTopmostTokenOwner(api, collection, prevToken)).to.be.deep.equal({Substrate: alice.address}); }); }); + // ---------- Admin ------------ + + it('Admin (NFT): disallows an Admin to operate nesting when only TokenOwner is allowed', async () => { + await usingApi(async api => { + const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}}); + await setCollectionPermissionsExpectSuccess(alice, collection, {nesting: {tokenOwner: true}}); + await addCollectionAdminExpectSuccess(alice, collection, bob.address); + const targetToken = await createItemExpectSuccess(alice, collection, 'NFT'); + + // Try to create a nested token as collection admin when it's disallowed + await expect(executeTransaction(api, bob, api.tx.unique.createItem( + collection, + {Ethereum: tokenIdToAddress(collection, targetToken)}, + {nft: {}} as any, + )), 'while creating nested token').to.be.rejectedWith(/common\.UserIsNotAllowedToNest/); + + // Try to create and nest a token in the wrong collection + const newToken = await createItemExpectSuccess(bob, collection, 'NFT'); + await expect(executeTransaction( + api, + bob, + api.tx.unique.transfer({Ethereum: tokenIdToAddress(collection, targetToken)}, collection, newToken, 1), + ), 'while nesting new token').to.be.rejectedWith(/common\.UserIsNotAllowedToNest/); + expect(await getTokenOwner(api, collection, newToken)).to.be.deep.equal({Substrate: bob.address}); + }); + }); + + it('Admin (NFT): disallows a Token Owner to operate nesting when only Admin is allowed', async () => { + await usingApi(async api => { + const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}}); + await setCollectionPermissionsExpectSuccess(alice, collection, {nesting: {collectionAdmin: true}}); + await addToAllowListExpectSuccess(alice, collection, bob.address); + await enableAllowListExpectSuccess(alice, collection); + await enablePublicMintingExpectSuccess(alice, collection); + const targetToken = await createItemExpectSuccess(alice, collection, 'NFT'); + + // Try to create a nested token as collection admin when it's disallowed + await expect(executeTransaction(api, bob, api.tx.unique.createItem( + collection, + {Ethereum: tokenIdToAddress(collection, targetToken)}, + {nft: {}} as any, + )), 'while creating nested token').to.be.rejectedWith(/common\.AddressNotInAllowlist/); + + // Try to create and nest a token in the wrong collection + const newToken = await createItemExpectSuccess(bob, collection, 'NFT'); + await expect(executeTransaction( + api, + bob, + api.tx.unique.transfer({Ethereum: tokenIdToAddress(collection, targetToken)}, collection, newToken, 1), + ), 'while nesting new token').to.be.rejectedWith(/common\.AddressNotInAllowlist/); + expect(await getTokenOwner(api, collection, newToken)).to.be.deep.equal({Substrate: bob.address}); + }); + }); + + it('Admin (NFT): disallows an Admin to nest and unnest someone else\'s token', async () => { + await usingApi(async api => { + const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}}); + await setCollectionPermissionsExpectSuccess(alice, collection, {nesting: {collectionAdmin: true}}); + + await addToAllowListExpectSuccess(alice, collection, bob.address); + await enableAllowListExpectSuccess(alice, collection); + await enablePublicMintingExpectSuccess(alice, collection); + + // Create a token to attempt to be nested into + const targetToken = await createItemExpectSuccess(bob, collection, 'NFT'); + const targetAddress = {Ethereum: tokenIdToAddress(collection, targetToken).toLowerCase()}; + + // Try to nest somebody else's token + const newToken = await createItemExpectSuccess(bob, collection, 'NFT'); + await expect(executeTransaction( + api, + alice, + api.tx.unique.transfer(targetAddress, collection, newToken, 1), + ), 'while nesting another\'s token token').to.be.rejectedWith(/common\.AddressNotInAllowlist/); + expect(await getTokenOwner(api, collection, newToken)).to.be.deep.equal({Substrate: bob.address}); + + // Nest a token as admin and try to unnest it, now belonging to someone else + const nestedToken = await createItemExpectSuccess(alice, collection, 'NFT', targetAddress); + await expect(executeTransaction( + api, + alice, + api.tx.unique.transferFrom(targetAddress, normalizeAccountId(alice), collection, nestedToken, 1), + ), 'while unnesting another\'s token').to.be.rejectedWith(/common\.AddressNotInAllowlist/); + expect(await getTokenOwner(api, collection, nestedToken)).to.be.deep.equal(targetAddress); + expect(await getTopmostTokenOwner(api, collection, nestedToken)).to.be.deep.equal({Substrate: bob.address}); + }); + }); + + it('Admin (NFT): disallows an Admin to nest a token from an unlisted collection (Restricted nesting)', async () => { + await usingApi(async api => { + const collectionA = await createCollectionExpectSuccess({mode: {type: 'NFT'}}); + const collectionB = await createCollectionExpectSuccess({mode: {type: 'NFT'}}); + await setCollectionPermissionsExpectSuccess(alice, collectionA, {nesting: {collectionAdmin: true, restricted:[collectionA]}}); + + // Create a token to attempt to be nested into + const targetToken = await createItemExpectSuccess(alice, collectionA, 'NFT'); + + // Try to create and nest a token in the wrong collection + const newToken = await createItemExpectSuccess(alice, collectionB, 'NFT'); + await expect(executeTransaction( + api, + alice, + api.tx.unique.transfer({Ethereum: tokenIdToAddress(collectionA, targetToken)}, collectionB, newToken, 1), + ), 'while nesting a foreign token').to.be.rejectedWith(/common\.SourceCollectionIsNotAllowedToNest/); + expect(await getTokenOwner(api, collectionB, newToken)).to.be.deep.equal({Substrate: alice.address}); + }); + }); + // ---------- Non-Fungible ---------- it('NFT: disallows to nest token if nesting is disabled', async () => { @@ -333,7 +515,7 @@ await expect(executeTransaction(api, alice, api.tx.unique.createItem( collection, {Ethereum: tokenIdToAddress(collection, targetToken)}, - {nft: {const_data: [], variable_data: []}} as any, + {nft: {}} as any, )), 'while creating nested token').to.be.rejectedWith(/^common\.UserIsNotAllowedToNest$/); // Create a token to be nested @@ -361,7 +543,7 @@ await expect(executeTransaction(api, alice, api.tx.unique.createItem( collection, {Ethereum: tokenIdToAddress(collection, targetToken)}, - {nft: {const_data: [], variable_data: []}} as any, + {nft: {}} as any, )), 'while creating nested token').to.be.rejectedWith(/common\.UserIsNotAllowedToNest/); // Try to create and nest a token in the wrong collection @@ -387,7 +569,7 @@ await expect(executeTransaction(api, alice, api.tx.unique.createItem( collection, {Ethereum: tokenIdToAddress(collection, targetToken)}, - {nft: {const_data: [], variable_data: []}} as any, + {nft: {}} as any, )), 'while creating nested token').to.be.rejectedWith(/common\.UserIsNotAllowedToNest/); // Try to create and nest a token in the wrong collection @@ -409,7 +591,7 @@ await expect(executeTransaction(api, alice, api.tx.unique.createItem( collection, {Ethereum: tokenIdToAddress(collection, targetToken)}, - {nft: {const_data: [], variable_data: []}} as any, + {nft: {}} as any, )), 'while creating nested token').to.be.rejectedWith(/common\.SourceCollectionIsNotAllowedToNest/); // Try to create and nest a token in the wrong collection @@ -543,7 +725,7 @@ await expect(executeTransaction(api, alice, api.tx.unique.createItem( collectionRFT, targetAddress, - {ReFungible: {const_data: [], pieces: 100}}, + {ReFungible: {pieces: 100}}, )), 'while creating a nested token').to.be.rejectedWith(/^common\.UserIsNotAllowedToNest$/); // Create a token to be nested @@ -579,7 +761,7 @@ await expect(executeTransaction(api, alice, api.tx.unique.createItem( collectionRFT, targetAddress, - {ReFungible: {const_data: [], pieces: 100}}, + {ReFungible: {pieces: 100}}, )), 'while creating a nested token').to.be.rejectedWith(/common\.UserIsNotAllowedToNest/); // Try to create and nest a token in the wrong collection @@ -606,7 +788,7 @@ await expect(executeTransaction(api, alice, api.tx.unique.createItem( collectionRFT, targetAddress, - {ReFungible: {const_data: [], pieces: 100}}, + {ReFungible: {pieces: 100}}, )), 'while creating a nested token').to.be.rejectedWith(/common\.UserIsNotAllowedToNest/); // Try to create and nest a token in the wrong collection @@ -630,7 +812,7 @@ await expect(executeTransaction(api, alice, api.tx.unique.createItem( collectionRFT, targetAddress, - {ReFungible: {const_data: [], pieces: 100}}, + {ReFungible: {pieces: 100}}, )), 'while creating a nested token').to.be.rejectedWith(/common\.SourceCollectionIsNotAllowedToNest/); // Try to create and nest a token in the wrong collection -- gitstuff