difftreelog
Merge branch 'develop' into fix/scheduler-benchmarks
in: master
117 files changed
Cargo.lockdiffbeforeafterboth6329name = "pallet-rmrk-core"6329name = "pallet-rmrk-core"6330version = "0.1.0"6330version = "0.1.0"6331dependencies = [6331dependencies = [6332 "derivative",6332 "frame-benchmarking",6333 "frame-benchmarking",6333 "frame-support",6334 "frame-support",6334 "frame-system",6335 "frame-system",6335 "pallet-common",6336 "pallet-common",6336 "pallet-evm",6337 "pallet-evm",6337 "pallet-nonfungible",6338 "pallet-nonfungible",6339 "pallet-structure",6338 "parity-scale-codec 3.1.2",6340 "parity-scale-codec 3.1.2",6341 "rmrk-traits",6339 "scale-info",6342 "scale-info",6340 "sp-core",6343 "sp-core",6341 "sp-runtime",6344 "sp-runtime",6355 "pallet-nonfungible",6358 "pallet-nonfungible",6356 "pallet-rmrk-core",6359 "pallet-rmrk-core",6357 "parity-scale-codec 3.1.2",6360 "parity-scale-codec 3.1.2",6361 "rmrk-traits",6358 "scale-info",6362 "scale-info",6359 "sp-core",6363 "sp-core",6360 "sp-runtime",6364 "sp-runtime",8577 "pallet-randomness-collective-flip",8581 "pallet-randomness-collective-flip",8578 "pallet-refungible",8582 "pallet-refungible",8579 "pallet-rmrk-core",8583 "pallet-rmrk-core",8584 "pallet-rmrk-equip",8580 "pallet-structure",8585 "pallet-structure",8581 "pallet-sudo",8586 "pallet-sudo",8582 "pallet-template-transaction-payment",8587 "pallet-template-transaction-payment",8997version = "0.0.1"9002version = "0.0.1"8998dependencies = [9003dependencies = [8999 "parity-scale-codec 2.3.1",9004 "parity-scale-codec 2.3.1",9005 "rmrk-traits",9000 "serde",9006 "serde",9001 "sp-api",9007 "sp-api",9002 "sp-core",9008 "sp-core",9003 "sp-runtime",9009 "sp-runtime",9004 "sp-std",9010 "sp-std",9005 "up-data-structs",9006]9011]90129013[[package]]9014name = "rmrk-traits"9015version = "0.1.0"9016dependencies = [9017 "parity-scale-codec 3.1.2",9018 "scale-info",9019 "serde",9020]900790219008[[package]]9022[[package]]9009name = "rocksdb"9023name = "rocksdb"12620 "pallet-randomness-collective-flip",12634 "pallet-randomness-collective-flip",12621 "pallet-refungible",12635 "pallet-refungible",12622 "pallet-rmrk-core",12636 "pallet-rmrk-core",12637 "pallet-rmrk-equip",12623 "pallet-structure",12638 "pallet-structure",12624 "pallet-sudo",12639 "pallet-sudo",12625 "pallet-template-transaction-payment",12640 "pallet-template-transaction-payment",12721 "frame-system",12736 "frame-system",12722 "pallet-evm",12737 "pallet-evm",12723 "parity-scale-codec 3.1.2",12738 "parity-scale-codec 3.1.2",12739 "rmrk-traits",12724 "scale-info",12740 "scale-info",12725 "serde",12741 "serde",12726 "sp-core",12742 "sp-core",Makefilediffbeforeafterboth105bench-scheduler:105bench-scheduler:106 make _bench2 PALLET=unq-scheduler PALLET_DIR=scheduler106 make _bench2 PALLET=unq-scheduler PALLET_DIR=scheduler107108.PHONY: bench-rmrk-core109bench-rmrk-core:110 make _bench PALLET=proxy-rmrk-core107111108.PHONY: bench112.PHONY: bench109bench: bench-evm-migration bench-unique bench-structure bench-fungible bench-refungible bench-nonfungible bench-scheduler113bench: bench-evm-migration bench-unique bench-structure bench-fungible bench-refungible bench-nonfungible bench-scheduler bench-rmrk-core110114client/rpc/src/lib.rsdiffbeforeafterboth276 at: Option<BlockHash>,276 at: Option<BlockHash>,277 ) -> Result<Vec<ResourceInfo>>;277 ) -> Result<Vec<ResourceInfo>>;278278279 #[method(name = "rmrk_nftResourcePriorities")]279 #[method(name = "rmrk_nftResourcePriority")]280 /// Get NFT resource priorities280 /// Get NFT resource priority281 fn nft_resource_priorities(281 fn nft_resource_priority(282 &self,282 &self,283 collection_id: RmrkCollectionId,283 collection_id: RmrkCollectionId,284 nft_id: RmrkNftId,284 nft_id: RmrkNftId,285 resource_id: RmrkResourceId,285 at: Option<BlockHash>,286 at: Option<BlockHash>,286 ) -> Result<Vec<RmrkResourceId>>;287 ) -> Result<Option<u32>>;287288288 #[method(name = "rmrk_base")]289 #[method(name = "rmrk_base")]289 /// Get base info290 /// Get base info325 }326 }326}327}328329pub struct Rmrk<C, P> {330 client: Arc<C>,331 _marker: std::marker::PhantomData<P>,332}333334impl<C, P> Rmrk<C, P> {335 pub fn new(client: Arc<C>) -> Self {336 Self {337 client,338 _marker: Default::default(),339 }340 }341}327342328macro_rules! pass_method {343macro_rules! pass_method {329 (344 (473 BaseInfo,488 BaseInfo,474 PartType,489 PartType,475 Theme,490 Theme,476 > for Unique<C, Block>491 > for Rmrk<C, Block>477where492where478 C: Send + Sync + 'static + ProvideRuntimeApi<Block> + HeaderBackend<Block>,493 C: Send + Sync + 'static + ProvideRuntimeApi<Block> + HeaderBackend<Block>,479 C::Api: RmrkRuntimeApi<494 C::Api: RmrkRuntimeApi<522 rmrk_api537 rmrk_api523 );538 );524 pass_method!(nft_resources(collection_id: RmrkCollectionId, nft_id: RmrkNftId) -> Vec<ResourceInfo>, rmrk_api);539 pass_method!(nft_resources(collection_id: RmrkCollectionId, nft_id: RmrkNftId) -> Vec<ResourceInfo>, rmrk_api);525 pass_method!(nft_resource_priorities(collection_id: RmrkCollectionId, nft_id: RmrkNftId) -> Vec<RmrkResourceId>, rmrk_api);540 pass_method!(nft_resource_priority(collection_id: RmrkCollectionId, nft_id: RmrkNftId, resource_id: RmrkResourceId) -> Option<u32>, rmrk_api);526 pass_method!(base(base_id: RmrkBaseId) -> Option<BaseInfo>, rmrk_api);541 pass_method!(base(base_id: RmrkBaseId) -> Option<BaseInfo>, rmrk_api);527 pass_method!(base_parts(base_id: RmrkBaseId) -> Vec<PartType>, rmrk_api);542 pass_method!(base_parts(base_id: RmrkBaseId) -> Vec<PartType>, rmrk_api);528 pass_method!(theme_names(base_id: RmrkBaseId) -> Vec<RmrkThemeName>, rmrk_api);543 pass_method!(theme_names(base_id: RmrkBaseId) -> Vec<RmrkThemeName>, rmrk_api);crates/evm-coder/src/solidity.rsdiffbeforeafterboth455 }455 }456}456}457457458#[impl_for_tuples(0, 12)]458#[impl_for_tuples(0, 24)]459impl SolidityFunctions for Tuple {459impl SolidityFunctions for Tuple {460 for_tuples!( where #( Tuple: SolidityFunctions ),* );460 for_tuples!( where #( Tuple: SolidityFunctions ),* );461461node/cli/src/chain_spec.rsdiffbeforeafterboth187 }};187 }};188}188}189189190pub fn development_config() -> OpalChainSpec {190pub fn development_config() -> DefaultChainSpec {191 let mut properties = Map::new();191 let mut properties = Map::new();192 properties.insert("tokenSymbol".into(), opal_runtime::TOKEN_SYMBOL.into());192 properties.insert("tokenSymbol".into(), default_runtime::TOKEN_SYMBOL.into());193 properties.insert("tokenDecimals".into(), 18.into());193 properties.insert("tokenDecimals".into(), 18.into());194 properties.insert("ss58Format".into(), opal_runtime::SS58Prefix::get().into());194 properties.insert(195 "ss58Format".into(),196 default_runtime::SS58Prefix::get().into(),197 );195198196 OpalChainSpec::from_genesis(199 DefaultChainSpec::from_genesis(197 // Name200 // Name201 format!(202 "{}{}",203 default_runtime::RUNTIME_NAME.to_uppercase(),204 if cfg!(feature = "unique-runtime") {205 ""206 } else {198 "OPAL by UNIQUE",207 " by UNIQUE"208 }209 )210 .as_str(),199 // ID211 // ID200 "opal_dev",212 format!("{}_dev", default_runtime::RUNTIME_NAME).as_str(),201 ChainType::Local,213 ChainType::Local,202 move || {214 move || {203 testnet_genesis!(215 testnet_genesis!(204 opal_runtime,216 default_runtime,205 // Sudo account217 // Sudo account206 get_account_id_from_seed::<sr25519::Public>("Alice"),218 get_account_id_from_seed::<sr25519::Public>("Alice"),207 vec![219 vec![node/cli/src/service.rsdiffbeforeafterboth66use unique_runtime_common::types::{AuraId, RuntimeInstance, AccountId, Balance, Index, Hash, Block};66use unique_runtime_common::types::{AuraId, RuntimeInstance, AccountId, Balance, Index, Hash, Block};676768// RMRK68// RMRK69/* TODO free RMRK! use up_data_structs::{69use up_data_structs::{70 RmrkCollectionInfo, RmrkInstanceInfo, RmrkResourceInfo, RmrkPropertyInfo, RmrkBaseInfo,70 RmrkCollectionInfo, RmrkInstanceInfo, RmrkResourceInfo, RmrkPropertyInfo, RmrkBaseInfo,71 RmrkPartType, RmrkTheme,71 RmrkPartType, RmrkTheme,72};*/72};737374/// Unique native executor instance.74/// Unique native executor instance.75#[cfg(feature = "unique-runtime")]75#[cfg(feature = "unique-runtime")]354 + pallet_transaction_payment_rpc_runtime_api::TransactionPaymentApi<Block, Balance>354 + pallet_transaction_payment_rpc_runtime_api::TransactionPaymentApi<Block, Balance>355 + sp_api::ApiExt<Block, StateBackend = sc_client_api::StateBackendFor<FullBackend, Block>>355 + sp_api::ApiExt<Block, StateBackend = sc_client_api::StateBackendFor<FullBackend, Block>>356 + up_rpc::UniqueApi<Block, Runtime::CrossAccountId, AccountId>356 + up_rpc::UniqueApi<Block, Runtime::CrossAccountId, AccountId>357 /* TODO free RMRK!357 + rmrk_rpc::RmrkApi<358 + rmrk_rpc::RmrkApi<358 Block,359 Block,359 AccountId,360 AccountId,360 RmrkCollectionInfo<AccountId>,361 RmrkCollectionInfo<AccountId>,361 RmrkInstanceInfo<AccountId>,362 RmrkInstanceInfo<AccountId>,362 RmrkResourceInfo,363 RmrkResourceInfo,363 RmrkPropertyInfo,364 RmrkPropertyInfo,364 RmrkBaseInfo<AccountId>,365 RmrkBaseInfo<AccountId>,365 RmrkPartType,366 RmrkPartType,366 RmrkTheme,367 RmrkTheme,368 >*/369 + substrate_frame_rpc_system::AccountNonceApi<Block, AccountId, Index>367 > + substrate_frame_rpc_system::AccountNonceApi<Block, AccountId, Index>370 + sp_api::Metadata<Block>368 + sp_api::Metadata<Block>371 + sp_offchain::OffchainWorkerApi<Block>369 + sp_offchain::OffchainWorkerApi<Block>372 + cumulus_primitives_core::CollectCollationInfo<Block>,370 + cumulus_primitives_core::CollectCollationInfo<Block>,661 + pallet_transaction_payment_rpc_runtime_api::TransactionPaymentApi<Block, Balance>659 + pallet_transaction_payment_rpc_runtime_api::TransactionPaymentApi<Block, Balance>662 + sp_api::ApiExt<Block, StateBackend = sc_client_api::StateBackendFor<FullBackend, Block>>660 + sp_api::ApiExt<Block, StateBackend = sc_client_api::StateBackendFor<FullBackend, Block>>663 + up_rpc::UniqueApi<Block, Runtime::CrossAccountId, AccountId>661 + up_rpc::UniqueApi<Block, Runtime::CrossAccountId, AccountId>664 /* TODO free RMRK!662 + rmrk_rpc::RmrkApi<665 + rmrk_rpc::RmrkApi<663 Block,666 Block,664 AccountId,667 AccountId,665 RmrkCollectionInfo<AccountId>,668 RmrkCollectionInfo<AccountId>,666 RmrkInstanceInfo<AccountId>,669 RmrkInstanceInfo<AccountId>,667 RmrkResourceInfo,670 RmrkResourceInfo,668 RmrkPropertyInfo,671 RmrkPropertyInfo,669 RmrkBaseInfo<AccountId>,672 RmrkBaseInfo<AccountId>,670 RmrkPartType,673 RmrkPartType,671 RmrkTheme,674 RmrkTheme,675 >*/676 + substrate_frame_rpc_system::AccountNonceApi<Block, AccountId, Index>672 > + substrate_frame_rpc_system::AccountNonceApi<Block, AccountId, Index>677 + sp_api::Metadata<Block>673 + sp_api::Metadata<Block>678 + sp_offchain::OffchainWorkerApi<Block>674 + sp_offchain::OffchainWorkerApi<Block>679 + cumulus_primitives_core::CollectCollationInfo<Block>675 + cumulus_primitives_core::CollectCollationInfo<Block>807 + pallet_transaction_payment_rpc_runtime_api::TransactionPaymentApi<Block, Balance>803 + pallet_transaction_payment_rpc_runtime_api::TransactionPaymentApi<Block, Balance>808 + sp_api::ApiExt<Block, StateBackend = sc_client_api::StateBackendFor<FullBackend, Block>>804 + sp_api::ApiExt<Block, StateBackend = sc_client_api::StateBackendFor<FullBackend, Block>>809 + up_rpc::UniqueApi<Block, Runtime::CrossAccountId, AccountId>805 + up_rpc::UniqueApi<Block, Runtime::CrossAccountId, AccountId>810 /* TODO free RMRK!806 + rmrk_rpc::RmrkApi<811 + rmrk_rpc::RmrkApi<807 Block,812 Block,808 AccountId,813 AccountId,809 RmrkCollectionInfo<AccountId>,814 RmrkCollectionInfo<AccountId>,810 RmrkInstanceInfo<AccountId>,815 RmrkInstanceInfo<AccountId>,811 RmrkResourceInfo,816 RmrkResourceInfo,812 RmrkPropertyInfo,817 RmrkPropertyInfo,813 RmrkBaseInfo<AccountId>,818 RmrkBaseInfo<AccountId>,814 RmrkPartType,819 RmrkPartType,815 RmrkTheme,820 RmrkTheme,821 >*/822 + substrate_frame_rpc_system::AccountNonceApi<Block, AccountId, Index>816 > + substrate_frame_rpc_system::AccountNonceApi<Block, AccountId, Index>823 + sp_api::Metadata<Block>817 + sp_api::Metadata<Block>824 + sp_offchain::OffchainWorkerApi<Block>818 + sp_offchain::OffchainWorkerApi<Block>825 + cumulus_primitives_core::CollectCollationInfo<Block>819 + cumulus_primitives_core::CollectCollationInfo<Block>node/rpc/src/lib.rsdiffbeforeafterboth44 Hash, AccountId, RuntimeInstance, Index, Block, BlockNumber, Balance,44 Hash, AccountId, RuntimeInstance, Index, Block, BlockNumber, Balance,45};45};46// RMRK46// RMRK47/* TODO free RMRK! use up_data_structs::{47use up_data_structs::{48 RmrkCollectionInfo, RmrkInstanceInfo, RmrkResourceInfo, RmrkPropertyInfo, RmrkBaseInfo,48 RmrkCollectionInfo, RmrkInstanceInfo, RmrkResourceInfo, RmrkPropertyInfo, RmrkBaseInfo,49 RmrkPartType, RmrkTheme,49 RmrkPartType, RmrkTheme,50};*/50};515152/// Extra dependencies for GRANDPA52/// Extra dependencies for GRANDPA53pub struct GrandpaDeps<B> {53pub struct GrandpaDeps<B> {146 C::Api: fp_rpc::EthereumRuntimeRPCApi<Block>,146 C::Api: fp_rpc::EthereumRuntimeRPCApi<Block>,147 C::Api: fp_rpc::ConvertTransactionRuntimeApi<Block>,147 C::Api: fp_rpc::ConvertTransactionRuntimeApi<Block>,148 C::Api: up_rpc::UniqueApi<Block, <R as RuntimeInstance>::CrossAccountId, AccountId>,148 C::Api: up_rpc::UniqueApi<Block, <R as RuntimeInstance>::CrossAccountId, AccountId>,149 /* TODO free RMRK!149 C::Api: rmrk_rpc::RmrkApi<150 C::Api: rmrk_rpc::RmrkApi<150 Block,151 Block,151 AccountId,152 AccountId,152 RmrkCollectionInfo<AccountId>,153 RmrkCollectionInfo<AccountId>,153 RmrkInstanceInfo<AccountId>,154 RmrkInstanceInfo<AccountId>,154 RmrkResourceInfo,155 RmrkResourceInfo,155 RmrkPropertyInfo,156 RmrkPropertyInfo,156 RmrkBaseInfo<AccountId>,157 RmrkBaseInfo<AccountId>,157 RmrkPartType,158 RmrkPartType,158 RmrkTheme,159 RmrkTheme,159 >,160 >,*/161 B: sc_client_api::Backend<Block> + Send + Sync + 'static,160 B: sc_client_api::Backend<Block> + Send + Sync + 'static,162 B::State: sc_client_api::backend::StateBackend<sp_runtime::traits::HashFor<Block>>,161 B::State: sc_client_api::backend::StateBackend<sp_runtime::traits::HashFor<Block>>,163 P: TransactionPool<Block = Block> + 'static,162 P: TransactionPool<Block = Block> + 'static,170 Eth, EthApiServer, EthDevSigner, EthFilter, EthFilterApiServer, EthPubSub,169 Eth, EthApiServer, EthDevSigner, EthFilter, EthFilterApiServer, EthPubSub,171 EthPubSubApiServer, EthSigner, Net, NetApiServer, Web3, Web3ApiServer,170 EthPubSubApiServer, EthSigner, Net, NetApiServer, Web3, Web3ApiServer,172 };171 };173 use uc_rpc::{UniqueApiServer, Unique};172 use uc_rpc::{UniqueApiServer, Unique, RmrkApiServer, Rmrk};174 // use pallet_contracts_rpc::{Contracts, ContractsApi};173 // use pallet_contracts_rpc::{Contracts, ContractsApi};175 use pallet_transaction_payment_rpc::{TransactionPaymentRpc, TransactionPaymentApiServer};174 use pallet_transaction_payment_rpc::{TransactionPaymentRpc, TransactionPaymentApiServer};176 use substrate_frame_rpc_system::{SystemRpc, SystemApiServer};175 use substrate_frame_rpc_system::{SystemRpc, SystemApiServer};223 .into_rpc(),222 .into_rpc(),224 )?;223 )?;225224226 // todo look into227 //let unique = Unique::new(client.clone());228 io.merge(Unique::new(client.clone()).into_rpc())?;225 io.merge(Unique::new(client.clone()).into_rpc())?;229 // TODO free RMRK! io.extend_with(RmrkApi::to_delegate(Unique::new(client.clone())));226 io.merge(Rmrk::new(client.clone()).into_rpc())?;230227231 if let Some(filter_pool) = filter_pool {228 if let Some(filter_pool) = filter_pool {232 io.merge(229 io.merge(pallets/common/src/benchmarking.rsdiffbeforeafterboth109 create_collection_raw(109 create_collection_raw(110 owner,110 owner,111 CollectionMode::NFT,111 CollectionMode::NFT,112 |owner, data| <Pallet<T>>::init_collection(owner, data),112 |owner, data| <Pallet<T>>::init_collection(owner, data, true),113 |h| h,113 |h| h,114 )114 )115}115}pallets/common/src/dispatch.rsdiffbeforeafterboth11use crate::{pallet::Config, CommonCollectionOperations, CollectionHandle};11use crate::{pallet::Config, CommonCollectionOperations, CollectionHandle};121213// TODO: move to benchmarking13// TODO: move to benchmarking14/// Price of [`dispatch_call`] call with noop `call` argument14/// Price of [`dispatch_tx`] call with noop `call` argument15pub fn dispatch_weight<T: Config>() -> Weight {15pub fn dispatch_weight<T: Config>() -> Weight {16 // Read collection16 // Read collection17 <T as frame_system::Config>::DbWeight::get().reads(1)17 <T as frame_system::Config>::DbWeight::get().reads(1)21}21}222223/// Helper function to implement substrate calls for common collection methods23/// Helper function to implement substrate calls for common collection methods24pub fn dispatch_call<24pub fn dispatch_tx<25 T: Config,25 T: Config,26 C: FnOnce(&dyn CommonCollectionOperations<T>) -> DispatchResultWithPostInfo,26 C: FnOnce(&dyn CommonCollectionOperations<T>) -> DispatchResultWithPostInfo,27>(27>(36 },36 },37 error,37 error,38 })?;38 })?;39 handle40 .check_is_internal()41 .map_err(|error| DispatchErrorWithPostInfo {42 post_info: PostDispatchInfo {43 actual_weight: Some(dispatch_weight::<T>()),44 pays_fee: Pays::Yes,45 },46 error,47 })?;39 let dispatched = T::CollectionDispatch::dispatch(handle);48 let dispatched = T::CollectionDispatch::dispatch(handle);40 let mut result = call(dispatched.as_dyn());49 let mut result = call(dispatched.as_dyn());41 match &mut result {50 match &mut result {pallets/common/src/erc.rsdiffbeforeafterboth22pub use pallet_evm::{PrecompileOutput, PrecompileResult, PrecompileHandle, account::CrossAccountId};22pub use pallet_evm::{PrecompileOutput, PrecompileResult, PrecompileHandle, account::CrossAccountId};23use pallet_evm_coder_substrate::dispatch_to_evm;23use pallet_evm_coder_substrate::dispatch_to_evm;24use sp_std::vec::Vec;24use sp_std::vec::Vec;25use up_data_structs::{Property, SponsoringRateLimit};25use up_data_structs::{Property, SponsoringRateLimit, NestingRule, OwnerRestrictedSet, AccessMode};26use alloc::format;26use alloc::format;272728use crate::{Pallet, CollectionHandle, Config, CollectionProperties};28use crate::{Pallet, CollectionHandle, Config, CollectionProperties};46}46}474748#[solidity_interface(name = "Collection")]48#[solidity_interface(name = "Collection")]49impl<T: Config> CollectionHandle<T> {49impl<T: Config> CollectionHandle<T>50// where51// T::AccountId: From<H256>52{50 fn set_collection_property(&mut self, caller: caller, key: string, value: bytes) -> Result<()> {53 fn set_collection_property(&mut self, caller: caller, key: string, value: bytes) -> Result<()> {51 let caller = T::CrossAccountId::from_eth(caller);54 let caller = T::CrossAccountId::from_eth(caller);52 let key = <Vec<u8>>::from(key)55 let key = <Vec<u8>>::from(key)79 Ok(prop.to_vec())82 Ok(prop.to_vec())80 }83 }818482 fn eth_set_sponsor(&mut self, caller: caller, sponsor: address) -> Result<void> {85 fn set_collection_sponsor(&mut self, caller: caller, sponsor: address) -> Result<void> {83 check_is_owner(caller, self)?;86 check_is_owner(caller, self)?;848785 let sponsor = T::CrossAccountId::from_eth(sponsor);88 let sponsor = T::CrossAccountId::from_eth(sponsor);86 self.set_sponsor(sponsor.as_sub().clone());89 self.set_sponsor(sponsor.as_sub().clone())87 save(self);90 .map_err(dispatch_to_evm::<T>)?;88 Ok(())91 save(self)89 }92 }909391 fn eth_confirm_sponsorship(&mut self, caller: caller) -> Result<void> {94 fn confirm_collection_sponsorship(&mut self, caller: caller) -> Result<void> {92 let caller = T::CrossAccountId::from_eth(caller);95 let caller = T::CrossAccountId::from_eth(caller);93 if !self.confirm_sponsorship(caller.as_sub()) {96 if !self97 .confirm_sponsorship(caller.as_sub())98 .map_err(dispatch_to_evm::<T>)?99 {94 return Err(Error::Revert("Caller is not set as sponsor".into()));100 return Err(Error::Revert("Caller is not set as sponsor".into()));95 }101 }96 save(self);102 save(self)97 Ok(())98 }103 }99104100 #[solidity(rename_selector = "setLimit")]105 #[solidity(rename_selector = "setCollectionLimit")]101 fn set_int_limit(&mut self, caller: caller, limit: string, value: uint32) -> Result<void> {106 fn set_int_limit(&mut self, caller: caller, limit: string, value: uint32) -> Result<void> {102 check_is_owner(caller, self)?;107 check_is_owner(caller, self)?;103 let mut limits = self.limits.clone();108 let mut limits = self.limits.clone();130 }135 }131 self.limits = <Pallet<T>>::clamp_limits(self.mode.clone(), &self.limits, limits)136 self.limits = <Pallet<T>>::clamp_limits(self.mode.clone(), &self.limits, limits)132 .map_err(dispatch_to_evm::<T>)?;137 .map_err(dispatch_to_evm::<T>)?;133 save(self);138 save(self)134 Ok(())135 }139 }136140137 #[solidity(rename_selector = "setLimit")]141 #[solidity(rename_selector = "setCollectionLimit")]138 fn set_bool_limit(&mut self, caller: caller, limit: string, value: bool) -> Result<void> {142 fn set_bool_limit(&mut self, caller: caller, limit: string, value: bool) -> Result<void> {139 check_is_owner(caller, self)?;143 check_is_owner(caller, self)?;140 let mut limits = self.limits.clone();144 let mut limits = self.limits.clone();158 }162 }159 self.limits = <Pallet<T>>::clamp_limits(self.mode.clone(), &self.limits, limits)163 self.limits = <Pallet<T>>::clamp_limits(self.mode.clone(), &self.limits, limits)160 .map_err(dispatch_to_evm::<T>)?;164 .map_err(dispatch_to_evm::<T>)?;161 save(self);165 save(self)162 Ok(())163 }166 }164167165 fn contract_address(&self, _caller: caller) -> Result<address> {168 fn contract_address(&self, _caller: caller) -> Result<address> {166 Ok(crate::eth::collection_id_to_address(self.id))169 Ok(crate::eth::collection_id_to_address(self.id))167 }170 }171172 // fn add_admin_substrate(&self, caller: caller, new_admin: uint256) -> Result<void> {173 // let mut new_admin_h256 = H256::default();174 // new_admin.to_little_endian(&mut new_admin_h256.0);175 // let account_id = T::AccountId::from(new_admin_h256);176 // let caller = T::CrossAccountId::from_eth(caller);177 // let new_admin = T::CrossAccountId::from_sub(account_id);178 // <Pallet<T>>::toggle_admin(&self, &caller, &new_admin, true)179 // .map_err(dispatch_to_evm::<T>)?;180 // Ok(())181 // }182183 // fn remove_admin_substrate(&self, caller: caller, new_admin: uint256) -> Result<void> {184 // let mut new_admin_h256 = H256::default();185 // new_admin.to_little_endian(&mut new_admin_h256.0);186 // let account_id = T::AccountId::from(new_admin_h256);187 // let caller = T::CrossAccountId::from_eth(caller);188 // let new_admin = T::CrossAccountId::from_sub(account_id);189 // <Pallet<T>>::toggle_admin(&self, &caller, &new_admin, false)190 // .map_err(dispatch_to_evm::<T>)?;191 // Ok(())192 // }193194 fn add_collection_admin(&self, caller: caller, new_admin: address) -> Result<void> {195 let caller = T::CrossAccountId::from_eth(caller);196 self.check_is_owner_or_admin(&caller)197 .map_err(dispatch_to_evm::<T>)?;198 let new_admin = T::CrossAccountId::from_eth(new_admin);199 <Pallet<T>>::toggle_admin(&self, &caller, &new_admin, true)200 .map_err(dispatch_to_evm::<T>)?;201 Ok(())202 }203204 fn remove_collection_admin(&self, caller: caller, admin: address) -> Result<void> {205 let caller = T::CrossAccountId::from_eth(caller);206 self.check_is_owner_or_admin(&caller)207 .map_err(dispatch_to_evm::<T>)?;208 let admin = T::CrossAccountId::from_eth(admin);209 <Pallet<T>>::toggle_admin(&self, &caller, &admin, false).map_err(dispatch_to_evm::<T>)?;210 Ok(())211 }212213 #[solidity(rename_selector = "setCollectionNesting")]214 fn set_nesting_bool(&mut self, caller: caller, enable: bool) -> Result<void> {215 let caller = T::CrossAccountId::from_eth(caller);216 self.check_is_owner_or_admin(&caller)217 .map_err(dispatch_to_evm::<T>)?;218 self.collection.permissions.nesting = Some(match enable {219 false => NestingRule::Disabled,220 true => NestingRule::Owner,221 });222 save(self)?;223 Ok(())224 }225226 #[solidity(rename_selector = "setCollectionNesting")]227 fn set_nesting(228 &mut self,229 caller: caller,230 enable: bool,231 collections: Vec<address>,232 ) -> Result<void> {233 if collections.is_empty() {234 return Err("No addresses provided".into());235 }236 if collections.len() >= OwnerRestrictedSet::bound() {237 return Err(Error::Revert(format!(238 "Out of bound: {} >= {}",239 collections.len(),240 OwnerRestrictedSet::bound()241 )));242 }243 let caller = T::CrossAccountId::from_eth(caller);244 self.check_is_owner_or_admin(&caller)245 .map_err(dispatch_to_evm::<T>)?;246 self.collection.permissions.nesting = Some(match enable {247 false => NestingRule::Disabled,248 true => {249 let mut bv = OwnerRestrictedSet::new();250 for i in collections {251 bv.try_insert(crate::eth::map_eth_to_id(&i).ok_or(Error::Revert(252 "Can't convert address into collection id".into(),253 ))?)254 .map_err(|e| Error::Revert(format!("{:?}", e)))?;255 }256 NestingRule::OwnerRestricted(bv)257 }258 });259 save(self)?;260 Ok(())261 }262263 fn set_collection_access(&mut self, caller: caller, mode: uint8) -> Result<void> {264 let caller = T::CrossAccountId::from_eth(caller);265 self.check_is_owner_or_admin(&caller)266 .map_err(dispatch_to_evm::<T>)?;267 self.collection.permissions.access = Some(match mode {268 0 => AccessMode::Normal,269 1 => AccessMode::AllowList,270 _ => return Err("Not supported access mode".into()),271 });272 save(self)?;273 Ok(())274 }275276 fn add_to_collection_allow_list(&self, caller: caller, user: address) -> Result<void> {277 let caller = check_is_owner_or_admin(caller, self)?;278 let user = T::CrossAccountId::from_eth(user);279 <Pallet<T>>::toggle_allowlist(self, &caller, &user, true).map_err(dispatch_to_evm::<T>)?;280 Ok(())281 }282283 fn remove_from_collection_allow_list(&self, caller: caller, user: address) -> Result<void> {284 let caller = check_is_owner_or_admin(caller, self)?;285 let user = T::CrossAccountId::from_eth(user);286 <Pallet<T>>::toggle_allowlist(self, &caller, &user, false).map_err(dispatch_to_evm::<T>)?;287 Ok(())288 }289290 fn set_collection_mint_mode(&mut self, caller: caller, mode: bool) -> Result<void> {291 check_is_owner_or_admin(caller, self)?;292 self.collection.permissions.mint_mode = Some(mode);293 save(self)?;294 Ok(())295 }168}296}169297170fn check_is_owner<T: Config>(caller: caller, collection: &CollectionHandle<T>) -> Result<()> {298fn check_is_owner<T: Config>(caller: caller, collection: &CollectionHandle<T>) -> Result<void> {171 let caller = T::CrossAccountId::from_eth(caller);299 let caller = T::CrossAccountId::from_eth(caller);172 collection300 collection173 .check_is_owner(&caller)301 .check_is_owner(&caller)174 .map_err(pallet_evm_coder_substrate::dispatch_to_evm::<T>)?;302 .map_err(pallet_evm_coder_substrate::dispatch_to_evm::<T>)?;175 Ok(())303 Ok(())176}304}177305178fn save<T: Config>(collection: &CollectionHandle<T>) {306fn check_is_owner_or_admin<T: Config>(307 caller: caller,308 collection: &CollectionHandle<T>,309) -> Result<T::CrossAccountId> {310 let caller = T::CrossAccountId::from_eth(caller);311 collection312 .check_is_owner_or_admin(&caller)313 .map_err(pallet_evm_coder_substrate::dispatch_to_evm::<T>)?;314 Ok(caller)315}316317fn save<T: Config>(collection: &CollectionHandle<T>) -> Result<void> {318 // TODO possibly delete for the lack of transaction319 collection320 .check_is_internal()321 .map_err(dispatch_to_evm::<T>)?;179 <crate::CollectionById<T>>::insert(collection.id, collection.collection.clone());322 <crate::CollectionById<T>>::insert(collection.id, collection.collection.clone());323 Ok(())180}324}181325182pub fn token_uri_key() -> up_data_structs::PropertyKey {326pub fn token_uri_key() -> up_data_structs::PropertyKey {pallets/common/src/lib.rsdiffbeforeafterboth145 .saturating_mul(writes),148 .saturating_mul(writes),146 ))149 ))147 }150 }148 pub fn save(self) -> DispatchResult {151 pub fn save(self) -> Result<(), DispatchError> {149 <CollectionById<T>>::insert(self.id, self.collection);152 <CollectionById<T>>::insert(self.id, self.collection);150 Ok(())153 Ok(())151 }154 }152155153 pub fn set_sponsor(&mut self, sponsor: T::AccountId) {156 pub fn set_sponsor(&mut self, sponsor: T::AccountId) -> DispatchResult {154 self.collection.sponsorship = SponsorshipState::Unconfirmed(sponsor);157 self.collection.sponsorship = SponsorshipState::Unconfirmed(sponsor);158 Ok(())155 }159 }156160157 pub fn confirm_sponsorship(&mut self, sender: &T::AccountId) -> bool {161 pub fn confirm_sponsorship(&mut self, sender: &T::AccountId) -> Result<bool, DispatchError> {158 if self.collection.sponsorship.pending_sponsor() != Some(sender) {162 if self.collection.sponsorship.pending_sponsor() != Some(sender) {159 return false;163 return Ok(false);160 };164 }161165162 self.collection.sponsorship = SponsorshipState::Confirmed(sender.clone());166 self.collection.sponsorship = SponsorshipState::Confirmed(sender.clone());163 true167 Ok(true)164 }168 }169170 /// Checks that the collection was created with, and must be operated upon through **Unique API**.171 /// Now check only the `external_collection` flag and if it's **true**, then return `CollectionIsExternal` error.172 pub fn check_is_internal(&self) -> DispatchResult {173 if self.external_collection {174 return Err(<Error<T>>::CollectionIsExternal)?;175 }176177 Ok(())178 }179180 /// Checks that the collection was created with, and must be operated upon through an **assimilated API**.181 /// Now check only the `external_collection` flag and if it's **false**, then return `CollectionIsInternal` error.182 pub fn check_is_external(&self) -> DispatchResult {183 if !self.external_collection {184 return Err(<Error<T>>::CollectionIsInternal)?;185 }186187 Ok(())188 }165}189}190166impl<T: Config> Deref for CollectionHandle<T> {191impl<T: Config> Deref for CollectionHandle<T> {402 /// Target collection doesn't supports this operation427 /// Target collection doesn't supports this operation403 UnsupportedOperation,428 UnsupportedOperation,404429405 /// Not sufficient founds to perform action430 /// Not sufficient funds to perform action406 NotSufficientFounds,431 NotSufficientFounds,407432408 /// Collection has nesting disabled433 /// Collection has nesting disabled430 /// Empty property keys are forbidden455 /// Empty property keys are forbidden431 EmptyPropertyKey,456 EmptyPropertyKey,457458 /// Tried to access an external collection with an internal API459 CollectionIsExternal,460461 /// Tried to access an internal collection with an external API462 CollectionIsInternal,432 }463 }433464434 #[pallet::storage]465 #[pallet::storage]664 sponsorship,695 sponsorship,665 limits,696 limits,666 permissions,697 permissions,698 external_collection,667 } = <CollectionById<T>>::get(collection)?;699 } = <CollectionById<T>>::get(collection)?;668700669 let token_property_permissions = <CollectionPropertyPermissions<T>>::get(collection)701 let token_property_permissions = <CollectionPropertyPermissions<T>>::get(collection)693 permissions,725 permissions,694 token_property_permissions,726 token_property_permissions,695 properties,727 properties,728 read_only: external_collection,696 })729 })697 }730 }698}731}730 pub fn init_collection(763 pub fn init_collection(731 owner: T::CrossAccountId,764 owner: T::CrossAccountId,732 data: CreateCollectionData<T::AccountId>,765 data: CreateCollectionData<T::AccountId>,766 is_external: bool,733 ) -> Result<CollectionId, DispatchError> {767 ) -> Result<CollectionId, DispatchError> {734 {768 {735 ensure!(769 ensure!(773 Self::clamp_permissions(data.mode.clone(), &Default::default(), permissions)807 Self::clamp_permissions(data.mode.clone(), &Default::default(), permissions)774 })808 })775 .unwrap_or_else(|| Ok(CollectionPermissions::default()))?,809 .unwrap_or_else(|| Ok(CollectionPermissions::default()))?,810 external_collection: is_external,776 };811 };777812778 let mut collection_properties = up_data_structs::CollectionProperties::get();813 let mut collection_properties = up_data_structs::CollectionProperties::get();1097 user: &T::CrossAccountId,1132 user: &T::CrossAccountId,1098 admin: bool,1133 admin: bool,1099 ) -> DispatchResult {1134 ) -> DispatchResult {1100 collection.check_is_owner_or_admin(sender)?;1135 collection.check_is_owner(sender)?;110111361102 let was_admin = <IsAdmin<T>>::get((collection.id, user));1137 let was_admin = <IsAdmin<T>>::get((collection.id, user));1103 if was_admin == admin {1138 if was_admin == admin {pallets/fungible/src/lib.rsdiffbeforeafterboth137 owner: T::CrossAccountId,137 owner: T::CrossAccountId,138 data: CreateCollectionData<T::AccountId>,138 data: CreateCollectionData<T::AccountId>,139 ) -> Result<CollectionId, DispatchError> {139 ) -> Result<CollectionId, DispatchError> {140 <PalletCommon<T>>::init_collection(owner, data)140 <PalletCommon<T>>::init_collection(owner, data, false)141 }141 }142 pub fn destroy_collection(142 pub fn destroy_collection(143 collection: FungibleHandle<T>,143 collection: FungibleHandle<T>,pallets/nonfungible/src/benchmarking.rsdiffbeforeafterboth51 create_collection_raw(51 create_collection_raw(52 owner,52 owner,53 CollectionMode::NFT,53 CollectionMode::NFT,54 <Pallet<T>>::init_collection,54 |owner, data| <Pallet<T>>::init_collection(owner, data, true),55 NonfungibleHandle::cast,55 NonfungibleHandle::cast,56 )56 )57}57}99 sender: cross_from_sub(owner); burner: cross_sub;99 sender: cross_from_sub(owner); burner: cross_sub;100 };100 };101 let item = create_max_item(&collection, &sender, burner.clone())?;101 let item = create_max_item(&collection, &sender, burner.clone())?;102 }: {<Pallet<T>>::burn_recursively(&collection, &burner, item, &Unlimited, &Unlimited)}102 }: {<Pallet<T>>::burn_recursively(&collection, &burner, item, &Unlimited, &Unlimited)?}103103104 burn_recursively_breadth_plus_self_plus_self_per_each_raw {104 burn_recursively_breadth_plus_self_plus_self_per_each_raw {105 let b in 0..200;105 let b in 0..200;111 for i in 0..b {111 for i in 0..b {112 create_max_item(&collection, &sender, T::CrossTokenAddressMapping::token_to_address(collection.id, item))?;112 create_max_item(&collection, &sender, T::CrossTokenAddressMapping::token_to_address(collection.id, item))?;113 }113 }114 }: {<Pallet<T>>::burn_recursively(&collection, &burner, item, &Unlimited, &Unlimited)}114 }: {<Pallet<T>>::burn_recursively(&collection, &burner, item, &Unlimited, &Unlimited)?}115115116 transfer {116 transfer {117 bench_init!{117 bench_init!{183 value: property_value(),183 value: property_value(),184 }).collect::<Vec<_>>();184 }).collect::<Vec<_>>();185 let item = create_max_item(&collection, &owner, owner.clone())?;185 let item = create_max_item(&collection, &owner, owner.clone())?;186 }: {<Pallet<T>>::set_token_properties(&collection, &owner, item, props)?}186 }: {<Pallet<T>>::set_token_properties(&collection, &owner, item, props, false)?}187187188 delete_token_properties {188 delete_token_properties {189 let b in 0..MAX_PROPERTIES_PER_ITEM;189 let b in 0..MAX_PROPERTIES_PER_ITEM;205 value: property_value(),205 value: property_value(),206 }).collect::<Vec<_>>();206 }).collect::<Vec<_>>();207 let item = create_max_item(&collection, &owner, owner.clone())?;207 let item = create_max_item(&collection, &owner, owner.clone())?;208 <Pallet<T>>::set_token_properties(&collection, &owner, item, props)?;208 <Pallet<T>>::set_token_properties(&collection, &owner, item, props, false)?;209 let to_delete = (0..b).map(|k| property_key(k as usize)).collect::<Vec<_>>();209 let to_delete = (0..b).map(|k| property_key(k as usize)).collect::<Vec<_>>();210 }: {<Pallet<T>>::delete_token_properties(&collection, &owner, item, to_delete)?}210 }: {<Pallet<T>>::delete_token_properties(&collection, &owner, item, to_delete)?}211}211}pallets/nonfungible/src/common.rsdiffbeforeafterboth223 let weight = <CommonWeights<T>>::set_token_properties(properties.len() as u32);223 let weight = <CommonWeights<T>>::set_token_properties(properties.len() as u32);224224225 with_weight(225 with_weight(226 <Pallet<T>>::set_token_properties(self, &sender, token_id, properties),226 <Pallet<T>>::set_token_properties(self, &sender, token_id, properties, false),227 weight,227 weight,228 )228 )229 }229 }pallets/nonfungible/src/erc.rsdiffbeforeafterboth86 self,87 &caller,88 TokenId(token_id),89 Property { key, value },90 false,91 )86 .map_err(dispatch_to_evm::<T>)92 .map_err(dispatch_to_evm::<T>)87 }93 }pallets/nonfungible/src/lib.rsdiffbeforeafterboth304 pub fn init_collection(304 pub fn init_collection(305 owner: T::CrossAccountId,305 owner: T::CrossAccountId,306 data: CreateCollectionData<T::AccountId>,306 data: CreateCollectionData<T::AccountId>,307 is_external: bool,307 ) -> Result<CollectionId, DispatchError> {308 ) -> Result<CollectionId, DispatchError> {308 <PalletCommon<T>>::init_collection(owner, data)309 <PalletCommon<T>>::init_collection(owner, data, is_external)309 }310 }310 pub fn destroy_collection(311 pub fn destroy_collection(311 collection: NonfungibleHandle<T>,312 collection: NonfungibleHandle<T>,447 sender: &T::CrossAccountId,448 sender: &T::CrossAccountId,448 token_id: TokenId,449 token_id: TokenId,449 property: Property,450 property: Property,451 is_token_create: bool,450 ) -> DispatchResult {452 ) -> DispatchResult {451 Self::check_token_change_permission(collection, sender, token_id, &property.key)?;453 Self::check_token_change_permission(454 collection,455 sender,456 token_id,457 &property.key,458 is_token_create,459 )?;452460453 <TokenProperties<T>>::try_mutate((collection.id, token_id), |properties| {461 <TokenProperties<T>>::try_mutate((collection.id, token_id), |properties| {471 sender: &T::CrossAccountId,479 sender: &T::CrossAccountId,472 token_id: TokenId,480 token_id: TokenId,473 properties: Vec<Property>,481 properties: Vec<Property>,482 is_token_create: bool,474 ) -> DispatchResult {483 ) -> DispatchResult {475 for property in properties {484 for property in properties {476 Self::set_token_property(collection, sender, token_id, property)?;485 Self::set_token_property(collection, sender, token_id, property, is_token_create)?;477 }486 }478487479 Ok(())488 Ok(())485 token_id: TokenId,494 token_id: TokenId,486 property_key: PropertyKey,495 property_key: PropertyKey,487 ) -> DispatchResult {496 ) -> DispatchResult {488 Self::check_token_change_permission(collection, sender, token_id, &property_key)?;497 Self::check_token_change_permission(collection, sender, token_id, &property_key, false)?;489498490 <TokenProperties<T>>::try_mutate((collection.id, token_id), |properties| {499 <TokenProperties<T>>::try_mutate((collection.id, token_id), |properties| {491 properties.remove(&property_key)500 properties.remove(&property_key)506 sender: &T::CrossAccountId,515 sender: &T::CrossAccountId,507 token_id: TokenId,516 token_id: TokenId,508 property_key: &PropertyKey,517 property_key: &PropertyKey,518 is_token_create: bool,509 ) -> DispatchResult {519 ) -> DispatchResult {510 let permission = <PalletCommon<T>>::property_permissions(collection.id)520 let permission = <PalletCommon<T>>::property_permissions(collection.id)511 .get(property_key)521 .get(property_key)534 token_owner,544 token_owner,535 ..545 ..536 } => {546 } => {547 //TODO: investigate threats during public minting.548 if is_token_create && (collection_admin || token_owner) {549 return Ok(());550 }551537 let mut check_result = Err(<CommonError<T>>::NoPermission.into());552 let mut check_result = Err(<CommonError<T>>::NoPermission.into());538553772 sender,787 sender,773 TokenId(token),788 TokenId(token),774 data.properties.clone().into_inner(),789 data.properties.clone().into_inner(),790 true,775 ) {791 ) {776 return TransactionOutcome::Rollback(Err(e));792 return TransactionOutcome::Rollback(Err(e));777 }793 }pallets/nonfungible/src/stubs/UniqueNFT.rawdiffbeforeafterbothbinary blob — no preview
pallets/nonfungible/src/stubs/UniqueNFT.soldiffbeforeafterboth297 }297 }298}298}299300// Selector: 6aea9834301contract Collection is Dummy, ERC165 {302 // Selector: setCollectionProperty(string,bytes) 2f073f66303 function setCollectionProperty(string memory key, bytes memory value)304 public305 {306 require(false, stub_error);307 key;308 value;309 dummy = 0;310 }311312 // Selector: deleteCollectionProperty(string) 7b7debce313 function deleteCollectionProperty(string memory key) public {314 require(false, stub_error);315 key;316 dummy = 0;317 }318319 // Throws error if key not found320 //321 // Selector: collectionProperty(string) cf24fd6d322 function collectionProperty(string memory key)323 public324 view325 returns (bytes memory)326 {327 require(false, stub_error);328 key;329 dummy;330 return hex"";331 }332333 // Selector: setCollectionSponsor(address) 7623402e334 function setCollectionSponsor(address sponsor) public {335 require(false, stub_error);336 sponsor;337 dummy = 0;338 }339340 // Selector: confirmCollectionSponsorship() 3c50e97a341 function confirmCollectionSponsorship() public {342 require(false, stub_error);343 dummy = 0;344 }345346 // Selector: setCollectionLimit(string,uint32) 6a3841db347 function setCollectionLimit(string memory limit, uint32 value) public {348 require(false, stub_error);349 limit;350 value;351 dummy = 0;352 }353354 // Selector: setCollectionLimit(string,bool) 993b7fba355 function setCollectionLimit(string memory limit, bool value) public {356 require(false, stub_error);357 limit;358 value;359 dummy = 0;360 }361362 // Selector: contractAddress() f6b4dfb4363 function contractAddress() public view returns (address) {364 require(false, stub_error);365 dummy;366 return 0x0000000000000000000000000000000000000000;367 }368369 // Selector: addCollectionAdmin(address) 92e462c7370 function addCollectionAdmin(address newAdmin) public view {371 require(false, stub_error);372 newAdmin;373 dummy;374 }375376 // Selector: removeCollectionAdmin(address) fafd7b42377 function removeCollectionAdmin(address admin) public view {378 require(false, stub_error);379 admin;380 dummy;381 }382383 // Selector: setCollectionNesting(bool) 112d4586384 function setCollectionNesting(bool enable) public {385 require(false, stub_error);386 enable;387 dummy = 0;388 }389390 // Selector: setCollectionNesting(bool,address[]) 64872396391 function setCollectionNesting(bool enable, address[] memory collections)392 public393 {394 require(false, stub_error);395 enable;396 collections;397 dummy = 0;398 }399400 // Selector: setCollectionAccess(uint8) 41835d4c401 function setCollectionAccess(uint8 mode) public {402 require(false, stub_error);403 mode;404 dummy = 0;405 }406407 // Selector: addToCollectionAllowList(address) 67844fe6408 function addToCollectionAllowList(address user) public view {409 require(false, stub_error);410 user;411 dummy;412 }413414 // Selector: removeFromCollectionAllowList(address) 85c51acb415 function removeFromCollectionAllowList(address user) public view {416 require(false, stub_error);417 user;418 dummy;419 }420421 // Selector: setCollectionMintMode(bool) 00018e84422 function setCollectionMintMode(bool mode) public {423 require(false, stub_error);424 mode;425 dummy = 0;426 }427}299428300// Selector: 780e9d63429// Selector: 780e9d63301contract ERC721Enumerable is Dummy, ERC165 {430contract ERC721Enumerable is Dummy, ERC165 {330 }459 }331}460}332333// Selector: c894dc35334contract Collection is Dummy, ERC165 {335 // Selector: setCollectionProperty(string,bytes) 2f073f66336 function setCollectionProperty(string memory key, bytes memory value)337 public338 {339 require(false, stub_error);340 key;341 value;342 dummy = 0;343 }344345 // Selector: deleteCollectionProperty(string) 7b7debce346 function deleteCollectionProperty(string memory key) public {347 require(false, stub_error);348 key;349 dummy = 0;350 }351352 // Throws error if key not found353 //354 // Selector: collectionProperty(string) cf24fd6d355 function collectionProperty(string memory key)356 public357 view358 returns (bytes memory)359 {360 require(false, stub_error);361 key;362 dummy;363 return hex"";364 }365366 // Selector: ethSetSponsor(address) 8f9af356367 function ethSetSponsor(address sponsor) public {368 require(false, stub_error);369 sponsor;370 dummy = 0;371 }372373 // Selector: ethConfirmSponsorship() a8580d1a374 function ethConfirmSponsorship() public {375 require(false, stub_error);376 dummy = 0;377 }378379 // Selector: setLimit(string,uint32) 68db30ca380 function setLimit(string memory limit, uint32 value) public {381 require(false, stub_error);382 limit;383 value;384 dummy = 0;385 }386387 // Selector: setLimit(string,bool) ea67e4c2388 function setLimit(string memory limit, bool value) public {389 require(false, stub_error);390 limit;391 value;392 dummy = 0;393 }394395 // Selector: contractAddress() f6b4dfb4396 function contractAddress() public view returns (address) {397 require(false, stub_error);398 dummy;399 return 0x0000000000000000000000000000000000000000;400 }401}402461403// Selector: d74d154f462// Selector: d74d154f404contract ERC721UniqueExtensions is Dummy, ERC165 {463contract ERC721UniqueExtensions is Dummy, ERC165 {pallets/proxy-rmrk-core/Cargo.tomldiffbeforeafterboth18sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }18sp-core = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }19pallet-common = { default-features = false, path = '../common' }19pallet-common = { default-features = false, path = '../common' }20pallet-nonfungible = { default-features = false, path = "../../pallets/nonfungible" }20pallet-nonfungible = { default-features = false, path = "../../pallets/nonfungible" }21pallet-structure = { default-features = false, path = "../../pallets/structure" }21up-data-structs = { default-features = false, path = '../../primitives/data-structs' }22up-data-structs = { default-features = false, path = '../../primitives/data-structs' }22pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }23pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }23frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }24frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }25rmrk-traits = { default-features = false, path = "../../primitives/rmrk-traits" }24scale-info = { version = "2.0.1", default-features = false, features = ["derive"] }26scale-info = { version = "2.0.1", default-features = false, features = ["derive"] }27derivative = { version = "2.2.0", features = ["use_core"] }252826[features]29[features]27default = ["std"]30default = ["std"]31 "sp-runtime/std",34 "sp-runtime/std",32 "sp-std/std",35 "sp-std/std",33 "up-data-structs/std",36 "up-data-structs/std",37 "rmrk-traits/std",34 "pallet-common/std",38 "pallet-common/std",35 "pallet-nonfungible/std",39 "pallet-nonfungible/std",40 "pallet-structure/std",36 "pallet-evm/std",41 "pallet-evm/std",37 'frame-benchmarking/std',42 'frame-benchmarking/std',38]43]pallets/proxy-rmrk-core/src/benchmarking.rsdiffbeforeafterbothno changes
pallets/proxy-rmrk-core/src/lib.rsdiffbeforeafterboth20use frame_system::{pallet_prelude::*, ensure_signed};20use frame_system::{pallet_prelude::*, ensure_signed};21use sp_runtime::{DispatchError, Permill, traits::StaticLookup};21use sp_runtime::{DispatchError, Permill, traits::StaticLookup};22use sp_std::vec::Vec;22use sp_std::vec::Vec;23use up_data_structs::*;23use up_data_structs::{*, mapping::TokenAddressMapping};24use pallet_common::{24use pallet_common::{25 Pallet as PalletCommon, Error as CommonError, CollectionHandle, CommonCollectionOperations,25 Pallet as PalletCommon, Error as CommonError, CollectionHandle, CommonCollectionOperations,26};26};27use pallet_nonfungible::{Pallet as PalletNft, NonfungibleHandle, TokenData};27use pallet_nonfungible::{Pallet as PalletNft, NonfungibleHandle, TokenData};28use pallet_structure::{Pallet as PalletStructure, Error as StructureError};28use pallet_evm::account::CrossAccountId;29use pallet_evm::account::CrossAccountId;29use core::convert::AsRef;30use core::convert::AsRef;303131pub use pallet::*;32pub use pallet::*;323334#[cfg(feature = "runtime-benchmarks")]35pub mod benchmarking;33pub mod misc;36pub mod misc;34pub mod property;37pub mod property;38pub mod weights;353940pub type SelfWeightOf<T> = <T as Config>::WeightInfo;4142use weights::WeightInfo;36use misc::*;43use misc::*;37pub use property::*;44pub use property::*;384539use RmrkProperty::*;46use RmrkProperty::*;404748const NESTING_BUDGET: u32 = 5;4941#[frame_support::pallet]50#[frame_support::pallet]42pub mod pallet {51pub mod pallet {43 use super::*;52 use super::*;48 frame_system::Config + pallet_common::Config + pallet_nonfungible::Config + account::Config57 frame_system::Config + pallet_common::Config + pallet_nonfungible::Config + account::Config49 {58 {50 type Event: From<Event<Self>> + IsType<<Self as frame_system::Config>::Event>;59 type Event: From<Event<Self>> + IsType<<Self as frame_system::Config>::Event>;60 type WeightInfo: WeightInfo;51 }61 }526253 #[pallet::storage]63 #[pallet::storage]54 #[pallet::getter(fn collection_index)]64 #[pallet::getter(fn collection_index)]55 pub type CollectionIndex<T: Config> = StorageValue<_, RmrkCollectionId, ValueQuery>;65 pub type CollectionIndex<T: Config> = StorageValue<_, RmrkCollectionId, ValueQuery>;566667 #[pallet::storage]68 pub type UniqueCollectionId<T: Config> =69 StorageMap<_, Twox64Concat, RmrkCollectionId, CollectionId, ValueQuery>;7071 #[pallet::storage]72 pub type RmrkInernalCollectionId<T: Config> =73 StorageMap<_, Twox64Concat, CollectionId, RmrkCollectionId, ValueQuery>;7457 #[pallet::pallet]75 #[pallet::pallet]58 #[pallet::generate_store(pub(super) trait Store)]76 #[pallet::generate_store(pub(super) trait Store)]59 pub struct Pallet<T>(_);77 pub struct Pallet<T>(_);87 owner: T::AccountId,105 owner: T::AccountId,88 nft_id: RmrkNftId,106 nft_id: RmrkNftId,89 },107 },108 NFTSent {109 sender: T::AccountId,110 recipient: RmrkAccountIdOrCollectionNftTuple<T::AccountId>,111 collection_id: RmrkCollectionId,112 nft_id: RmrkNftId,113 approval_required: bool,114 },115 NFTAccepted {116 sender: T::AccountId,117 recipient: RmrkAccountIdOrCollectionNftTuple<T::AccountId>,118 collection_id: RmrkCollectionId,119 nft_id: RmrkNftId,120 },121 NFTRejected {122 sender: T::AccountId,123 collection_id: RmrkCollectionId,124 nft_id: RmrkNftId,125 },90 PropertySet {126 PropertySet {91 collection_id: RmrkCollectionId,127 collection_id: RmrkCollectionId,92 maybe_nft_id: Option<RmrkNftId>,128 maybe_nft_id: Option<RmrkNftId>,93 key: RmrkKeyString,129 key: RmrkKeyString,94 value: RmrkValueString,130 value: RmrkValueString,95 },131 },132 ResourceAdded {133 nft_id: RmrkNftId,134 resource_id: RmrkResourceId,135 },136 ResourceRemoval {137 nft_id: RmrkNftId,138 resource_id: RmrkResourceId,139 },140 ResourceAccepted {141 nft_id: RmrkNftId,142 resource_id: RmrkResourceId,143 },144 ResourceRemovalAccepted {145 nft_id: RmrkNftId,146 resource_id: RmrkResourceId,147 },148 PrioritySet {149 collection_id: RmrkCollectionId,150 nft_id: RmrkNftId,151 },96 }152 }9715398 #[pallet::error]154 #[pallet::error]109 NoAvailableNftId,165 NoAvailableNftId,110 CollectionUnknown,166 CollectionUnknown,111 NoPermission,167 NoPermission,168 NonTransferable,112 CollectionFullOrLocked,169 CollectionFullOrLocked,170 ResourceDoesntExist,171 CannotSendToDescendentOrSelf,172 CannotAcceptNonOwnedNft,173 CannotRejectNonOwnedNft,174 ResourceNotPending,113 }175 }114176115 #[pallet::call]177 #[pallet::call]116 impl<T: Config> Pallet<T> {178 impl<T: Config> Pallet<T> {117 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]179 /// Create a collection118 #[transactional]180 #[transactional]181 #[pallet::weight(<SelfWeightOf<T>>::create_collection())]119 pub fn create_collection(182 pub fn create_collection(120 origin: OriginFor<T>,183 origin: OriginFor<T>,121 metadata: RmrkString,184 metadata: RmrkString,136 .into_inner()199 .into_inner()137 .try_into()200 .try_into()138 .map_err(|_| <CommonError<T>>::CollectionTokenPrefixLimitExceeded)?,201 .map_err(|_| <CommonError<T>>::CollectionTokenPrefixLimitExceeded)?,202 permissions: Some(CollectionPermissions {203 nesting: Some(NestingRule::Owner),204 ..Default::default()205 }),139 ..Default::default()206 ..Default::default()140 };207 };141208142 let collection_id_res =209 let unique_collection_id = Self::init_collection(143 <PalletNft<T>>::init_collection(T::CrossAccountId::from_sub(sender.clone()), data);210 T::CrossAccountId::from_sub(sender.clone()),144145 if let Err(DispatchError::Arithmetic(_)) = &collection_id_res {211 data,146 return Err(<Error<T>>::NoAvailableCollectionId.into());147 }148149 let collection_id = collection_id_res?;150151 <PalletCommon<T>>::set_scoped_collection_properties(152 collection_id,153 PropertyScope::Rmrk,154 [212 [155 Self::rmrk_property(Metadata, &metadata)?,213 Self::rmrk_property(Metadata, &metadata)?,156 Self::rmrk_property(CollectionType, &misc::CollectionType::Regular)?,214 Self::rmrk_property(CollectionType, &misc::CollectionType::Regular)?,157 ]215 ]158 .into_iter(),216 .into_iter(),159 )?;217 )?;218 let rmrk_collection_id = <CollectionIndex<T>>::get();160219220 <UniqueCollectionId<T>>::insert(rmrk_collection_id, unique_collection_id);221 <RmrkInernalCollectionId<T>>::insert(unique_collection_id, rmrk_collection_id);222161 <CollectionIndex<T>>::mutate(|n| *n += 1);223 <CollectionIndex<T>>::mutate(|n| *n += 1);162224163 Self::deposit_event(Event::CollectionCreated {225 Self::deposit_event(Event::CollectionCreated {164 issuer: sender,226 issuer: sender,165 collection_id: collection_id.0,227 collection_id: rmrk_collection_id,166 });228 });167229168 Ok(())230 Ok(())169 }231 }170232233 /// destroy collection171 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]234 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]172 #[transactional]235 #[transactional]173 pub fn destroy_collection(236 pub fn destroy_collection(177 let sender = ensure_signed(origin)?;240 let sender = ensure_signed(origin)?;178 let cross_sender = T::CrossAccountId::from_sub(sender.clone());241 let cross_sender = T::CrossAccountId::from_sub(sender.clone());179242180 let unique_collection_id = collection_id.into();181182 let collection = Self::get_typed_nft_collection(243 let collection = Self::get_typed_nft_collection(183 unique_collection_id,244 Self::unique_collection_id(collection_id)?,184 misc::CollectionType::Regular,245 misc::CollectionType::Regular,185 )?;246 )?;247 collection.check_is_external()?;186248187 ensure!(188 collection.total_supply() == 0,189 <Error<T>>::CollectionNotEmpty190 );191192 <PalletNft<T>>::destroy_collection(collection, &cross_sender)249 <PalletNft<T>>::destroy_collection(collection, &cross_sender)193 .map_err(Self::map_common_err_to_proxy)?;250 .map_err(Self::map_unique_err_to_proxy)?;194251195 Self::deposit_event(Event::CollectionDestroyed {252 Self::deposit_event(Event::CollectionDestroyed {196 issuer: sender,253 issuer: sender,200 Ok(())257 Ok(())201 }258 }202259260 /// Change the issuer of a collection261 ///262 /// Parameters:263 /// - `origin`: sender of the transaction264 /// - `collection_id`: collection id of the nft to change issuer of265 /// - `new_issuer`: Collection's new issuer203 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]266 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]204 #[transactional]267 #[transactional]205 pub fn change_collection_issuer(268 pub fn change_collection_issuer(209 ) -> DispatchResult {272 ) -> DispatchResult {210 let sender = ensure_signed(origin)?;273 let sender = ensure_signed(origin)?;211274275 let collection = Self::get_nft_collection(Self::unique_collection_id(collection_id)?)?;276 collection.check_is_external()?;277212 let new_issuer = T::Lookup::lookup(new_issuer)?;278 let new_issuer = T::Lookup::lookup(new_issuer)?;213279214 Self::change_collection_owner(280 Self::change_collection_owner(215 collection_id.into(),281 Self::unique_collection_id(collection_id)?,216 misc::CollectionType::Regular,282 misc::CollectionType::Regular,217 sender.clone(),283 sender.clone(),218 new_issuer.clone(),284 new_issuer.clone(),227 Ok(())293 Ok(())228 }294 }229295296 /// lock collection230 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]297 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]231 #[transactional]298 #[transactional]232 pub fn lock_collection(299 pub fn lock_collection(237 let cross_sender = T::CrossAccountId::from_sub(sender.clone());304 let cross_sender = T::CrossAccountId::from_sub(sender.clone());238305239 let collection = Self::get_typed_nft_collection(306 let collection = Self::get_typed_nft_collection(240 collection_id.into(),307 Self::unique_collection_id(collection_id)?,241 misc::CollectionType::Regular,308 misc::CollectionType::Regular,242 )?;309 )?;310 collection.check_is_external()?;243311244 Self::check_collection_owner(&collection, &cross_sender)?;312 Self::check_collection_owner(&collection, &cross_sender)?;245313257 Ok(())325 Ok(())258 }326 }259327328 /// Mints an NFT in the specified collection329 /// Sets metadata and the royalty attribute330 ///331 /// Parameters:332 /// - `collection_id`: The class of the asset to be minted.333 /// - `nft_id`: The nft value of the asset to be minted.334 /// - `recipient`: Receiver of the royalty335 /// - `royalty`: Permillage reward from each trade for the Recipient336 /// - `metadata`: Arbitrary data about an nft, e.g. IPFS hash337 /// - `transferable`: Ability to transfer this NFT260 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]338 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]261 #[transactional]339 #[transactional]262 pub fn mint_nft(340 pub fn mint_nft(266 recipient: Option<T::AccountId>,344 recipient: Option<T::AccountId>,267 royalty_amount: Option<Permill>,345 royalty_amount: Option<Permill>,268 metadata: RmrkString,346 metadata: RmrkString,347 transferable: bool,269 ) -> DispatchResult {348 ) -> DispatchResult {270 let sender = ensure_signed(origin)?;349 let sender = ensure_signed(origin)?;271 let sender = T::CrossAccountId::from_sub(sender);350 let sender = T::CrossAccountId::from_sub(sender);272 let cross_owner = T::CrossAccountId::from_sub(owner.clone());351 let cross_owner = T::CrossAccountId::from_sub(owner.clone());273352274 let royalty_info = royalty_amount.map(|amount| rmrk::RoyaltyInfo {353 let collection = Self::get_typed_nft_collection(354 Self::unique_collection_id(collection_id)?,355 misc::CollectionType::Regular,356 )?;357 collection.check_is_external()?;358359 let royalty_info = royalty_amount.map(|amount| rmrk_traits::RoyaltyInfo {275 recipient: recipient.unwrap_or_else(|| owner.clone()),360 recipient: recipient.unwrap_or_else(|| owner.clone()),276 amount,361 amount,277 });362 });278363279 let collection = Self::get_typed_nft_collection(280 collection_id.into(),281 misc::CollectionType::Regular,282 )?;283284 let nft_id = Self::create_nft(364 let nft_id = Self::create_nft(285 &sender,365 &sender,286 &cross_owner,366 &cross_owner,287 &collection,367 &collection,288 NftType::Regular,289 [368 [369 Self::rmrk_property(TokenType, &NftType::Regular)?,370 Self::rmrk_property(Transferable, &transferable)?,371 Self::rmrk_property(PendingNftAccept, &false)?,290 Self::rmrk_property(RoyaltyInfo, &royalty_info)?,372 Self::rmrk_property(RoyaltyInfo, &royalty_info)?,291 Self::rmrk_property(Metadata, &metadata)?,373 Self::rmrk_property(Metadata, &metadata)?,292 Self::rmrk_property(Equipped, &false)?,374 Self::rmrk_property(Equipped, &false)?,293 Self::rmrk_property(ResourceCollection, &None::<CollectionId>)?,375 Self::rmrk_property(376 ResourceCollection,377 &Self::init_collection(378 sender.clone(),379 CreateCollectionData {380 ..Default::default()381 },382 [Self::rmrk_property(383 CollectionType,384 &misc::CollectionType::Resource,385 )?]386 .into_iter(),387 )?,388 )?, // todo possibly add limits to the collection if rmrk warrants them294 Self::rmrk_property(ResourcePriorities, &<Vec<u8>>::new())?,389 Self::rmrk_property(ResourcePriorities, &<Vec<u8>>::new())?,295 ]390 ]296 .into_iter(),391 .into_iter(),297 )392 )298 .map_err(|err| match err {393 .map_err(|err| match err {299 DispatchError::Arithmetic(_) => <Error<T>>::NoAvailableNftId.into(),394 DispatchError::Arithmetic(_) => <Error<T>>::NoAvailableNftId.into(),300 err => Self::map_common_err_to_proxy(err),395 err => Self::map_unique_err_to_proxy(err),301 })?;396 })?;302397303 Self::deposit_event(Event::NftMinted {398 Self::deposit_event(Event::NftMinted {309 Ok(())404 Ok(())310 }405 }311406407 /// burn nft312 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]408 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]313 #[transactional]409 #[transactional]314 pub fn burn_nft(410 pub fn burn_nft(319 let sender = ensure_signed(origin)?;415 let sender = ensure_signed(origin)?;320 let cross_sender = T::CrossAccountId::from_sub(sender.clone());416 let cross_sender = T::CrossAccountId::from_sub(sender.clone());321417418 let collection = Self::get_typed_nft_collection(419 Self::unique_collection_id(collection_id)?,420 misc::CollectionType::Regular,421 )?;422 collection.check_is_external()?;423322 Self::destroy_nft(424 Self::destroy_nft(323 cross_sender,425 cross_sender,324 collection_id.into(),426 Self::unique_collection_id(collection_id)?,325 misc::CollectionType::Regular,326 nft_id.into(),427 nft_id.into(),327 )?;428 )429 .map_err(Self::map_unique_err_to_proxy)?;328430329 Self::deposit_event(Event::NFTBurned {431 Self::deposit_event(Event::NFTBurned {330 owner: sender,432 owner: sender,334 Ok(())436 Ok(())335 }437 }336438439 /// Transfers a NFT from an Account or NFT A to another Account or NFT B440 ///441 /// Parameters:442 /// - `origin`: sender of the transaction443 /// - `rmrk_collection_id`: collection id of the nft to be transferred444 /// - `rmrk_nft_id`: nft id of the nft to be transferred445 /// - `new_owner`: new owner of the nft which can be either an account or a NFT337 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]446 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]338 #[transactional]447 #[transactional]448 pub fn send(449 origin: OriginFor<T>,450 rmrk_collection_id: RmrkCollectionId,451 rmrk_nft_id: RmrkNftId,452 new_owner: RmrkAccountIdOrCollectionNftTuple<T::AccountId>,453 ) -> DispatchResult {454 let sender = ensure_signed(origin.clone())?;455 let cross_sender = T::CrossAccountId::from_sub(sender.clone());456457 let collection_id = Self::unique_collection_id(rmrk_collection_id)?;458 let nft_id = rmrk_nft_id.into();459460 let collection =461 Self::get_typed_nft_collection(collection_id, misc::CollectionType::Regular)?;462 collection.check_is_external()?;463464 let token_data =465 <TokenData<T>>::get((collection_id, nft_id)).ok_or(<Error<T>>::NoAvailableNftId)?;466467 let from = token_data.owner;468469 ensure!(470 Self::get_nft_property_decoded(collection_id, nft_id, RmrkProperty::Transferable)?,471 <Error<T>>::NonTransferable472 );473474 ensure!(475 !Self::get_nft_property_decoded(476 collection_id,477 nft_id,478 RmrkProperty::PendingNftAccept479 )?,480 <Error<T>>::NoPermission481 );482483 let target_owner;484 let approval_required;485486 match new_owner {487 RmrkAccountIdOrCollectionNftTuple::AccountId(ref account_id) => {488 target_owner = T::CrossAccountId::from_sub(account_id.clone());489 approval_required = false;490 }491 RmrkAccountIdOrCollectionNftTuple::CollectionAndNftTuple(492 target_collection_id,493 target_nft_id,494 ) => {495 let target_collection_id = Self::unique_collection_id(target_collection_id)?;496497 let target_nft_budget = budget::Value::new(NESTING_BUDGET);498499 let target_nft_owner = <PalletStructure<T>>::get_checked_topmost_owner(500 target_collection_id,501 target_nft_id.into(),502 Some((collection_id, nft_id)),503 &target_nft_budget,504 )505 .map_err(Self::map_unique_err_to_proxy)?;506507 approval_required = cross_sender != target_nft_owner;508509 if approval_required {510 target_owner = target_nft_owner;511512 <PalletNft<T>>::set_scoped_token_property(513 collection.id,514 nft_id,515 PropertyScope::Rmrk,516 Self::rmrk_property(PendingNftAccept, &approval_required)?,517 )?;518 } else {519 target_owner = T::CrossTokenAddressMapping::token_to_address(520 target_collection_id,521 target_nft_id.into(),522 );523 }524 }525 }526527 let src_nft_budget = budget::Value::new(NESTING_BUDGET);528529 <PalletNft<T>>::transfer_from(530 &collection,531 &cross_sender,532 &from,533 &target_owner,534 nft_id,535 &src_nft_budget,536 )537 .map_err(Self::map_unique_err_to_proxy)?;538539 Self::deposit_event(Event::NFTSent {540 sender,541 recipient: new_owner,542 collection_id: rmrk_collection_id,543 nft_id: rmrk_nft_id,544 approval_required,545 });546547 Ok(())548 }549550 /// Accepts an NFT sent from another account to self or owned NFT551 ///552 /// Parameters:553 /// - `origin`: sender of the transaction554 /// - `rmrk_collection_id`: collection id of the nft to be accepted555 /// - `rmrk_nft_id`: nft id of the nft to be accepted556 /// - `new_owner`: either origin's account ID or origin-owned NFT, whichever the NFT was557 /// sent to558 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]559 #[transactional]560 pub fn accept_nft(561 origin: OriginFor<T>,562 rmrk_collection_id: RmrkCollectionId,563 rmrk_nft_id: RmrkNftId,564 new_owner: RmrkAccountIdOrCollectionNftTuple<T::AccountId>,565 ) -> DispatchResult {566 let sender = ensure_signed(origin.clone())?;567 let cross_sender = T::CrossAccountId::from_sub(sender.clone());568569 let collection_id = Self::unique_collection_id(rmrk_collection_id)?;570 let nft_id = rmrk_nft_id.into();571572 let collection =573 Self::get_typed_nft_collection(collection_id, misc::CollectionType::Regular)?;574 collection.check_is_external()?;575576 let new_cross_owner = match new_owner {577 RmrkAccountIdOrCollectionNftTuple::AccountId(ref account_id) => {578 T::CrossAccountId::from_sub(account_id.clone())579 }580 RmrkAccountIdOrCollectionNftTuple::CollectionAndNftTuple(581 target_collection_id,582 target_nft_id,583 ) => {584 let target_collection_id = Self::unique_collection_id(target_collection_id)?;585586 T::CrossTokenAddressMapping::token_to_address(587 target_collection_id,588 TokenId(target_nft_id),589 )590 }591 };592593 let budget = budget::Value::new(NESTING_BUDGET);594595 <PalletNft<T>>::transfer(596 &collection,597 &cross_sender,598 &new_cross_owner,599 nft_id,600 &budget,601 )602 .map_err(|err| {603 if err == <CommonError<T>>::OnlyOwnerAllowedToNest.into() {604 <Error<T>>::CannotAcceptNonOwnedNft.into()605 } else {606 Self::map_unique_err_to_proxy(err)607 }608 })?;609610 <PalletNft<T>>::set_scoped_token_property(611 collection.id,612 nft_id,613 PropertyScope::Rmrk,614 Self::rmrk_property(PendingNftAccept, &false)?,615 )?;616617 Self::deposit_event(Event::NFTAccepted {618 sender,619 recipient: new_owner,620 collection_id: rmrk_collection_id,621 nft_id: rmrk_nft_id,622 });623624 Ok(())625 }626627 /// Rejects an NFT sent from another account to self or owned NFT628 ///629 /// Parameters:630 /// - `origin`: sender of the transaction631 /// - `rmrk_collection_id`: collection id of the nft to be accepted632 /// - `rmrk_nft_id`: nft id of the nft to be accepted633 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]634 #[transactional]635 pub fn reject_nft(636 origin: OriginFor<T>,637 rmrk_collection_id: RmrkCollectionId,638 rmrk_nft_id: RmrkNftId,639 ) -> DispatchResult {640 let sender = ensure_signed(origin)?;641 let cross_sender = T::CrossAccountId::from_sub(sender.clone());642643 let collection_id = Self::unique_collection_id(rmrk_collection_id)?;644 let nft_id = rmrk_nft_id.into();645646 let collection =647 Self::get_typed_nft_collection(collection_id, misc::CollectionType::Regular)?;648 collection.check_is_external()?;649650 Self::destroy_nft(cross_sender, collection_id, nft_id).map_err(|err| {651 if err == <CommonError<T>>::NoPermission.into()652 || err == <CommonError<T>>::ApprovedValueTooLow.into()653 {654 <Error<T>>::CannotRejectNonOwnedNft.into()655 } else {656 Self::map_unique_err_to_proxy(err)657 }658 })?;659660 Self::deposit_event(Event::NFTRejected {661 sender,662 collection_id: rmrk_collection_id,663 nft_id: rmrk_nft_id,664 });665666 Ok(())667 }668669 /// accept the addition of a new resource to an existing NFT670 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]671 #[transactional]672 pub fn accept_resource(673 origin: OriginFor<T>,674 rmrk_collection_id: RmrkCollectionId,675 rmrk_nft_id: RmrkNftId,676 rmrk_resource_id: RmrkResourceId,677 ) -> DispatchResult {678 let sender = ensure_signed(origin)?;679 let cross_sender = T::CrossAccountId::from_sub(sender);680681 let collection_id = Self::unique_collection_id(rmrk_collection_id)682 .map_err(|_| <Error<T>>::ResourceDoesntExist)?;683 let collection =684 Self::get_typed_nft_collection(collection_id, misc::CollectionType::Regular)?;685 collection.check_is_external()?;686687 let nft_id = rmrk_nft_id.into();688 let resource_id = rmrk_resource_id.into();689690 let budget = budget::Value::new(NESTING_BUDGET);691692 let nft_owner =693 <PalletStructure<T>>::find_topmost_owner(collection_id, nft_id, &budget)694 .map_err(|_| <Error<T>>::ResourceDoesntExist)?;695696 let resource_collection_id: CollectionId =697 Self::get_nft_property_decoded(collection_id, nft_id, ResourceCollection)698 .map_err(|_| <Error<T>>::ResourceDoesntExist)?;699700 let is_pending: bool = Self::get_nft_property_decoded(701 resource_collection_id,702 resource_id,703 PendingResourceAccept,704 )705 .map_err(|_| <Error<T>>::ResourceDoesntExist)?;706707 ensure!(is_pending, <Error<T>>::ResourceNotPending);708709 ensure!(cross_sender == nft_owner, <Error<T>>::NoPermission);710711 <PalletNft<T>>::set_scoped_token_property(712 resource_collection_id,713 rmrk_resource_id.into(),714 PropertyScope::Rmrk,715 Self::rmrk_property(PendingResourceAccept, &false)?,716 )?;717718 Self::deposit_event(Event::<T>::ResourceAccepted {719 nft_id: rmrk_nft_id,720 resource_id: rmrk_resource_id,721 });722723 Ok(())724 }725726 /// accept the removal of a resource of an existing NFT727 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]728 #[transactional]729 pub fn accept_resource_removal(730 origin: OriginFor<T>,731 rmrk_collection_id: RmrkCollectionId,732 rmrk_nft_id: RmrkNftId,733 rmrk_resource_id: RmrkResourceId,734 ) -> DispatchResult {735 let sender = ensure_signed(origin)?;736 let cross_sender = T::CrossAccountId::from_sub(sender);737738 let collection_id = Self::unique_collection_id(rmrk_collection_id)739 .map_err(|_| <Error<T>>::ResourceDoesntExist)?;740 let collection =741 Self::get_typed_nft_collection(collection_id, misc::CollectionType::Regular)?;742 collection.check_is_external()?;743744 let nft_id = rmrk_nft_id.into();745 let resource_id = rmrk_resource_id.into();746747 let budget = budget::Value::new(NESTING_BUDGET);748749 let nft_owner =750 <PalletStructure<T>>::find_topmost_owner(collection_id, nft_id, &budget)751 .map_err(|_| <Error<T>>::ResourceDoesntExist)?;752753 ensure!(cross_sender == nft_owner, <Error<T>>::NoPermission);754755 let resource_collection_id: CollectionId =756 Self::get_nft_property_decoded(collection_id, nft_id, ResourceCollection)757 .map_err(|_| <Error<T>>::ResourceDoesntExist)?;758759 let is_pending: bool = Self::get_nft_property_decoded(760 resource_collection_id,761 resource_id,762 PendingResourceRemoval,763 )764 .map_err(|_| <Error<T>>::ResourceDoesntExist)?;765766 ensure!(is_pending, <Error<T>>::ResourceNotPending);767768 let resource_collection = Self::get_typed_nft_collection(769 resource_collection_id,770 misc::CollectionType::Resource,771 )?;772773 <PalletNft<T>>::burn(&resource_collection, &cross_sender, rmrk_resource_id.into())774 .map_err(Self::map_unique_err_to_proxy)?;775776 Self::deposit_event(Event::<T>::ResourceRemovalAccepted {777 nft_id: rmrk_nft_id,778 resource_id: rmrk_resource_id,779 });780781 Ok(())782 }783784 /// set a custom value on an NFT785 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]786 #[transactional]339 pub fn set_property(787 pub fn set_property(340 origin: OriginFor<T>,788 origin: OriginFor<T>,341 #[pallet::compact] rmrk_collection_id: RmrkCollectionId,789 #[pallet::compact] rmrk_collection_id: RmrkCollectionId,346 let sender = ensure_signed(origin)?;794 let sender = ensure_signed(origin)?;347 let sender = T::CrossAccountId::from_sub(sender);795 let sender = T::CrossAccountId::from_sub(sender);348796349 let collection_id: CollectionId = rmrk_collection_id.into();797 let collection_id = Self::unique_collection_id(rmrk_collection_id)?;798 let collection =799 Self::get_typed_nft_collection(collection_id, misc::CollectionType::Regular)?;800 collection.check_is_external()?;350801802 let budget = budget::Value::new(NESTING_BUDGET);803351 match maybe_nft_id {804 match maybe_nft_id {352 Some(nft_id) => {805 Some(nft_id) => {353 let token_id: TokenId = nft_id.into();806 let token_id: TokenId = nft_id.into();354807355 Self::ensure_nft_owner(collection_id, token_id, &sender)?;356 Self::ensure_nft_type(collection_id, token_id, NftType::Regular)?;808 Self::ensure_nft_type(collection_id, token_id, NftType::Regular)?;809 Self::ensure_nft_owner(collection_id, token_id, &sender, &budget)?;357810358 <PalletNft<T>>::set_scoped_token_property(811 <PalletNft<T>>::set_scoped_token_property(359 collection_id,812 collection_id,388 Ok(())841 Ok(())389 }842 }843844 /// set a different order of resource priority845 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]846 #[transactional]847 pub fn set_priority(848 origin: OriginFor<T>,849 rmrk_collection_id: RmrkCollectionId,850 rmrk_nft_id: RmrkNftId,851 priorities: BoundedVec<RmrkResourceId, RmrkMaxPriorities>,852 ) -> DispatchResult {853 let sender = ensure_signed(origin)?;854 let sender = T::CrossAccountId::from_sub(sender);855856 let collection_id = Self::unique_collection_id(rmrk_collection_id)?;857 let nft_id = rmrk_nft_id.into();858859 let collection =860 Self::get_typed_nft_collection(collection_id, misc::CollectionType::Regular)?;861 collection.check_is_external()?;862863 let budget = budget::Value::new(NESTING_BUDGET);864865 Self::ensure_nft_type(collection_id, nft_id, NftType::Regular)?;866 Self::ensure_nft_owner(collection_id, nft_id, &sender, &budget)?;867868 <PalletNft<T>>::set_scoped_token_property(869 collection_id,870 nft_id,871 PropertyScope::Rmrk,872 Self::rmrk_property(ResourcePriorities, &priorities.into_inner())?,873 )?;874875 Self::deposit_event(Event::<T>::PrioritySet {876 collection_id: rmrk_collection_id,877 nft_id: rmrk_nft_id,878 });879880 Ok(())881 }882883 /// Create basic resource884 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]885 #[transactional]886 pub fn add_basic_resource(887 origin: OriginFor<T>,888 rmrk_collection_id: RmrkCollectionId,889 nft_id: RmrkNftId,890 resource: RmrkBasicResource,891 ) -> DispatchResult {892 let sender = ensure_signed(origin.clone())?;893894 let collection_id = Self::unique_collection_id(rmrk_collection_id)?;895 let collection =896 Self::get_typed_nft_collection(collection_id, misc::CollectionType::Regular)?;897 collection.check_is_external()?;898899 let resource_id = Self::resource_add(900 sender,901 collection_id,902 nft_id.into(),903 [904 Self::rmrk_property(TokenType, &NftType::Resource)?,905 Self::rmrk_property(ResourceType, &misc::ResourceType::Basic)?,906 Self::rmrk_property(Src, &resource.src)?,907 Self::rmrk_property(Metadata, &resource.metadata)?,908 Self::rmrk_property(License, &resource.license)?,909 Self::rmrk_property(Thumb, &resource.thumb)?,910 ]911 .into_iter(),912 )?;913914 Self::deposit_event(Event::ResourceAdded {915 nft_id,916 resource_id,917 });918 Ok(())919 }920921 /// Create composable resource922 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]923 #[transactional]924 pub fn add_composable_resource(925 origin: OriginFor<T>,926 rmrk_collection_id: RmrkCollectionId,927 nft_id: RmrkNftId,928 _resource_id: RmrkBoundedResource,929 resource: RmrkComposableResource,930 ) -> DispatchResult {931 let sender = ensure_signed(origin.clone())?;932933 let collection_id = Self::unique_collection_id(rmrk_collection_id)?;934 let collection =935 Self::get_typed_nft_collection(collection_id, misc::CollectionType::Regular)?;936 collection.check_is_external()?;937938 let resource_id = Self::resource_add(939 sender,940 collection_id,941 nft_id.into(),942 [943 Self::rmrk_property(TokenType, &NftType::Resource)?,944 Self::rmrk_property(ResourceType, &misc::ResourceType::Composable)?,945 Self::rmrk_property(Parts, &resource.parts)?,946 Self::rmrk_property(Base, &resource.base)?,947 Self::rmrk_property(Src, &resource.src)?,948 Self::rmrk_property(Metadata, &resource.metadata)?,949 Self::rmrk_property(License, &resource.license)?,950 Self::rmrk_property(Thumb, &resource.thumb)?,951 ]952 .into_iter(),953 )?;954955 Self::deposit_event(Event::ResourceAdded {956 nft_id,957 resource_id,958 });959 Ok(())960 }961962 /// Create slot resource963 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]964 #[transactional]965 pub fn add_slot_resource(966 origin: OriginFor<T>,967 rmrk_collection_id: RmrkCollectionId,968 nft_id: RmrkNftId,969 resource: RmrkSlotResource,970 ) -> DispatchResult {971 let sender = ensure_signed(origin.clone())?;972973 let collection_id = Self::unique_collection_id(rmrk_collection_id)?;974 let collection =975 Self::get_typed_nft_collection(collection_id, misc::CollectionType::Regular)?;976 collection.check_is_external()?;977978 let resource_id = Self::resource_add(979 sender,980 collection_id,981 nft_id.into(),982 [983 Self::rmrk_property(TokenType, &NftType::Resource)?,984 Self::rmrk_property(ResourceType, &misc::ResourceType::Slot)?,985 Self::rmrk_property(Base, &resource.base)?,986 Self::rmrk_property(Src, &resource.src)?,987 Self::rmrk_property(Metadata, &resource.metadata)?,988 Self::rmrk_property(Slot, &resource.slot)?,989 Self::rmrk_property(License, &resource.license)?,990 Self::rmrk_property(Thumb, &resource.thumb)?,991 ]992 .into_iter(),993 )?;994995 Self::deposit_event(Event::ResourceAdded {996 nft_id,997 resource_id,998 });999 Ok(())1000 }10011002 /// remove resource1003 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]1004 #[transactional]1005 pub fn remove_resource(1006 origin: OriginFor<T>,1007 rmrk_collection_id: RmrkCollectionId,1008 nft_id: RmrkNftId,1009 resource_id: RmrkResourceId,1010 ) -> DispatchResult {1011 let sender = ensure_signed(origin.clone())?;10121013 let collection_id = Self::unique_collection_id(rmrk_collection_id)?;1014 let collection =1015 Self::get_typed_nft_collection(collection_id, misc::CollectionType::Regular)?;1016 collection.check_is_external()?;10171018 Self::resource_remove(sender, collection_id, nft_id.into(), resource_id.into())?;10191020 Self::deposit_event(Event::ResourceRemoval {1021 nft_id,1022 resource_id,1023 });1024 Ok(())1025 }390 }1026 }391}1027}3921028401 Ok(scoped_key)1037 Ok(scoped_key)402 }1038 }40310391040 // todo think about renaming these404 pub fn rmrk_property<E: Encode>(1041 pub fn rmrk_property<E: Encode>(405 rmrk_key: RmrkProperty,1042 rmrk_key: RmrkProperty,406 value: &E,1043 value: &E,417 Ok(property)1054 Ok(property)418 }1055 }41910561057 pub fn decode_property<D: Decode>(vec: PropertyValue) -> Result<D, DispatchError> {1058 vec.decode()1059 .map_err(|_| <Error<T>>::RmrkPropertyValueIsTooLong.into())1060 }10611062 pub fn rebind<L, S>(vec: &BoundedVec<u8, L>) -> Result<BoundedVec<u8, S>, DispatchError>1063 where1064 BoundedVec<u8, S>: TryFrom<Vec<u8>>,1065 {1066 vec.rebind()1067 .map_err(|_| <Error<T>>::RmrkPropertyValueIsTooLong.into())1068 }10691070 fn init_collection(1071 sender: T::CrossAccountId,1072 data: CreateCollectionData<T::AccountId>,1073 properties: impl Iterator<Item = Property>,1074 ) -> Result<CollectionId, DispatchError> {1075 let collection_id = <PalletNft<T>>::init_collection(sender, data, true);10761077 if let Err(DispatchError::Arithmetic(_)) = &collection_id {1078 return Err(<Error<T>>::NoAvailableCollectionId.into());1079 }10801081 <PalletCommon<T>>::set_scoped_collection_properties(1082 collection_id?,1083 PropertyScope::Rmrk,1084 properties,1085 )?;10861087 collection_id1088 }1089420 pub fn create_nft(1090 pub fn create_nft(421 sender: &T::CrossAccountId,1091 sender: &T::CrossAccountId,422 owner: &T::CrossAccountId,1092 owner: &T::CrossAccountId,423 collection: &NonfungibleHandle<T>,1093 collection: &NonfungibleHandle<T>,424 nft_type: NftType,425 properties: impl Iterator<Item = Property>,1094 properties: impl Iterator<Item = Property>,426 ) -> Result<TokenId, DispatchError> {1095 ) -> Result<TokenId, DispatchError> {427 todo!("store nft type");428 let data = CreateNftExData {1096 let data = CreateNftExData {429 properties: BoundedVec::default(),1097 properties: BoundedVec::default(),430 owner: owner.clone(),1098 owner: owner.clone(),431 };1099 };4321100433 let budget = budget::Value::new(2);1101 let budget = budget::Value::new(NESTING_BUDGET);4341102435 <PalletNft<T>>::create_item(collection, sender, data, &budget)?;1103 <PalletNft<T>>::create_item(collection, sender, data, &budget)?;4361104449 fn destroy_nft(1117 fn destroy_nft(450 sender: T::CrossAccountId,1118 sender: T::CrossAccountId,451 collection_id: CollectionId,1119 collection_id: CollectionId,452 collection_type: misc::CollectionType,453 token_id: TokenId,1120 token_id: TokenId,454 ) -> DispatchResult {1121 ) -> DispatchResult {455 let collection = Self::get_typed_nft_collection(collection_id, collection_type)?;1122 let collection =1123 Self::get_typed_nft_collection(collection_id, misc::CollectionType::Regular)?;4561124457 <PalletNft<T>>::burn(&collection, &sender, token_id)1125 let token_data =458 .map_err(Self::map_common_err_to_proxy)?;1126 <TokenData<T>>::get((collection_id, token_id)).ok_or(<Error<T>>::NoAvailableNftId)?;45911271128 let from = token_data.owner;11291130 let budget = budget::Value::new(NESTING_BUDGET);11311132 <PalletNft<T>>::burn_from(&collection, &sender, &from, token_id, &budget)1133 }11341135 fn resource_add(1136 sender: T::AccountId,1137 collection_id: CollectionId,1138 token_id: TokenId,1139 resource_properties: impl Iterator<Item = Property>,1140 ) -> Result<RmrkResourceId, DispatchError> {1141 let collection =1142 Self::get_typed_nft_collection(collection_id, misc::CollectionType::Regular)?;1143 ensure!(collection.owner == sender, Error::<T>::NoPermission);11441145 let sender = T::CrossAccountId::from_sub(sender);1146 let budget = budget::Value::new(NESTING_BUDGET);11471148 let nft_owner = <PalletStructure<T>>::find_topmost_owner(collection_id, token_id, &budget)1149 .map_err(Self::map_unique_err_to_proxy)?;11501151 let pending = sender != nft_owner;11521153 let resource_collection_id: CollectionId =1154 Self::get_nft_property_decoded(collection_id, token_id, ResourceCollection)?;1155 let resource_collection =1156 Self::get_typed_nft_collection(resource_collection_id, misc::CollectionType::Resource)?;11571158 // todo probably add extra connections to bases, slots, etc., when RMRK starts to use them11591160 let resource_id = Self::create_nft(1161 &sender,1162 &nft_owner,1163 &resource_collection,1164 resource_properties.chain(1165 [1166 Self::rmrk_property(PendingResourceAccept, &pending)?,1167 Self::rmrk_property(PendingResourceRemoval, &false)?,1168 ]1169 .into_iter(),1170 ),1171 )1172 .map_err(|err| match err {1173 DispatchError::Arithmetic(_) => <Error<T>>::NoAvailableNftId.into(),1174 err => Self::map_unique_err_to_proxy(err),1175 })?;11761177 Ok(resource_id.0)1178 }11791180 fn resource_remove(1181 sender: T::AccountId,1182 collection_id: CollectionId,1183 nft_id: TokenId,1184 resource_id: TokenId,1185 ) -> DispatchResult {1186 let collection =1187 Self::get_typed_nft_collection(collection_id, misc::CollectionType::Regular)?;1188 ensure!(collection.owner == sender, Error::<T>::NoPermission);11891190 let resource_collection_id: CollectionId =1191 Self::get_nft_property_decoded(collection_id, nft_id, ResourceCollection)?;1192 let resource_collection =1193 Self::get_typed_nft_collection(resource_collection_id, misc::CollectionType::Resource)?;1194 ensure!(1195 <PalletNft<T>>::token_exists(&resource_collection, resource_id),1196 Error::<T>::ResourceDoesntExist1197 );11981199 let budget = up_data_structs::budget::Value::new(10);1200 let topmost_owner =1201 <PalletStructure<T>>::find_topmost_owner(collection_id, nft_id, &budget)?;12021203 let sender = T::CrossAccountId::from_sub(sender);1204 if topmost_owner == sender {1205 <PalletNft<T>>::burn(&resource_collection, &sender, resource_id)1206 .map_err(Self::map_unique_err_to_proxy)?;1207 } else {1208 <PalletNft<T>>::set_scoped_token_property(1209 resource_collection_id,1210 resource_id,1211 PropertyScope::Rmrk,1212 Self::rmrk_property(PendingResourceRemoval, &true)?,1213 )?;1214 }1215460 Ok(())1216 Ok(())461 }1217 }481 ) -> DispatchResult {1237 ) -> DispatchResult {482 collection1238 collection483 .check_is_owner(account)1239 .check_is_owner(account)484 .map_err(Self::map_common_err_to_proxy)1240 .map_err(Self::map_unique_err_to_proxy)485 }1241 }4861242487 pub fn last_collection_idx() -> RmrkCollectionId {1243 pub fn last_collection_idx() -> RmrkCollectionId {488 <CollectionIndex<T>>::get()1244 <CollectionIndex<T>>::get()489 }1245 }49012461247 pub fn unique_collection_id(1248 rmrk_collection_id: RmrkCollectionId,1249 ) -> Result<CollectionId, DispatchError> {1250 <UniqueCollectionId<T>>::try_get(rmrk_collection_id)1251 .map_err(|_| <Error<T>>::CollectionUnknown.into())1252 }12531254 pub fn rmrk_collection_id(1255 unique_collection_id: CollectionId,1256 ) -> Result<RmrkCollectionId, DispatchError> {1257 <RmrkInernalCollectionId<T>>::try_get(unique_collection_id)1258 .map_err(|_| <Error<T>>::CollectionUnknown.into())1259 }1260491 pub fn get_nft_collection(1261 pub fn get_nft_collection(492 collection_id: CollectionId,1262 collection_id: CollectionId,493 ) -> Result<NonfungibleHandle<T>, DispatchError> {1263 ) -> Result<NonfungibleHandle<T>, DispatchError> {504 <CollectionHandle<T>>::try_get(collection_id).is_ok()1274 <CollectionHandle<T>>::try_get(collection_id).is_ok()505 }1275 }5061276507 pub fn nft_exists(collection_id: CollectionId, nft_id: TokenId) -> bool {508 <TokenData<T>>::contains_key((collection_id, nft_id))509 }510511 pub fn get_collection_property(1277 pub fn get_collection_property(512 collection_id: CollectionId,1278 collection_id: CollectionId,513 key: RmrkProperty,1279 key: RmrkProperty,520 Ok(collection_property)1286 Ok(collection_property)521 }1287 }52212881289 pub fn get_collection_property_decoded<V: Decode>(1290 collection_id: CollectionId,1291 key: RmrkProperty,1292 ) -> Result<V, DispatchError> {1293 Self::decode_property(Self::get_collection_property(collection_id, key)?)1294 }1295523 pub fn get_collection_type(1296 pub fn get_collection_type(524 collection_id: CollectionId,1297 collection_id: CollectionId,525 ) -> Result<misc::CollectionType, DispatchError> {1298 ) -> Result<misc::CollectionType, DispatchError> {526 let value = Self::get_collection_property(collection_id, CollectionType)?;1299 Self::get_collection_property_decoded(collection_id, CollectionType)527528 let mut value = value.as_slice();529530 misc::CollectionType::decode(&mut value)531 .map_err(|_| <Error<T>>::CorruptedCollectionType.into())1300 .map_err(|_| <Error<T>>::CorruptedCollectionType.into())532 }1301 }5331302544 Ok(())1313 Ok(())545 }1314 }54613151316 pub fn get_typed_nft_collection(1317 collection_id: CollectionId,1318 collection_type: misc::CollectionType,1319 ) -> Result<NonfungibleHandle<T>, DispatchError> {1320 Self::ensure_collection_type(collection_id, collection_type)?;13211322 Self::get_nft_collection(collection_id)1323 }13241325 pub fn get_typed_nft_collection_mapped(1326 rmrk_collection_id: RmrkCollectionId,1327 collection_type: misc::CollectionType,1328 ) -> Result<(NonfungibleHandle<T>, CollectionId), DispatchError> {1329 let unique_collection_id = match collection_type {1330 misc::CollectionType::Regular => Self::unique_collection_id(rmrk_collection_id)?,1331 _ => rmrk_collection_id.into(),1332 };13331334 let collection = Self::get_typed_nft_collection(unique_collection_id, collection_type)?;13351336 Ok((collection, unique_collection_id))1337 }1338547 pub fn get_nft_property(1339 pub fn get_nft_property(548 collection_id: CollectionId,1340 collection_id: CollectionId,549 nft_id: TokenId,1341 nft_id: TokenId,550 key: RmrkProperty,1342 key: RmrkProperty,551 ) -> Result<PropertyValue, DispatchError> {1343 ) -> Result<PropertyValue, DispatchError> {552 let nft_property = <PalletNft<T>>::token_properties((collection_id, nft_id))1344 let nft_property = <PalletNft<T>>::token_properties((collection_id, nft_id))553 .get(&Self::rmrk_property_key(key)?)1345 .get(&Self::rmrk_property_key(key)?)554 .ok_or(<Error<T>>::NoAvailableNftId)?1346 .ok_or(<Error<T>>::NoAvailableNftId)? // todo replace with better error?555 .clone();1347 .clone();5561348557 Ok(nft_property)1349 Ok(nft_property)558 }1350 }55913511352 pub fn get_nft_property_decoded<V: Decode>(1353 collection_id: CollectionId,1354 nft_id: TokenId,1355 key: RmrkProperty,1356 ) -> Result<V, DispatchError> {1357 Self::decode_property(Self::get_nft_property(collection_id, nft_id, key)?)1358 }13591360 pub fn nft_exists(collection_id: CollectionId, nft_id: TokenId) -> bool {1361 <TokenData<T>>::contains_key((collection_id, nft_id))1362 }1363560 pub fn get_nft_type(1364 pub fn get_nft_type(561 _collection_id: CollectionId,1365 collection_id: CollectionId,562 _token_id: TokenId,1366 token_id: TokenId,563 ) -> Result<NftType, DispatchError> {1367 ) -> Result<NftType, DispatchError> {564 todo!("should get it from properties?")1368 Self::get_nft_property_decoded(collection_id, token_id, TokenType)1369 .map_err(|_| <Error<T>>::NoAvailableNftId.into())565 }1370 }5661371567 pub fn ensure_nft_type(1372 pub fn ensure_nft_type(579 collection_id: CollectionId,1384 collection_id: CollectionId,580 token_id: TokenId,1385 token_id: TokenId,581 possible_owner: &T::CrossAccountId,1386 possible_owner: &T::CrossAccountId,1387 nesting_budget: &dyn budget::Budget,582 ) -> DispatchResult {1388 ) -> DispatchResult {583 let token_data =1389 let is_owned = <PalletStructure<T>>::check_indirectly_owned(584 <TokenData<T>>::get((collection_id, token_id)).ok_or(<Error<T>>::NoAvailableNftId)?;1390 possible_owner.clone(),1391 collection_id,1392 token_id,1393 None,1394 nesting_budget,1395 )1396 .map_err(Self::map_unique_err_to_proxy)?;5851397586 ensure!(1398 ensure!(is_owned, <Error<T>>::NoPermission);587 token_data.owner == *possible_owner,588 <Error<T>>::NoPermission589 );5901399591 Ok(())1400 Ok(())592 }1401 }610 let key: Key = key.try_into().ok()?;1419 let key: Key = key.try_into().ok()?;6111420612 let value = match token_id {1421 let value = match token_id {613 Some(token_id) => Self::get_nft_property(1422 Some(token_id) => Self::get_nft_property_decoded(614 collection_id,1423 collection_id,615 token_id,1424 token_id,616 UserProperty(key.as_ref()),1425 UserProperty(key.as_ref()),617 ),1426 ),618 None => Self::get_collection_property(1427 None => Self::get_collection_property_decoded(619 collection_id,1428 collection_id,620 UserProperty(key.as_ref()),1429 UserProperty(key.as_ref()),621 ),1430 ),622 }1431 }623 .ok()?1432 .ok()?;624 .decode_or_default();6251433626 Some(mapper(key, value))1434 Some(mapper(key, value))627 })1435 })658 let key = key.as_slice().strip_prefix(key_prefix.as_slice())?;1466 let key = key.as_slice().strip_prefix(key_prefix.as_slice())?;6591467660 let key: Key = key.to_vec().try_into().ok()?;1468 let key: Key = key.to_vec().try_into().ok()?;661 let value: Value = value.decode_or_default();1469 let value: Value = value.decode().ok()?;6621470663 Some(mapper(key, value))1471 Some(mapper(key, value))664 });1472 });6651473666 Ok(properties)1474 Ok(properties)667 }668669 pub fn get_typed_nft_collection(670 collection_id: CollectionId,671 collection_type: misc::CollectionType,672 ) -> Result<NonfungibleHandle<T>, DispatchError> {673 Self::ensure_collection_type(collection_id, collection_type)?;674675 Self::get_nft_collection(collection_id)676 }1475 }6771476678 fn map_common_err_to_proxy(err: DispatchError) -> DispatchError {1477 fn map_unique_err_to_proxy(err: DispatchError) -> DispatchError {679 map_common_err_to_proxy! {1478 map_unique_err_to_proxy! {680 match err {1479 match err {681 NoPermission => NoPermission,1480 CommonError::NoPermission => NoPermission,682 CollectionTokenLimitExceeded => CollectionFullOrLocked,1481 CommonError::CollectionTokenLimitExceeded => CollectionFullOrLocked,683 PublicMintingNotAllowed => NoPermission,1482 CommonError::PublicMintingNotAllowed => NoPermission,684 TokenNotFound => NoAvailableNftId1483 CommonError::TokenNotFound => NoAvailableNftId,1484 CommonError::ApprovedValueTooLow => NoPermission,1485 CommonError::CantDestroyNotEmptyCollection => CollectionNotEmpty,1486 StructureError::TokenNotFound => NoAvailableNftId,1487 StructureError::OuroborosDetected => CannotSendToDescendentOrSelf,685 }1488 }686 }1489 }687 }1490 }pallets/proxy-rmrk-core/src/misc.rsdiffbeforeafterboth1// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.2// This file is part of Unique Network.34// Unique Network is free software: you can redistribute it and/or modify5// it under the terms of the GNU General Public License as published by6// the Free Software Foundation, either version 3 of the License, or7// (at your option) any later version.89// Unique Network is distributed in the hope that it will be useful,10// but WITHOUT ANY WARRANTY; without even the implied warranty of11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the12// GNU General Public License for more details.1314// You should have received a copy of the GNU General Public License15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.161use super::*;17use super::*;2use codec::{Encode, Decode};18use codec::{Encode, Decode, Error};3194#[macro_export]20#[macro_export]5macro_rules! map_common_err_to_proxy {21macro_rules! map_unique_err_to_proxy {6 (match $err:ident { $($common_err:ident => $proxy_err:ident),+ }) => {22 (match $err:ident { $($unique_err_ty:ident :: $unique_err:ident => $proxy_err:ident),+ $(,)? }) => {7 $(23 $(8 if $err == <CommonError<T>>::$common_err.into() {24 if $err == <$unique_err_ty<T>>::$unique_err.into() {9 return <Error<T>>::$proxy_err.into()25 return <Error<T>>::$proxy_err.into()10 } else26 } else11 )+ {27 )+ {14 };30 };15}31}163233// Utilize the RmrkCore pallet for access to Runtime errors.17pub trait RmrkDecode<T: Decode + Default, S> {34pub trait RmrkDecode<T: Decode, S> {18 fn decode_or_default(&self) -> T;35 fn decode(&self) -> Result<T, Error>;19}36}203721impl<T: Decode + Default, S> RmrkDecode<T, S> for BoundedVec<u8, S> {38impl<T: Decode, S> RmrkDecode<T, S> for BoundedVec<u8, S> {22 fn decode_or_default(&self) -> T {39 fn decode(&self) -> Result<T, Error> {23 let mut value = self.as_slice();40 let mut value = self.as_slice();244125 T::decode(&mut value).unwrap_or_default()42 T::decode(&mut value)26 }43 }27}44}284546// Utilize the RmrkCore pallet for access to Runtime errors.29pub trait RmrkRebind<T, S> {47pub trait RmrkRebind<T, S> {30 fn rebind(&self) -> BoundedVec<u8, S>;48 fn rebind(&self) -> Result<BoundedVec<u8, S>, Error>;31}49}325033impl<T, S> RmrkRebind<T, S> for BoundedVec<u8, T>51impl<T, S> RmrkRebind<T, S> for BoundedVec<u8, T>34where52where35 BoundedVec<u8, S>: TryFrom<Vec<u8>>,53 BoundedVec<u8, S>: TryFrom<Vec<u8>>,36{54{37 fn rebind(&self) -> BoundedVec<u8, S> {55 fn rebind(&self) -> Result<BoundedVec<u8, S>, Error> {38 BoundedVec::<u8, S>::try_from(self.clone().into_inner()).unwrap_or_default()56 BoundedVec::<u8, S>::try_from(self.clone().into_inner())57 .map_err(|_| "BoundedVec exceeds its limit".into())39 }58 }40}59}416055 Theme,74 Theme,56}75}7677#[derive(Encode, Decode, PartialEq, Eq)]78pub enum ResourceType {79 Basic,80 Composable,81 Slot,82}5783pallets/proxy-rmrk-core/src/property.rsdiffbeforeafterboth1// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.2// This file is part of Unique Network.34// Unique Network is free software: you can redistribute it and/or modify5// it under the terms of the GNU General Public License as published by6// the Free Software Foundation, either version 3 of the License, or7// (at your option) any later version.89// Unique Network is distributed in the hope that it will be useful,10// but WITHOUT ANY WARRANTY; without even the implied warranty of11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the12// GNU General Public License for more details.1314// You should have received a copy of the GNU General Public License15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.161use super::*;17use super::*;2use core::convert::AsRef;18use core::convert::AsRef;3194pub enum RmrkProperty<'r> {20pub enum RmrkProperty<'r> {5 Metadata,21 Metadata,6 CollectionType,22 CollectionType,23 TokenType,24 Transferable,7 RoyaltyInfo,25 RoyaltyInfo,8 Equipped,26 Equipped,9 ResourceCollection,27 ResourceCollection,10 ResourcePriorities,28 ResourcePriorities,11 ResourceType,29 ResourceType,30 PendingNftAccept,12 PendingResourceAccept,31 PendingResourceAccept,13 PendingResourceRemoval,32 PendingResourceRemoval,14 Parts,33 Parts,47 match self {66 match self {48 Self::Metadata => key!("metadata"),67 Self::Metadata => key!("metadata"),49 Self::CollectionType => key!("collection-type"),68 Self::CollectionType => key!("collection-type"),69 Self::TokenType => key!("token-type"),70 Self::Transferable => key!("transferable"),50 Self::RoyaltyInfo => key!("royalty-info"),71 Self::RoyaltyInfo => key!("royalty-info"),51 Self::Equipped => key!("equipped"),72 Self::Equipped => key!("equipped"),52 Self::ResourceCollection => key!("resource-collection"),73 Self::ResourceCollection => key!("resource-collection"),53 Self::ResourcePriorities => key!("resource-priorities"),74 Self::ResourcePriorities => key!("resource-priorities"),54 Self::ResourceType => key!("resource-type"),75 Self::ResourceType => key!("resource-type"),76 Self::PendingNftAccept => key!("pending-nft-accept"),55 Self::PendingResourceAccept => key!("pending-accept"),77 Self::PendingResourceAccept => key!("pending-resource-accept"),56 Self::PendingResourceRemoval => key!("pending-removal"),78 Self::PendingResourceRemoval => key!("pending-resource-removal"),57 Self::Parts => key!("parts"),79 Self::Parts => key!("parts"),58 Self::Base => key!("base"),80 Self::Base => key!("base"),59 Self::Src => key!("src"),81 Self::Src => key!("src"),pallets/proxy-rmrk-core/src/weights.rsdiffbeforeafterbothno changes
pallets/proxy-rmrk-equip/Cargo.tomldiffbeforeafterboth21up-data-structs = { default-features = false, path = '../../primitives/data-structs' }21up-data-structs = { default-features = false, path = '../../primitives/data-structs' }22pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }22pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }23frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }23frame-benchmarking = { default-features = false, optional = true, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.22" }24rmrk-traits = { default-features = false, path = "../../primitives/rmrk-traits" }24scale-info = { version = "2.0.1", default-features = false, features = ["derive"] }25scale-info = { version = "2.0.1", default-features = false, features = ["derive"] }25pallet-rmrk-core = { default-features = false, path = "../proxy-rmrk-core" }26pallet-rmrk-core = { default-features = false, path = "../proxy-rmrk-core" }262732 "sp-runtime/std",33 "sp-runtime/std",33 "sp-std/std",34 "sp-std/std",34 "up-data-structs/std",35 "up-data-structs/std",36 "rmrk-traits/std",35 "pallet-common/std",37 "pallet-common/std",36 "pallet-nonfungible/std",38 "pallet-nonfungible/std",37 "pallet-rmrk-core/std",39 "pallet-rmrk-core/std",pallets/proxy-rmrk-equip/src/lib.rsdiffbeforeafterboth747475 #[pallet::call]75 #[pallet::call]76 impl<T: Config> Pallet<T> {76 impl<T: Config> Pallet<T> {77 /// Creates a new Base.78 /// Modeled after [base interaction](https://github.com/rmrk-team/rmrk-spec/blob/master/standards/rmrk2.0.0/interactions/base.md)79 ///80 /// Parameters:81 /// - origin: Caller, will be assigned as the issuer of the Base82 /// - base_type: media type, e.g. "svg"83 /// - symbol: arbitrary client-chosen symbol84 /// - parts: array of Fixed and Slot parts composing the base, confined in length by85 /// RmrkPartsLimit77 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]86 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]78 #[transactional]87 #[transactional]79 pub fn create_base(88 pub fn create_base(95 };104 };9610597 let collection_id_res = <PalletNft<T>>::init_collection(cross_sender.clone(), data);106 let collection_id_res =107 <PalletNft<T>>::init_collection(cross_sender.clone(), data, true);9810899 if let Err(DispatchError::Arithmetic(_)) = &collection_id_res {109 if let Err(DispatchError::Arithmetic(_)) = &collection_id_res {100 return Err(<Error<T>>::NoAvailableBaseId.into());110 return Err(<Error<T>>::NoAvailableBaseId.into());136 Ok(())146 Ok(())137 }147 }138148149 /// Adds a Theme to a Base.150 /// Modeled after [themeadd interaction](https://github.com/rmrk-team/rmrk-spec/blob/master/standards/rmrk2.0.0/interactions/themeadd.md)151 /// Themes are stored in the Themes storage152 /// A Theme named "default" is required prior to adding other Themes.153 ///154 /// Parameters:155 /// - origin: The caller of the function, must be issuer of the base156 /// - base_id: The Base containing the Theme to be updated157 /// - theme: The Theme to add to the Base. A Theme has a name and properties, which are an158 /// array of [key, value, inherit].159 /// - key: arbitrary BoundedString, defined by client160 /// - value: arbitrary BoundedString, defined by client161 /// - inherit: optional bool139 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]162 #[pallet::weight(10_000 + T::DbWeight::get().reads_writes(1,1))]140 #[transactional]163 #[transactional]141 pub fn theme_add(164 pub fn theme_add(155 misc::CollectionType::Base,178 misc::CollectionType::Base,156 )179 )157 .map_err(|_| <Error<T>>::BaseDoesntExist)?;180 .map_err(|_| <Error<T>>::BaseDoesntExist)?;181 collection.check_is_external()?;158182159 if theme.name.as_slice() == b"default" {183 if theme.name.as_slice() == b"default" {160 <BaseHasDefaultTheme<T>>::insert(collection_id, true);184 <BaseHasDefaultTheme<T>>::insert(collection_id, true);166 &sender,190 &sender,167 owner,191 owner,168 &collection,192 &collection,193 [169 NftType::Theme,194 <PalletCore<T>>::rmrk_property(TokenType, &NftType::Theme)?,170 [171 <PalletCore<T>>::rmrk_property(ThemeName, &theme.name)?,195 <PalletCore<T>>::rmrk_property(ThemeName, &theme.name)?,172 <PalletCore<T>>::rmrk_property(ThemeInherit, &theme.inherit)?,196 <PalletCore<T>>::rmrk_property(ThemeInherit, &theme.inherit)?,173 ]197 ]174 .into_iter(),198 .into_iter(),175 )199 )176 .map_err(|_| <Error<T>>::PermissionError)?;200 .map_err(|_| <Error<T>>::PermissionError)?;212 sender,236 sender,213 owner,237 owner,214 collection,238 collection,215 nft_type,216 [239 [240 <PalletCore<T>>::rmrk_property(TokenType, &nft_type)?,217 <PalletCore<T>>::rmrk_property(Src, &src)?,241 <PalletCore<T>>::rmrk_property(Src, &src)?,218 <PalletCore<T>>::rmrk_property(ZIndex, &z_index)?,242 <PalletCore<T>>::rmrk_property(ZIndex, &z_index)?,219 ]243 ]pallets/refungible/src/lib.rsdiffbeforeafterboth200 owner: T::CrossAccountId,200 owner: T::CrossAccountId,201 data: CreateCollectionData<T::AccountId>,201 data: CreateCollectionData<T::AccountId>,202 ) -> Result<CollectionId, DispatchError> {202 ) -> Result<CollectionId, DispatchError> {203 <PalletCommon<T>>::init_collection(owner, data)203 <PalletCommon<T>>::init_collection(owner, data, false)204 }204 }205 pub fn destroy_collection(205 pub fn destroy_collection(206 collection: RefungibleHandle<T>,206 collection: RefungibleHandle<T>,pallets/structure/src/lib.rsdiffbeforeafterboth149 })149 })150 }150 }151151152 /// Check if token indirectly owned by specified user153 pub fn check_indirectly_owned(152 pub fn get_checked_topmost_owner(154 user: T::CrossAccountId,155 collection: CollectionId,153 collection: CollectionId,156 token: TokenId,154 token: TokenId,157 for_nest: Option<(CollectionId, TokenId)>,155 for_nest: Option<(CollectionId, TokenId)>,158 budget: &dyn Budget,156 budget: &dyn Budget,159 ) -> Result<bool, DispatchError> {157 ) -> Result<T::CrossAccountId, DispatchError> {160 let target_parent = match T::CrossTokenAddressMapping::address_to_token(&user) {161 Some((collection, token)) => Self::find_topmost_owner(collection, token, budget)?,162 None => user,163 };164165 // Tried to nest token in itself158 // Tried to nest token in itself166 if Some((collection, token)) == for_nest {159 if Some((collection, token)) == for_nest {173 Parent::Token(collection, token) if Some((collection, token)) == for_nest => {166 Parent::Token(collection, token) if Some((collection, token)) == for_nest => {174 return Err(<Error<T>>::OuroborosDetected.into())167 return Err(<Error<T>>::OuroborosDetected.into())175 }168 }176 // Found needed parent, token is indirecty owned169 // Token is owned by other user177 Parent::User(user) if user == target_parent => return Ok(true),170 Parent::User(user) => return Ok(user),178 // Token is owned by other user179 Parent::User(_) => return Ok(false),180 Parent::TokenNotFound => return Err(<Error<T>>::TokenNotFound.into()),171 Parent::TokenNotFound => return Err(<Error<T>>::TokenNotFound.into()),181 // Continue parent chain172 // Continue parent chain182 Parent::Token(_, _) => {}173 Parent::Token(_, _) => {}199 dispatch.burn_item_recursively(from.clone(), token, self_budget, breadth_budget)190 dispatch.burn_item_recursively(from.clone(), token, self_budget, breadth_budget)200 }191 }192193 /// Check if token indirectly owned by specified user194 pub fn check_indirectly_owned(195 user: T::CrossAccountId,196 collection: CollectionId,197 token: TokenId,198 for_nest: Option<(CollectionId, TokenId)>,199 budget: &dyn Budget,200 ) -> Result<bool, DispatchError> {201 let target_parent = match T::CrossTokenAddressMapping::address_to_token(&user) {202 Some((collection, token)) => Self::find_topmost_owner(collection, token, budget)?,203 None => user,204 };205206 Self::get_checked_topmost_owner(collection, token, for_nest, budget)207 .map(|indirect_owner| indirect_owner == target_parent)208 }201209202 pub fn check_nesting(210 pub fn check_nesting(203 from: T::CrossAccountId,211 from: T::CrossAccountId,pallets/unique/src/eth/mod.rsdiffbeforeafterboth93 };93 };949495 let collection_id = <pallet_nonfungible::Pallet<T>>::init_collection(caller.clone(), data)95 let collection_id =96 <pallet_nonfungible::Pallet<T>>::init_collection(caller.clone(), data, false)96 .map_err(pallet_evm_coder_substrate::dispatch_to_evm::<T>)?;97 .map_err(pallet_evm_coder_substrate::dispatch_to_evm::<T>)?;979898 let address = pallet_common::eth::collection_id_to_address(collection_id);99 let address = pallet_common::eth::collection_id_to_address(collection_id);pallets/unique/src/lib.rsdiffbeforeafterboth44};44};45use pallet_evm::account::CrossAccountId;45use pallet_evm::account::CrossAccountId;46use pallet_common::{46use pallet_common::{47 CollectionHandle, Pallet as PalletCommon, CommonWeightInfo, dispatch::dispatch_call,47 CollectionHandle, Pallet as PalletCommon, CommonWeightInfo, dispatch::dispatch_tx,48 dispatch::CollectionDispatch,48 dispatch::CollectionDispatch,49};49};50pub mod eth;50pub mod eth;304 pub fn destroy_collection(origin, collection_id: CollectionId) -> DispatchResult {304 pub fn destroy_collection(origin, collection_id: CollectionId) -> DispatchResult {305 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);305 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);306 let collection = <CollectionHandle<T>>::try_get(collection_id)?;306 let collection = <CollectionHandle<T>>::try_get(collection_id)?;307 collection.check_is_internal()?;307308308 // =========309 // =========309310338339339 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);340 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);340 let collection = <CollectionHandle<T>>::try_get(collection_id)?;341 let collection = <CollectionHandle<T>>::try_get(collection_id)?;342 collection.check_is_internal()?;341343342 <PalletCommon<T>>::toggle_allowlist(344 <PalletCommon<T>>::toggle_allowlist(343 &collection,345 &collection,372374373 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);375 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);374 let collection = <CollectionHandle<T>>::try_get(collection_id)?;376 let collection = <CollectionHandle<T>>::try_get(collection_id)?;377 collection.check_is_internal()?;375378376 <PalletCommon<T>>::toggle_allowlist(379 <PalletCommon<T>>::toggle_allowlist(377 &collection,380 &collection,406 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);409 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);407410408 let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;411 let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;412 target_collection.check_is_internal()?;409 target_collection.check_is_owner(&sender)?;413 target_collection.check_is_owner(&sender)?;410414411 target_collection.owner = new_owner.clone();415 target_collection.owner = new_owner.clone();435 pub fn add_collection_admin(origin, collection_id: CollectionId, new_admin_id: T::CrossAccountId) -> DispatchResult {439 pub fn add_collection_admin(origin, collection_id: CollectionId, new_admin_id: T::CrossAccountId) -> DispatchResult {436 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);440 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);437 let collection = <CollectionHandle<T>>::try_get(collection_id)?;441 let collection = <CollectionHandle<T>>::try_get(collection_id)?;442 collection.check_is_internal()?;438443439 <Pallet<T>>::deposit_event(Event::<T>::CollectionAdminAdded(444 <Pallet<T>>::deposit_event(Event::<T>::CollectionAdminAdded(440 collection_id,445 collection_id,461 pub fn remove_collection_admin(origin, collection_id: CollectionId, account_id: T::CrossAccountId) -> DispatchResult {466 pub fn remove_collection_admin(origin, collection_id: CollectionId, account_id: T::CrossAccountId) -> DispatchResult {462 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);467 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);463 let collection = <CollectionHandle<T>>::try_get(collection_id)?;468 let collection = <CollectionHandle<T>>::try_get(collection_id)?;469 collection.check_is_internal()?;464470465 <Pallet<T>>::deposit_event(Event::<T>::CollectionAdminRemoved(471 <Pallet<T>>::deposit_event(Event::<T>::CollectionAdminRemoved(466 collection_id,472 collection_id,486492487 let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;493 let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;488 target_collection.check_is_owner(&sender)?;494 target_collection.check_is_owner(&sender)?;495 target_collection.check_is_internal()?;489496490 target_collection.set_sponsor(new_sponsor.clone());497 target_collection.set_sponsor(new_sponsor.clone())?;491498492 <Pallet<T>>::deposit_event(Event::<T>::CollectionSponsorSet(499 <Pallet<T>>::deposit_event(Event::<T>::CollectionSponsorSet(493 collection_id,500 collection_id,510 let sender = ensure_signed(origin)?;517 let sender = ensure_signed(origin)?;511518512 let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;519 let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;520 target_collection.check_is_internal()?;513 ensure!(521 ensure!(514 target_collection.confirm_sponsorship(&sender),522 target_collection.confirm_sponsorship(&sender)?,515 Error::<T>::ConfirmUnsetSponsorFail523 Error::<T>::ConfirmUnsetSponsorFail516 );524 );517525538 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);546 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);539547540 let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;548 let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;549 target_collection.check_is_internal()?;541 target_collection.check_is_owner(&sender)?;550 target_collection.check_is_owner(&sender)?;542551543 target_collection.sponsorship = SponsorshipState::Disabled;552 target_collection.sponsorship = SponsorshipState::Disabled;572 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);581 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);573 let budget = budget::Value::new(NESTING_BUDGET);582 let budget = budget::Value::new(NESTING_BUDGET);574583575 dispatch_call::<T, _>(collection_id, |d| d.create_item(sender, owner, data, &budget))584 dispatch_tx::<T, _>(collection_id, |d| d.create_item(sender, owner, data, &budget))576 }585 }577586578 /// This method creates multiple items in a collection created with CreateCollection method.587 /// This method creates multiple items in a collection created with CreateCollection method.600 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);609 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);601 let budget = budget::Value::new(NESTING_BUDGET);610 let budget = budget::Value::new(NESTING_BUDGET);602611603 dispatch_call::<T, _>(collection_id, |d| d.create_multiple_items(sender, owner, items_data, &budget))612 dispatch_tx::<T, _>(collection_id, |d| d.create_multiple_items(sender, owner, items_data, &budget))604 }613 }605614606 #[weight = T::CommonWeightInfo::set_collection_properties(properties.len() as u32)]615 #[weight = T::CommonWeightInfo::set_collection_properties(properties.len() as u32)]614623615 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);624 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);616625617 dispatch_call::<T, _>(collection_id, |d| d.set_collection_properties(sender, properties))626 dispatch_tx::<T, _>(collection_id, |d| d.set_collection_properties(sender, properties))618 }627 }619628620 #[weight = T::CommonWeightInfo::delete_collection_properties(property_keys.len() as u32)]629 #[weight = T::CommonWeightInfo::delete_collection_properties(property_keys.len() as u32)]628637629 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);638 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);630639631 dispatch_call::<T, _>(collection_id, |d| d.delete_collection_properties(&sender, property_keys))640 dispatch_tx::<T, _>(collection_id, |d| d.delete_collection_properties(&sender, property_keys))632 }641 }633642634 #[weight = T::CommonWeightInfo::set_token_properties(properties.len() as u32)]643 #[weight = T::CommonWeightInfo::set_token_properties(properties.len() as u32)]643652644 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);653 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);645654646 dispatch_call::<T, _>(collection_id, |d| d.set_token_properties(sender, token_id, properties))655 dispatch_tx::<T, _>(collection_id, |d| d.set_token_properties(sender, token_id, properties))647 }656 }648657649 #[weight = T::CommonWeightInfo::delete_token_properties(property_keys.len() as u32)]658 #[weight = T::CommonWeightInfo::delete_token_properties(property_keys.len() as u32)]658667659 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);668 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);660669661 dispatch_call::<T, _>(collection_id, |d| d.delete_token_properties(sender, token_id, property_keys))670 dispatch_tx::<T, _>(collection_id, |d| d.delete_token_properties(sender, token_id, property_keys))662 }671 }663672664 #[weight = T::CommonWeightInfo::set_property_permissions(property_permissions.len() as u32)]673 #[weight = T::CommonWeightInfo::set_property_permissions(property_permissions.len() as u32)]672681673 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);682 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);674683675 dispatch_call::<T, _>(collection_id, |d| d.set_property_permissions(&sender, property_permissions))684 dispatch_tx::<T, _>(collection_id, |d| d.set_property_permissions(&sender, property_permissions))676 }685 }677686678 #[weight = T::CommonWeightInfo::create_multiple_items_ex(&data)]687 #[weight = T::CommonWeightInfo::create_multiple_items_ex(&data)]681 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);690 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);682 let budget = budget::Value::new(NESTING_BUDGET);691 let budget = budget::Value::new(NESTING_BUDGET);683692684 dispatch_call::<T, _>(collection_id, |d| d.create_multiple_items_ex(sender, data, &budget))693 dispatch_tx::<T, _>(collection_id, |d| d.create_multiple_items_ex(sender, data, &budget))685 }694 }686695687 // TODO! transaction weight696 // TODO! transaction weight702 pub fn set_transfers_enabled_flag(origin, collection_id: CollectionId, value: bool) -> DispatchResult {711 pub fn set_transfers_enabled_flag(origin, collection_id: CollectionId, value: bool) -> DispatchResult {703 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);712 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);704 let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;713 let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;714 target_collection.check_is_internal()?;705 target_collection.check_is_owner(&sender)?;715 target_collection.check_is_owner(&sender)?;706716707 // =========717 // =========728 pub fn burn_item(origin, collection_id: CollectionId, item_id: TokenId, value: u128) -> DispatchResultWithPostInfo {738 pub fn burn_item(origin, collection_id: CollectionId, item_id: TokenId, value: u128) -> DispatchResultWithPostInfo {729 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);739 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);730740731 let post_info = dispatch_call::<T, _>(collection_id, |d| d.burn_item(sender, item_id, value))?;741 let post_info = dispatch_tx::<T, _>(collection_id, |d| d.burn_item(sender, item_id, value))?;732 if value == 1 {742 if value == 1 {733 <NftTransferBasket<T>>::remove(collection_id, item_id);743 <NftTransferBasket<T>>::remove(collection_id, item_id);734 <NftApproveBasket<T>>::remove(collection_id, item_id);744 <NftApproveBasket<T>>::remove(collection_id, item_id);761 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);771 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);762 let budget = budget::Value::new(NESTING_BUDGET);772 let budget = budget::Value::new(NESTING_BUDGET);763773764 dispatch_call::<T, _>(collection_id, |d| d.burn_from(sender, from, item_id, value, &budget))774 dispatch_tx::<T, _>(collection_id, |d| d.burn_from(sender, from, item_id, value, &budget))765 }775 }766776767 /// Change ownership of the token.777 /// Change ownership of the token.793 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);803 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);794 let budget = budget::Value::new(NESTING_BUDGET);804 let budget = budget::Value::new(NESTING_BUDGET);795805796 dispatch_call::<T, _>(collection_id, |d| d.transfer(sender, recipient, item_id, value, &budget))806 dispatch_tx::<T, _>(collection_id, |d| d.transfer(sender, recipient, item_id, value, &budget))797 }807 }798808799 /// Set, change, or remove approved address to transfer the ownership of the NFT.809 /// Set, change, or remove approved address to transfer the ownership of the NFT.816 pub fn approve(origin, spender: T::CrossAccountId, collection_id: CollectionId, item_id: TokenId, amount: u128) -> DispatchResultWithPostInfo {826 pub fn approve(origin, spender: T::CrossAccountId, collection_id: CollectionId, item_id: TokenId, amount: u128) -> DispatchResultWithPostInfo {817 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);827 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);818828819 dispatch_call::<T, _>(collection_id, |d| d.approve(sender, spender, item_id, amount))829 dispatch_tx::<T, _>(collection_id, |d| d.approve(sender, spender, item_id, amount))820 }830 }821831822 /// Change ownership of a NFT on behalf of the owner. See Approve method for additional information. After this method executes, the approval is removed so that the approved address will not be able to transfer this NFT again from this owner.832 /// Change ownership of a NFT on behalf of the owner. See Approve method for additional information. After this method executes, the approval is removed so that the approved address will not be able to transfer this NFT again from this owner.844 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);854 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);845 let budget = budget::Value::new(NESTING_BUDGET);855 let budget = budget::Value::new(NESTING_BUDGET);846856847 dispatch_call::<T, _>(collection_id, |d| d.transfer_from(sender, from, recipient, item_id, value, &budget))857 dispatch_tx::<T, _>(collection_id, |d| d.transfer_from(sender, from, recipient, item_id, value, &budget))848 }858 }849859850 #[weight = <SelfWeightOf<T>>::set_collection_limits()]860 #[weight = <SelfWeightOf<T>>::set_collection_limits()]856 ) -> DispatchResult {866 ) -> DispatchResult {857 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);867 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);858 let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;868 let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;869 target_collection.check_is_internal()?;859 target_collection.check_is_owner(&sender)?;870 target_collection.check_is_owner(&sender)?;860 let old_limit = &target_collection.limits;871 let old_limit = &target_collection.limits;861872877 ) -> DispatchResult {888 ) -> DispatchResult {878 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);889 let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?);879 let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;890 let mut target_collection = <CollectionHandle<T>>::try_get(collection_id)?;891 target_collection.check_is_internal()?;880 target_collection.check_is_owner(&sender)?;892 target_collection.check_is_owner(&sender)?;881 let old_limit = &target_collection.permissions;893 let old_limit = &target_collection.permissions;882894primitives/data-structs/Cargo.tomldiffbeforeafterboth26derivative = { version = "2.2.0", features = ["use_core"] }26derivative = { version = "2.2.0", features = ["use_core"] }27struct-versioning = { path = "../../crates/struct-versioning" }27struct-versioning = { path = "../../crates/struct-versioning" }28pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }28pallet-evm = { default-features = false, git = "https://github.com/uniquenetwork/frontier", branch = "unique-polkadot-v0.9.22" }29rmrk-traits = { default-features = false, path = "../rmrk-traits" }293030[features]31[features]31default = ["std"]32default = ["std"]39 "sp-core/std",40 "sp-core/std",40 "sp-std/std",41 "sp-std/std",41 "pallet-evm/std",42 "pallet-evm/std",43 "rmrk-traits/std",42]44]43serde1 = ["serde/alloc"]45serde1 = ["serde/alloc"]44limit-testing = []46limit-testing = []primitives/data-structs/src/lib.rsdiffbeforeafterboth36use derivative::Derivative;36use derivative::Derivative;37use scale_info::TypeInfo;37use scale_info::TypeInfo;3839pub mod rmrk;403841// RMRK39// RMRK42use rmrk::{40use rmrk_traits::{43 CollectionInfo, NftInfo, ResourceInfo, PropertyInfo, BaseInfo, PartType, Theme, ThemeProperty,41 CollectionInfo, NftInfo, ResourceInfo, PropertyInfo, BaseInfo, PartType, Theme, ThemeProperty,42 ResourceTypes, BasicResource, ComposableResource, SlotResource,44};43};45pub use rmrk::{44pub use rmrk_traits::{46 primitives::{45 primitives::{47 CollectionId as RmrkCollectionId, NftId as RmrkNftId, BaseId as RmrkBaseId,46 CollectionId as RmrkCollectionId, NftId as RmrkNftId, BaseId as RmrkBaseId,48 PartId as RmrkPartId, ResourceId as RmrkResourceId,47 PartId as RmrkPartId, ResourceId as RmrkResourceId,49 },48 },50 NftChild as RmrkNftChild, AccountIdOrCollectionNftTuple as RmrkAccountIdOrCollectionNftTuple,49 NftChild as RmrkNftChild, AccountIdOrCollectionNftTuple as RmrkAccountIdOrCollectionNftTuple,51 FixedPart as RmrkFixedPart, SlotPart as RmrkSlotPart, EquippableList as RmrkEquippableList,50 FixedPart as RmrkFixedPart, SlotPart as RmrkSlotPart, EquippableList as RmrkEquippableList,52 BasicResource as RmrkBasicResource, ComposableResource as RmrkComposableResource,53 SlotResource as RmrkSlotResource,54};51};555256mod bounded;53mod bounded;317 #[version(2.., upper(Default::default()))]314 #[version(2.., upper(Default::default()))]318 pub permissions: CollectionPermissions,315 pub permissions: CollectionPermissions,316317 /// Marks that this collection is not "unique", and managed from external.318 #[version(2.., upper(false))]319 pub external_collection: bool,319320320 #[version(..2)]321 #[version(..2)]321 pub variable_on_chain_schema: BoundedVec<u8, ConstU32<VARIABLE_ON_CHAIN_SCHEMA_LIMIT>>,322 pub variable_on_chain_schema: BoundedVec<u8, ConstU32<VARIABLE_ON_CHAIN_SCHEMA_LIMIT>>,341 pub permissions: CollectionPermissions,342 pub permissions: CollectionPermissions,342 pub token_property_permissions: Vec<PropertyKeyPermission>,343 pub token_property_permissions: Vec<PropertyKeyPermission>,343 pub properties: Vec<Property>,344 pub properties: Vec<Property>,345 pub read_only: bool,344}346}345347346#[derive(Encode, Decode, Clone, PartialEq, TypeInfo, Derivative, MaxEncodedLen)]348#[derive(Encode, Decode, Clone, PartialEq, TypeInfo, Derivative, MaxEncodedLen)]455 }457 }456}458}459460pub type OwnerRestrictedSet = BoundedBTreeSet<CollectionId, ConstU32<16>>;457461458#[derive(Encode, Decode, Clone, PartialEq, TypeInfo, MaxEncodedLen, Derivative)]462#[derive(Encode, Decode, Clone, PartialEq, TypeInfo, MaxEncodedLen, Derivative)]459#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]463#[cfg_attr(feature = "serde1", derive(Serialize, Deserialize))]467 OwnerRestricted(471 OwnerRestricted(468 #[cfg_attr(feature = "serde1", serde(with = "bounded::set_serde"))]472 #[cfg_attr(feature = "serde1", serde(with = "bounded::set_serde"))]469 #[derivative(Debug(format_with = "bounded::set_debug"))]473 #[derivative(Debug(format_with = "bounded::set_debug"))]470 BoundedBTreeSet<CollectionId, ConstU32<16>>,474 OwnerRestrictedSet,471 ),475 ),472 /// Used for tests476 /// Used for tests473 Permissive,477 Permissive,925 pub const RmrkMaxCollectionsEquippablePerPart: u32 = 100;929 pub const RmrkMaxCollectionsEquippablePerPart: u32 = 100;926 #[derive(PartialEq)]930 #[derive(PartialEq)]927 pub const RmrkPartsLimit: u32 = 3;931 pub const RmrkPartsLimit: u32 = 3;932 #[derive(PartialEq)]933 pub const RmrkMaxPriorities: u32 = 3;928}934}929935930impl From<RmrkCollectionId> for CollectionId {936impl From<RmrkCollectionId> for CollectionId {942pub type RmrkCollectionInfo<AccountId> =948pub type RmrkCollectionInfo<AccountId> =943 CollectionInfo<RmrkString, RmrkCollectionSymbol, AccountId>;949 CollectionInfo<RmrkString, RmrkCollectionSymbol, AccountId>;944pub type RmrkInstanceInfo<AccountId> = NftInfo<AccountId, Permill, RmrkString>;950pub type RmrkInstanceInfo<AccountId> = NftInfo<AccountId, Permill, RmrkString>;945pub type RmrkResourceInfo = ResourceInfo<RmrkBoundedResource, RmrkString, RmrkBoundedParts>;951pub type RmrkResourceInfo = ResourceInfo<RmrkString, RmrkBoundedParts>;946pub type RmrkPropertyInfo = PropertyInfo<RmrkKeyString, RmrkValueString>;952pub type RmrkPropertyInfo = PropertyInfo<RmrkKeyString, RmrkValueString>;947pub type RmrkBaseInfo<AccountId> = BaseInfo<AccountId, RmrkString>;953pub type RmrkBaseInfo<AccountId> = BaseInfo<AccountId, RmrkString>;948pub type RmrkPartType =954pub type RmrkPartType =949 PartType<RmrkString, BoundedVec<RmrkCollectionId, RmrkMaxCollectionsEquippablePerPart>>;955 PartType<RmrkString, BoundedVec<RmrkCollectionId, RmrkMaxCollectionsEquippablePerPart>>;950pub type RmrkThemeProperty = ThemeProperty<RmrkString>;956pub type RmrkThemeProperty = ThemeProperty<RmrkString>;951pub type RmrkTheme = Theme<RmrkString, Vec<RmrkThemeProperty>>;957pub type RmrkTheme = Theme<RmrkString, Vec<RmrkThemeProperty>>;952958pub type RmrkResourceTypes = ResourceTypes<RmrkString, RmrkBoundedParts>;959960pub type RmrkBasicResource = BasicResource<RmrkString>;961pub type RmrkComposableResource = ComposableResource<RmrkString, RmrkBoundedParts>;962pub type RmrkSlotResource = SlotResource<RmrkString>;963964pub type RmrkString = BoundedVec<u8, RmrkStringLimit>;953pub type RmrkCollectionSymbol = BoundedVec<u8, RmrkCollectionSymbolLimit>;965pub type RmrkCollectionSymbol = BoundedVec<u8, RmrkCollectionSymbolLimit>;954pub type RmrkKeyString = BoundedVec<u8, RmrkKeyLimit>;966pub type RmrkKeyString = BoundedVec<u8, RmrkKeyLimit>;955pub type RmrkValueString = BoundedVec<u8, RmrkValueLimit>;967pub type RmrkValueString = BoundedVec<u8, RmrkValueLimit>;956957type RmrkBoundedResource = BoundedVec<u8, RmrkResourceSymbolLimit>;968pub type RmrkBoundedResource = BoundedVec<u8, RmrkResourceSymbolLimit>;958type RmrkBoundedParts = BoundedVec<RmrkPartId, RmrkPartsLimit>;969pub type RmrkBoundedParts = BoundedVec<RmrkPartId, RmrkPartsLimit>; // todo make sure it is needed959970960pub type RmrkRpcString = Vec<u8>;971pub type RmrkRpcString = Vec<u8>;961pub type RmrkThemeName = RmrkRpcString;972pub type RmrkThemeName = RmrkRpcString;962pub type RmrkPropertyKey = RmrkRpcString;973pub type RmrkPropertyKey = RmrkRpcString;963964pub type RmrkString = BoundedVec<u8, RmrkStringLimit>;965974primitives/data-structs/src/rmrk.rsdiffbeforeafterbothno changes
primitives/rmrk-rpc/Cargo.tomldiffbeforeafterboth11sp-api = { default-features = false, git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.22' }11sp-api = { default-features = false, git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.22' }12sp-runtime = { default-features = false, git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.22' }12sp-runtime = { default-features = false, git = 'https://github.com/paritytech/substrate', branch = 'polkadot-v0.9.22' }13serde = { version = "1.0.130", default-features = false, features = ["derive"] }13serde = { version = "1.0.130", default-features = false, features = ["derive"] }14up-data-structs = { default-features = false, path = '../data-structs' }14rmrk-traits = { default-features = false, path = "../rmrk-traits" }151516[features]16[features]17default = ["std"]17default = ["std"]22 "sp-api/std",22 "sp-api/std",23 "sp-runtime/std",23 "sp-runtime/std",24 "serde/std",24 "serde/std",25 "up-data-structs/std",25 "rmrk-traits/std",26]26]2727primitives/rmrk-rpc/src/lib.rsdiffbeforeafterboth1// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.2// This file is part of Unique Network.34// Unique Network is free software: you can redistribute it and/or modify5// it under the terms of the GNU General Public License as published by6// the Free Software Foundation, either version 3 of the License, or7// (at your option) any later version.89// Unique Network is distributed in the hope that it will be useful,10// but WITHOUT ANY WARRANTY; without even the implied warranty of11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the12// GNU General Public License for more details.1314// You should have received a copy of the GNU General Public License15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.161#![cfg_attr(not(feature = "std"), no_std)]17#![cfg_attr(not(feature = "std"), no_std)]2183use sp_api::{Encode, Decode};19use sp_api::{Encode, Decode};4use sp_std::vec::Vec;20use sp_std::vec::Vec;5use sp_runtime::DispatchError;21use sp_runtime::DispatchError;6use up_data_structs::rmrk::{primitives::*, NftChild};22use rmrk_traits::{primitives::*, NftChild};7238pub type Result<T> = core::result::Result<T, DispatchError>;24pub type Result<T> = core::result::Result<T, DispatchError>;925506651 fn nft_resources(collection_id: CollectionId, nft_id: NftId) -> Result<Vec<ResourceInfo>>;67 fn nft_resources(collection_id: CollectionId, nft_id: NftId) -> Result<Vec<ResourceInfo>>;526853 fn nft_resource_priorities(collection_id: CollectionId, nft_id: NftId) -> Result<Vec<ResourceId>>;69 fn nft_resource_priority(collection_id: CollectionId, nft_id: NftId, resource_id: ResourceId) -> Result<Option<u32>>;547055 fn base(base_id: BaseId) -> Result<Option<BaseInfo>>;71 fn base(base_id: BaseId) -> Result<Option<BaseInfo>>;5672primitives/rmrk-traits/Cargo.tomldiffbeforeafterbothno changes
primitives/rmrk-traits/src/base.rsdiffbeforeafterbothno changes
primitives/rmrk-traits/src/collection.rsdiffbeforeafterbothno changes
primitives/rmrk-traits/src/lib.rsdiffbeforeafterbothno changes
primitives/rmrk-traits/src/nft.rsdiffbeforeafterbothno changes
primitives/rmrk-traits/src/part.rsdiffbeforeafterbothno changes
primitives/rmrk-traits/src/property.rsdiffbeforeafterbothno changes
primitives/rmrk-traits/src/resource.rsdiffbeforeafterbothno changes
primitives/rmrk-traits/src/serialize.rsdiffbeforeafterbothno changes
primitives/rmrk-traits/src/theme.rsdiffbeforeafterbothno changes
runtime/common/src/constants.rsdiffbeforeafterboth1// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.2// This file is part of Unique Network.34// Unique Network is free software: you can redistribute it and/or modify5// it under the terms of the GNU General Public License as published by6// the Free Software Foundation, either version 3 of the License, or7// (at your option) any later version.89// Unique Network is distributed in the hope that it will be useful,10// but WITHOUT ANY WARRANTY; without even the implied warranty of11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the12// GNU General Public License for more details.1314// You should have received a copy of the GNU General Public License15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.161use sp_runtime::Perbill;17use sp_runtime::Perbill;2use frame_support::{18use frame_support::{runtime/common/src/dispatch.rsdiffbeforeafterboth1// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.2// This file is part of Unique Network.34// Unique Network is free software: you can redistribute it and/or modify5// it under the terms of the GNU General Public License as published by6// the Free Software Foundation, either version 3 of the License, or7// (at your option) any later version.89// Unique Network is distributed in the hope that it will be useful,10// but WITHOUT ANY WARRANTY; without even the implied warranty of11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the12// GNU General Public License for more details.1314// You should have received a copy of the GNU General Public License15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.161use frame_support::{dispatch::DispatchResult, ensure};17use frame_support::{dispatch::DispatchResult, ensure};2use pallet_evm::{PrecompileHandle, PrecompileResult};18use pallet_evm::{PrecompileHandle, PrecompileResult};35 data: CreateCollectionData<T::AccountId>,51 data: CreateCollectionData<T::AccountId>,36 ) -> DispatchResult {52 ) -> DispatchResult {37 let _id = match data.mode {53 let _id = match data.mode {38 CollectionMode::NFT => <PalletNonfungible<T>>::init_collection(sender, data)?,54 CollectionMode::NFT => <PalletNonfungible<T>>::init_collection(sender, data, false)?,39 CollectionMode::Fungible(decimal_points) => {55 CollectionMode::Fungible(decimal_points) => {40 // check params56 // check params41 ensure!(57 ensure!(runtime/common/src/lib.rsdiffbeforeafterboth1// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.2// This file is part of Unique Network.34// Unique Network is free software: you can redistribute it and/or modify5// it under the terms of the GNU General Public License as published by6// the Free Software Foundation, either version 3 of the License, or7// (at your option) any later version.89// Unique Network is distributed in the hope that it will be useful,10// but WITHOUT ANY WARRANTY; without even the implied warranty of11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the12// GNU General Public License for more details.1314// You should have received a copy of the GNU General Public License15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.161#![cfg_attr(not(feature = "std"), no_std)]17#![cfg_attr(not(feature = "std"), no_std)]218runtime/common/src/runtime_apis.rsdiffbeforeafterboth1// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.2// This file is part of Unique Network.34// Unique Network is free software: you can redistribute it and/or modify5// it under the terms of the GNU General Public License as published by6// the Free Software Foundation, either version 3 of the License, or7// (at your option) any later version.89// Unique Network is distributed in the hope that it will be useful,10// but WITHOUT ANY WARRANTY; without even the implied warranty of11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the12// GNU General Public License for more details.1314// You should have received a copy of the GNU General Public License15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.161#[macro_export]17#[macro_export]2macro_rules! impl_common_runtime_apis {18macro_rules! impl_common_runtime_apis {128 }144 }129 }145 }130146131 /*147 impl rmrk_rpc::RmrkApi<132 TODO free RMRK!148 Block,133 impl rmrk_rpc::RmrkApi<149 AccountId,134 Block,150 RmrkCollectionInfo<AccountId>,135 AccountId,151 RmrkInstanceInfo<AccountId>,136 RmrkCollectionInfo<AccountId>,152 RmrkResourceInfo,137 RmrkInstanceInfo<AccountId>,153 RmrkPropertyInfo,138 RmrkResourceInfo,154 RmrkBaseInfo<AccountId>,139 RmrkPropertyInfo,155 RmrkPartType,140 RmrkBaseInfo<AccountId>,156 RmrkTheme141 RmrkPartType,157 > for Runtime {142 RmrkTheme158 fn last_collection_idx() -> Result<RmrkCollectionId, DispatchError> {143 > for Runtime {159 Ok(RmrkCore::last_collection_idx())144 fn last_collection_idx() -> Result<RmrkCollectionId, DispatchError> {160 }145 Ok(RmrkCore::last_collection_idx())161146 }162 fn collection_by_id(collection_id: RmrkCollectionId) -> Result<Option<RmrkCollectionInfo<AccountId>>, DispatchError> {147163 use pallet_proxy_rmrk_core::{RmrkProperty, misc::CollectionType};148 fn collection_by_id(collection_id: RmrkCollectionId) -> Result<Option<RmrkCollectionInfo<AccountId>>, DispatchError> {164 use pallet_common::CommonCollectionOperations;149 use pallet_proxy_rmrk_core::{RmrkProperty, misc::{CollectionType, RmrkDecode, RmrkRebind}};165150166 let (collection, collection_id) = match RmrkCore::get_typed_nft_collection_mapped(collection_id, CollectionType::Regular) {151 let collection_id = CollectionId(collection_id);167 Ok(c) => c,152 let collection = match RmrkCore::get_typed_nft_collection(collection_id, CollectionType::Regular) {168 Err(_) => return Ok(None),153 Ok(c) => c,169 };154 Err(_) => return Ok(None),170155 };171 let nfts_count = collection.total_supply();156172157 let nfts_count = dispatch_unique_runtime!(collection_id.total_supply())?;173 Ok(Some(RmrkCollectionInfo {158174 issuer: collection.owner.clone(),159 Ok(Some(RmrkCollectionInfo {175 metadata: RmrkCore::get_collection_property_decoded(collection_id, RmrkProperty::Metadata)?,160 issuer: collection.owner.clone(),176 max: collection.limits.token_limit,161 metadata: RmrkCore::get_collection_property(collection_id, RmrkProperty::Metadata)?.decode_or_default(),177 symbol: RmrkCore::rebind(&collection.token_prefix)?,162 max: collection.limits.token_limit,178 nfts_count163 symbol: collection.token_prefix.rebind(),179 }))164 nfts_count180 }165 }))181166 }182 fn nft_by_id(collection_id: RmrkCollectionId, nft_by_id: RmrkNftId) -> Result<Option<RmrkInstanceInfo<AccountId>>, DispatchError> {167183 use up_data_structs::mapping::TokenAddressMapping;168 fn nft_by_id(collection_id: RmrkCollectionId, nft_by_id: RmrkNftId) -> Result<Option<RmrkInstanceInfo<AccountId>>, DispatchError> {184 use pallet_proxy_rmrk_core::{RmrkProperty, misc::CollectionType};169 use up_data_structs::mapping::TokenAddressMapping;185 use pallet_common::CommonCollectionOperations;170 use pallet_proxy_rmrk_core::{RmrkProperty, misc::RmrkDecode};186171187 let (collection, collection_id) = match RmrkCore::get_typed_nft_collection_mapped(collection_id, CollectionType::Regular) {172 let collection_id = CollectionId(collection_id);188 Ok(c) => c,173 let nft_id = TokenId(nft_by_id);189 Err(_) => return Ok(None),174 if !RmrkCore::nft_exists(collection_id, nft_id) { return Ok(None); }190 };175191176 let owner = match dispatch_unique_runtime!(collection_id.token_owner(nft_id))? {192 let nft_id = TokenId(nft_by_id);177 Some(owner) => match <Runtime as pallet_common::Config>::CrossTokenAddressMapping::address_to_token(&owner) {193 if !RmrkCore::nft_exists(collection_id, nft_id) { return Ok(None); }178 Some((col, tok)) => RmrkAccountIdOrCollectionNftTuple::CollectionAndNftTuple(col.0, tok.0),194179 None => RmrkAccountIdOrCollectionNftTuple::AccountId(owner.as_sub().clone())195 let owner = match collection.token_owner(nft_id) {180 },196 Some(owner) => match <Runtime as pallet_common::Config>::CrossTokenAddressMapping::address_to_token(&owner) {181 None => return Ok(None)197 Some((col, tok)) => {182 };198 let rmrk_collection = RmrkCore::rmrk_collection_id(col)?;183199184 let allowance = pallet_nonfungible::Allowance::<Runtime>::get((collection_id, nft_id));200 RmrkAccountIdOrCollectionNftTuple::CollectionAndNftTuple(rmrk_collection, tok.0)185201 }186 Ok(Some(RmrkInstanceInfo {202 None => RmrkAccountIdOrCollectionNftTuple::AccountId(owner.as_sub().clone())187 owner: owner,203 },188 royalty: RmrkCore::get_nft_property(collection_id, nft_id, RmrkProperty::RoyaltyInfo)?.decode_or_default(),204 None => return Ok(None)189 metadata: RmrkCore::get_nft_property(collection_id, nft_id, RmrkProperty::Metadata)?.decode_or_default(),205 };190 equipped: RmrkCore::get_nft_property(collection_id, nft_id, RmrkProperty::Equipped)?.decode_or_default(),206191 pending: allowance.is_some(),207 Ok(Some(RmrkInstanceInfo {192 }))208 owner: owner,193 }209 royalty: RmrkCore::get_nft_property_decoded(collection_id, nft_id, RmrkProperty::RoyaltyInfo)?,194210 metadata: RmrkCore::get_nft_property_decoded(collection_id, nft_id, RmrkProperty::Metadata)?,195 fn account_tokens(account_id: AccountId, collection_id: RmrkCollectionId) -> Result<Vec<RmrkNftId>, DispatchError> {211 equipped: RmrkCore::get_nft_property_decoded(collection_id, nft_id, RmrkProperty::Equipped)?,196 use pallet_proxy_rmrk_core::misc::CollectionType;212 pending: RmrkCore::get_nft_property_decoded(collection_id, nft_id, RmrkProperty::PendingNftAccept)?,197213 }))198 let cross_account_id = CrossAccountId::from_sub(account_id);214 }199 let collection_id = CollectionId(collection_id);215200 if RmrkCore::ensure_collection_type(collection_id, CollectionType::Regular).is_err() { return Ok(Vec::new()); }216 fn account_tokens(account_id: AccountId, collection_id: RmrkCollectionId) -> Result<Vec<RmrkNftId>, DispatchError> {201217 use pallet_proxy_rmrk_core::{RmrkProperty, misc::CollectionType};202 Ok(218 use pallet_common::CommonCollectionOperations;203 dispatch_unique_runtime!(collection_id.account_tokens(cross_account_id))?219204 .into_iter()220 let cross_account_id = CrossAccountId::from_sub(account_id);205 .map(|token| token.0)221206 .collect()222 let (collection, collection_id) = match RmrkCore::get_typed_nft_collection_mapped(collection_id, CollectionType::Regular) {207 )223 Ok(c) => c,208 }224 Err(_) => return Ok(Vec::new()),209225 };210 fn nft_children(collection_id: RmrkCollectionId, nft_id: RmrkNftId) -> Result<Vec<RmrkNftChild>, DispatchError> {226211 let collection_id = CollectionId(collection_id);227 let tokens = collection.account_tokens(cross_account_id)212 let nft_id = TokenId(nft_id);228 .into_iter()213 if !RmrkCore::nft_exists(collection_id, nft_id) { return Ok(Vec::new()); }229 .filter(|token| {214230 let is_pending = RmrkCore::get_nft_property_decoded(215 Ok(231 collection_id,216 pallet_nonfungible::TokenChildren::<Runtime>::iter_prefix((collection_id, nft_id))232 *token,217 .filter_map(|(child_id, is_child)|233 RmrkProperty::PendingNftAccept218 match is_child {234 ).unwrap_or(true);219 true => Some(RmrkNftChild {235220 collection_id: child_id.0.0,236 !is_pending221 nft_id: child_id.1.0,237 })222 }),238 .map(|token| token.0)223 false => None,239 .collect();224 }240225 ).collect()241 Ok(tokens)226 )242 }227 }243228244 fn nft_children(collection_id: RmrkCollectionId, nft_id: RmrkNftId) -> Result<Vec<RmrkNftChild>, DispatchError> {229 fn collection_properties(collection_id: RmrkCollectionId, filter_keys: Option<Vec<RmrkPropertyKey>>) -> Result<Vec<RmrkPropertyInfo>, DispatchError> {245 use pallet_proxy_rmrk_core::RmrkProperty;230 use pallet_proxy_rmrk_core::misc::CollectionType;246231247 let collection_id = match RmrkCore::unique_collection_id(collection_id) {232 let collection_id = CollectionId(collection_id);248 Ok(id) => id,233 if RmrkCore::ensure_collection_type(collection_id, CollectionType::Regular).is_err() {249 Err(_) => return Ok(Vec::new())234 return Ok(Vec::new());250 };235 }251 let nft_id = TokenId(nft_id);236252 if !RmrkCore::nft_exists(collection_id, nft_id) { return Ok(Vec::new()); }237 let properties = RmrkCore::filter_user_properties(253238 collection_id,254 Ok(239 /* token_id = */ None,255 pallet_nonfungible::TokenChildren::<Runtime>::iter_prefix((collection_id, nft_id))240 filter_keys,256 .filter_map(|((child_collection, child_token), _)| {241 |key, value| RmrkPropertyInfo {257 let is_pending = RmrkCore::get_nft_property_decoded(242 key,258 child_collection,243 value259 child_token,244 }260 RmrkProperty::PendingNftAccept245 )?;261 ).ok()?;246262247 Ok(properties)263 if is_pending {248 }264 return None;249265 }250 fn nft_properties(collection_id: RmrkCollectionId, nft_id: RmrkNftId, filter_keys: Option<Vec<RmrkPropertyKey>>) -> Result<Vec<RmrkPropertyInfo>, DispatchError> {266251 use pallet_proxy_rmrk_core::misc::NftType;267 let rmrk_child_collection = RmrkCore::rmrk_collection_id(252268 child_collection253 let collection_id = CollectionId(collection_id);269 ).ok()?;254 let token_id = TokenId(nft_id);270255271 Some(RmrkNftChild {256 if RmrkCore::ensure_nft_type(collection_id, token_id, NftType::Regular).is_err() {272 collection_id: rmrk_child_collection,257 return Ok(Vec::new());273 nft_id: child_token.0,258 }274 })259275 }).collect()260 let properties = RmrkCore::filter_user_properties(276 )261 collection_id,277 }262 Some(token_id),278263 filter_keys,279 fn collection_properties(collection_id: RmrkCollectionId, filter_keys: Option<Vec<RmrkPropertyKey>>) -> Result<Vec<RmrkPropertyInfo>, DispatchError> {264 |key, value| RmrkPropertyInfo {280 use pallet_proxy_rmrk_core::misc::CollectionType;265 key,281266 value282 let collection_id = match RmrkCore::unique_collection_id(collection_id) {267 }283 Ok(id) => id,268 )?;284 Err(_) => return Ok(Vec::new())269285 };270 Ok(properties)286 if RmrkCore::ensure_collection_type(collection_id, CollectionType::Regular).is_err() {271 }287 return Ok(Vec::new());272288 }273 fn nft_resources(collection_id: RmrkCollectionId, nft_id: RmrkNftId) -> Result<Vec<RmrkResourceInfo>, DispatchError> {289274 use frame_support::BoundedVec;290 let properties = RmrkCore::filter_user_properties(275 use pallet_proxy_rmrk_core::{RmrkProperty, misc::{CollectionType, NftType, RmrkDecode}};291 collection_id,276292 /* token_id = */ None,277 let collection_id = CollectionId(collection_id);293 filter_keys,278 if !RmrkCore::collection_exists(collection_id) { return Ok(Vec::new()); } // todo make sure the collection type doesn't matter294 |key, value| RmrkPropertyInfo {279295 key,280 let nft_id = TokenId(nft_id);296 value281 if RmrkCore::ensure_nft_type(collection_id, nft_id, NftType::Resource).is_err() { return Ok(Vec::new()); }297 }282298 )?;283 let resource_collection_id: CollectionId = RmrkCore::get_nft_property(collection_id, nft_id, RmrkProperty::ResourceCollection)299284 .unwrap()300 Ok(properties)285 .decode_or_default();301 }286 if RmrkCore::ensure_collection_type(collection_id, CollectionType::Resource).is_err() { return Ok(Vec::new()); }302287303 fn nft_properties(collection_id: RmrkCollectionId, nft_id: RmrkNftId, filter_keys: Option<Vec<RmrkPropertyKey>>) -> Result<Vec<RmrkPropertyInfo>, DispatchError> {288 let resources = pallet_nonfungible::TokenProperties::<Runtime>::iter_prefix((resource_collection_id,))304 use pallet_proxy_rmrk_core::misc::NftType;289 .filter_map(|(resource_id, properties)| Some(RmrkResourceInfo {305290 id: BoundedVec::default(), // todo ResourceId property306 let collection_id = match RmrkCore::unique_collection_id(collection_id) {291 pending: RmrkCore::get_nft_property(resource_collection_id, resource_id, RmrkProperty::PendingResourceAccept).unwrap().decode_or_default(),307 Ok(id) => id,292 pending_removal: RmrkCore::get_nft_property(resource_collection_id, resource_id, RmrkProperty::PendingResourceRemoval).unwrap().decode_or_default(),308 Err(_) => return Ok(Vec::new())293 resource: RmrkCore::get_nft_property(resource_collection_id, resource_id, RmrkProperty::ResourceType).unwrap().decode_or_default(),/* {309 };294 RmrkResourceTypes::Basic(resource) => RmrkResourceTypes::Basic(),/*(RmrkBasicResource {310 let token_id = TokenId(nft_id);295 src: RmrkCore::get_nft_property_inner(properties, RmrkProperty::Src).unwrap().decode_or_default(),311296 metadata: RmrkCore::get_nft_property_inner(properties, RmrkProperty::Metadata).unwrap().decode_or_default(),312 if RmrkCore::ensure_nft_type(collection_id, token_id, NftType::Regular).is_err() {297 license: RmrkCore::get_nft_property_inner(properties, RmrkProperty::License).unwrap().decode_or_default(),313 return Ok(Vec::new());298 thumb: RmrkCore::get_nft_property_inner(properties, RmrkProperty::Thumb).unwrap().decode_or_default(),314 }299 },*///BasicResource<BoundedString>)315300 _ => todo!(), //RmrkResourceTypes::Composable(ComposableResource<BoundedString, BoundedParts>),316 let properties = RmrkCore::filter_user_properties(301 //RmrkResourceTypes::Slot(SlotResource<BoundedString>),317 collection_id,302 },*/318 Some(token_id),303 }))319 filter_keys,304 .collect();320 |key, value| RmrkPropertyInfo {305321 key,306 Ok(resources)322 value307 }323 }308324 )?;309 fn nft_resource_priorities(collection_id: RmrkCollectionId, nft_id: RmrkNftId) -> Result<Vec<RmrkResourceId>, DispatchError> {325310 use pallet_proxy_rmrk_core::{RmrkProperty, misc::{CollectionType, NftType, RmrkDecode}};326 Ok(properties)311327 }312 let collection_id = CollectionId(collection_id);328313 if !RmrkCore::collection_exists(collection_id) { return Ok(Vec::new()); } // todo ensure the collection type doesn't matter329 fn nft_resources(collection_id: RmrkCollectionId, nft_id: RmrkNftId) -> Result<Vec<RmrkResourceInfo>, DispatchError> {314330 use pallet_proxy_rmrk_core::{RmrkProperty, misc::{CollectionType, NftType, ResourceType}};315 let nft_id = TokenId(nft_id);331 use pallet_common::CommonCollectionOperations;316 if RmrkCore::ensure_nft_type(collection_id, nft_id, NftType::Resource).is_err() { return Ok(Vec::new()); }332317333 let collection_id = match RmrkCore::unique_collection_id(collection_id) {318 /*let resource_collection_id: CollectionId = RmrkCore::get_nft_property(collection_id, nft_id, RmrkProperty::ResourceCollection)334 Ok(id) => id,319 .unwrap()335 Err(_) => return Ok(Vec::new())320 .decode_or_default();336 };321 if RmrkCore::ensure_collection_type(collection_id, CollectionType::Resource).is_err() { return Ok(Vec::new()); }337 if RmrkCore::ensure_collection_type(collection_id, CollectionType::Regular).is_err() { return Ok(Vec::new()); }322338323 let resources = pallet_nonfungible::TokenProperties::<Runtime>::iter_prefix((resource_collection_id,))339 let nft_id = TokenId(nft_id);324 .filter_map(|(resource_id, properties)| Some((340 if RmrkCore::ensure_nft_type(collection_id, nft_id, NftType::Regular).is_err() { return Ok(Vec::new()); }325 resource_id, // ResourceId property341326 RmrkCore::get_nft_property(resource_collection_id, resource_id, RmrkProperty::Priority).unwrap().decode_or_default(),342 let res_collection_id: CollectionId = RmrkCore::get_nft_property_decoded(collection_id, nft_id, RmrkProperty::ResourceCollection)?;327 )))343 let resource_collection = RmrkCore::get_typed_nft_collection(res_collection_id, CollectionType::Resource)?;328 .collect()344329 .sort_by_key(|(_, index)| *index)345 let resources = resource_collection330 .into_iter().map(|(resource_id, _)| resource_id)*/346 .collection_tokens()331 let priorities = RmrkCore::get_nft_property(collection_id, nft_id, RmrkProperty::ResourcePriorities)?.decode_or_default();347 .iter()332348 .filter_map(|(res_id)| Some(RmrkResourceInfo {333 Ok(priorities)349 id: res_id.0,334 }350 pending: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::PendingResourceAccept).ok()?,335351 pending_removal: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::PendingResourceRemoval).ok()?,336 fn base(base_id: RmrkBaseId) -> Result<Option<RmrkBaseInfo<AccountId>>, DispatchError> {352 resource: match RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::ResourceType).ok()? {337 use pallet_proxy_rmrk_core::{353 ResourceType::Basic => RmrkResourceTypes::Basic(RmrkBasicResource {338 RmrkProperty, misc::{CollectionType, RmrkDecode, RmrkRebind},354 src: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::Src).ok()?,339 };355 metadata: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::Metadata).ok()?,340356 license: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::License).ok()?,341 let collection_id = CollectionId(base_id);357 thumb: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::Thumb).ok()?,342 let collection = match RmrkCore::get_typed_nft_collection(collection_id, CollectionType::Base) {358 }),343 Ok(c) => c,359 ResourceType::Composable => RmrkResourceTypes::Composable(RmrkComposableResource {344 Err(_) => return Ok(None),360 parts: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::Parts).ok()?,345 };361 base: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::Base).ok()?,346362 src: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::Src).ok()?,347 Ok(Some(RmrkBaseInfo {363 metadata: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::Metadata).ok()?,348 issuer: collection.owner.clone(),364 license: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::License).ok()?,349 base_type: RmrkCore::get_collection_property(collection_id, RmrkProperty::BaseType)?.decode_or_default(),365 thumb: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::Thumb).ok()?,350 symbol: collection.token_prefix.rebind(),366 }),351 }))367 ResourceType::Slot => RmrkResourceTypes::Slot(RmrkSlotResource {352 }368 base: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::Base).ok()?,353369 src: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::Src).ok()?,354 fn base_parts(base_id: RmrkBaseId) -> Result<Vec<RmrkPartType>, DispatchError> {370 metadata: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::Metadata).ok()?,355 use pallet_proxy_rmrk_core::{RmrkProperty, misc::{CollectionType, NftType, RmrkDecode}};371 slot: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::Slot).ok()?,356372 license: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::License).ok()?,357 let collection_id = CollectionId(base_id);373 thumb: RmrkCore::get_nft_property_decoded(res_collection_id, *res_id, RmrkProperty::Thumb).ok()?,358 if RmrkCore::ensure_collection_type(collection_id, CollectionType::Base).is_err() { return Ok(Vec::new()); }374 }),359375 },360 let parts = dispatch_unique_runtime!(collection_id.collection_tokens())?376 }))361 .into_iter()377 .collect();362 .filter_map(|token_id| {378363 let nft_type = RmrkCore::get_nft_type(collection_id, token_id).ok()?;379 Ok(resources)364380 }365 match nft_type {381366 NftType::FixedPart => Some(RmrkPartType::FixedPart(RmrkFixedPart {382 fn nft_resource_priority(collection_id: RmrkCollectionId, nft_id: RmrkNftId, resource_id: RmrkResourceId) -> Result<Option<u32>, DispatchError> {367 id: RmrkCore::get_nft_property(collection_id, token_id, RmrkProperty::ExternalPartId).ok()?.decode_or_default(),383 use pallet_proxy_rmrk_core::{RmrkProperty, misc::{CollectionType, NftType}};368 src: RmrkCore::get_nft_property(collection_id, token_id, RmrkProperty::Src).ok()?.decode_or_default(),384369 z: RmrkCore::get_nft_property(collection_id, token_id, RmrkProperty::ZIndex).ok()?.decode_or_default(),385 let collection_id = match RmrkCore::unique_collection_id(collection_id) {370 })),386 Ok(id) => id,371 NftType::SlotPart => Some(RmrkPartType::SlotPart(RmrkSlotPart {387 Err(_) => return Ok(None)372 id: RmrkCore::get_nft_property(collection_id, token_id, RmrkProperty::ExternalPartId).ok()?.decode_or_default(),388 };373 src: RmrkCore::get_nft_property(collection_id, token_id, RmrkProperty::Src).ok()?.decode_or_default(),389 if RmrkCore::ensure_collection_type(collection_id, CollectionType::Regular).is_err() { return Ok(None); }374 z: RmrkCore::get_nft_property(collection_id, token_id, RmrkProperty::ZIndex).ok()?.decode_or_default(),390375 equippable: RmrkCore::get_nft_property(collection_id, token_id, RmrkProperty::EquippableList).ok()?.decode_or_default(),391 let nft_id = TokenId(nft_id);376 })),392 if RmrkCore::ensure_nft_type(collection_id, nft_id, NftType::Regular).is_err() { return Ok(None); }377 _ => None393378 }394 let priorities: Vec<_> = RmrkCore::get_nft_property_decoded(collection_id, nft_id, RmrkProperty::ResourcePriorities)?;379 })395 Ok(380 .collect();396 priorities.into_iter()381397 .enumerate()382 Ok(parts)398 .find(|(_, id)| *id == resource_id)383 }399 .map(|(priority, _): (usize, RmrkResourceId)| priority as u32)384400 )385 fn theme_names(base_id: RmrkBaseId) -> Result<Vec<RmrkThemeName>, DispatchError> {401 }386 use pallet_proxy_rmrk_core::{RmrkProperty, misc::{CollectionType, RmrkDecode}};402387403 fn base(base_id: RmrkBaseId) -> Result<Option<RmrkBaseInfo<AccountId>>, DispatchError> {388 let collection_id = CollectionId(base_id);404 use pallet_proxy_rmrk_core::{389 if RmrkCore::ensure_collection_type(collection_id, CollectionType::Base).is_err() {405 RmrkProperty, misc::{CollectionType},390 return Ok(Vec::new());406 };391 }407392408 let (collection, collection_id) = match RmrkCore::get_typed_nft_collection_mapped(base_id, CollectionType::Base) {393 let theme_names = dispatch_unique_runtime!(collection_id.collection_tokens())?409 Ok(c) => c,394 .iter()410 Err(_) => return Ok(None),395 .filter_map(|token_id| {411 };396 let nft_type = RmrkCore::get_nft_type(collection_id, *token_id).unwrap();412397413 Ok(Some(RmrkBaseInfo {398 match nft_type {414 issuer: collection.owner.clone(),399 Theme => Some(415 base_type: RmrkCore::get_collection_property_decoded(collection_id, RmrkProperty::BaseType)?,400 RmrkCore::get_nft_property(collection_id, *token_id, RmrkProperty::ThemeName).unwrap().decode_or_default()416 symbol: RmrkCore::rebind(&collection.token_prefix)?,401 ),417 }))402 _ => None418 }403 }419404 })420 fn base_parts(base_id: RmrkBaseId) -> Result<Vec<RmrkPartType>, DispatchError> {405 .collect();421 use pallet_proxy_rmrk_core::{RmrkProperty, misc::{CollectionType, NftType}};406422 use pallet_common::CommonCollectionOperations;407 Ok(theme_names)423408 }424 let (collection, collection_id) = match RmrkCore::get_typed_nft_collection_mapped(base_id, CollectionType::Base) {409425 Ok(c) => c,410 fn theme(base_id: RmrkBaseId, theme_name: RmrkThemeName, filter_keys: Option<Vec<RmrkPropertyKey>>) -> Result<Option<RmrkTheme>, DispatchError> {426 Err(_) => return Ok(Vec::new()),411 use pallet_proxy_rmrk_core::{427 };412 RmrkProperty,428413 misc::{CollectionType, NftType, RmrkDecode}429 let parts = collection.collection_tokens()414 };430 .into_iter()415431 .filter_map(|token_id| {416 let collection_id = CollectionId(base_id);432 let nft_type = RmrkCore::get_nft_type(collection_id, token_id).ok()?;417 if RmrkCore::ensure_collection_type(collection_id, CollectionType::Base).is_err() {433418 return Ok(None);434 match nft_type {419 }435 NftType::FixedPart => Some(RmrkPartType::FixedPart(RmrkFixedPart {420436 id: RmrkCore::get_nft_property_decoded(collection_id, token_id, RmrkProperty::ExternalPartId).ok()?,421 let theme_info = dispatch_unique_runtime!(collection_id.collection_tokens())?437 src: RmrkCore::get_nft_property_decoded(collection_id, token_id, RmrkProperty::Src).ok()?,422 .into_iter()438 z: RmrkCore::get_nft_property_decoded(collection_id, token_id, RmrkProperty::ZIndex).ok()?,423 .find_map(|token_id| {439 })),424 RmrkCore::ensure_nft_type(collection_id, token_id, NftType::Theme).ok()?;440 NftType::SlotPart => Some(RmrkPartType::SlotPart(RmrkSlotPart {425441 id: RmrkCore::get_nft_property_decoded(collection_id, token_id, RmrkProperty::ExternalPartId).ok()?,426 let name: RmrkString = RmrkCore::get_nft_property(442 src: RmrkCore::get_nft_property_decoded(collection_id, token_id, RmrkProperty::Src).ok()?,427 collection_id, token_id, RmrkProperty::ThemeName443 z: RmrkCore::get_nft_property_decoded(collection_id, token_id, RmrkProperty::ZIndex).ok()?,428 ).ok()?.decode_or_default();444 equippable: RmrkCore::get_nft_property_decoded(collection_id, token_id, RmrkProperty::EquippableList).ok()?,429445 })),430 if name == theme_name {446 _ => None431 Some((name, token_id))447 }432 } else {448 })433 None449 .collect();434 }450435 });451 Ok(parts)436452 }437 let (name, theme_id) = match theme_info {453438 Some((name, theme_id)) => (name, theme_id),454 fn theme_names(base_id: RmrkBaseId) -> Result<Vec<RmrkThemeName>, DispatchError> {439 None => return Ok(None)455 use pallet_proxy_rmrk_core::{RmrkProperty, misc::CollectionType};440 };456 use pallet_common::CommonCollectionOperations;441457442 let properties = RmrkCore::filter_user_properties(458 let (collection, collection_id) = match RmrkCore::get_typed_nft_collection_mapped(base_id, CollectionType::Base) {443 collection_id,459 Ok(c) => c,444 Some(theme_id),460 Err(_) => return Ok(Vec::new()),445 filter_keys,461 };446 |key, value| RmrkThemeProperty {462447 key,463 let theme_names = collection.collection_tokens()448 value464 .iter()449 }465 .filter_map(|token_id| {450 )?;466 let nft_type = RmrkCore::get_nft_type(collection_id, *token_id).ok()?;451467452 let inherit = RmrkCore::get_nft_property(468 match nft_type {453 collection_id,469 Theme => RmrkCore::get_nft_property_decoded(collection_id, *token_id, RmrkProperty::ThemeName).ok(),454 theme_id,470 _ => None455 RmrkProperty::ThemeInherit471 }456 )?.decode_or_default();472 })457473 .collect();458 let theme = RmrkTheme {474459 name,475 Ok(theme_names)460 properties,476 }461 inherit,477462 };478 fn theme(base_id: RmrkBaseId, theme_name: RmrkThemeName, filter_keys: Option<Vec<RmrkPropertyKey>>) -> Result<Option<RmrkTheme>, DispatchError> {463479 use pallet_proxy_rmrk_core::{464 Ok(Some(theme))480 RmrkProperty,465 }481 misc::{CollectionType, NftType}466 }*/482 };483 use pallet_common::CommonCollectionOperations;484485 let (collection, collection_id) = match RmrkCore::get_typed_nft_collection_mapped(base_id, CollectionType::Base) {486 Ok(c) => c,487 Err(_) => return Ok(None),488 };489490 let theme_info = collection.collection_tokens()491 .into_iter()492 .find_map(|token_id| {493 RmrkCore::ensure_nft_type(collection_id, token_id, NftType::Theme).ok()?;494495 let name: RmrkString = RmrkCore::get_nft_property_decoded(496 collection_id, token_id, RmrkProperty::ThemeName497 ).ok()?;498499 if name == theme_name {500 Some((name, token_id))501 } else {502 None503 }504 });505506 let (name, theme_id) = match theme_info {507 Some((name, theme_id)) => (name, theme_id),508 None => return Ok(None)509 };510511 let properties = RmrkCore::filter_user_properties(512 collection_id,513 Some(theme_id),514 filter_keys,515 |key, value| RmrkThemeProperty {516 key,517 value518 }519 )?;520521 let inherit = RmrkCore::get_nft_property_decoded(522 collection_id,523 theme_id,524 RmrkProperty::ThemeInherit525 )?;526527 let theme = RmrkTheme {528 name,529 properties,530 inherit,531 };532533 Ok(Some(theme))534 }535 }467536468 impl sp_api::Core<Block> for Runtime {537 impl sp_api::Core<Block> for Runtime {469 fn version() -> RuntimeVersion {538 fn version() -> RuntimeVersion {775 list_benchmark!(list, extra, pallet_refungible, Refungible);844 list_benchmark!(list, extra, pallet_refungible, Refungible);776 list_benchmark!(list, extra, pallet_nonfungible, Nonfungible);845 list_benchmark!(list, extra, pallet_nonfungible, Nonfungible);777 list_benchmark!(list, extra, pallet_unq_scheduler, Scheduler);846 list_benchmark!(list, extra, pallet_unq_scheduler, Scheduler);847 list_benchmark!(list, extra, pallet_proxy_rmrk_core, RmrkCore);778 // list_benchmark!(list, extra, pallet_evm_coder_substrate, EvmCoderSubstrate);848 // list_benchmark!(list, extra, pallet_evm_coder_substrate, EvmCoderSubstrate);779849780 let storage_info = AllPalletsReversedWithSystemFirst::storage_info();850 let storage_info = AllPalletsReversedWithSystemFirst::storage_info();819 add_benchmark!(params, batches, pallet_refungible, Refungible);889 add_benchmark!(params, batches, pallet_refungible, Refungible);820 add_benchmark!(params, batches, pallet_nonfungible, Nonfungible);890 add_benchmark!(params, batches, pallet_nonfungible, Nonfungible);821 add_benchmark!(params, batches, pallet_unq_scheduler, Scheduler);891 add_benchmark!(params, batches, pallet_unq_scheduler, Scheduler);822892 add_benchmark!(params, batches, pallet_proxy_rmrk_core, RmrkCore);823 // add_benchmark!(params, batches, pallet_evm_coder_substrate, EvmCoderSubstrate);893 // add_benchmark!(params, batches, pallet_evm_coder_substrate, EvmCoderSubstrate);824894825 if batches.is_empty() { return Err("Benchmark not found for this pallet.".into()) }895 if batches.is_empty() { return Err("Benchmark not found for this pallet.".into()) }runtime/common/src/types.rsdiffbeforeafterboth1// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.2// This file is part of Unique Network.34// Unique Network is free software: you can redistribute it and/or modify5// it under the terms of the GNU General Public License as published by6// the Free Software Foundation, either version 3 of the License, or7// (at your option) any later version.89// Unique Network is distributed in the hope that it will be useful,10// but WITHOUT ANY WARRANTY; without even the implied warranty of11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the12// GNU General Public License for more details.1314// You should have received a copy of the GNU General Public License15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.161use sp_runtime::{17use sp_runtime::{2 traits::{Verify, IdentifyAccount, BlakeTwo256},18 traits::{Verify, IdentifyAccount, BlakeTwo256},runtime/opal/src/lib.rsdiffbeforeafterboth73 CollectionId, TokenId, TokenData, Property, PropertyKeyPermission, CollectionLimits,73 CollectionId, TokenId, TokenData, Property, PropertyKeyPermission, CollectionLimits,74 CollectionStats, RpcCollection,74 CollectionStats, RpcCollection,75 mapping::{EvmTokenAddressMapping, CrossTokenAddressMapping},75 mapping::{EvmTokenAddressMapping, CrossTokenAddressMapping},76 TokenChild,76 TokenChild, RmrkCollectionInfo, RmrkInstanceInfo, RmrkResourceInfo, RmrkPropertyInfo,77 RmrkBaseInfo, RmrkPartType, RmrkTheme, RmrkThemeName, RmrkThemeProperty, RmrkCollectionId,78 RmrkNftId, RmrkAccountIdOrCollectionNftTuple, RmrkNftChild, RmrkPropertyKey, RmrkResourceTypes,79 RmrkBasicResource, RmrkComposableResource, RmrkSlotResource, RmrkResourceId, RmrkBaseId,80 RmrkFixedPart, RmrkSlotPart, RmrkString,77};81};788279// use pallet_contracts::weights::WeightInfo;83// use pallet_contracts::weights::WeightInfo;914 type WeightInfo = pallet_nonfungible::weights::SubstrateWeight<Self>;918 type WeightInfo = pallet_nonfungible::weights::SubstrateWeight<Self>;915}919}916920917/*921impl pallet_proxy_rmrk_core::Config for Runtime {918TODO free RMRK!922 type WeightInfo = pallet_proxy_rmrk_core::weights::SubstrateWeight<Self>;919impl pallet_proxy_rmrk_core::Config for Runtime {923 type Event = Event;920 type Event = Event;924}921}925922926impl pallet_proxy_rmrk_equip::Config for Runtime {923impl pallet_proxy_rmrk_equip::Config for Runtime {927 type Event = Event;924 type Event = Event;928}925}*/926929927impl pallet_unique::Config for Runtime {930impl pallet_unique::Config for Runtime {928 type Event = Event;931 type Event = Event;1164 Refungible: pallet_refungible::{Pallet, Storage} = 68,1167 Refungible: pallet_refungible::{Pallet, Storage} = 68,1165 Nonfungible: pallet_nonfungible::{Pallet, Storage} = 69,1168 Nonfungible: pallet_nonfungible::{Pallet, Storage} = 69,1166 Structure: pallet_structure::{Pallet, Call, Storage, Event<T>} = 70,1169 Structure: pallet_structure::{Pallet, Call, Storage, Event<T>} = 70,1167 /* TODO free RMRK!1170 RmrkCore: pallet_proxy_rmrk_core::{Pallet, Call, Storage, Event<T>} = 71,1168 RmrkCore: pallet_proxy_rmrk_core::{Pallet, Call, Storage, Event<T>} = 71,1171 RmrkEquip: pallet_proxy_rmrk_equip::{Pallet, Call, Storage, Event<T>} = 72,1169 RmrkEquip: pallet_proxy_rmrk_equip::{Pallet, Call, Storage, Event<T>} = 72,1170 */117111721172 // Frontier1173 // Frontier1173 EVM: pallet_evm::{Pallet, Config, Call, Storage, Event<T>} = 100,1174 EVM: pallet_evm::{Pallet, Config, Call, Storage, Event<T>} = 100,runtime/quartz/Cargo.tomldiffbeforeafterboth34 'pallet-refungible/runtime-benchmarks',34 'pallet-refungible/runtime-benchmarks',35 'pallet-nonfungible/runtime-benchmarks',35 'pallet-nonfungible/runtime-benchmarks',36 'pallet-proxy-rmrk-core/runtime-benchmarks',36 'pallet-proxy-rmrk-core/runtime-benchmarks',37 'pallet-proxy-rmrk-equip/runtime-benchmarks',37 'pallet-unique/runtime-benchmarks',38 'pallet-unique/runtime-benchmarks',38 'pallet-inflation/runtime-benchmarks',39 'pallet-inflation/runtime-benchmarks',39 'pallet-unq-scheduler/runtime-benchmarks',40 'pallet-unq-scheduler/runtime-benchmarks',92 'pallet-refungible/std',93 'pallet-refungible/std',93 'pallet-nonfungible/std',94 'pallet-nonfungible/std',94 'pallet-proxy-rmrk-core/std',95 'pallet-proxy-rmrk-core/std',96 'pallet-proxy-rmrk-equip/std',95 'pallet-unique/std',97 'pallet-unique/std',96 'pallet-unq-scheduler/std',98 'pallet-unq-scheduler/std',97 'pallet-charge-transaction/std',99 'pallet-charge-transaction/std',417pallet-refungible = { default-features = false, path = "../../pallets/refungible" }419pallet-refungible = { default-features = false, path = "../../pallets/refungible" }418pallet-nonfungible = { default-features = false, path = "../../pallets/nonfungible" }420pallet-nonfungible = { default-features = false, path = "../../pallets/nonfungible" }419pallet-proxy-rmrk-core = { default-features = false, path = "../../pallets/proxy-rmrk-core", package = "pallet-rmrk-core" }421pallet-proxy-rmrk-core = { default-features = false, path = "../../pallets/proxy-rmrk-core", package = "pallet-rmrk-core" }422pallet-proxy-rmrk-equip = { default-features = false, path = "../../pallets/proxy-rmrk-equip", package = "pallet-rmrk-equip" }420pallet-unq-scheduler = { path = '../../pallets/scheduler', default-features = false }423pallet-unq-scheduler = { path = '../../pallets/scheduler', default-features = false }421# pallet-contract-helpers = { path = '../pallets/contract-helpers', default-features = false, version = '0.1.0' }424# pallet-contract-helpers = { path = '../pallets/contract-helpers', default-features = false, version = '0.1.0' }422pallet-charge-transaction = { git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = "polkadot-v0.9.22", package = "pallet-template-transaction-payment", default-features = false, version = "3.0.0" }425pallet-charge-transaction = { git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = "polkadot-v0.9.22", package = "pallet-template-transaction-payment", default-features = false, version = "3.0.0" }runtime/quartz/src/lib.rsdiffbeforeafterboth73 CollectionId, TokenId, TokenData, Property, PropertyKeyPermission, CollectionLimits, 73 CollectionId, TokenId, TokenData, Property, PropertyKeyPermission, CollectionLimits,74 CollectionStats, RpcCollection, 74 CollectionStats, RpcCollection,75 mapping::{EvmTokenAddressMapping, CrossTokenAddressMapping},75 mapping::{EvmTokenAddressMapping, CrossTokenAddressMapping},76 TokenChild,76 TokenChild, RmrkCollectionInfo, RmrkInstanceInfo, RmrkResourceInfo, RmrkPropertyInfo,77 RmrkBaseInfo, RmrkPartType, RmrkTheme, RmrkThemeName, RmrkThemeProperty, RmrkCollectionId,78 RmrkNftId, RmrkAccountIdOrCollectionNftTuple, RmrkNftChild, RmrkPropertyKey, RmrkResourceTypes,79 RmrkBasicResource, RmrkComposableResource, RmrkSlotResource, RmrkResourceId, RmrkBaseId,80 RmrkFixedPart, RmrkSlotPart, RmrkString,77};81};788279// use pallet_contracts::weights::WeightInfo;83// use pallet_contracts::weights::WeightInfo;912impl pallet_nonfungible::Config for Runtime {916impl pallet_nonfungible::Config for Runtime {913 type WeightInfo = pallet_nonfungible::weights::SubstrateWeight<Self>;917 type WeightInfo = pallet_nonfungible::weights::SubstrateWeight<Self>;914}918}915/* TODO free RMRK!919916impl pallet_proxy_rmrk_core::Config for Runtime {920impl pallet_proxy_rmrk_core::Config for Runtime {917 type Event = Event;921 type WeightInfo = pallet_proxy_rmrk_core::weights::SubstrateWeight<Self>;918}922 type Event = Event;919923}920impl pallet_proxy_rmrk_equip::Config for Runtime {924921 type Event = Event;925impl pallet_proxy_rmrk_equip::Config for Runtime {922}*/926 type Event = Event;927}923928924impl pallet_unique::Config for Runtime {929impl pallet_unique::Config for Runtime {925 type Event = Event;930 type Event = Event;1160 Refungible: pallet_refungible::{Pallet, Storage} = 68,1165 Refungible: pallet_refungible::{Pallet, Storage} = 68,1161 Nonfungible: pallet_nonfungible::{Pallet, Storage} = 69,1166 Nonfungible: pallet_nonfungible::{Pallet, Storage} = 69,1162 Structure: pallet_structure::{Pallet, Call, Storage, Event<T>} = 70,1167 Structure: pallet_structure::{Pallet, Call, Storage, Event<T>} = 70,1163 /* TODO free RMRK!1168 RmrkCore: pallet_proxy_rmrk_core::{Pallet, Call, Storage, Event<T>} = 71,1164 RmrkCore: pallet_proxy_rmrk_core::{Pallet, Call, Storage, Event<T>} = 71,1169 RmrkEquip: pallet_proxy_rmrk_equip::{Pallet, Call, Storage, Event<T>} = 72,1165 RmrkEquip: pallet_proxy_rmrk_equip::{Pallet, Call, Storage, Event<T>} = 72,*/116611701167 // Frontier1171 // Frontier1168 EVM: pallet_evm::{Pallet, Config, Call, Storage, Event<T>} = 100,1172 EVM: pallet_evm::{Pallet, Config, Call, Storage, Event<T>} = 100,runtime/unique/Cargo.tomldiffbeforeafterboth34 'pallet-refungible/runtime-benchmarks',34 'pallet-refungible/runtime-benchmarks',35 'pallet-nonfungible/runtime-benchmarks',35 'pallet-nonfungible/runtime-benchmarks',36 'pallet-proxy-rmrk-core/runtime-benchmarks',36 'pallet-proxy-rmrk-core/runtime-benchmarks',37 'pallet-proxy-rmrk-equip/runtime-benchmarks',37 'pallet-unique/runtime-benchmarks',38 'pallet-unique/runtime-benchmarks',38 'pallet-inflation/runtime-benchmarks',39 'pallet-inflation/runtime-benchmarks',39 'pallet-unq-scheduler/runtime-benchmarks',40 'pallet-unq-scheduler/runtime-benchmarks',93 'pallet-refungible/std',94 'pallet-refungible/std',94 'pallet-nonfungible/std',95 'pallet-nonfungible/std',95 'pallet-proxy-rmrk-core/std',96 'pallet-proxy-rmrk-core/std',97 'pallet-proxy-rmrk-equip/std',96 'pallet-unique/std',98 'pallet-unique/std',97 'pallet-unq-scheduler/std',99 'pallet-unq-scheduler/std',98 'pallet-charge-transaction/std',100 'pallet-charge-transaction/std',410pallet-refungible = { default-features = false, path = "../../pallets/refungible" }412pallet-refungible = { default-features = false, path = "../../pallets/refungible" }411pallet-nonfungible = { default-features = false, path = "../../pallets/nonfungible" }413pallet-nonfungible = { default-features = false, path = "../../pallets/nonfungible" }412pallet-proxy-rmrk-core = { default-features = false, path = "../../pallets/proxy-rmrk-core", package = "pallet-rmrk-core" }414pallet-proxy-rmrk-core = { default-features = false, path = "../../pallets/proxy-rmrk-core", package = "pallet-rmrk-core" }415pallet-proxy-rmrk-equip = { default-features = false, path = "../../pallets/proxy-rmrk-equip", package = "pallet-rmrk-equip" }413pallet-unq-scheduler = { path = '../../pallets/scheduler', default-features = false }416pallet-unq-scheduler = { path = '../../pallets/scheduler', default-features = false }414# pallet-contract-helpers = { path = '../pallets/contract-helpers', default-features = false, version = '0.1.0' }417# pallet-contract-helpers = { path = '../pallets/contract-helpers', default-features = false, version = '0.1.0' }415pallet-charge-transaction = { git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = "polkadot-v0.9.22", package = "pallet-template-transaction-payment", default-features = false, version = "3.0.0" }418pallet-charge-transaction = { git = "https://github.com/uniquenetwork/pallet-sponsoring", branch = "polkadot-v0.9.22", package = "pallet-template-transaction-payment", default-features = false, version = "3.0.0" }runtime/unique/src/lib.rsdiffbeforeafterboth73 CollectionId, TokenId, TokenData, Property, PropertyKeyPermission, CollectionLimits,73 CollectionId, TokenId, TokenData, Property, PropertyKeyPermission, CollectionLimits,74 CollectionStats, RpcCollection,74 CollectionStats, RpcCollection,75 mapping::{EvmTokenAddressMapping, CrossTokenAddressMapping},75 mapping::{EvmTokenAddressMapping, CrossTokenAddressMapping},76 TokenChild,76 TokenChild, RmrkCollectionInfo, RmrkInstanceInfo, RmrkResourceInfo, RmrkPropertyInfo,77 RmrkBaseInfo, RmrkPartType, RmrkTheme, RmrkThemeName, RmrkThemeProperty, RmrkCollectionId,78 RmrkNftId, RmrkAccountIdOrCollectionNftTuple, RmrkNftChild, RmrkPropertyKey, RmrkResourceTypes,79 RmrkBasicResource, RmrkComposableResource, RmrkSlotResource, RmrkResourceId, RmrkBaseId,80 RmrkFixedPart, RmrkSlotPart, RmrkString,77};81};788279// use pallet_contracts::weights::WeightInfo;83// use pallet_contracts::weights::WeightInfo;911impl pallet_nonfungible::Config for Runtime {915impl pallet_nonfungible::Config for Runtime {912 type WeightInfo = pallet_nonfungible::weights::SubstrateWeight<Self>;916 type WeightInfo = pallet_nonfungible::weights::SubstrateWeight<Self>;913}917}914/* TODO free RMRK!918915impl pallet_proxy_rmrk_core::Config for Runtime {919impl pallet_proxy_rmrk_core::Config for Runtime {916 type Event = Event;920 type WeightInfo = pallet_proxy_rmrk_core::weights::SubstrateWeight<Self>;917}921 type Event = Event;918922}919impl pallet_proxy_rmrk_equip::Config for Runtime {923920 type Event = Event;924impl pallet_proxy_rmrk_equip::Config for Runtime {921}*/925 type Event = Event;926}922927923impl pallet_unique::Config for Runtime {928impl pallet_unique::Config for Runtime {924 type Event = Event;929 type Event = Event;1159 Refungible: pallet_refungible::{Pallet, Storage} = 68,1164 Refungible: pallet_refungible::{Pallet, Storage} = 68,1160 Nonfungible: pallet_nonfungible::{Pallet, Storage} = 69,1165 Nonfungible: pallet_nonfungible::{Pallet, Storage} = 69,1161 Structure: pallet_structure::{Pallet, Call, Storage, Event<T>} = 70,1166 Structure: pallet_structure::{Pallet, Call, Storage, Event<T>} = 70,1162 /* TODO free RMRK!1167 RmrkCore: pallet_proxy_rmrk_core::{Pallet, Call, Storage, Event<T>} = 71,1163 RmrkCore: pallet_proxy_rmrk_core::{Pallet, Call, Storage, Event<T>} = 71,1168 RmrkEquip: pallet_proxy_rmrk_equip::{Pallet, Call, Storage, Event<T>} = 72,1164 RmrkEquip: pallet_proxy_rmrk_equip::{Pallet, Call, Storage, Event<T>} = 72,*/116511691166 // Frontier1170 // Frontier1167 EVM: pallet_evm::{Pallet, Config, Call, Storage, Event<T>} = 100,1171 EVM: pallet_evm::{Pallet, Config, Call, Storage, Event<T>} = 100,tests/package.jsondiffbeforeafterboth5 "main": "",5 "main": "",6 "devDependencies": {6 "devDependencies": {7 "@polkadot/ts": "0.4.22",7 "@polkadot/ts": "0.4.22",8 "@polkadot/typegen": "8.6.2",8 "@polkadot/typegen": "8.7.2-11",9 "@types/chai": "^4.3.1",9 "@types/chai": "^4.3.1",10 "@types/chai-as-promised": "^7.1.5",10 "@types/chai-as-promised": "^7.1.5",11 "@types/mocha": "^9.1.1",11 "@types/mocha": "^9.1.1",37 "testStructure": "mocha --timeout 9999999 -r ts-node/register ./**/nesting/**.test.ts",37 "testStructure": "mocha --timeout 9999999 -r ts-node/register ./**/nesting/**.test.ts",38 "testProperties": "mocha --timeout 9999999 -r ts-node/register ./**/properties.test.ts",38 "testProperties": "mocha --timeout 9999999 -r ts-node/register ./**/properties.test.ts",39 "testMigrationStructure": "mocha --timeout 9999999 -r ts-node/register ./**/nesting/migration-check.test.ts",39 "testMigrationStructure": "mocha --timeout 9999999 -r ts-node/register ./**/nesting/migration-check.test.ts",40 "testRmrk": "mocha --timeout 9999999 -r ts-node/register ./**/rmrk/**.test.ts",40 "testAddCollectionAdmin": "mocha --timeout 9999999 -r ts-node/register ./**/addCollectionAdmin.test.ts",41 "testAddCollectionAdmin": "mocha --timeout 9999999 -r ts-node/register ./**/addCollectionAdmin.test.ts",41 "testSetSchemaVersion": "mocha --timeout 9999999 -r ts-node/register ./**/setSchemaVersion.test.ts",42 "testSetSchemaVersion": "mocha --timeout 9999999 -r ts-node/register ./**/setSchemaVersion.test.ts",42 "testSetCollectionLimits": "mocha --timeout 9999999 -r ts-node/register ./**/setCollectionLimits.test.ts",43 "testSetCollectionLimits": "mocha --timeout 9999999 -r ts-node/register ./**/setCollectionLimits.test.ts",60 "testBurnItem": "mocha --timeout 9999999 -r ts-node/register ./**/burnItem.test.ts",61 "testBurnItem": "mocha --timeout 9999999 -r ts-node/register ./**/burnItem.test.ts",61 "testSetMintPermission": "mocha --timeout 9999999 -r ts-node/register ./**/setMintPermission.test.ts",62 "testSetMintPermission": "mocha --timeout 9999999 -r ts-node/register ./**/setMintPermission.test.ts",62 "testCreditFeesToTreasury": "mocha --timeout 9999999 -r ts-node/register ./**/creditFeesToTreasury.test.ts",63 "testCreditFeesToTreasury": "mocha --timeout 9999999 -r ts-node/register ./**/creditFeesToTreasury.test.ts",64 "testContractSponsoring": "mocha --timeout 9999999 -r ts-node/register ./**/contractSponsoring.test.ts",63 "testEnableContractSponsoring": "mocha --timeout 9999999 -r ts-node/register ./**/enableContractSponsoring.test.ts",65 "testEnableContractSponsoring": "mocha --timeout 9999999 -r ts-node/register ./**/enableContractSponsoring.test.ts",64 "testRemoveFromContractAllowList": "mocha --timeout 9999999 -r ts-node/register ./**/removeFromContractAllowList.test.ts",66 "testRemoveFromContractAllowList": "mocha --timeout 9999999 -r ts-node/register ./**/removeFromContractAllowList.test.ts",65 "testSetContractSponsoringRateLimit": "mocha --timeout 9999999 -r ts-node/register ./**/setContractSponsoringRateLimit.test.ts",67 "testSetContractSponsoringRateLimit": "mocha --timeout 9999999 -r ts-node/register ./**/setContractSponsoringRateLimit.test.ts",84 "license": "SEE LICENSE IN ../LICENSE",86 "license": "SEE LICENSE IN ../LICENSE",85 "homepage": "",87 "homepage": "",86 "dependencies": {88 "dependencies": {87 "@polkadot/api": "8.6.2",89 "@polkadot/api": "8.7.2-11",88 "@polkadot/api-contract": "8.6.2",90 "@polkadot/api-contract": "8.7.2-11",89 "@polkadot/util-crypto": "9.3.1",91 "@polkadot/util-crypto": "9.4.1",90 "bignumber.js": "^9.0.2",92 "bignumber.js": "^9.0.2",91 "chai-as-promised": "^7.1.1",93 "chai-as-promised": "^7.1.1",92 "find-process": "^1.4.7",94 "find-process": "^1.4.7",tests/src/accounts.tsdiffbeforeafterbothno changes
tests/src/addCollectionAdmin.test.tsdiffbeforeafterboth41 });41 });42 });42 });4344 it('Add admin using added collection admin.', async () => {45 await usingApi(async (api, privateKeyWrapper) => {46 const collectionId = await createCollectionExpectSuccess();47 const alice = privateKeyWrapper('//Alice');48 const bob = privateKeyWrapper('//Bob');49 const charlie = privateKeyWrapper('//CHARLIE');5051 const collection = await queryCollectionExpectSuccess(api, collectionId);52 expect(collection.owner.toString()).to.be.equal(alice.address);5354 const changeAdminTx = api.tx.unique.addCollectionAdmin(collectionId, normalizeAccountId(bob.address));55 await submitTransactionAsync(alice, changeAdminTx);5657 const adminListAfterAddAdmin = await getAdminList(api, collectionId);58 expect(adminListAfterAddAdmin).to.be.deep.contains(normalizeAccountId(bob.address));5960 const changeAdminTxCharlie = api.tx.unique.addCollectionAdmin(collectionId, normalizeAccountId(charlie.address));61 await submitTransactionAsync(bob, changeAdminTxCharlie);62 const adminListAfterAddNewAdmin = await getAdminList(api, collectionId);63 expect(adminListAfterAddNewAdmin).to.be.deep.contains(normalizeAccountId(bob.address));64 expect(adminListAfterAddNewAdmin).to.be.deep.contains(normalizeAccountId(charlie.address));65 });66 });67});43});684469describe('Negative Integration Test addCollectionAdmin(collection_id, new_admin_id):', () => {45describe('Negative Integration Test addCollectionAdmin(collection_id, new_admin_id):', () => {46 it("Not owner can't add collection admin.", async () => {47 await usingApi(async (api, privateKeyWrapper) => {48 const collectionId = await createCollectionExpectSuccess();49 const alice = privateKeyWrapper('//Alice');50 const bob = privateKeyWrapper('//Bob');51 const charlie = privateKeyWrapper('//CHARLIE');5253 const collection = await queryCollectionExpectSuccess(api, collectionId);54 expect(collection.owner.toString()).to.be.equal(alice.address);5556 const adminListAfterAddAdmin = await getAdminList(api, collectionId);57 expect(adminListAfterAddAdmin).to.be.not.deep.contains(normalizeAccountId(bob.address));5859 const changeAdminTxCharlie = api.tx.unique.addCollectionAdmin(collectionId, normalizeAccountId(charlie.address));60 await expect(submitTransactionAsync(bob, changeAdminTxCharlie)).to.be.rejected;61 62 const adminListAfterAddNewAdmin = await getAdminList(api, collectionId);63 expect(adminListAfterAddNewAdmin).to.be.not.deep.contains(normalizeAccountId(bob.address));64 expect(adminListAfterAddNewAdmin).to.be.not.deep.contains(normalizeAccountId(charlie.address));65 });66 });6770 it("Not owner can't add collection admin.", async () => {68 it("Admin can't add collection admin.", async () => {71 await usingApi(async (api, privateKeyWrapper) => {69 await usingApi(async (api, privateKeyWrapper) => {72 const collectionId = await createCollectionExpectSuccess();70 const collectionId = await createCollectionExpectSuccess();73 const alice = privateKeyWrapper('//Alice');71 const alice = privateKeyWrapper('//Alice');74 const nonOwner = privateKeyWrapper('//Bob_stash');72 const bob = privateKeyWrapper('//Bob');73 const charlie = privateKeyWrapper('//CHARLIE');7475 const collection = await queryCollectionExpectSuccess(api, collectionId);76 expect(collection.owner.toString()).to.be.equal(alice.address);757776 const changeAdminTx = api.tx.unique.addCollectionAdmin(collectionId, normalizeAccountId(alice.address));78 const changeAdminTx = api.tx.unique.addCollectionAdmin(collectionId, normalizeAccountId(bob.address));79 await submitTransactionAsync(alice, changeAdminTx);8081 const adminListAfterAddAdmin = await getAdminList(api, collectionId);82 expect(adminListAfterAddAdmin).to.be.deep.contains(normalizeAccountId(bob.address));8384 const changeAdminTxCharlie = api.tx.unique.addCollectionAdmin(collectionId, normalizeAccountId(charlie.address));77 await expect(submitTransactionExpectFailAsync(nonOwner, changeAdminTx)).to.be.rejected;85 await expect(submitTransactionAsync(bob, changeAdminTxCharlie)).to.be.rejected;7886 79 const adminListAfterAddAdmin = await getAdminList(api, collectionId);87 const adminListAfterAddNewAdmin = await getAdminList(api, collectionId);80 expect(adminListAfterAddAdmin).not.to.be.deep.contains(normalizeAccountId(alice.address));88 expect(adminListAfterAddNewAdmin).to.be.deep.contains(normalizeAccountId(bob.address));8182 // Verifying that nothing bad happened (network is live, new collections can be created, etc.)83 await createCollectionExpectSuccess();89 expect(adminListAfterAddNewAdmin).to.be.not.deep.contains(normalizeAccountId(charlie.address));84 });90 });85 });91 });92tests/src/addToContractAllowList.test.tsdiffbeforeafterboth32 it('Add an address to a contract allow list', async () => {32 it('Add an address to a contract allow list', async () => {33 await usingApi(async (api, privateKeyWrapper) => {33 await usingApi(async (api, privateKeyWrapper) => {34 const bob = privateKeyWrapper('//Bob');34 const bob = privateKeyWrapper('//Bob');35 const [contract, deployer] = await deployFlipper(api);35 const [contract, deployer] = await deployFlipper(api, privateKeyWrapper);363637 const allowListedBefore = (await api.query.unique.contractAllowList(contract.address, bob.address)).toJSON();37 const allowListedBefore = (await api.query.unique.contractAllowList(contract.address, bob.address)).toJSON();38 const addTx = api.tx.unique.addToContractAllowList(contract.address, bob.address);38 const addTx = api.tx.unique.addToContractAllowList(contract.address, bob.address);48 it('Adding same address to allow list repeatedly should not produce errors', async () => {48 it('Adding same address to allow list repeatedly should not produce errors', async () => {49 await usingApi(async (api, privateKeyWrapper) => {49 await usingApi(async (api, privateKeyWrapper) => {50 const bob = privateKeyWrapper('//Bob');50 const bob = privateKeyWrapper('//Bob');51 const [contract, deployer] = await deployFlipper(api);51 const [contract, deployer] = await deployFlipper(api, privateKeyWrapper);525253 const allowListedBefore = (await api.query.unique.contractAllowList(contract.address, bob.address)).toJSON();53 const allowListedBefore = (await api.query.unique.contractAllowList(contract.address, bob.address)).toJSON();54 const addTx = api.tx.unique.addToContractAllowList(contract.address, bob.address);54 const addTx = api.tx.unique.addToContractAllowList(contract.address, bob.address);87 it('Add to a contract allow list using a non-owner address', async () => {87 it('Add to a contract allow list using a non-owner address', async () => {88 await usingApi(async (api, privateKeyWrapper) => {88 await usingApi(async (api, privateKeyWrapper) => {89 const bob = privateKeyWrapper('//Bob');89 const bob = privateKeyWrapper('//Bob');90 const [contract] = await deployFlipper(api);90 const [contract] = await deployFlipper(api, privateKeyWrapper);919192 const allowListedBefore = (await api.query.unique.contractAllowList(contract.address, bob.address)).toJSON();92 const allowListedBefore = (await api.query.unique.contractAllowList(contract.address, bob.address)).toJSON();93 const addTx = api.tx.unique.addToContractAllowList(contract.address, bob.address);93 const addTx = api.tx.unique.addToContractAllowList(contract.address, bob.address);tests/src/burnItem.test.tsdiffbeforeafterboth15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.161617import {default as usingApi, submitTransactionAsync, submitTransactionExpectFailAsync} from './substrate/substrate-api';17import {default as usingApi, submitTransactionAsync, submitTransactionExpectFailAsync} from './substrate/substrate-api';18import {Keyring} from '@polkadot/api';19import {IKeyringPair} from '@polkadot/types/types';18import {IKeyringPair} from '@polkadot/types/types';20import {19import {21 createCollectionExpectSuccess,20 createCollectionExpectSuccess,373638describe('integration test: ext. burnItem():', () => {37describe('integration test: ext. burnItem():', () => {39 before(async () => {38 before(async () => {40 await usingApi(async () => {39 await usingApi(async (api, privateKeyWrapper) => {41 const keyring = new Keyring({type: 'sr25519'});42 alice = keyring.addFromUri('//Alice');40 alice = privateKeyWrapper('//Alice');43 bob = keyring.addFromUri('//Bob');41 bob = privateKeyWrapper('//Bob');44 });42 });45 });43 });4644142140143describe('integration test: ext. burnItem() with admin permissions:', () => {141describe('integration test: ext. burnItem() with admin permissions:', () => {144 before(async () => {142 before(async () => {145 await usingApi(async () => {143 await usingApi(async (api, privateKeyWrapper) => {146 const keyring = new Keyring({type: 'sr25519'});147 alice = keyring.addFromUri('//Alice');144 alice = privateKeyWrapper('//Alice');148 bob = keyring.addFromUri('//Bob');145 bob = privateKeyWrapper('//Bob');149 });146 });150 });147 });151148209206210describe('Negative integration test: ext. burnItem():', () => {207describe('Negative integration test: ext. burnItem():', () => {211 before(async () => {208 before(async () => {212 await usingApi(async () => {209 await usingApi(async (api, privateKeyWrapper) => {213 const keyring = new Keyring({type: 'sr25519'});214 alice = keyring.addFromUri('//Alice');210 alice = privateKeyWrapper('//Alice');215 bob = keyring.addFromUri('//Bob');211 bob = privateKeyWrapper('//Bob');216 });212 });217 });213 });218214tests/src/confirmSponsorship.test.tsdiffbeforeafterboth34 getCreatedCollectionCount,34 getCreatedCollectionCount,35 UNIQUE,35 UNIQUE,36} from './util/helpers';36} from './util/helpers';37import {Keyring} from '@polkadot/api';38import {IKeyringPair} from '@polkadot/types/types';37import {IKeyringPair} from '@polkadot/types/types';393840chai.use(chaiAsPromised);39chai.use(chaiAsPromised);47describe('integration test: ext. confirmSponsorship():', () => {46describe('integration test: ext. confirmSponsorship():', () => {484749 before(async () => {48 before(async () => {50 await usingApi(async () => {49 await usingApi(async (api, privateKeyWrapper) => {51 const keyring = new Keyring({type: 'sr25519'});52 alice = keyring.addFromUri('//Alice');50 alice = privateKeyWrapper('//Alice');53 bob = keyring.addFromUri('//Bob');51 bob = privateKeyWrapper('//Bob');54 charlie = keyring.addFromUri('//Charlie');52 charlie = privateKeyWrapper('//Charlie');55 });53 });56 });54 });575578 await setCollectionSponsorExpectSuccess(collectionId, bob.address);76 await setCollectionSponsorExpectSuccess(collectionId, bob.address);79 await confirmSponsorshipExpectSuccess(collectionId, '//Bob');77 await confirmSponsorshipExpectSuccess(collectionId, '//Bob');807881 await usingApi(async (api) => {79 await usingApi(async (api, privateKeyWrapper) => {82 const sponsorBalanceBefore = (await api.query.system.account(bob.address)).data.free.toBigInt();80 const sponsorBalanceBefore = (await api.query.system.account(bob.address)).data.free.toBigInt();838184 // Find unused address82 // Find unused address85 const zeroBalance = await findUnusedAddress(api);83 const zeroBalance = await findUnusedAddress(api, privateKeyWrapper);868487 // Mint token for unused address85 // Mint token for unused address88 const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', zeroBalance.address);86 const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', zeroBalance.address);105 await setCollectionSponsorExpectSuccess(collectionId, bob.address);103 await setCollectionSponsorExpectSuccess(collectionId, bob.address);106 await confirmSponsorshipExpectSuccess(collectionId, '//Bob');104 await confirmSponsorshipExpectSuccess(collectionId, '//Bob');107105108 await usingApi(async (api) => {106 await usingApi(async (api, privateKeyWrapper) => {109 const sponsorBalanceBefore = (await api.query.system.account(bob.address)).data.free.toBigInt();107 const sponsorBalanceBefore = (await api.query.system.account(bob.address)).data.free.toBigInt();110108111 // Find unused address109 // Find unused address112 const zeroBalance = await findUnusedAddress(api);110 const zeroBalance = await findUnusedAddress(api, privateKeyWrapper);113111114 // Mint token for unused address112 // Mint token for unused address115 const itemId = await createItemExpectSuccess(alice, collectionId, 'Fungible', zeroBalance.address);113 const itemId = await createItemExpectSuccess(alice, collectionId, 'Fungible', zeroBalance.address);131 await setCollectionSponsorExpectSuccess(collectionId, bob.address);129 await setCollectionSponsorExpectSuccess(collectionId, bob.address);132 await confirmSponsorshipExpectSuccess(collectionId, '//Bob');130 await confirmSponsorshipExpectSuccess(collectionId, '//Bob');133131134 await usingApi(async (api) => {132 await usingApi(async (api, privateKeyWrapper) => {135 const sponsorBalanceBefore = (await api.query.system.account(bob.address)).data.free.toBigInt();133 const sponsorBalanceBefore = (await api.query.system.account(bob.address)).data.free.toBigInt();136134137 // Find unused address135 // Find unused address138 const zeroBalance = await findUnusedAddress(api);136 const zeroBalance = await findUnusedAddress(api, privateKeyWrapper);139137140 // Mint token for unused address138 // Mint token for unused address141 const itemId = await createItemExpectSuccess(alice, collectionId, 'ReFungible', zeroBalance.address);139 const itemId = await createItemExpectSuccess(alice, collectionId, 'ReFungible', zeroBalance.address);164 await enablePublicMintingExpectSuccess(alice, collectionId);162 await enablePublicMintingExpectSuccess(alice, collectionId);165163166 // Create Item164 // Create Item167 await usingApi(async (api) => {165 await usingApi(async (api, privateKeyWrapper) => {168 const sponsorBalanceBefore = (await api.query.system.account(bob.address)).data.free.toBigInt();166 const sponsorBalanceBefore = (await api.query.system.account(bob.address)).data.free.toBigInt();169167170 // Find unused address168 // Find unused address171 const zeroBalance = await findUnusedAddress(api);169 const zeroBalance = await findUnusedAddress(api, privateKeyWrapper);172170173 // Add zeroBalance address to allow list171 // Add zeroBalance address to allow list174 await addToAllowListExpectSuccess(alice, collectionId, zeroBalance.address);172 await addToAllowListExpectSuccess(alice, collectionId, zeroBalance.address);187 await setCollectionSponsorExpectSuccess(collectionId, bob.address);185 await setCollectionSponsorExpectSuccess(collectionId, bob.address);188 await confirmSponsorshipExpectSuccess(collectionId, '//Bob');186 await confirmSponsorshipExpectSuccess(collectionId, '//Bob');189187190 await usingApi(async (api) => {188 await usingApi(async (api, privateKeyWrapper) => {191 // Find unused address189 // Find unused address192 const zeroBalance = await findUnusedAddress(api);190 const zeroBalance = await findUnusedAddress(api, privateKeyWrapper);193191194 // Mint token for alice192 // Mint token for alice195 const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', alice.address);193 const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', alice.address);226 await setCollectionSponsorExpectSuccess(collectionId, bob.address);224 await setCollectionSponsorExpectSuccess(collectionId, bob.address);227 await confirmSponsorshipExpectSuccess(collectionId, '//Bob');225 await confirmSponsorshipExpectSuccess(collectionId, '//Bob');228226229 await usingApi(async (api) => {227 await usingApi(async (api, privateKeyWrapper) => {230 // Find unused address228 // Find unused address231 const zeroBalance = await findUnusedAddress(api);229 const zeroBalance = await findUnusedAddress(api, privateKeyWrapper);232230233 // Mint token for unused address231 // Mint token for unused address234 const itemId = await createItemExpectSuccess(alice, collectionId, 'Fungible', zeroBalance.address);232 const itemId = await createItemExpectSuccess(alice, collectionId, 'Fungible', zeroBalance.address);259 await setCollectionSponsorExpectSuccess(collectionId, bob.address);257 await setCollectionSponsorExpectSuccess(collectionId, bob.address);260 await confirmSponsorshipExpectSuccess(collectionId, '//Bob');258 await confirmSponsorshipExpectSuccess(collectionId, '//Bob');261259262 await usingApi(async (api) => {260 await usingApi(async (api, privateKeyWrapper) => {263 // Find unused address261 // Find unused address264 const zeroBalance = await findUnusedAddress(api);262 const zeroBalance = await findUnusedAddress(api, privateKeyWrapper);265263266 // Mint token for alice264 // Mint token for alice267 const itemId = await createItemExpectSuccess(alice, collectionId, 'ReFungible', zeroBalance.address);265 const itemId = await createItemExpectSuccess(alice, collectionId, 'ReFungible', zeroBalance.address);299 // Enable public minting297 // Enable public minting300 await enablePublicMintingExpectSuccess(alice, collectionId);298 await enablePublicMintingExpectSuccess(alice, collectionId);301299302 await usingApi(async (api) => {300 await usingApi(async (api, privateKeyWrapper) => {303 // Find unused address301 // Find unused address304 const zeroBalance = await findUnusedAddress(api);302 const zeroBalance = await findUnusedAddress(api, privateKeyWrapper);305303306 // Add zeroBalance address to allow list304 // Add zeroBalance address to allow list307 await addToAllowListExpectSuccess(alice, collectionId, zeroBalance.address);305 await addToAllowListExpectSuccess(alice, collectionId, zeroBalance.address);331329332describe('(!negative test!) integration test: ext. confirmSponsorship():', () => {330describe('(!negative test!) integration test: ext. confirmSponsorship():', () => {333 before(async () => {331 before(async () => {334 await usingApi(async () => {332 await usingApi(async (api, privateKeyWrapper) => {335 const keyring = new Keyring({type: 'sr25519'});336 alice = keyring.addFromUri('//Alice');333 alice = privateKeyWrapper('//Alice');337 bob = keyring.addFromUri('//Bob');334 bob = privateKeyWrapper('//Bob');338 charlie = keyring.addFromUri('//Charlie');335 charlie = privateKeyWrapper('//Charlie');339 });336 });340 });337 });341338390 await setCollectionSponsorExpectSuccess(collectionId, bob.address);387 await setCollectionSponsorExpectSuccess(collectionId, bob.address);391 await confirmSponsorshipExpectSuccess(collectionId, '//Bob');388 await confirmSponsorshipExpectSuccess(collectionId, '//Bob');392389393 await usingApi(async (api) => {390 await usingApi(async (api, privateKeyWrapper) => {394 // Find unused address391 // Find unused address395 const ownerZeroBalance = await findUnusedAddress(api);392 const ownerZeroBalance = await findUnusedAddress(api, privateKeyWrapper);396393397 // Find another unused address394 // Find another unused address398 const senderZeroBalance = await findUnusedAddress(api);395 const senderZeroBalance = await findUnusedAddress(api, privateKeyWrapper);399396400 // Mint token for an unused address397 // Mint token for an unused address401 const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', ownerZeroBalance.address);398 const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', ownerZeroBalance.address);tests/src/contracts.test.tsdiffbeforeafterboth50describe.skip('Contracts', () => {50describe.skip('Contracts', () => {51 it('Can deploy smart contract Flipper, instantiate it and call it\'s get and flip messages.', async () => {51 it('Can deploy smart contract Flipper, instantiate it and call it\'s get and flip messages.', async () => {52 await usingApi(async (api, privateKeyWrapper) => {52 await usingApi(async (api, privateKeyWrapper) => {53 const [contract, deployer] = await deployFlipper(api);53 const [contract, deployer] = await deployFlipper(api, privateKeyWrapper);54 const initialGetResponse = await getFlipValue(contract, deployer);54 const initialGetResponse = await getFlipValue(contract, deployer);555556 const bob = privateKeyWrapper('//Bob');56 const bob = privateKeyWrapper('//Bob');82 // Prep work82 // Prep work83 const collectionId = await createCollectionExpectSuccess();83 const collectionId = await createCollectionExpectSuccess();84 const tokenId = await createItemExpectSuccess(alice, collectionId, 'NFT');84 const tokenId = await createItemExpectSuccess(alice, collectionId, 'NFT');85 const [contract] = await deployTransferContract(api);85 const [contract] = await deployTransferContract(api, privateKeyWrapper);86 const changeAdminTx = api.tx.unique.addCollectionAdmin(collectionId, contract.address);86 const changeAdminTx = api.tx.unique.addCollectionAdmin(collectionId, contract.address);87 await submitTransactionAsync(alice, changeAdminTx);87 await submitTransactionAsync(alice, changeAdminTx);8888104 const bob = privateKeyWrapper('//Bob');104 const bob = privateKeyWrapper('//Bob');105105106 const collectionId = await createCollectionExpectSuccess();106 const collectionId = await createCollectionExpectSuccess();107 const [contract] = await deployTransferContract(api);107 const [contract] = await deployTransferContract(api, privateKeyWrapper);108 await enablePublicMintingExpectSuccess(alice, collectionId);108 await enablePublicMintingExpectSuccess(alice, collectionId);109 await enableAllowListExpectSuccess(alice, collectionId);109 await enableAllowListExpectSuccess(alice, collectionId);110 await addToAllowListExpectSuccess(alice, collectionId, contract.address);110 await addToAllowListExpectSuccess(alice, collectionId, contract.address);131 const bob = privateKeyWrapper('//Bob');131 const bob = privateKeyWrapper('//Bob');132132133 const collectionId = await createCollectionExpectSuccess();133 const collectionId = await createCollectionExpectSuccess();134 const [contract] = await deployTransferContract(api);134 const [contract] = await deployTransferContract(api, privateKeyWrapper);135 await enablePublicMintingExpectSuccess(alice, collectionId);135 await enablePublicMintingExpectSuccess(alice, collectionId);136 await enableAllowListExpectSuccess(alice, collectionId);136 await enableAllowListExpectSuccess(alice, collectionId);137 await addToAllowListExpectSuccess(alice, collectionId, contract.address);137 await addToAllowListExpectSuccess(alice, collectionId, contract.address);173 const charlie = privateKeyWrapper('//Charlie');173 const charlie = privateKeyWrapper('//Charlie');174174175 const collectionId = await createCollectionExpectSuccess();175 const collectionId = await createCollectionExpectSuccess();176 const [contract] = await deployTransferContract(api);176 const [contract] = await deployTransferContract(api, privateKeyWrapper);177 const tokenId = await createItemExpectSuccess(alice, collectionId, 'NFT', contract.address.toString());177 const tokenId = await createItemExpectSuccess(alice, collectionId, 'NFT', contract.address.toString());178178179 const transferTx = contract.tx.approve(value, gasLimit, bob.address, collectionId, tokenId, 1);179 const transferTx = contract.tx.approve(value, gasLimit, bob.address, collectionId, tokenId, 1);192 const charlie = privateKeyWrapper('//Charlie');192 const charlie = privateKeyWrapper('//Charlie');193193194 const collectionId = await createCollectionExpectSuccess();194 const collectionId = await createCollectionExpectSuccess();195 const [contract] = await deployTransferContract(api);195 const [contract] = await deployTransferContract(api, privateKeyWrapper);196 const tokenId = await createItemExpectSuccess(alice, collectionId, 'NFT', bob.address);196 const tokenId = await createItemExpectSuccess(alice, collectionId, 'NFT', bob.address);197 await approveExpectSuccess(collectionId, tokenId, bob, contract.address.toString(), 1);197 await approveExpectSuccess(collectionId, tokenId, bob, contract.address.toString(), 1);198198212 const bob = privateKeyWrapper('//Bob');212 const bob = privateKeyWrapper('//Bob');213213214 const collectionId = await createCollectionExpectSuccess();214 const collectionId = await createCollectionExpectSuccess();215 const [contract] = await deployTransferContract(api);215 const [contract] = await deployTransferContract(api, privateKeyWrapper);216 const changeAdminTx = api.tx.unique.addCollectionAdmin(collectionId, contract.address);216 const changeAdminTx = api.tx.unique.addCollectionAdmin(collectionId, contract.address);217 await submitTransactionAsync(alice, changeAdminTx);217 await submitTransactionAsync(alice, changeAdminTx);218218tests/src/createCollection.test.tsdiffbeforeafterboth88 });88 });89 });89 });9091 it('New collection is not external', async () => {92 await usingApi(async (api, privateKeyWrapper) => {93 const alice = privateKeyWrapper('//Alice');94 const tx = api.tx.unique.createCollectionEx({ });95 const events = await submitTransactionAsync(alice, tx);96 const result = getCreateCollectionResult(events);9798 const collection = (await getDetailedCollectionInfo(api, result.collectionId))!;99 expect(collection.readOnly.toHuman()).to.be.false;100 });101 });90});102});9110392describe('(!negative test!) integration test: ext. createCollection():', () => {104describe('(!negative test!) integration test: ext. createCollection():', () => {tests/src/createItem.test.tsdiffbeforeafterboth161617import {default as usingApi} from './substrate/substrate-api';17import {default as usingApi} from './substrate/substrate-api';18import chai from 'chai';18import chai from 'chai';19import {Keyring} from '@polkadot/api';20import {IKeyringPair} from '@polkadot/types/types';19import {IKeyringPair} from '@polkadot/types/types';21import {20import {22 createCollectionExpectSuccess,21 createCollectionExpectSuccess,333234describe('integration test: ext. ():', () => {33describe('integration test: ext. ():', () => {35 before(async () => {34 before(async () => {36 await usingApi(async () => {35 await usingApi(async (api, privateKeyWrapper) => {37 const keyring = new Keyring({type: 'sr25519'});38 alice = keyring.addFromUri('//Alice');36 alice = privateKeyWrapper('//Alice');39 bob = keyring.addFromUri('//Bob');37 bob = privateKeyWrapper('//Bob');40 });38 });41 });39 });424010199102describe('Negative integration test: ext. createItem():', () => {100describe('Negative integration test: ext. createItem():', () => {103 before(async () => {101 before(async () => {104 await usingApi(async () => {102 await usingApi(async (api, privateKeyWrapper) => {105 const keyring = new Keyring({type: 'sr25519'});106 alice = keyring.addFromUri('//Alice');103 alice = privateKeyWrapper('//Alice');107 bob = keyring.addFromUri('//Bob');104 bob = privateKeyWrapper('//Bob');108 });105 });109 });106 });110107tests/src/creditFeesToTreasury.test.tsdiffbeforeafterboth18import chai from 'chai';18import chai from 'chai';19import chaiAsPromised from 'chai-as-promised';19import chaiAsPromised from 'chai-as-promised';20import {default as usingApi, submitTransactionAsync, submitTransactionExpectFailAsync} from './substrate/substrate-api';20import {default as usingApi, submitTransactionAsync, submitTransactionExpectFailAsync} from './substrate/substrate-api';21import {alicesPublicKey, bobsPublicKey} from './accounts';22import {IKeyringPair} from '@polkadot/types/types';21import {IKeyringPair} from '@polkadot/types/types';23import {22import {24 createCollectionExpectSuccess,23 createCollectionExpectSuccess,71 });70 });727173 it('Total issuance does not change', async () => {72 it('Total issuance does not change', async () => {74 await usingApi(async (api, privateKeyWrapper) => {73 await usingApi(async (api) => {75 await skipInflationBlock(api);74 await skipInflationBlock(api);76 await waitNewBlocks(api, 1);75 await waitNewBlocks(api, 1);777678 const totalBefore = (await api.query.balances.totalIssuance()).toBigInt();77 const totalBefore = (await api.query.balances.totalIssuance()).toBigInt();797880 const alicePrivateKey = privateKeyWrapper('//Alice');81 const amount = 1n;79 const amount = 1n;82 const transfer = api.tx.balances.transfer(bobsPublicKey, amount);80 const transfer = api.tx.balances.transfer(bob.address, amount);838184 const result = getGenericResult(await submitTransactionAsync(alicePrivateKey, transfer));82 const result = getGenericResult(await submitTransactionAsync(alice, transfer));858386 const totalAfter = (await api.query.balances.totalIssuance()).toBigInt();84 const totalAfter = (await api.query.balances.totalIssuance()).toBigInt();878591 });89 });929093 it('Sender balance decreased by fee+sent amount, Treasury balance increased by fee', async () => {91 it('Sender balance decreased by fee+sent amount, Treasury balance increased by fee', async () => {94 await usingApi(async (api, privateKeyWrapper) => {92 await usingApi(async (api) => {95 await skipInflationBlock(api);93 await skipInflationBlock(api);96 await waitNewBlocks(api, 1);94 await waitNewBlocks(api, 1);979598 const alicePrivateKey = privateKeyWrapper('//Alice');99 const treasuryBalanceBefore: bigint = (await api.query.system.account(TREASURY)).data.free.toBigInt();96 const treasuryBalanceBefore: bigint = (await api.query.system.account(TREASURY)).data.free.toBigInt();100 const aliceBalanceBefore: bigint = (await api.query.system.account(alicesPublicKey)).data.free.toBigInt();97 const aliceBalanceBefore: bigint = (await api.query.system.account(alice.address)).data.free.toBigInt();10198102 const amount = 1n;99 const amount = 1n;103 const transfer = api.tx.balances.transfer(bobsPublicKey, amount);100 const transfer = api.tx.balances.transfer(bob.address, amount);104 const result = getGenericResult(await submitTransactionAsync(alicePrivateKey, transfer));101 const result = getGenericResult(await submitTransactionAsync(alice, transfer));105102106 const treasuryBalanceAfter: bigint = (await api.query.system.account(TREASURY)).data.free.toBigInt();103 const treasuryBalanceAfter: bigint = (await api.query.system.account(TREASURY)).data.free.toBigInt();107 const aliceBalanceAfter: bigint = (await api.query.system.account(alicesPublicKey)).data.free.toBigInt();104 const aliceBalanceAfter: bigint = (await api.query.system.account(alice.address)).data.free.toBigInt();108 const fee = aliceBalanceBefore - aliceBalanceAfter - amount;105 const fee = aliceBalanceBefore - aliceBalanceAfter - amount;109 const treasuryIncrease = treasuryBalanceAfter - treasuryBalanceBefore;106 const treasuryIncrease = treasuryBalanceAfter - treasuryBalanceBefore;110107114 });111 });115112116 it('Treasury balance increased by failed tx fee', async () => {113 it('Treasury balance increased by failed tx fee', async () => {117 await usingApi(async (api, privateKeyWrapper) => {114 await usingApi(async (api) => {118 //await skipInflationBlock(api);115 //await skipInflationBlock(api);119 await waitNewBlocks(api, 1);116 await waitNewBlocks(api, 1);120117121 const bobPrivateKey = privateKeyWrapper('//Bob');122 const treasuryBalanceBefore = (await api.query.system.account(TREASURY)).data.free.toBigInt();118 const treasuryBalanceBefore = (await api.query.system.account(TREASURY)).data.free.toBigInt();123 const bobBalanceBefore = (await api.query.system.account(bobsPublicKey)).data.free.toBigInt();119 const bobBalanceBefore = (await api.query.system.account(bob.address)).data.free.toBigInt();124120125 const badTx = api.tx.balances.setBalance(alicesPublicKey, 0, 0);121 const badTx = api.tx.balances.setBalance(alice.address, 0, 0);126 await expect(submitTransactionExpectFailAsync(bobPrivateKey, badTx)).to.be.rejected;122 await expect(submitTransactionExpectFailAsync(bob, badTx)).to.be.rejected;127123128 const treasuryBalanceAfter = (await api.query.system.account(TREASURY)).data.free.toBigInt();124 const treasuryBalanceAfter = (await api.query.system.account(TREASURY)).data.free.toBigInt();129 const bobBalanceAfter = (await api.query.system.account(bobsPublicKey)).data.free.toBigInt();125 const bobBalanceAfter = (await api.query.system.account(bob.address)).data.free.toBigInt();130 const fee = bobBalanceBefore - bobBalanceAfter;126 const fee = bobBalanceBefore - bobBalanceAfter;131 const treasuryIncrease = treasuryBalanceAfter - treasuryBalanceBefore;127 const treasuryIncrease = treasuryBalanceAfter - treasuryBalanceBefore;132128140 await waitNewBlocks(api, 1);136 await waitNewBlocks(api, 1);141137142 const treasuryBalanceBefore = (await api.query.system.account(TREASURY)).data.free.toBigInt();138 const treasuryBalanceBefore = (await api.query.system.account(TREASURY)).data.free.toBigInt();143 const aliceBalanceBefore = (await api.query.system.account(alicesPublicKey)).data.free.toBigInt();139 const aliceBalanceBefore = (await api.query.system.account(alice.address)).data.free.toBigInt();144140145 await createCollectionExpectSuccess();141 await createCollectionExpectSuccess();146142147 const treasuryBalanceAfter = (await api.query.system.account(TREASURY)).data.free.toBigInt();143 const treasuryBalanceAfter = (await api.query.system.account(TREASURY)).data.free.toBigInt();148 const aliceBalanceAfter = (await api.query.system.account(alicesPublicKey)).data.free.toBigInt();144 const aliceBalanceAfter = (await api.query.system.account(alice.address)).data.free.toBigInt();149 const fee = aliceBalanceBefore - aliceBalanceAfter;145 const fee = aliceBalanceBefore - aliceBalanceAfter;150 const treasuryIncrease = treasuryBalanceAfter - treasuryBalanceBefore;146 const treasuryIncrease = treasuryBalanceAfter - treasuryBalanceBefore;151147158 await skipInflationBlock(api);154 await skipInflationBlock(api);159 await waitNewBlocks(api, 1);155 await waitNewBlocks(api, 1);160156161 const aliceBalanceBefore: bigint = (await api.query.system.account(alicesPublicKey)).data.free.toBigInt();157 const aliceBalanceBefore: bigint = (await api.query.system.account(alice.address)).data.free.toBigInt();162158163 await createCollectionExpectSuccess();159 await createCollectionExpectSuccess();164160165 const aliceBalanceAfter: bigint = (await api.query.system.account(alicesPublicKey)).data.free.toBigInt();161 const aliceBalanceAfter: bigint = (await api.query.system.account(alice.address)).data.free.toBigInt();166 const fee = aliceBalanceBefore - aliceBalanceAfter;162 const fee = aliceBalanceBefore - aliceBalanceAfter;167163168 expect(fee / UNIQUE < BigInt(Math.ceil(saneMaximumFee + createCollectionDeposit))).to.be.true;164 expect(fee / UNIQUE < BigInt(Math.ceil(saneMaximumFee + createCollectionDeposit))).to.be.true;178 const collectionId = await createCollectionExpectSuccess();174 const collectionId = await createCollectionExpectSuccess();179 const tokenId = await createItemExpectSuccess(alice, collectionId, 'NFT');175 const tokenId = await createItemExpectSuccess(alice, collectionId, 'NFT');180176181 const aliceBalanceBefore: bigint = (await api.query.system.account(alicesPublicKey)).data.free.toBigInt();177 const aliceBalanceBefore: bigint = (await api.query.system.account(alice.address)).data.free.toBigInt();182 await transferExpectSuccess(collectionId, tokenId, alice, bob, 1, 'NFT');178 await transferExpectSuccess(collectionId, tokenId, alice, bob, 1, 'NFT');183 const aliceBalanceAfter: bigint = (await api.query.system.account(alicesPublicKey)).data.free.toBigInt();179 const aliceBalanceAfter: bigint = (await api.query.system.account(alice.address)).data.free.toBigInt();184180185 const fee = Number(aliceBalanceBefore - aliceBalanceAfter) / Number(UNIQUE);181 const fee = Number(aliceBalanceBefore - aliceBalanceAfter) / Number(UNIQUE);186 const expectedTransferFee = 0.1;182 const expectedTransferFee = 0.1;tests/src/enableContractSponsoring.test.tsdiffbeforeafterboth313132describe.skip('Integration Test enableContractSponsoring', () => {32describe.skip('Integration Test enableContractSponsoring', () => {33 it('ensure tx fee is paid from endowment', async () => {33 it('ensure tx fee is paid from endowment', async () => {34 await usingApi(async (api) => {34 await usingApi(async (api, privateKeyWrapper) => {35 const user = await findUnusedAddress(api);35 const user = await findUnusedAddress(api, privateKeyWrapper);363637 const [flipper, deployer] = await deployFlipper(api);37 const [flipper, deployer] = await deployFlipper(api, privateKeyWrapper);38 await enableContractSponsoringExpectSuccess(deployer, flipper.address, true);38 await enableContractSponsoringExpectSuccess(deployer, flipper.address, true);39 await setContractSponsoringRateLimitExpectSuccess(deployer, flipper.address, 1);39 await setContractSponsoringRateLimitExpectSuccess(deployer, flipper.address, 1);40 await toggleFlipValueExpectSuccess(user, flipper);40 await toggleFlipValueExpectSuccess(user, flipper);44 });44 });454546 it('ensure it can be enabled twice', async () => {46 it('ensure it can be enabled twice', async () => {47 await usingApi(async (api) => {47 await usingApi(async (api, privateKeyWrapper) => {48 const [flipper, deployer] = await deployFlipper(api);48 const [flipper, deployer] = await deployFlipper(api, privateKeyWrapper);494950 await enableContractSponsoringExpectSuccess(deployer, flipper.address, true);50 await enableContractSponsoringExpectSuccess(deployer, flipper.address, true);51 await enableContractSponsoringExpectSuccess(deployer, flipper.address, true);51 await enableContractSponsoringExpectSuccess(deployer, flipper.address, true);52 });52 });53 });53 });545455 it('ensure it can be disabled twice', async () => {55 it('ensure it can be disabled twice', async () => {56 await usingApi(async (api) => {56 await usingApi(async (api, privateKeyWrapper) => {57 const [flipper, deployer] = await deployFlipper(api);57 const [flipper, deployer] = await deployFlipper(api, privateKeyWrapper);585859 await enableContractSponsoringExpectSuccess(deployer, flipper.address, true);59 await enableContractSponsoringExpectSuccess(deployer, flipper.address, true);60 await enableContractSponsoringExpectSuccess(deployer, flipper.address, false);60 await enableContractSponsoringExpectSuccess(deployer, flipper.address, false);63 });63 });646465 it('ensure it can be re-enabled', async () => {65 it('ensure it can be re-enabled', async () => {66 await usingApi(async (api) => {66 await usingApi(async (api, privateKeyWrapper) => {67 const [flipper, deployer] = await deployFlipper(api);67 const [flipper, deployer] = await deployFlipper(api, privateKeyWrapper);686869 await enableContractSponsoringExpectSuccess(deployer, flipper.address, true);69 await enableContractSponsoringExpectSuccess(deployer, flipper.address, true);70 await enableContractSponsoringExpectSuccess(deployer, flipper.address, false);70 await enableContractSponsoringExpectSuccess(deployer, flipper.address, false);84 });84 });858586 it('fails when called for non-contract address', async () => {86 it('fails when called for non-contract address', async () => {87 await usingApi(async (api) => {87 await usingApi(async (api, privateKeyWrapper) => {88 const user = await findUnusedAddress(api);88 const user = await findUnusedAddress(api, privateKeyWrapper);898990 await enableContractSponsoringExpectFailure(alice, user.address, true);90 await enableContractSponsoringExpectFailure(alice, user.address, true);91 });91 });92 });92 });939394 it('fails when called by non-owning user', async () => {94 it('fails when called by non-owning user', async () => {95 await usingApi(async (api) => {95 await usingApi(async (api, privateKeyWrapper) => {96 const [flipper] = await deployFlipper(api);96 const [flipper] = await deployFlipper(api, privateKeyWrapper);979798 await enableContractSponsoringExpectFailure(alice, flipper.address, true);98 await enableContractSponsoringExpectFailure(alice, flipper.address, true);99 });99 });tests/src/eth/allowlist.test.tsdiffbeforeafterboth18import {contractHelpers, createEthAccountWithBalance, deployFlipper, itWeb3} from './util/helpers';18import {contractHelpers, createEthAccountWithBalance, deployFlipper, itWeb3} from './util/helpers';191920describe('EVM allowlist', () => {20describe('EVM allowlist', () => {21 itWeb3('Contract allowlist can be toggled', async ({api, web3}) => {21 itWeb3('Contract allowlist can be toggled', async ({api, web3, privateKeyWrapper}) => {22 const owner = await createEthAccountWithBalance(api, web3);22 const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);23 const flipper = await deployFlipper(web3, owner);23 const flipper = await deployFlipper(web3, owner);242425 const helpers = contractHelpers(web3, owner);25 const helpers = contractHelpers(web3, owner);36 expect(await helpers.methods.allowlistEnabled(flipper.options.address).call()).to.be.false;36 expect(await helpers.methods.allowlistEnabled(flipper.options.address).call()).to.be.false;37 });37 });383839 itWeb3('Non-allowlisted user can\'t call contract with allowlist enabled', async ({api, web3}) => {39 itWeb3('Non-allowlisted user can\'t call contract with allowlist enabled', async ({api, web3, privateKeyWrapper}) => {40 const owner = await createEthAccountWithBalance(api, web3);40 const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);41 const flipper = await deployFlipper(web3, owner);41 const flipper = await deployFlipper(web3, owner);42 const caller = await createEthAccountWithBalance(api, web3);42 const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper);434344 const helpers = contractHelpers(web3, owner);44 const helpers = contractHelpers(web3, owner);4545tests/src/eth/api/UniqueNFT.soldiffbeforeafterboth174 function finishMinting() external returns (bool);174 function finishMinting() external returns (bool);175}175}176177// Selector: 6aea9834178interface Collection is Dummy, ERC165 {179 // Selector: setCollectionProperty(string,bytes) 2f073f66180 function setCollectionProperty(string memory key, bytes memory value)181 external;182183 // Selector: deleteCollectionProperty(string) 7b7debce184 function deleteCollectionProperty(string memory key) external;185186 // Throws error if key not found187 //188 // Selector: collectionProperty(string) cf24fd6d189 function collectionProperty(string memory key)190 external191 view192 returns (bytes memory);193194 // Selector: setCollectionSponsor(address) 7623402e195 function setCollectionSponsor(address sponsor) external;196197 // Selector: confirmCollectionSponsorship() 3c50e97a198 function confirmCollectionSponsorship() external;199200 // Selector: setCollectionLimit(string,uint32) 6a3841db201 function setCollectionLimit(string memory limit, uint32 value) external;202203 // Selector: setCollectionLimit(string,bool) 993b7fba204 function setCollectionLimit(string memory limit, bool value) external;205206 // Selector: contractAddress() f6b4dfb4207 function contractAddress() external view returns (address);208209 // Selector: addCollectionAdmin(address) 92e462c7210 function addCollectionAdmin(address newAdmin) external view;211212 // Selector: removeCollectionAdmin(address) fafd7b42213 function removeCollectionAdmin(address admin) external view;214215 // Selector: setCollectionNesting(bool) 112d4586216 function setCollectionNesting(bool enable) external;217218 // Selector: setCollectionNesting(bool,address[]) 64872396219 function setCollectionNesting(bool enable, address[] memory collections)220 external;221222 // Selector: setCollectionAccess(uint8) 41835d4c223 function setCollectionAccess(uint8 mode) external;224225 // Selector: addToCollectionAllowList(address) 67844fe6226 function addToCollectionAllowList(address user) external view;227228 // Selector: removeFromCollectionAllowList(address) 85c51acb229 function removeFromCollectionAllowList(address user) external view;230231 // Selector: setCollectionMintMode(bool) 00018e84232 function setCollectionMintMode(bool mode) external;233}176234177// Selector: 780e9d63235// Selector: 780e9d63178interface ERC721Enumerable is Dummy, ERC165 {236interface ERC721Enumerable is Dummy, ERC165 {191 function totalSupply() external view returns (uint256);249 function totalSupply() external view returns (uint256);192}250}193194// Selector: c894dc35195interface Collection is Dummy, ERC165 {196 // Selector: setCollectionProperty(string,bytes) 2f073f66197 function setCollectionProperty(string memory key, bytes memory value)198 external;199200 // Selector: deleteCollectionProperty(string) 7b7debce201 function deleteCollectionProperty(string memory key) external;202203 // Throws error if key not found204 //205 // Selector: collectionProperty(string) cf24fd6d206 function collectionProperty(string memory key)207 external208 view209 returns (bytes memory);210211 // Selector: ethSetSponsor(address) 8f9af356212 function ethSetSponsor(address sponsor) external;213214 // Selector: ethConfirmSponsorship() a8580d1a215 function ethConfirmSponsorship() external;216217 // Selector: setLimit(string,uint32) 68db30ca218 function setLimit(string memory limit, uint32 value) external;219220 // Selector: setLimit(string,bool) ea67e4c2221 function setLimit(string memory limit, bool value) external;222223 // Selector: contractAddress() f6b4dfb4224 function contractAddress() external view returns (address);225}226251227// Selector: d74d154f252// Selector: d74d154f228interface ERC721UniqueExtensions is Dummy, ERC165 {253interface ERC721UniqueExtensions is Dummy, ERC165 {tests/src/eth/base.test.tsdiffbeforeafterboth32import Web3 from 'web3';32import Web3 from 'web3';333334describe('Contract calls', () => {34describe('Contract calls', () => {35 itWeb3('Call of simple contract fee is less than 0.2 UNQ', async ({web3, api}) => {35 itWeb3('Call of simple contract fee is less than 0.2 UNQ', async ({web3, api, privateKeyWrapper}) => {36 const deployer = await createEthAccountWithBalance(api, web3);36 const deployer = await createEthAccountWithBalance(api, web3, privateKeyWrapper);37 const flipper = await deployFlipper(web3, deployer);37 const flipper = await deployFlipper(web3, deployer);383839 const cost = await recordEthFee(api, deployer, () => flipper.methods.flip().send({from: deployer}));39 const cost = await recordEthFee(api, deployer, () => flipper.methods.flip().send({from: deployer}));40 expect(cost < BigInt(0.2 * Number(UNIQUE))).to.be.true;40 expect(cost < BigInt(0.2 * Number(UNIQUE))).to.be.true;41 });41 });424243 itWeb3('Balance transfer fee is less than 0.2 UNQ', async ({web3, api}) => {43 itWeb3('Balance transfer fee is less than 0.2 UNQ', async ({web3, api, privateKeyWrapper}) => {44 const userA = await createEthAccountWithBalance(api, web3);44 const userA = await createEthAccountWithBalance(api, web3, privateKeyWrapper);45 const userB = createEthAccount(web3);45 const userB = createEthAccount(web3);464647 const cost = await recordEthFee(api, userA, () => web3.eth.sendTransaction({from: userA, to: userB, value: '1000000', ...GAS_ARGS}));47 const cost = await recordEthFee(api, userA, () => web3.eth.sendTransaction({from: userA, to: userB, value: '1000000', ...GAS_ARGS}));50 });50 });515152 itWeb3('NFT transfer is close to 0.15 UNQ', async ({web3, api, privateKeyWrapper}) => {52 itWeb3('NFT transfer is close to 0.15 UNQ', async ({web3, api, privateKeyWrapper}) => {53 const caller = await createEthAccountWithBalance(api, web3);53 const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper);54 const receiver = createEthAccount(web3);54 const receiver = createEthAccount(web3);555556 const alice = privateKeyWrapper('//Alice');56 const alice = privateKeyWrapper('//Alice');tests/src/eth/collectionProperties.test.tsdiffbeforeafterboth7describe('EVM collection properties', () => {7describe('EVM collection properties', () => {8 itWeb3('Can be set', async({web3, api, privateKeyWrapper}) => {8 itWeb3('Can be set', async({web3, api, privateKeyWrapper}) => {9 const alice = privateKeyWrapper('//Alice');9 const alice = privateKeyWrapper('//Alice');10 const caller = await createEthAccountWithBalance(api, web3);10 const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper);11 const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});11 const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});121213 await addCollectionAdminExpectSuccess(alice, collection, {Ethereum: caller});13 await addCollectionAdminExpectSuccess(alice, collection, {Ethereum: caller});22 });22 });23 itWeb3('Can be deleted', async({web3, api, privateKeyWrapper}) => {23 itWeb3('Can be deleted', async({web3, api, privateKeyWrapper}) => {24 const alice = privateKeyWrapper('//Alice');24 const alice = privateKeyWrapper('//Alice');25 const caller = await createEthAccountWithBalance(api, web3);25 const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper);26 const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});26 const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});272728 await executeTransaction(api, alice, api.tx.unique.setCollectionProperties(collection, [{key: 'testKey', value: 'testValue'}]));28 await executeTransaction(api, alice, api.tx.unique.setCollectionProperties(collection, [{key: 'testKey', value: 'testValue'}]));tests/src/eth/contractSponsoring.test.tsdiffbeforeafterboth31 evmCollectionHelpers,31 evmCollectionHelpers,32 getCollectionAddressFromResult,32 getCollectionAddressFromResult,33 evmCollection,33 evmCollection,34 ethBalanceViaSub,34} from './util/helpers';35} from './util/helpers';35import {36import {36 addCollectionAdminExpectSuccess,37 addCollectionAdminExpectSuccess,43import {evmToAddress} from '@polkadot/util-crypto';44import {evmToAddress} from '@polkadot/util-crypto';444545describe('Sponsoring EVM contracts', () => {46describe('Sponsoring EVM contracts', () => {46 itWeb3('Sponsoring can be set by the address that has deployed the contract', async ({api, web3}) => {47 itWeb3('Sponsoring can be set by the address that has deployed the contract', async ({api, web3, privateKeyWrapper}) => {47 const owner = await createEthAccountWithBalance(api, web3);48 const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);48 const flipper = await deployFlipper(web3, owner);49 const flipper = await deployFlipper(web3, owner);49 const helpers = contractHelpers(web3, owner);50 const helpers = contractHelpers(web3, owner);50 expect(await helpers.methods.sponsoringEnabled(flipper.options.address).call()).to.be.false;51 expect(await helpers.methods.sponsoringEnabled(flipper.options.address).call()).to.be.false;51 await helpers.methods.setSponsoringMode(flipper.options.address, SponsoringMode.Allowlisted).send({from: owner});52 await helpers.methods.setSponsoringMode(flipper.options.address, SponsoringMode.Allowlisted).send({from: owner});52 expect(await helpers.methods.sponsoringEnabled(flipper.options.address).call()).to.be.true;53 expect(await helpers.methods.sponsoringEnabled(flipper.options.address).call()).to.be.true;53 });54 });545555 itWeb3('Sponsoring cannot be set by the address that did not deployed the contract', async ({api, web3}) => {56 itWeb3('Sponsoring cannot be set by the address that did not deployed the contract', async ({api, web3, privateKeyWrapper}) => {56 const owner = await createEthAccountWithBalance(api, web3);57 const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);57 const notOwner = await createEthAccountWithBalance(api, web3);58 const notOwner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);58 const flipper = await deployFlipper(web3, owner);59 const flipper = await deployFlipper(web3, owner);59 const helpers = contractHelpers(web3, owner);60 const helpers = contractHelpers(web3, owner);60 expect(await helpers.methods.sponsoringEnabled(flipper.options.address).call()).to.be.false;61 expect(await helpers.methods.sponsoringEnabled(flipper.options.address).call()).to.be.false;65 itWeb3('In generous mode, non-allowlisted user transaction will be sponsored', async ({api, web3, privateKeyWrapper}) => {66 itWeb3('In generous mode, non-allowlisted user transaction will be sponsored', async ({api, web3, privateKeyWrapper}) => {66 const alice = privateKeyWrapper('//Alice');67 const alice = privateKeyWrapper('//Alice');676868 const owner = await createEthAccountWithBalance(api, web3);69 const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);69 const caller = await createEthAccountWithBalance(api, web3);70 const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper);707171 const flipper = await deployFlipper(web3, owner);72 const flipper = await deployFlipper(web3, owner);727393 itWeb3('Sponsoring is set, an address that has no UNQ can send a transaction and it works. Sponsor balance should decrease (allowlisted)', async ({api, web3, privateKeyWrapper}) => {94 itWeb3('Sponsoring is set, an address that has no UNQ can send a transaction and it works. Sponsor balance should decrease (allowlisted)', async ({api, web3, privateKeyWrapper}) => {94 const alice = privateKeyWrapper('//Alice');95 const alice = privateKeyWrapper('//Alice');959696 const owner = await createEthAccountWithBalance(api, web3);97 const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);97 const caller = createEthAccount(web3);98 const caller = createEthAccount(web3);989999 const flipper = await deployFlipper(web3, owner);100 const flipper = await deployFlipper(web3, owner);123 itWeb3('Sponsoring is set, an address that has no UNQ can send a transaction and it works. Sponsor balance should not decrease (non-allowlisted)', async ({api, web3, privateKeyWrapper}) => {124 itWeb3('Sponsoring is set, an address that has no UNQ can send a transaction and it works. Sponsor balance should not decrease (non-allowlisted)', async ({api, web3, privateKeyWrapper}) => {124 const alice = privateKeyWrapper('//Alice');125 const alice = privateKeyWrapper('//Alice');125126126 const owner = await createEthAccountWithBalance(api, web3);127 const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);127 const caller = createEthAccount(web3);128 const caller = createEthAccount(web3);128129129 const flipper = await deployFlipper(web3, owner);130 const flipper = await deployFlipper(web3, owner);151 itWeb3('Sponsoring is set, an address that has UNQ can send a transaction and it works. User balance should not change', async ({api, web3, privateKeyWrapper}) => {152 itWeb3('Sponsoring is set, an address that has UNQ can send a transaction and it works. User balance should not change', async ({api, web3, privateKeyWrapper}) => {152 const alice = privateKeyWrapper('//Alice');153 const alice = privateKeyWrapper('//Alice');153154154 const owner = await createEthAccountWithBalance(api, web3);155 const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);155 const caller = await createEthAccountWithBalance(api, web3);156 const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper);156 const originalCallerBalance = await web3.eth.getBalance(caller);157 const originalCallerBalance = await web3.eth.getBalance(caller);157158158 const flipper = await deployFlipper(web3, owner);159 const flipper = await deployFlipper(web3, owner);180 itWeb3('Sponsoring is limited, with setContractRateLimit. The limitation is working if transactions are sent more often, the sender pays the commission.', async ({api, web3, privateKeyWrapper}) => {181 itWeb3('Sponsoring is limited, with setContractRateLimit. The limitation is working if transactions are sent more often, the sender pays the commission.', async ({api, web3, privateKeyWrapper}) => {181 const alice = privateKeyWrapper('//Alice');182 const alice = privateKeyWrapper('//Alice');182183183 const owner = await createEthAccountWithBalance(api, web3);184 const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);184 const caller = await createEthAccountWithBalance(api, web3);185 const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper);185 const originalCallerBalance = await web3.eth.getBalance(caller);186 const originalCallerBalance = await web3.eth.getBalance(caller);186187187 const flipper = await deployFlipper(web3, owner);188 const flipper = await deployFlipper(web3, owner);213 });214 });214215215 // TODO: Find a way to calculate default rate limit216 // TODO: Find a way to calculate default rate limit216 itWeb3('Default rate limit equals 7200', async ({api, web3}) => {217 itWeb3('Default rate limit equals 7200', async ({api, web3, privateKeyWrapper}) => {217 const owner = await createEthAccountWithBalance(api, web3);218 const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);218 const flipper = await deployFlipper(web3, owner);219 const flipper = await deployFlipper(web3, owner);219 const helpers = contractHelpers(web3, owner);220 const helpers = contractHelpers(web3, owner);220 expect(await helpers.methods.getSponsoringRateLimit(flipper.options.address).call()).to.be.equals('7200');221 expect(await helpers.methods.getSponsoringRateLimit(flipper.options.address).call()).to.be.equals('7200');221 });222 });222223223 //TODO: CORE-302 add eth methods224 itWeb3('Sponsoring collection from evm address via access list', async ({api, web3, privateKeyWrapper}) => {224 itWeb3.skip('Sponsoring evm address from substrate collection', async ({api, web3}) => {225 const owner = await createEthAccountWithBalance(api, web3);225 const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);226 const collectionHelpers = evmCollectionHelpers(web3, owner);226 const collectionHelpers = evmCollectionHelpers(web3, owner);227 let result = await collectionHelpers.methods.createNonfungibleCollection('Sponsor collection', '1', '1').send();227 let result = await collectionHelpers.methods.createNonfungibleCollection('Sponsor collection', '1', '1').send();228 const {collectionIdAddress, collectionId} = await getCollectionAddressFromResult(api, result);228 const {collectionIdAddress, collectionId} = await getCollectionAddressFromResult(api, result);229 const sponsor = await createEthAccountWithBalance(api, web3);229 const sponsor = await createEthAccountWithBalance(api, web3, privateKeyWrapper);230 const collectionEvm = evmCollection(web3, owner, collectionIdAddress);230 const collectionEvm = evmCollection(web3, owner, collectionIdAddress);231 result = await collectionEvm.methods.ethSetSponsor(sponsor).send();231 result = await collectionEvm.methods.setCollectionSponsor(sponsor).send({from: owner});232 let collectionSub = (await getDetailedCollectionInfo(api, collectionId))!;232 let collectionSub = (await getDetailedCollectionInfo(api, collectionId))!;233 const ss58Format = (api.registry.getChainProperties())!.toJSON().ss58Format;233 expect(collectionSub.sponsorship.isUnconfirmed).to.be.true;234 expect(collectionSub.sponsorship.isUnconfirmed).to.be.true;234 expect(collectionSub.sponsorship.asUnconfirmed.toHuman()).to.be.eq(evmToAddress(sponsor));235 expect(collectionSub.sponsorship.asUnconfirmed.toHuman()).to.be.eq(evmToAddress(sponsor, Number(ss58Format)));235 await expect(collectionEvm.methods.ethConfirmSponsorship().call()).to.be.rejectedWith('Caller is not set as sponsor');236 await expect(collectionEvm.methods.confirmCollectionSponsorship().call()).to.be.rejectedWith('Caller is not set as sponsor');236237237 const sponsorCollection = evmCollection(web3, sponsor, collectionIdAddress);238 await collectionEvm.methods.confirmCollectionSponsorship().send({from: sponsor});238 await sponsorCollection.methods.ethConfirmSponsorship().send();239 collectionSub = (await getDetailedCollectionInfo(api, collectionId))!;239 collectionSub = (await getDetailedCollectionInfo(api, collectionId))!;240 expect(collectionSub.sponsorship.isConfirmed).to.be.true;240 expect(collectionSub.sponsorship.isConfirmed).to.be.true;241 expect(collectionSub.sponsorship.asConfirmed.toHuman()).to.be.eq(evmToAddress(sponsor));241 expect(collectionSub.sponsorship.asConfirmed.toHuman()).to.be.eq(evmToAddress(sponsor, Number(ss58Format)));242242243 const user = createEthAccount(web3);243 const user = createEthAccount(web3);244 const userContract = evmCollection(web3, user, collectionIdAddress);244 let nextTokenId = await collectionEvm.methods.nextTokenId().call();245 const nextTokenId = await userContract.methods.nextTokenId().call();245 expect(nextTokenId).to.be.equal('1');246246247 const oldPermissions = (await getDetailedCollectionInfo(api, collectionId))!.permissions.toHuman();248 expect(oldPermissions.mintMode).to.be.false;249 expect(oldPermissions.access).to.be.equal('Normal');250251 //TODO: change value, when enum generated252 await collectionEvm.methods.setCollectionAccess(1 /*'AllowList'*/).send({from: owner});253 await collectionEvm.methods.addToCollectionAllowList(user).send({from: owner});254 await collectionEvm.methods.setCollectionMintMode(true).send({from: owner});255256 const newPermissions = (await getDetailedCollectionInfo(api, collectionId))!.permissions.toHuman();257 expect(newPermissions.mintMode).to.be.true;258 expect(newPermissions.access).to.be.equal('AllowList');259260 const ownerBalanceBefore = await ethBalanceViaSub(api, owner);261 const sponsorBalanceBefore = await ethBalanceViaSub(api, sponsor);262263 nextTokenId = await collectionEvm.methods.nextTokenId().call({from: user});247 expect(nextTokenId).to.be.equal('1');264 expect(nextTokenId).to.be.equal('1');248 await expect(userContract.methods.mintWithTokenURI(265 result = await collectionEvm.methods.mintWithTokenURI(249 user,266 user,250 nextTokenId,267 nextTokenId,251 'Test URI',268 'Test URI',252 ).call()).to.be.rejectedWith('PublicMintingNotAllowed');269 ).send({from: user});253 254 // TODO: add this methods to eth255 // {256 // const tx = api.tx.unique.setPublicAccessMode(collectionId, 'AllowList');257 // const events = await submitTransactionAsync(owner, tx);258 // const result = getCreateCollectionResult(events);259 // expect(result.success).to.be.true;260 // }261 // {262 // const tx = api.tx.unique.addToAllowList(collectionId, {Ethereum: userEth});263 // const events = await submitTransactionAsync(owner, tx);270 const events = normalizeEvents(result.events);264 // const result = getCreateCollectionResult(events);265 // expect(result.success).to.be.true;271 events[0].address = events[0].address.toLocaleLowerCase();266 // }267 // {268 // const tx = api.tx.unique.setMintPermission(collectionId, true);269 // const events = await submitTransactionAsync(owner, tx);270 // const result = getCreateCollectionResult(events);271 // expect(result.success).to.be.true;272 // }273272274 // const [alicesBalanceBefore] = await getBalance(api, [alicesPublicKey]);273 expect(events).to.be.deep.equal([274 {275 address: collectionIdAddress.toLocaleLowerCase(),276 event: 'Transfer',277 args: {278 from: '0x0000000000000000000000000000000000000000',279 to: user,280 tokenId: nextTokenId,281 },282 },283 ]);275284276 {285 expect(await collectionEvm.methods.tokenURI(nextTokenId).call()).to.be.equal('Test URI');277 const nextTokenId = await userContract.methods.nextTokenId().call();278 expect(nextTokenId).to.be.equal('1');279 const result = await userContract.methods.mintWithTokenURI(280 user,281 nextTokenId,282 'Test URI',283 ).send();284 const events = normalizeEvents(result.events);285286286 expect(events).to.be.deep.equal([287 const ownerBalanceAfter = await ethBalanceViaSub(api, owner);287 {288 collectionIdAddress,289 event: 'Transfer',290 args: {288 expect(ownerBalanceAfter).to.be.eq(ownerBalanceBefore);291 from: '0x0000000000000000000000000000000000000000',292 to: user,293 tokenId: nextTokenId,289 const sponsorBalanceAfter = await ethBalanceViaSub(api, sponsor);294 },295 },296 ]);297298 expect(await userContract.methods.tokenURI(nextTokenId).call()).to.be.equal('Test URI');290 expect(sponsorBalanceAfter < sponsorBalanceBefore).to.be.true;299 }300 });291 });301292302 //TODO: CORE-302 add eth methods293 itWeb3('Check that transaction via EVM spend money from sponsor address', async ({api, web3, privateKeyWrapper}) => {303 itWeb3.skip('Check that transaction via EVM spend money from substrate address', async ({api, web3, privateKeyWrapper}) => {304 const owner = privateKeyWrapper('//Alice');294 const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);305 const user = privateKeyWrapper(`//User/${Date.now()}`);295 const collectionHelpers = evmCollectionHelpers(web3, owner);296 let result = await collectionHelpers.methods.createNonfungibleCollection('Sponsor collection', '1', '1').send();297 const {collectionIdAddress, collectionId} = await getCollectionAddressFromResult(api, result);306 const userEth = subToEth(user.address);298 const sponsor = await createEthAccountWithBalance(api, web3, privateKeyWrapper);307 const collectionId = await createCollectionExpectSuccess();299 const collectionEvm = evmCollection(web3, owner, collectionIdAddress);300 result = await collectionEvm.methods.setCollectionSponsor(sponsor).send();308 await addCollectionAdminExpectSuccess(owner, collectionId, {Ethereum: userEth});301 let collectionSub = (await getDetailedCollectionInfo(api, collectionId))!;302 const ss58Format = (api.registry.getChainProperties())!.toJSON().ss58Format;303 expect(collectionSub.sponsorship.isUnconfirmed).to.be.true;304 expect(collectionSub.sponsorship.asUnconfirmed.toHuman()).to.be.eq(evmToAddress(sponsor, Number(ss58Format)));305 await expect(collectionEvm.methods.confirmCollectionSponsorship().call()).to.be.rejectedWith('Caller is not set as sponsor');309 await transferBalanceTo(api, owner, user.address);306 const sponsorCollection = evmCollection(web3, sponsor, collectionIdAddress);307 await sponsorCollection.methods.confirmCollectionSponsorship().send();308 collectionSub = (await getDetailedCollectionInfo(api, collectionId))!;309 expect(collectionSub.sponsorship.isConfirmed).to.be.true;310 expect(collectionSub.sponsorship.asConfirmed.toHuman()).to.be.eq(evmToAddress(sponsor, Number(ss58Format)));310311312 const user = createEthAccount(web3);313 await collectionEvm.methods.addCollectionAdmin(user).send();314 315 const ownerBalanceBefore = await ethBalanceViaSub(api, owner);316 const sponsorBalanceBefore = await ethBalanceViaSub(api, sponsor);317 318 const userCollectionEvm = evmCollection(web3, user, collectionIdAddress);319 const nextTokenId = await userCollectionEvm.methods.nextTokenId().call();320 expect(nextTokenId).to.be.equal('1');321 result = await userCollectionEvm.methods.mintWithTokenURI(322 user,323 nextTokenId,324 'Test URI',325 ).send();326327 const events = normalizeEvents(result.events);311 const address = collectionIdToAddress(collectionId);328 const address = collectionIdToAddress(collectionId);312 const contract = new web3.eth.Contract(nonFungibleAbi as any, address, {from: userEth, ...GAS_ARGS});313329314 const [userBalanceBefore] = await getBalance(api, [user.address]);330 expect(events).to.be.deep.equal([315316 {331 {317 const nextTokenId = await contract.methods.nextTokenId().call();332 address,318 expect(nextTokenId).to.be.equal('1');333 event: 'Transfer',319 await executeEthTxOnSub(web3, api, user, contract, m => m.mintWithTokenURI(334 args: {335 from: '0x0000000000000000000000000000000000000000',320 userEth,336 to: user,321 nextTokenId,337 tokenId: nextTokenId,322 'Test URI',338 },323 ));339 },324340 ]);325 expect(await contract.methods.tokenURI(nextTokenId).call()).to.be.equal('Test URI');341 expect(await userCollectionEvm.methods.tokenURI(nextTokenId).call()).to.be.equal('Test URI');326 }342 327343 const ownerBalanceAfter = await ethBalanceViaSub(api, owner);344 expect(ownerBalanceAfter).to.be.eq(ownerBalanceBefore);328 const [userBalanceAfter] = await getBalance(api, [user.address]);345 const sponsorBalanceAfter = await ethBalanceViaSub(api, sponsor);329 expect(userBalanceAfter < userBalanceBefore).to.be.true;346 expect(sponsorBalanceAfter < sponsorBalanceBefore).to.be.true;330 });347 });331});348});332349tests/src/eth/createCollection.test.tsdiffbeforeafterboth28} from './util/helpers';28} from './util/helpers';292930describe('Create collection from EVM', () => {30describe('Create collection from EVM', () => {31 itWeb3('Create collection', async ({api, web3}) => {31 // itWeb3('Create collection', async ({api, web3, privateKeyWrapper}) => {32 const owner = await createEthAccountWithBalance(api, web3);32 // const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);33 const helper = evmCollectionHelpers(web3, owner);33 // const collectionHelper = evmCollectionHelpers(web3, owner);34 const collectionName = 'CollectionEVM';34 // const collectionName = 'CollectionEVM';35 const description = 'Some description';35 // const description = 'Some description';36 const tokenPrefix = 'token prefix';36 // const tokenPrefix = 'token prefix';37 37 38 const collectionCountBefore = await getCreatedCollectionCount(api);38 // const collectionCountBefore = await getCreatedCollectionCount(api);39 const result = await helper.methods39 // const result = await collectionHelper.methods40 .createNonfungibleCollection(collectionName, description, tokenPrefix)40 // .createNonfungibleCollection(collectionName, description, tokenPrefix)41 .send();41 // .send();42 const collectionCountAfter = await getCreatedCollectionCount(api);42 // const collectionCountAfter = await getCreatedCollectionCount(api);43 43 44 const {collectionId, collection} = await getCollectionAddressFromResult(api, result);44 // const {collectionId, collection} = await getCollectionAddressFromResult(api, result);45 expect(collectionCountAfter - collectionCountBefore).to.be.eq(1);45 // expect(collectionCountAfter - collectionCountBefore).to.be.eq(1);46 expect(collectionId).to.be.eq(collectionCountAfter);46 // expect(collectionId).to.be.eq(collectionCountAfter);47 expect(collection.name.map(v => String.fromCharCode(v.toNumber())).join('')).to.be.eq(collectionName);47 // expect(collection.name.map(v => String.fromCharCode(v.toNumber())).join('')).to.be.eq(collectionName);48 expect(collection.description.map(v => String.fromCharCode(v.toNumber())).join('')).to.be.eq(description);48 // expect(collection.description.map(v => String.fromCharCode(v.toNumber())).join('')).to.be.eq(description);49 expect(collection.tokenPrefix.toHuman()).to.be.eq(tokenPrefix);49 // expect(collection.tokenPrefix.toHuman()).to.be.eq(tokenPrefix);50 });50 // });515152 itWeb3('Check collection address exist', async ({api, web3}) => {52 // itWeb3('Check collection address exist', async ({api, web3, privateKeyWrapper}) => {53 const owner = await createEthAccountWithBalance(api, web3);53 // const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);54 const collectionHelpers = evmCollectionHelpers(web3, owner);54 // const collectionHelpers = evmCollectionHelpers(web3, owner);55 55 56 const expectedCollectionId = await getCreatedCollectionCount(api) + 1;56 // const expectedCollectionId = await getCreatedCollectionCount(api) + 1;57 const expectedCollectionAddress = collectionIdToAddress(expectedCollectionId);57 // const expectedCollectionAddress = collectionIdToAddress(expectedCollectionId);58 expect(await collectionHelpers.methods58 // expect(await collectionHelpers.methods59 .isCollectionExist(expectedCollectionAddress)59 // .isCollectionExist(expectedCollectionAddress)60 .call()).to.be.false;60 // .call()).to.be.false;616162 await collectionHelpers.methods62 // await collectionHelpers.methods63 .createNonfungibleCollection('A', 'A', 'A')63 // .createNonfungibleCollection('A', 'A', 'A')64 .send();64 // .send();65 65 66 expect(await collectionHelpers.methods66 // expect(await collectionHelpers.methods67 .isCollectionExist(expectedCollectionAddress)67 // .isCollectionExist(expectedCollectionAddress)68 .call()).to.be.true;68 // .call()).to.be.true;69 });69 // });70 70 71 itWeb3('Set sponsorship', async ({api, web3}) => {71 itWeb3('Set sponsorship', async ({api, web3, privateKeyWrapper}) => {72 const owner = await createEthAccountWithBalance(api, web3);72 const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);73 const collectionHelpers = evmCollectionHelpers(web3, owner);73 const collectionHelpers = evmCollectionHelpers(web3, owner);74 let result = await collectionHelpers.methods.createNonfungibleCollection('Sponsor collection', '1', '1').send();74 let result = await collectionHelpers.methods.createNonfungibleCollection('Sponsor collection', '1', '1').send();75 const {collectionIdAddress, collectionId} = await getCollectionAddressFromResult(api, result);75 const {collectionIdAddress, collectionId} = await getCollectionAddressFromResult(api, result);76 const sponsor = await createEthAccountWithBalance(api, web3);76 const sponsor = await createEthAccountWithBalance(api, web3, privateKeyWrapper);77 const collectionEvm = evmCollection(web3, owner, collectionIdAddress);77 const collectionEvm = evmCollection(web3, owner, collectionIdAddress);78 result = await collectionEvm.methods.ethSetSponsor(sponsor).send();78 result = await collectionEvm.methods.setCollectionSponsor(sponsor).send();79 let collectionSub = (await getDetailedCollectionInfo(api, collectionId))!;79 let collectionSub = (await getDetailedCollectionInfo(api, collectionId))!;80 expect(collectionSub.sponsorship.isUnconfirmed).to.be.true;80 expect(collectionSub.sponsorship.isUnconfirmed).to.be.true;81 const ss58Format = (api.registry.getChainProperties())!.toJSON().ss58Format;81 expect(collectionSub.sponsorship.asUnconfirmed.toHuman()).to.be.eq(evmToAddress(sponsor));82 expect(collectionSub.sponsorship.asUnconfirmed.toHuman()).to.be.eq(evmToAddress(sponsor, Number(ss58Format)));82 await expect(collectionEvm.methods.ethConfirmSponsorship().call()).to.be.rejectedWith('Caller is not set as sponsor');83 await expect(collectionEvm.methods.confirmCollectionSponsorship().call()).to.be.rejectedWith('Caller is not set as sponsor');83 const sponsorCollection = evmCollection(web3, sponsor, collectionIdAddress);84 const sponsorCollection = evmCollection(web3, sponsor, collectionIdAddress);84 await sponsorCollection.methods.ethConfirmSponsorship().send();85 await sponsorCollection.methods.confirmCollectionSponsorship().send();85 collectionSub = (await getDetailedCollectionInfo(api, collectionId))!;86 collectionSub = (await getDetailedCollectionInfo(api, collectionId))!;86 expect(collectionSub.sponsorship.isConfirmed).to.be.true;87 expect(collectionSub.sponsorship.isConfirmed).to.be.true;87 expect(collectionSub.sponsorship.asConfirmed.toHuman()).to.be.eq(evmToAddress(sponsor));88 expect(collectionSub.sponsorship.asConfirmed.toHuman()).to.be.eq(evmToAddress(sponsor, Number(ss58Format)));88 });89 });899090 itWeb3('Set limits', async ({api, web3}) => {91 itWeb3('Set limits', async ({api, web3, privateKeyWrapper}) => {91 const owner = await createEthAccountWithBalance(api, web3);92 const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);92 const collectionHelpers = evmCollectionHelpers(web3, owner);93 const collectionHelpers = evmCollectionHelpers(web3, owner);93 const result = await collectionHelpers.methods.createNonfungibleCollection('Const collection', '5', '5').send();94 const result = await collectionHelpers.methods.createNonfungibleCollection('Const collection', '5', '5').send();94 const {collectionIdAddress, collectionId} = await getCollectionAddressFromResult(api, result);95 const {collectionIdAddress, collectionId} = await getCollectionAddressFromResult(api, result);105 };106 };106107107 const collectionEvm = evmCollection(web3, owner, collectionIdAddress);108 const collectionEvm = evmCollection(web3, owner, collectionIdAddress);108 await collectionEvm.methods['setLimit(string,uint32)']('accountTokenOwnershipLimit', limits.accountTokenOwnershipLimit).send();109 await collectionEvm.methods['setCollectionLimit(string,uint32)']('accountTokenOwnershipLimit', limits.accountTokenOwnershipLimit).send();109 await collectionEvm.methods['setLimit(string,uint32)']('sponsoredDataSize', limits.sponsoredDataSize).send();110 await collectionEvm.methods['setCollectionLimit(string,uint32)']('sponsoredDataSize', limits.sponsoredDataSize).send();110 await collectionEvm.methods['setLimit(string,uint32)']('sponsoredDataRateLimit', limits.sponsoredDataRateLimit).send();111 await collectionEvm.methods['setCollectionLimit(string,uint32)']('sponsoredDataRateLimit', limits.sponsoredDataRateLimit).send();111 await collectionEvm.methods['setLimit(string,uint32)']('tokenLimit', limits.tokenLimit).send();112 await collectionEvm.methods['setCollectionLimit(string,uint32)']('tokenLimit', limits.tokenLimit).send();112 await collectionEvm.methods['setLimit(string,uint32)']('sponsorTransferTimeout', limits.sponsorTransferTimeout).send();113 await collectionEvm.methods['setCollectionLimit(string,uint32)']('sponsorTransferTimeout', limits.sponsorTransferTimeout).send();113 await collectionEvm.methods['setLimit(string,uint32)']('sponsorApproveTimeout', limits.sponsorApproveTimeout).send();114 await collectionEvm.methods['setCollectionLimit(string,uint32)']('sponsorApproveTimeout', limits.sponsorApproveTimeout).send();114 await collectionEvm.methods['setLimit(string,bool)']('ownerCanTransfer', limits.ownerCanTransfer).send();115 await collectionEvm.methods['setCollectionLimit(string,bool)']('ownerCanTransfer', limits.ownerCanTransfer).send();115 await collectionEvm.methods['setLimit(string,bool)']('ownerCanDestroy', limits.ownerCanDestroy).send();116 await collectionEvm.methods['setCollectionLimit(string,bool)']('ownerCanDestroy', limits.ownerCanDestroy).send();116 await collectionEvm.methods['setLimit(string,bool)']('transfersEnabled', limits.transfersEnabled).send();117 await collectionEvm.methods['setCollectionLimit(string,bool)']('transfersEnabled', limits.transfersEnabled).send();117 118 118 const collectionSub = (await getDetailedCollectionInfo(api, collectionId))!;119 const collectionSub = (await getDetailedCollectionInfo(api, collectionId))!;119 expect(collectionSub.limits.accountTokenOwnershipLimit.unwrap().toNumber()).to.be.eq(limits.accountTokenOwnershipLimit);120 expect(collectionSub.limits.accountTokenOwnershipLimit.unwrap().toNumber()).to.be.eq(limits.accountTokenOwnershipLimit);127 expect(collectionSub.limits.transfersEnabled.toHuman()).to.be.eq(limits.transfersEnabled);128 expect(collectionSub.limits.transfersEnabled.toHuman()).to.be.eq(limits.transfersEnabled);128 });129 });129130130 itWeb3('Collection address exist', async ({api, web3}) => {131 itWeb3('Collection address exist', async ({api, web3, privateKeyWrapper}) => {131 const owner = await createEthAccountWithBalance(api, web3);132 const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);132 const collectionAddressForNonexistentCollection = '0x17C4E6453CC49AAAAEACA894E6D9683E00112233';133 const collectionAddressForNonexistentCollection = '0x17C4E6453CC49AAAAEACA894E6D9683E00112233';133 const collectionHelpers = evmCollectionHelpers(web3, owner);134 const collectionHelpers = evmCollectionHelpers(web3, owner);134 expect(await collectionHelpers.methods135 expect(await collectionHelpers.methods144});145});145146146describe('(!negative tests!) Create collection from EVM', () => {147describe('(!negative tests!) Create collection from EVM', () => {147 itWeb3('(!negative test!) Create collection (bad lengths)', async ({api, web3}) => {148 itWeb3('(!negative test!) Create collection (bad lengths)', async ({api, web3, privateKeyWrapper}) => {148 const owner = await createEthAccountWithBalance(api, web3);149 const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);149 const helper = evmCollectionHelpers(web3, owner);150 const helper = evmCollectionHelpers(web3, owner);150 {151 {151 const MAX_NAME_LENGHT = 64;152 const MAX_NAME_LENGHT = 64;190 .call()).to.be.rejectedWith('NotSufficientFounds');191 .call()).to.be.rejectedWith('NotSufficientFounds');191 });192 });192193193 itWeb3('(!negative test!) Check owner', async ({api, web3}) => {194 itWeb3('(!negative test!) Check owner', async ({api, web3, privateKeyWrapper}) => {194 const owner = await createEthAccountWithBalance(api, web3);195 const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);195 const notOwner = await createEthAccount(web3);196 const notOwner = await createEthAccount(web3);196 const collectionHelpers = evmCollectionHelpers(web3, owner);197 const collectionHelpers = evmCollectionHelpers(web3, owner);197 const result = await collectionHelpers.methods.createNonfungibleCollection('A', 'A', 'A').send();198 const result = await collectionHelpers.methods.createNonfungibleCollection('A', 'A', 'A').send();198 const {collectionIdAddress} = await getCollectionAddressFromResult(api, result);199 const {collectionIdAddress} = await getCollectionAddressFromResult(api, result);199 const contractEvmFromNotOwner = evmCollection(web3, notOwner, collectionIdAddress);200 const contractEvmFromNotOwner = evmCollection(web3, notOwner, collectionIdAddress);200 const EXPECTED_ERROR = 'NoPermission';201 const EXPECTED_ERROR = 'NoPermission';201 {202 {202 const sponsor = await createEthAccountWithBalance(api, web3);203 const sponsor = await createEthAccountWithBalance(api, web3, privateKeyWrapper);203 await expect(contractEvmFromNotOwner.methods204 await expect(contractEvmFromNotOwner.methods204 .ethSetSponsor(sponsor)205 .setCollectionSponsor(sponsor)205 .call()).to.be.rejectedWith(EXPECTED_ERROR);206 .call()).to.be.rejectedWith(EXPECTED_ERROR);206 207 207 const sponsorCollection = evmCollection(web3, sponsor, collectionIdAddress);208 const sponsorCollection = evmCollection(web3, sponsor, collectionIdAddress);208 await expect(sponsorCollection.methods209 await expect(sponsorCollection.methods209 .ethConfirmSponsorship()210 .confirmCollectionSponsorship()210 .call()).to.be.rejectedWith('Caller is not set as sponsor');211 .call()).to.be.rejectedWith('Caller is not set as sponsor');211 }212 }212 {213 {213 await expect(contractEvmFromNotOwner.methods214 await expect(contractEvmFromNotOwner.methods214 .setLimit('account_token_ownership_limit', '1000')215 .setCollectionLimit('account_token_ownership_limit', '1000')215 .call()).to.be.rejectedWith(EXPECTED_ERROR);216 .call()).to.be.rejectedWith(EXPECTED_ERROR);216 }217 }217 });218 });218219219 itWeb3('(!negative test!) Set limits', async ({api, web3}) => {220 itWeb3('(!negative test!) Set limits', async ({api, web3, privateKeyWrapper}) => {220 const owner = await createEthAccountWithBalance(api, web3);221 const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);221 const collectionHelpers = evmCollectionHelpers(web3, owner);222 const collectionHelpers = evmCollectionHelpers(web3, owner);222 const result = await collectionHelpers.methods.createNonfungibleCollection('Schema collection', 'A', 'A').send();223 const result = await collectionHelpers.methods.createNonfungibleCollection('Schema collection', 'A', 'A').send();223 const {collectionIdAddress} = await getCollectionAddressFromResult(api, result);224 const {collectionIdAddress} = await getCollectionAddressFromResult(api, result);224 const collectionEvm = evmCollection(web3, owner, collectionIdAddress);225 const collectionEvm = evmCollection(web3, owner, collectionIdAddress);225 await expect(collectionEvm.methods226 await expect(collectionEvm.methods226 .setLimit('badLimit', 'true')227 .setCollectionLimit('badLimit', 'true')227 .call()).to.be.rejectedWith('Unknown boolean limit "badLimit"');228 .call()).to.be.rejectedWith('Unknown boolean limit "badLimit"');228 });229 });229});230});tests/src/eth/crossTransfer.test.tsdiffbeforeafterboth48 });48 });49 const alice = privateKeyWrapper('//Alice');49 const alice = privateKeyWrapper('//Alice');50 const bob = privateKeyWrapper('//Bob');50 const bob = privateKeyWrapper('//Bob');51 const bobProxy = await createEthAccountWithBalance(api, web3);51 const bobProxy = await createEthAccountWithBalance(api, web3, privateKeyWrapper);52 const aliceProxy = await createEthAccountWithBalance(api, web3);52 const aliceProxy = await createEthAccountWithBalance(api, web3, privateKeyWrapper);535354 await createFungibleItemExpectSuccess(alice, collection, {Value: 200n}, alice.address);54 await createFungibleItemExpectSuccess(alice, collection, {Value: 200n}, alice.address);55 await transferExpectSuccess(collection, 0, alice, {Ethereum: aliceProxy} , 200, 'Fungible');55 await transferExpectSuccess(collection, 0, alice, {Ethereum: aliceProxy} , 200, 'Fungible');85 const alice = privateKeyWrapper('//Alice');85 const alice = privateKeyWrapper('//Alice');86 const bob = privateKeyWrapper('//Bob');86 const bob = privateKeyWrapper('//Bob');87 const charlie = privateKeyWrapper('//Charlie');87 const charlie = privateKeyWrapper('//Charlie');88 const bobProxy = await createEthAccountWithBalance(api, web3);88 const bobProxy = await createEthAccountWithBalance(api, web3, privateKeyWrapper);89 const aliceProxy = await createEthAccountWithBalance(api, web3);89 const aliceProxy = await createEthAccountWithBalance(api, web3, privateKeyWrapper);90 const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Substrate: alice.address});90 const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Substrate: alice.address});91 await transferExpectSuccess(collection, tokenId, alice, {Ethereum: aliceProxy} , 1, 'NFT');91 await transferExpectSuccess(collection, tokenId, alice, {Ethereum: aliceProxy} , 1, 'NFT');92 const address = collectionIdToAddress(collection);92 const address = collectionIdToAddress(collection);tests/src/eth/fungible.test.tsdiffbeforeafterboth27 });27 });28 const alice = privateKeyWrapper('//Alice');28 const alice = privateKeyWrapper('//Alice');292930 const caller = await createEthAccountWithBalance(api, web3);30 const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper);313132 await createFungibleItemExpectSuccess(alice, collection, {Value: 200n}, {Substrate: alice.address});32 await createFungibleItemExpectSuccess(alice, collection, {Value: 200n}, {Substrate: alice.address});333345 });45 });46 const alice = privateKeyWrapper('//Alice');46 const alice = privateKeyWrapper('//Alice');474748 const caller = await createEthAccountWithBalance(api, web3);48 const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper);494950 await createFungibleItemExpectSuccess(alice, collection, {Value: 200n}, {Ethereum: caller});50 await createFungibleItemExpectSuccess(alice, collection, {Value: 200n}, {Ethereum: caller});515165 });65 });66 const alice = privateKeyWrapper('//Alice');66 const alice = privateKeyWrapper('//Alice');676768 const owner = await createEthAccountWithBalance(api, web3);68 const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);696970 await createFungibleItemExpectSuccess(alice, collection, {Value: 200n}, {Ethereum: owner});70 await createFungibleItemExpectSuccess(alice, collection, {Value: 200n}, {Ethereum: owner});7171208 });208 });209 const alice = privateKeyWrapper('//Alice');209 const alice = privateKeyWrapper('//Alice');210210211 const owner = await createEthAccountWithBalance(api, web3);211 const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);212 const spender = createEthAccount(web3);212 const spender = createEthAccount(web3);213213214 await createFungibleItemExpectSuccess(alice, collection, {Value: 200n}, {Ethereum: owner});214 await createFungibleItemExpectSuccess(alice, collection, {Value: 200n}, {Ethereum: owner});226 });226 });227 const alice = privateKeyWrapper('//Alice');227 const alice = privateKeyWrapper('//Alice');228228229 const owner = await createEthAccountWithBalance(api, web3);229 const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);230 const spender = await createEthAccountWithBalance(api, web3);230 const spender = await createEthAccountWithBalance(api, web3, privateKeyWrapper);231231232 await createFungibleItemExpectSuccess(alice, collection, {Value: 200n}, {Ethereum: owner});232 await createFungibleItemExpectSuccess(alice, collection, {Value: 200n}, {Ethereum: owner});233233246 });246 });247 const alice = privateKeyWrapper('//Alice');247 const alice = privateKeyWrapper('//Alice');248248249 const owner = await createEthAccountWithBalance(api, web3);249 const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);250 const receiver = createEthAccount(web3);250 const receiver = createEthAccount(web3);251251252 await createFungibleItemExpectSuccess(alice, collection, {Value: 200n}, {Ethereum: owner});252 await createFungibleItemExpectSuccess(alice, collection, {Value: 200n}, {Ethereum: owner});tests/src/eth/helpersSmoke.test.tsdiffbeforeafterboth18import {createEthAccountWithBalance, deployFlipper, itWeb3, contractHelpers} from './util/helpers';18import {createEthAccountWithBalance, deployFlipper, itWeb3, contractHelpers} from './util/helpers';191920describe('Helpers sanity check', () => {20describe('Helpers sanity check', () => {21 itWeb3('Contract owner is recorded', async ({api, web3}) => {21 itWeb3('Contract owner is recorded', async ({api, web3, privateKeyWrapper}) => {22 const owner = await createEthAccountWithBalance(api, web3);22 const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);232324 const flipper = await deployFlipper(web3, owner);24 const flipper = await deployFlipper(web3, owner);252526 expect(await contractHelpers(web3, owner).methods.contractOwner(flipper.options.address).call()).to.be.equal(owner);26 expect(await contractHelpers(web3, owner).methods.contractOwner(flipper.options.address).call()).to.be.equal(owner);27 });27 });282829 itWeb3('Flipper is working', async ({api, web3}) => {29 itWeb3('Flipper is working', async ({api, web3, privateKeyWrapper}) => {30 const owner = await createEthAccountWithBalance(api, web3);30 const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);31 const flipper = await deployFlipper(web3, owner);31 const flipper = await deployFlipper(web3, owner);323233 expect(await flipper.methods.getValue().call()).to.be.false;33 expect(await flipper.methods.getValue().call()).to.be.false;tests/src/eth/marketplace/marketplace.test.tsdiffbeforeafterboth39describe('Matcher contract usage', () => {39describe('Matcher contract usage', () => {40 itWeb3('With UNQ', async ({api, web3, privateKeyWrapper}) => {40 itWeb3('With UNQ', async ({api, web3, privateKeyWrapper}) => {41 const alice = privateKeyWrapper('//Alice');41 const alice = privateKeyWrapper('//Alice');42 const matcherOwner = await createEthAccountWithBalance(api, web3);42 const matcherOwner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);43 const matcherContract = new web3.eth.Contract(JSON.parse((await readFile(`${__dirname}/MarketPlace.abi`)).toString()), undefined, {43 const matcherContract = new web3.eth.Contract(JSON.parse((await readFile(`${__dirname}/MarketPlace.abi`)).toString()), undefined, {44 from: matcherOwner,44 from: matcherOwner,45 ...GAS_ARGS,45 ...GAS_ARGS,100100101 itWeb3('With escrow', async ({api, web3, privateKeyWrapper}) => {101 itWeb3('With escrow', async ({api, web3, privateKeyWrapper}) => {102 const alice = privateKeyWrapper('//Alice');102 const alice = privateKeyWrapper('//Alice');103 const matcherOwner = await createEthAccountWithBalance(api, web3);103 const matcherOwner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);104 const escrow = await createEthAccountWithBalance(api, web3);104 const escrow = await createEthAccountWithBalance(api, web3, privateKeyWrapper);105 const matcherContract = new web3.eth.Contract(JSON.parse((await readFile(`${__dirname}/MarketPlace.abi`)).toString()), undefined, {105 const matcherContract = new web3.eth.Contract(JSON.parse((await readFile(`${__dirname}/MarketPlace.abi`)).toString()), undefined, {106 from: matcherOwner,106 from: matcherOwner,107 ...GAS_ARGS,107 ...GAS_ARGS,171171172 itWeb3('Sell tokens from substrate user via EVM contract', async ({api, web3, privateKeyWrapper}) => {172 itWeb3('Sell tokens from substrate user via EVM contract', async ({api, web3, privateKeyWrapper}) => {173 const alice = privateKeyWrapper('//Alice');173 const alice = privateKeyWrapper('//Alice');174 const matcherOwner = await createEthAccountWithBalance(api, web3);174 const matcherOwner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);175 const matcherContract = new web3.eth.Contract(JSON.parse((await readFile(`${__dirname}/MarketPlace.abi`)).toString()), undefined, {175 const matcherContract = new web3.eth.Contract(JSON.parse((await readFile(`${__dirname}/MarketPlace.abi`)).toString()), undefined, {176 from: matcherOwner,176 from: matcherOwner,177 ...GAS_ARGS,177 ...GAS_ARGS,tests/src/eth/migration.test.tsdiffbeforeafterboth54 ];54 ];555556 const alice = privateKeyWrapper('//Alice');56 const alice = privateKeyWrapper('//Alice');57 const caller = await createEthAccountWithBalance(api, web3);57 const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper);585859 await submitTransactionAsync(alice, api.tx.sudo.sudo(api.tx.evmMigration.begin(ADDRESS) as any));59 await submitTransactionAsync(alice, api.tx.sudo.sudo(api.tx.evmMigration.begin(ADDRESS) as any));60 await submitTransactionAsync(alice, api.tx.sudo.sudo(api.tx.evmMigration.setData(ADDRESS, DATA as any) as any));60 await submitTransactionAsync(alice, api.tx.sudo.sudo(api.tx.evmMigration.setData(ADDRESS, DATA as any) as any));tests/src/eth/nonFungible.test.tsdiffbeforeafterboth26 mode: {type: 'NFT'},26 mode: {type: 'NFT'},27 });27 });28 const alice = privateKeyWrapper('//Alice');28 const alice = privateKeyWrapper('//Alice');29 const caller = await createEthAccountWithBalance(api, web3);29 const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper);303031 await createItemExpectSuccess(alice, collection, 'NFT', {Substrate: alice.address});31 await createItemExpectSuccess(alice, collection, 'NFT', {Substrate: alice.address});323243 });43 });44 const alice = privateKeyWrapper('//Alice');44 const alice = privateKeyWrapper('//Alice');454546 const caller = await createEthAccountWithBalance(api, web3);46 const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper);47 await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum:caller});47 await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum:caller});48 await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: caller});48 await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: caller});49 await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: caller});49 await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: caller});61 });61 });62 const alice = privateKeyWrapper('//Alice');62 const alice = privateKeyWrapper('//Alice');636364 const caller = await createEthAccountWithBalance(api, web3);64 const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper);65 const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: caller});65 const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: caller});666667 const address = collectionIdToAddress(collection);67 const address = collectionIdToAddress(collection);73});73});747475describe('NFT: Plain calls', () => {75describe('NFT: Plain calls', () => {76 itWeb3('Can perform mint()', async ({web3, api}) => {76 itWeb3('Can perform mint()', async ({web3, api, privateKeyWrapper}) => {77 const owner = await createEthAccountWithBalance(api, web3);77 const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);78 const helper = evmCollectionHelpers(web3, owner);78 const helper = evmCollectionHelpers(web3, owner);79 let result = await helper.methods.createNonfungibleCollection('Mint collection', '6', '6').send();79 let result = await helper.methods.createNonfungibleCollection('Mint collection', '6', '6').send();80 const {collectionIdAddress, collectionId} = await getCollectionAddressFromResult(api, result);80 const {collectionIdAddress, collectionId} = await getCollectionAddressFromResult(api, result);119 });119 });120 const alice = privateKeyWrapper('//Alice');120 const alice = privateKeyWrapper('//Alice');121121122 const caller = await createEthAccountWithBalance(api, web3);122 const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper);123 const changeAdminTx = api.tx.unique.addCollectionAdmin(collection, {Ethereum: caller});123 const changeAdminTx = api.tx.unique.addCollectionAdmin(collection, {Ethereum: caller});124 await submitTransactionAsync(alice, changeAdminTx);124 await submitTransactionAsync(alice, changeAdminTx);125 const receiver = createEthAccount(web3);125 const receiver = createEthAccount(web3);182 });182 });183 const alice = privateKeyWrapper('//Alice');183 const alice = privateKeyWrapper('//Alice');184184185 const owner = await createEthAccountWithBalance(api, web3);185 const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);186186187 const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: owner});187 const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: owner});188188341 });341 });342 const alice = privateKeyWrapper('//Alice');342 const alice = privateKeyWrapper('//Alice');343343344 const owner = await createEthAccountWithBalance(api, web3);344 const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);345 const spender = createEthAccount(web3);345 const spender = createEthAccount(web3);346346347 const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: owner});347 const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: owner});359 });359 });360 const alice = privateKeyWrapper('//Alice');360 const alice = privateKeyWrapper('//Alice');361361362 const owner = await createEthAccountWithBalance(api, web3);362 const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);363 const spender = await createEthAccountWithBalance(api, web3);363 const spender = await createEthAccountWithBalance(api, web3, privateKeyWrapper);364364365 const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: owner});365 const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: owner});366366379 });379 });380 const alice = privateKeyWrapper('//Alice');380 const alice = privateKeyWrapper('//Alice');381381382 const owner = await createEthAccountWithBalance(api, web3);382 const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);383 const receiver = createEthAccount(web3);383 const receiver = createEthAccount(web3);384384385 const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: owner});385 const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: owner});541});541});542542543describe('Common metadata', () => {543describe('Common metadata', () => {544 itWeb3('Returns collection name', async ({api, web3}) => {544 itWeb3('Returns collection name', async ({api, web3, privateKeyWrapper}) => {545 const collection = await createCollectionExpectSuccess({545 const collection = await createCollectionExpectSuccess({546 name: 'token name',546 name: 'token name',547 mode: {type: 'NFT'},547 mode: {type: 'NFT'},548 });548 });549 const caller = await createEthAccountWithBalance(api, web3);549 const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper);550550551 const address = collectionIdToAddress(collection);551 const address = collectionIdToAddress(collection);552 const contract = new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS});552 const contract = new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS});555 expect(name).to.equal('token name');555 expect(name).to.equal('token name');556 });556 });557557558 itWeb3('Returns symbol name', async ({api, web3}) => {558 itWeb3('Returns symbol name', async ({api, web3, privateKeyWrapper}) => {559 const collection = await createCollectionExpectSuccess({559 const collection = await createCollectionExpectSuccess({560 tokenPrefix: 'TOK',560 tokenPrefix: 'TOK',561 mode: {type: 'NFT'},561 mode: {type: 'NFT'},562 });562 });563 const caller = await createEthAccountWithBalance(api, web3);563 const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper);564564565 const address = collectionIdToAddress(collection);565 const address = collectionIdToAddress(collection);566 const contract = new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS});566 const contract = new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS});tests/src/eth/nonFungibleAbi.jsondiffbeforeafterboth80 "name": "Transfer",80 "name": "Transfer",81 "type": "event"81 "type": "event"82 },82 },83 {84 "inputs": [85 { "internalType": "address", "name": "newAdmin", "type": "address" }86 ],87 "name": "addCollectionAdmin",88 "outputs": [],89 "stateMutability": "view",90 "type": "function"91 },92 {93 "inputs": [94 { "internalType": "address", "name": "user", "type": "address" }95 ],96 "name": "addToCollectionAllowList",97 "outputs": [],98 "stateMutability": "view",99 "type": "function"100 },83 {101 {84 "inputs": [102 "inputs": [85 { "internalType": "address", "name": "approved", "type": "address" },103 { "internalType": "address", "name": "approved", "type": "address" },125 "stateMutability": "view",143 "stateMutability": "view",126 "type": "function"144 "type": "function"127 },145 },146 {147 "inputs": [],148 "name": "confirmCollectionSponsorship",149 "outputs": [],150 "stateMutability": "nonpayable",151 "type": "function"152 },128 {153 {129 "inputs": [],154 "inputs": [],130 "name": "contractAddress",155 "name": "contractAddress",149 "stateMutability": "nonpayable",174 "stateMutability": "nonpayable",150 "type": "function"175 "type": "function"151 },176 },152 {153 "inputs": [],154 "name": "ethConfirmSponsorship",155 "outputs": [],156 "stateMutability": "nonpayable",157 "type": "function"158 },159 {160 "inputs": [161 { "internalType": "address", "name": "sponsor", "type": "address" }162 ],163 "name": "ethSetSponsor",164 "outputs": [],165 "stateMutability": "nonpayable",166 "type": "function"167 },168 {177 {169 "inputs": [],178 "inputs": [],170 "name": "finishMinting",179 "name": "finishMinting",280 "stateMutability": "view",289 "stateMutability": "view",281 "type": "function"290 "type": "function"282 },291 },292 {293 "inputs": [294 { "internalType": "address", "name": "admin", "type": "address" }295 ],296 "name": "removeCollectionAdmin",297 "outputs": [],298 "stateMutability": "view",299 "type": "function"300 },301 {302 "inputs": [303 { "internalType": "address", "name": "user", "type": "address" }304 ],305 "name": "removeFromCollectionAllowList",306 "outputs": [],307 "stateMutability": "view",308 "type": "function"309 },283 {310 {284 "inputs": [311 "inputs": [285 { "internalType": "address", "name": "from", "type": "address" },312 { "internalType": "address", "name": "from", "type": "address" },313 "stateMutability": "nonpayable",340 "stateMutability": "nonpayable",314 "type": "function"341 "type": "function"315 },342 },343 {344 "inputs": [{ "internalType": "uint8", "name": "mode", "type": "uint8" }],345 "name": "setCollectionAccess",346 "outputs": [],347 "stateMutability": "nonpayable",348 "type": "function"349 },350 {351 "inputs": [352 { "internalType": "string", "name": "limit", "type": "string" },353 { "internalType": "uint32", "name": "value", "type": "uint32" }354 ],355 "name": "setCollectionLimit",356 "outputs": [],357 "stateMutability": "nonpayable",358 "type": "function"359 },360 {361 "inputs": [362 { "internalType": "string", "name": "limit", "type": "string" },363 { "internalType": "bool", "name": "value", "type": "bool" }364 ],365 "name": "setCollectionLimit",366 "outputs": [],367 "stateMutability": "nonpayable",368 "type": "function"369 },370 {371 "inputs": [{ "internalType": "bool", "name": "mode", "type": "bool" }],372 "name": "setCollectionMintMode",373 "outputs": [],374 "stateMutability": "nonpayable",375 "type": "function"376 },377 {378 "inputs": [{ "internalType": "bool", "name": "enable", "type": "bool" }],379 "name": "setCollectionNesting",380 "outputs": [],381 "stateMutability": "nonpayable",382 "type": "function"383 },384 {385 "inputs": [386 { "internalType": "bool", "name": "enable", "type": "bool" },387 {388 "internalType": "address[]",389 "name": "collections",390 "type": "address[]"391 }392 ],393 "name": "setCollectionNesting",394 "outputs": [],395 "stateMutability": "nonpayable",396 "type": "function"397 },316 {398 {317 "inputs": [399 "inputs": [318 { "internalType": "string", "name": "key", "type": "string" },400 { "internalType": "string", "name": "key", "type": "string" },325 },407 },326 {408 {327 "inputs": [409 "inputs": [328 { "internalType": "string", "name": "limit", "type": "string" },410 { "internalType": "address", "name": "sponsor", "type": "address" }329 { "internalType": "uint32", "name": "value", "type": "uint32" }330 ],411 ],331 "name": "setLimit",412 "name": "setCollectionSponsor",332 "outputs": [],413 "outputs": [],333 "stateMutability": "nonpayable",414 "stateMutability": "nonpayable",334 "type": "function"415 "type": "function"335 },416 },336 {337 "inputs": [338 { "internalType": "string", "name": "limit", "type": "string" },339 { "internalType": "bool", "name": "value", "type": "bool" }340 ],341 "name": "setLimit",342 "outputs": [],343 "stateMutability": "nonpayable",344 "type": "function"345 },346 {417 {347 "inputs": [418 "inputs": [348 { "internalType": "uint256", "name": "tokenId", "type": "uint256" },419 { "internalType": "uint256", "name": "tokenId", "type": "uint256" },tests/src/eth/payable.test.tsdiffbeforeafterboth22import {getBalanceSingle, transferBalanceExpectSuccess} from '../substrate/get-balance';22import {getBalanceSingle, transferBalanceExpectSuccess} from '../substrate/get-balance';232324describe('EVM payable contracts', () => {24describe('EVM payable contracts', () => {25 itWeb3('Evm contract can receive wei from eth account', async ({api, web3}) => {25 itWeb3('Evm contract can receive wei from eth account', async ({api, web3, privateKeyWrapper}) => {26 const deployer = await createEthAccountWithBalance(api, web3);26 const deployer = await createEthAccountWithBalance(api, web3, privateKeyWrapper);27 const contract = await deployCollector(web3, deployer);27 const contract = await deployCollector(web3, deployer);282829 await web3.eth.sendTransaction({from: deployer, to: contract.options.address, value: '10000', ...GAS_ARGS});29 await web3.eth.sendTransaction({from: deployer, to: contract.options.address, value: '10000', ...GAS_ARGS});32 });32 });333334 itWeb3('Evm contract can receive wei from substrate account', async ({api, web3, privateKeyWrapper}) => {34 itWeb3('Evm contract can receive wei from substrate account', async ({api, web3, privateKeyWrapper}) => {35 const deployer = await createEthAccountWithBalance(api, web3);35 const deployer = await createEthAccountWithBalance(api, web3, privateKeyWrapper);36 const contract = await deployCollector(web3, deployer);36 const contract = await deployCollector(web3, deployer);37 const alice = privateKeyWrapper('//Alice');37 const alice = privateKeyWrapper('//Alice');3838626263 // We can't handle sending balance to backing storage of evm balance, because evmToAddress operation is irreversible63 // We can't handle sending balance to backing storage of evm balance, because evmToAddress operation is irreversible64 itWeb3('Wei sent directly to backing storage of evm contract balance is unaccounted', async({api, web3, privateKeyWrapper}) => {64 itWeb3('Wei sent directly to backing storage of evm contract balance is unaccounted', async({api, web3, privateKeyWrapper}) => {65 const deployer = await createEthAccountWithBalance(api, web3);65 const deployer = await createEthAccountWithBalance(api, web3, privateKeyWrapper);66 const contract = await deployCollector(web3, deployer);66 const contract = await deployCollector(web3, deployer);67 const alice = privateKeyWrapper('//Alice');67 const alice = privateKeyWrapper('//Alice');686875 const FEE_BALANCE = 1000n * UNIQUE;75 const FEE_BALANCE = 1000n * UNIQUE;76 const CONTRACT_BALANCE = 1n * UNIQUE;76 const CONTRACT_BALANCE = 1n * UNIQUE;777778 const deployer = await createEthAccountWithBalance(api, web3);78 const deployer = await createEthAccountWithBalance(api, web3, privateKeyWrapper);79 const contract = await deployCollector(web3, deployer);79 const contract = await deployCollector(web3, deployer);80 const alice = privateKeyWrapper('//Alice');80 const alice = privateKeyWrapper('//Alice');8181tests/src/eth/proxy/fungibleProxy.test.tsdiffbeforeafterboth21import {ApiPromise} from '@polkadot/api';21import {ApiPromise} from '@polkadot/api';22import Web3 from 'web3';22import Web3 from 'web3';23import {readFile} from 'fs/promises';23import {readFile} from 'fs/promises';24import {IKeyringPair} from '@polkadot/types/types';242525async function proxyWrap(api: ApiPromise, web3: Web3, wrapped: any) {26async function proxyWrap(api: ApiPromise, web3: Web3, wrapped: any, privateKeyWrapper: (account: string) => IKeyringPair) {26 // Proxy owner has no special privilegies, we don't need to reuse them27 // Proxy owner has no special privilegies, we don't need to reuse them27 const owner = await createEthAccountWithBalance(api, web3);28 const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);28 const proxyContract = new web3.eth.Contract(JSON.parse((await readFile(`${__dirname}/UniqueFungibleProxy.abi`)).toString()), undefined, {29 const proxyContract = new web3.eth.Contract(JSON.parse((await readFile(`${__dirname}/UniqueFungibleProxy.abi`)).toString()), undefined, {29 from: owner,30 from: owner,30 ...GAS_ARGS,31 ...GAS_ARGS,40 mode: {type: 'Fungible', decimalPoints: 0},41 mode: {type: 'Fungible', decimalPoints: 0},41 });42 });42 const alice = privateKeyWrapper('//Alice');43 const alice = privateKeyWrapper('//Alice');43 const caller = await createEthAccountWithBalance(api, web3);44 const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper);444545 await createFungibleItemExpectSuccess(alice, collection, {Value: 200n}, {Substrate: alice.address});46 await createFungibleItemExpectSuccess(alice, collection, {Value: 200n}, {Substrate: alice.address});464747 const address = collectionIdToAddress(collection);48 const address = collectionIdToAddress(collection);48 const contract = await proxyWrap(api, web3, new web3.eth.Contract(fungibleAbi as any, address, {from: caller, ...GAS_ARGS}));49 const contract = await proxyWrap(api, web3, new web3.eth.Contract(fungibleAbi as any, address, {from: caller, ...GAS_ARGS}), privateKeyWrapper);49 const totalSupply = await contract.methods.totalSupply().call();50 const totalSupply = await contract.methods.totalSupply().call();505151 expect(totalSupply).to.equal('200');52 expect(totalSupply).to.equal('200');57 mode: {type: 'Fungible', decimalPoints: 0},58 mode: {type: 'Fungible', decimalPoints: 0},58 });59 });59 const alice = privateKeyWrapper('//Alice');60 const alice = privateKeyWrapper('//Alice');60 const caller = await createEthAccountWithBalance(api, web3);61 const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper);616262 await createFungibleItemExpectSuccess(alice, collection, {Value: 200n}, {Ethereum: caller});63 await createFungibleItemExpectSuccess(alice, collection, {Value: 200n}, {Ethereum: caller});636464 const address = collectionIdToAddress(collection);65 const address = collectionIdToAddress(collection);65 const contract = await proxyWrap(api, web3, new web3.eth.Contract(fungibleAbi as any, address, {from: caller, ...GAS_ARGS}));66 const contract = await proxyWrap(api, web3, new web3.eth.Contract(fungibleAbi as any, address, {from: caller, ...GAS_ARGS}), privateKeyWrapper);66 const balance = await contract.methods.balanceOf(caller).call();67 const balance = await contract.methods.balanceOf(caller).call();676868 expect(balance).to.equal('200');69 expect(balance).to.equal('200');76 mode: {type: 'Fungible', decimalPoints: 0},77 mode: {type: 'Fungible', decimalPoints: 0},77 });78 });78 const alice = privateKeyWrapper('//Alice');79 const alice = privateKeyWrapper('//Alice');79 const caller = await createEthAccountWithBalance(api, web3);80 const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper);80 const spender = createEthAccount(web3);81 const spender = createEthAccount(web3);818282 const address = collectionIdToAddress(collection);83 const address = collectionIdToAddress(collection);83 const contract = await proxyWrap(api, web3, new web3.eth.Contract(fungibleAbi as any, address, {from: caller, ...GAS_ARGS}));84 const contract = await proxyWrap(api, web3, new web3.eth.Contract(fungibleAbi as any, address, {from: caller, ...GAS_ARGS}), privateKeyWrapper);84 await createFungibleItemExpectSuccess(alice, collection, {Value: 200n}, {Ethereum: contract.options.address});85 await createFungibleItemExpectSuccess(alice, collection, {Value: 200n}, {Ethereum: contract.options.address});858686 {87 {112 mode: {type: 'Fungible', decimalPoints: 0},113 mode: {type: 'Fungible', decimalPoints: 0},113 });114 });114 const alice = privateKeyWrapper('//Alice');115 const alice = privateKeyWrapper('//Alice');115 const caller = await createEthAccountWithBalance(api, web3);116 const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper);116 const owner = await createEthAccountWithBalance(api, web3);117 const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);117118118 await createFungibleItemExpectSuccess(alice, collection, {Value: 200n}, {Ethereum: owner});119 await createFungibleItemExpectSuccess(alice, collection, {Value: 200n}, {Ethereum: owner});119120120 const receiver = createEthAccount(web3);121 const receiver = createEthAccount(web3);121122122 const address = collectionIdToAddress(collection);123 const address = collectionIdToAddress(collection);123 const evmCollection = new web3.eth.Contract(fungibleAbi as any, address, {from: caller, ...GAS_ARGS});124 const evmCollection = new web3.eth.Contract(fungibleAbi as any, address, {from: caller, ...GAS_ARGS});124 const contract = await proxyWrap(api, web3, evmCollection);125 const contract = await proxyWrap(api, web3, evmCollection, privateKeyWrapper);125126126 await evmCollection.methods.approve(contract.options.address, 100).send({from: owner});127 await evmCollection.methods.approve(contract.options.address, 100).send({from: owner});127128167 mode: {type: 'Fungible', decimalPoints: 0},168 mode: {type: 'Fungible', decimalPoints: 0},168 });169 });169 const alice = privateKeyWrapper('//Alice');170 const alice = privateKeyWrapper('//Alice');170 const caller = await createEthAccountWithBalance(api, web3);171 const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper);171 const receiver = await createEthAccountWithBalance(api, web3);172 const receiver = await createEthAccountWithBalance(api, web3, privateKeyWrapper);172173173 const address = collectionIdToAddress(collection);174 const address = collectionIdToAddress(collection);174 const contract = await proxyWrap(api, web3, new web3.eth.Contract(fungibleAbi as any, address, {from: caller, ...GAS_ARGS}));175 const contract = await proxyWrap(api, web3, new web3.eth.Contract(fungibleAbi as any, address, {from: caller, ...GAS_ARGS}), privateKeyWrapper);175 await createFungibleItemExpectSuccess(alice, collection, {Value: 200n}, {Ethereum: contract.options.address});176 await createFungibleItemExpectSuccess(alice, collection, {Value: 200n}, {Ethereum: contract.options.address});176177177 {178 {tests/src/eth/proxy/nonFungibleProxy.test.tsdiffbeforeafterboth15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.161617import {createCollectionExpectSuccess, createItemExpectSuccess} from '../../util/helpers';17import {createCollectionExpectSuccess, createItemExpectSuccess} from '../../util/helpers';18import {collectionIdToAddress, createEthAccount, createEthAccountWithBalance, GAS_ARGS, itWeb3, normalizeEvents} from '../util/helpers';18import {collectionIdToAddress, createEthAccount, createEthAccountWithBalance, evmCollection, evmCollectionHelpers, GAS_ARGS, getCollectionAddressFromResult, itWeb3, normalizeEvents} from '../util/helpers';19import nonFungibleAbi from '../nonFungibleAbi.json';19import nonFungibleAbi from '../nonFungibleAbi.json';20import {expect} from 'chai';20import {expect} from 'chai';21import {submitTransactionAsync} from '../../substrate/substrate-api';21import {submitTransactionAsync} from '../../substrate/substrate-api';22import Web3 from 'web3';22import Web3 from 'web3';23import {readFile} from 'fs/promises';23import {readFile} from 'fs/promises';24import {ApiPromise} from '@polkadot/api';24import {ApiPromise} from '@polkadot/api';25import {IKeyringPair} from '@polkadot/types/types';252626async function proxyWrap(api: ApiPromise, web3: Web3, wrapped: any) {27async function proxyWrap(api: ApiPromise, web3: Web3, wrapped: any, privateKeyWrapper: (account: string) => IKeyringPair) {27 // Proxy owner has no special privilegies, we don't need to reuse them28 // Proxy owner has no special privilegies, we don't need to reuse them28 const owner = await createEthAccountWithBalance(api, web3);29 const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);29 const proxyContract = new web3.eth.Contract(JSON.parse((await readFile(`${__dirname}/UniqueNFTProxy.abi`)).toString()), undefined, {30 const proxyContract = new web3.eth.Contract(JSON.parse((await readFile(`${__dirname}/UniqueNFTProxy.abi`)).toString()), undefined, {30 from: owner,31 from: owner,31 ...GAS_ARGS,32 ...GAS_ARGS,40 mode: {type: 'NFT'},41 mode: {type: 'NFT'},41 });42 });42 const alice = privateKeyWrapper('//Alice');43 const alice = privateKeyWrapper('//Alice');43 const caller = await createEthAccountWithBalance(api, web3);44 const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper);444545 await createItemExpectSuccess(alice, collection, 'NFT', {Substrate: alice.address});46 await createItemExpectSuccess(alice, collection, 'NFT', {Substrate: alice.address});464747 const address = collectionIdToAddress(collection);48 const address = collectionIdToAddress(collection);48 const contract = await proxyWrap(api, web3, new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS}));49 const contract = await proxyWrap(api, web3, new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS}), privateKeyWrapper);49 const totalSupply = await contract.methods.totalSupply().call();50 const totalSupply = await contract.methods.totalSupply().call();505151 expect(totalSupply).to.equal('1');52 expect(totalSupply).to.equal('1');57 });58 });58 const alice = privateKeyWrapper('//Alice');59 const alice = privateKeyWrapper('//Alice');596060 const caller = await createEthAccountWithBalance(api, web3);61 const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper);61 await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: caller});62 await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: caller});62 await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: caller});63 await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: caller});63 await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: caller});64 await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: caller});646565 const address = collectionIdToAddress(collection);66 const address = collectionIdToAddress(collection);66 const contract = await proxyWrap(api, web3, new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS}));67 const contract = await proxyWrap(api, web3, new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS}), privateKeyWrapper);67 const balance = await contract.methods.balanceOf(caller).call();68 const balance = await contract.methods.balanceOf(caller).call();686969 expect(balance).to.equal('3');70 expect(balance).to.equal('3');75 });76 });76 const alice = privateKeyWrapper('//Alice');77 const alice = privateKeyWrapper('//Alice');777878 const caller = await createEthAccountWithBalance(api, web3);79 const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper);79 const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: caller});80 const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: caller});808181 const address = collectionIdToAddress(collection);82 const address = collectionIdToAddress(collection);82 const contract = await proxyWrap(api, web3, new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS}));83 const contract = await proxyWrap(api, web3, new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS}), privateKeyWrapper);83 const owner = await contract.methods.ownerOf(tokenId).call();84 const owner = await contract.methods.ownerOf(tokenId).call();848585 expect(owner).to.equal(caller);86 expect(owner).to.equal(caller);86 });87 });87});88});888989describe('NFT (Via EVM proxy): Plain calls', () => {90describe('NFT (Via EVM proxy): Plain calls', () => {90 //TODO: CORE-302 add eth methods91 itWeb3.skip('Can perform mint()', async ({web3, api, privateKeyWrapper}) => {91 itWeb3('Can perform mint()', async ({web3, api, privateKeyWrapper}) => {92 const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);93 const collectionHelper = evmCollectionHelpers(web3, owner);92 const collection = await createCollectionExpectSuccess({94 const result = await collectionHelper.methods93 mode: {type: 'NFT'},95 .createNonfungibleCollection('A', 'A', 'A')94 });96 .send();95 const alice = privateKeyWrapper('//Alice');97 const {collectionIdAddress} = await getCollectionAddressFromResult(api, result);96 const caller = await createEthAccountWithBalance(api, web3);98 const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper);97 const receiver = createEthAccount(web3);99 const receiver = createEthAccount(web3);9899 const address = collectionIdToAddress(collection);100 const collectionEvmOwned = evmCollection(web3, owner, collectionIdAddress);101 const collectionEvm = evmCollection(web3, caller, collectionIdAddress);100 const contract = await proxyWrap(api, web3, new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS}));102 const contract = await proxyWrap(api, web3, collectionEvm, privateKeyWrapper);101102 const changeAdminTx = api.tx.unique.addCollectionAdmin(collection, {Ethereum: contract.options.address});103 await collectionEvmOwned.methods.addCollectionAdmin(contract.options.address).send();103 await submitTransactionAsync(alice, changeAdminTx);104104105 {105 {106 const nextTokenId = await contract.methods.nextTokenId().call();106 const nextTokenId = await contract.methods.nextTokenId().call();111 'Test URI',111 'Test URI',112 ).send({from: caller});112 ).send({from: caller});113 const events = normalizeEvents(result.events);113 const events = normalizeEvents(result.events);114 events[0].address = events[0].address.toLocaleLowerCase();114115115 expect(events).to.be.deep.equal([116 expect(events).to.be.deep.equal([116 {117 {117 address,118 address: collectionIdAddress.toLocaleLowerCase(),118 event: 'Transfer',119 event: 'Transfer',119 args: {120 args: {120 from: '0x0000000000000000000000000000000000000000',121 from: '0x0000000000000000000000000000000000000000',135 });136 });136 const alice = privateKeyWrapper('//Alice');137 const alice = privateKeyWrapper('//Alice');137138138 const caller = await createEthAccountWithBalance(api, web3);139 const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper);139 const receiver = createEthAccount(web3);140 const receiver = createEthAccount(web3);140141141 const address = collectionIdToAddress(collection);142 const address = collectionIdToAddress(collection);142 const contract = await proxyWrap(api, web3, new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS}));143 const contract = await proxyWrap(api, web3, new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS}), privateKeyWrapper);143 const changeAdminTx = api.tx.unique.addCollectionAdmin(collection, {Ethereum: contract.options.address});144 const changeAdminTx = api.tx.unique.addCollectionAdmin(collection, {Ethereum: contract.options.address});144 await submitTransactionAsync(alice, changeAdminTx);145 await submitTransactionAsync(alice, changeAdminTx);145146197 mode: {type: 'NFT'},198 mode: {type: 'NFT'},198 });199 });199 const alice = privateKeyWrapper('//Alice');200 const alice = privateKeyWrapper('//Alice');200 const caller = await createEthAccountWithBalance(api, web3);201 const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper);201202202 const address = collectionIdToAddress(collection);203 const address = collectionIdToAddress(collection);203 const contract = await proxyWrap(api, web3, new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS}));204 const contract = await proxyWrap(api, web3, new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS}), privateKeyWrapper);204 const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: contract.options.address});205 const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: contract.options.address});205206206 const changeAdminTx = api.tx.unique.addCollectionAdmin(collection, {Ethereum: contract.options.address});207 const changeAdminTx = api.tx.unique.addCollectionAdmin(collection, {Ethereum: contract.options.address});229 mode: {type: 'NFT'},230 mode: {type: 'NFT'},230 });231 });231 const alice = privateKeyWrapper('//Alice');232 const alice = privateKeyWrapper('//Alice');232 const caller = await createEthAccountWithBalance(api, web3);233 const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper);233 const spender = createEthAccount(web3);234 const spender = createEthAccount(web3);234235235 const address = collectionIdToAddress(collection);236 const address = collectionIdToAddress(collection);236 const contract = await proxyWrap(api, web3, new web3.eth.Contract(nonFungibleAbi as any, address));237 const contract = await proxyWrap(api, web3, new web3.eth.Contract(nonFungibleAbi as any, address), privateKeyWrapper);237 const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: contract.options.address});238 const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: contract.options.address});238239239 {240 {259 mode: {type: 'NFT'},260 mode: {type: 'NFT'},260 });261 });261 const alice = privateKeyWrapper('//Alice');262 const alice = privateKeyWrapper('//Alice');262 const caller = await createEthAccountWithBalance(api, web3);263 const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper);263 const owner = await createEthAccountWithBalance(api, web3);264 const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);264265265 const receiver = createEthAccount(web3);266 const receiver = createEthAccount(web3);266267267 const address = collectionIdToAddress(collection);268 const address = collectionIdToAddress(collection);268 const evmCollection = new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS});269 const evmCollection = new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS});269 const contract = await proxyWrap(api, web3, evmCollection);270 const contract = await proxyWrap(api, web3, evmCollection, privateKeyWrapper);270 const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: owner});271 const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: owner});271272272 await evmCollection.methods.approve(contract.options.address, tokenId).send({from: owner});273 await evmCollection.methods.approve(contract.options.address, tokenId).send({from: owner});303 mode: {type: 'NFT'},304 mode: {type: 'NFT'},304 });305 });305 const alice = privateKeyWrapper('//Alice');306 const alice = privateKeyWrapper('//Alice');306 const caller = await createEthAccountWithBalance(api, web3);307 const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper);307 const receiver = createEthAccount(web3);308 const receiver = createEthAccount(web3);308309309 const address = collectionIdToAddress(collection);310 const address = collectionIdToAddress(collection);310 const contract = await proxyWrap(api, web3, new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS}));311 const contract = await proxyWrap(api, web3, new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS}), privateKeyWrapper);311 const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: contract.options.address});312 const tokenId = await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: contract.options.address});312313313 {314 {tests/src/eth/scheduling.test.tsdiffbeforeafterboth17import {expect} from 'chai';17import {expect} from 'chai';18import {createEthAccountWithBalance, deployFlipper, GAS_ARGS, itWeb3, subToEth, transferBalanceToEth} from './util/helpers';18import {createEthAccountWithBalance, deployFlipper, GAS_ARGS, itWeb3, subToEth, transferBalanceToEth} from './util/helpers';19import {scheduleExpectSuccess, waitNewBlocks} from '../util/helpers';19import {scheduleExpectSuccess, waitNewBlocks} from '../util/helpers';20import privateKey from '../substrate/privateKey';212022describe('Scheduing EVM smart contracts', () => {21describe('Scheduing EVM smart contracts', () => {23 itWeb3('Successfully schedules and periodically executes an EVM contract', async ({api, web3}) => {22 itWeb3('Successfully schedules and periodically executes an EVM contract', async ({api, web3, privateKeyWrapper}) => {24 const deployer = await createEthAccountWithBalance(api, web3);23 const deployer = await createEthAccountWithBalance(api, web3, privateKeyWrapper);25 const flipper = await deployFlipper(web3, deployer);24 const flipper = await deployFlipper(web3, deployer);26 const initialValue = await flipper.methods.getValue().call();25 const initialValue = await flipper.methods.getValue().call();27 const alice = privateKey('//Alice');26 const alice = privateKeyWrapper('//Alice');28 await transferBalanceToEth(api, alice, subToEth(alice.address));27 await transferBalanceToEth(api, alice, subToEth(alice.address));292830 {29 {tests/src/eth/sponsoring.test.tsdiffbeforeafterboth21 itWeb3('Fee is deducted from contract if sponsoring is enabled', async ({api, web3, privateKeyWrapper}) => {21 itWeb3('Fee is deducted from contract if sponsoring is enabled', async ({api, web3, privateKeyWrapper}) => {22 const alice = privateKeyWrapper('//Alice');22 const alice = privateKeyWrapper('//Alice');232324 const owner = await createEthAccountWithBalance(api, web3);24 const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);25 const caller = createEthAccount(web3);25 const caller = createEthAccount(web3);26 const originalCallerBalance = await web3.eth.getBalance(caller);26 const originalCallerBalance = await web3.eth.getBalance(caller);27 expect(originalCallerBalance).to.be.equal('0');27 expect(originalCallerBalance).to.be.equal('0');52 itWeb3('...but this doesn\'t applies to payable value', async ({api, web3, privateKeyWrapper}) => {52 itWeb3('...but this doesn\'t applies to payable value', async ({api, web3, privateKeyWrapper}) => {53 const alice = privateKeyWrapper('//Alice');53 const alice = privateKeyWrapper('//Alice');545455 const owner = await createEthAccountWithBalance(api, web3);55 const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper);56 const caller = await createEthAccountWithBalance(api, web3);56 const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper);57 const originalCallerBalance = await web3.eth.getBalance(caller);57 const originalCallerBalance = await web3.eth.getBalance(caller);58 expect(originalCallerBalance).to.be.not.equal('0');58 expect(originalCallerBalance).to.be.not.equal('0');5959tests/src/eth/tokenProperties.test.tsdiffbeforeafterboth7describe('EVM token properties', () => {7describe('EVM token properties', () => {8 itWeb3('Can be reconfigured', async({web3, api, privateKeyWrapper}) => {8 itWeb3('Can be reconfigured', async({web3, api, privateKeyWrapper}) => {9 const alice = privateKeyWrapper('//Alice');9 const alice = privateKeyWrapper('//Alice');10 const caller = await createEthAccountWithBalance(api, web3);10 const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper);11 for(const [mutable,collectionAdmin, tokenOwner] of cartesian([], [false, true], [false, true], [false, true])) {11 for(const [mutable,collectionAdmin, tokenOwner] of cartesian([], [false, true], [false, true], [false, true])) {12 const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});12 const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});13 await addCollectionAdminExpectSuccess(alice, collection, {Ethereum: caller});13 await addCollectionAdminExpectSuccess(alice, collection, {Ethereum: caller});25 });25 });26 itWeb3('Can be set', async({web3, api, privateKeyWrapper}) => {26 itWeb3('Can be set', async({web3, api, privateKeyWrapper}) => {27 const alice = privateKeyWrapper('//Alice');27 const alice = privateKeyWrapper('//Alice');28 const caller = await createEthAccountWithBalance(api, web3);28 const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper);29 const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});29 const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});30 const token = await createItemExpectSuccess(alice, collection, 'NFT');30 const token = await createItemExpectSuccess(alice, collection, 'NFT');313148 });48 });49 itWeb3('Can be deleted', async({web3, api, privateKeyWrapper}) => {49 itWeb3('Can be deleted', async({web3, api, privateKeyWrapper}) => {50 const alice = privateKeyWrapper('//Alice');50 const alice = privateKeyWrapper('//Alice');51 const caller = await createEthAccountWithBalance(api, web3);51 const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper);52 const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});52 const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}});53 const token = await createItemExpectSuccess(alice, collection, 'NFT');53 const token = await createItemExpectSuccess(alice, collection, 'NFT');5454tests/src/eth/util/helpers.tsdiffbeforeafterboth112 return account.address;112 return account.address;113}113}114114115export async function createEthAccountWithBalance(api: ApiPromise, web3: Web3) {115export async function createEthAccountWithBalance(api: ApiPromise, web3: Web3, privateKeyWrapper: (account: string) => IKeyringPair) {116 const alice = privateKey('//Alice');116 const alice = privateKeyWrapper('//Alice');117 const account = createEthAccount(web3);117 const account = createEthAccount(web3);118 await transferBalanceToEth(api, alice, account);118 await transferBalanceToEth(api, alice, account);119119tests/src/interfaces/augment-api-consts.tsdiffbeforeafterboth46 **/46 **/47 [key: string]: Codec;47 [key: string]: Codec;48 };48 };49 scheduler: {50 /**51 * The maximum weight that may be scheduled per block for any dispatchables of less52 * priority than `schedule::HARD_DEADLINE`.53 **/54 maximumWeight: u64 & AugmentedConst<ApiType>;55 /**56 * The maximum number of scheduled calls in the queue for a single block.57 * Not strictly enforced, but used for weight estimation.58 **/59 maxScheduledPerBlock: u32 & AugmentedConst<ApiType>;60 /**61 * Generic const62 **/63 [key: string]: Codec;64 };49 system: {65 system: {50 /**66 /**51 * Maximum number of block number to block hash mappings to keep (oldest pruned first).67 * Maximum number of block number to block hash mappings to keep (oldest pruned first).tests/src/interfaces/augment-api-errors.tsdiffbeforeafterboth80 * Tried to store more data than allowed in collection field80 * Tried to store more data than allowed in collection field81 **/81 **/82 CollectionFieldSizeExceeded: AugmentedError<ApiType>;82 CollectionFieldSizeExceeded: AugmentedError<ApiType>;83 /**84 * Tried to access an external collection with an internal API85 **/86 CollectionIsExternal: AugmentedError<ApiType>;87 /**88 * Tried to access an internal collection with an external API89 **/90 CollectionIsInternal: AugmentedError<ApiType>;83 /**91 /**84 * Collection limit bounds per collection exceeded92 * Collection limit bounds per collection exceeded85 **/93 **/437 **/445 **/438 [key: string]: AugmentedError<ApiType>;446 [key: string]: AugmentedError<ApiType>;439 };447 };448 rmrkCore: {449 CannotAcceptNonOwnedNft: AugmentedError<ApiType>;450 CannotRejectNonOwnedNft: AugmentedError<ApiType>;451 CannotSendToDescendentOrSelf: AugmentedError<ApiType>;452 CollectionFullOrLocked: AugmentedError<ApiType>;453 CollectionNotEmpty: AugmentedError<ApiType>;454 CollectionUnknown: AugmentedError<ApiType>;455 CorruptedCollectionType: AugmentedError<ApiType>;456 NftTypeEncodeError: AugmentedError<ApiType>;457 NoAvailableCollectionId: AugmentedError<ApiType>;458 NoAvailableNftId: AugmentedError<ApiType>;459 NonTransferable: AugmentedError<ApiType>;460 NoPermission: AugmentedError<ApiType>;461 ResourceDoesntExist: AugmentedError<ApiType>;462 ResourceNotPending: AugmentedError<ApiType>;463 RmrkPropertyKeyIsTooLong: AugmentedError<ApiType>;464 RmrkPropertyValueIsTooLong: AugmentedError<ApiType>;465 /**466 * Generic error467 **/468 [key: string]: AugmentedError<ApiType>;469 };470 rmrkEquip: {471 BaseDoesntExist: AugmentedError<ApiType>;472 NeedsDefaultThemeFirst: AugmentedError<ApiType>;473 NoAvailableBaseId: AugmentedError<ApiType>;474 NoAvailablePartId: AugmentedError<ApiType>;475 PermissionError: AugmentedError<ApiType>;476 /**477 * Generic error478 **/479 [key: string]: AugmentedError<ApiType>;480 };481 scheduler: {482 /**483 * Failed to schedule a call484 **/485 FailedToSchedule: AugmentedError<ApiType>;486 /**487 * Cannot find the scheduled call.488 **/489 NotFound: AugmentedError<ApiType>;490 /**491 * Reschedule failed because it does not change scheduled time.492 **/493 RescheduleNoChange: AugmentedError<ApiType>;494 /**495 * Given target block number is in the past.496 **/497 TargetBlockNumberInPast: AugmentedError<ApiType>;498 /**499 * Generic error500 **/501 [key: string]: AugmentedError<ApiType>;502 };440 structure: {503 structure: {441 /**504 /**442 * While searched for owner, encountered depth limit505 * While searched for owner, encountered depth limit508 * No proposal or bounty at that index.571 * No proposal or bounty at that index.509 **/572 **/510 InvalidIndex: AugmentedError<ApiType>;573 InvalidIndex: AugmentedError<ApiType>;574 /**575 * Proposal has not been approved.576 **/577 ProposalNotApproved: AugmentedError<ApiType>;511 /**578 /**512 * Too many approvals in the queue.579 * Too many approvals in the queue.513 **/580 **/tests/src/interfaces/augment-api-events.tsdiffbeforeafterboth2/* eslint-disable */2/* eslint-disable */334import type { ApiTypes } from '@polkadot/api-base/types';4import type { ApiTypes } from '@polkadot/api-base/types';5import type { Bytes, Null, Option, Result, U256, U8aFixed, u128, u32, u64, u8 } from '@polkadot/types-codec';5import type { Bytes, Null, Option, Result, U256, U8aFixed, bool, u128, u32, u64, u8 } from '@polkadot/types-codec';6import type { ITuple } from '@polkadot/types-codec/types';6import type { AccountId32, H160, H256 } from '@polkadot/types/interfaces/runtime';7import type { AccountId32, H160, H256 } from '@polkadot/types/interfaces/runtime';7import type { EthereumLog, EvmCoreErrorExitReason, FrameSupportTokensMiscBalanceStatus, FrameSupportWeightsDispatchInfo, OrmlVestingVestingSchedule, PalletEvmAccountBasicCrossAccountIdRepr, SpRuntimeDispatchError, XcmV1MultiLocation, XcmV2Response, XcmV2TraitsError, XcmV2TraitsOutcome, XcmV2Xcm, XcmVersionedMultiAssets, XcmVersionedMultiLocation } from '@polkadot/types/lookup';8import type { EthereumLog, EvmCoreErrorExitReason, FrameSupportScheduleLookupError, FrameSupportTokensMiscBalanceStatus, FrameSupportWeightsDispatchInfo, OrmlVestingVestingSchedule, PalletEvmAccountBasicCrossAccountIdRepr, RmrkTraitsNftAccountIdOrCollectionNftTuple, SpRuntimeDispatchError, XcmV1MultiLocation, XcmV2Response, XcmV2TraitsError, XcmV2TraitsOutcome, XcmV2Xcm, XcmVersionedMultiAssets, XcmVersionedMultiLocation } from '@polkadot/types/lookup';899declare module '@polkadot/api-base/types/events' {10declare module '@polkadot/api-base/types/events' {10 export interface AugmentedEvents<ApiType extends ApiTypes> {11 export interface AugmentedEvents<ApiType extends ApiTypes> {396 **/397 **/397 [key: string]: AugmentedEvent<ApiType>;398 [key: string]: AugmentedEvent<ApiType>;398 };399 };400 rmrkCore: {401 CollectionCreated: AugmentedEvent<ApiType, [AccountId32, u32]>;402 CollectionDestroyed: AugmentedEvent<ApiType, [AccountId32, u32]>;403 CollectionLocked: AugmentedEvent<ApiType, [AccountId32, u32]>;404 IssuerChanged: AugmentedEvent<ApiType, [AccountId32, AccountId32, u32]>;405 NFTAccepted: AugmentedEvent<ApiType, [AccountId32, RmrkTraitsNftAccountIdOrCollectionNftTuple, u32, u32]>;406 NFTBurned: AugmentedEvent<ApiType, [AccountId32, u32]>;407 NftMinted: AugmentedEvent<ApiType, [AccountId32, u32, u32]>;408 NFTRejected: AugmentedEvent<ApiType, [AccountId32, u32, u32]>;409 NFTSent: AugmentedEvent<ApiType, [AccountId32, RmrkTraitsNftAccountIdOrCollectionNftTuple, u32, u32, bool]>;410 PrioritySet: AugmentedEvent<ApiType, [u32, u32]>;411 PropertySet: AugmentedEvent<ApiType, [u32, Option<u32>, Bytes, Bytes]>;412 ResourceAccepted: AugmentedEvent<ApiType, [u32, u32]>;413 ResourceAdded: AugmentedEvent<ApiType, [u32, u32]>;414 ResourceRemoval: AugmentedEvent<ApiType, [u32, u32]>;415 ResourceRemovalAccepted: AugmentedEvent<ApiType, [u32, u32]>;416 /**417 * Generic event418 **/419 [key: string]: AugmentedEvent<ApiType>;420 };421 rmrkEquip: {422 BaseCreated: AugmentedEvent<ApiType, [AccountId32, u32]>;423 /**424 * Generic event425 **/426 [key: string]: AugmentedEvent<ApiType>;427 };428 scheduler: {429 /**430 * The call for the provided hash was not found so the task has been aborted.431 **/432 CallLookupFailed: AugmentedEvent<ApiType, [ITuple<[u32, u32]>, Option<U8aFixed>, FrameSupportScheduleLookupError]>;433 /**434 * Canceled some task.435 **/436 Canceled: AugmentedEvent<ApiType, [u32, u32]>;437 /**438 * Dispatched some task.439 **/440 Dispatched: AugmentedEvent<ApiType, [ITuple<[u32, u32]>, Option<U8aFixed>, Result<Null, SpRuntimeDispatchError>]>;441 /**442 * Scheduled some task.443 **/444 Scheduled: AugmentedEvent<ApiType, [u32, u32]>;445 /**446 * Generic event447 **/448 [key: string]: AugmentedEvent<ApiType>;449 };399 structure: {450 structure: {400 /**451 /**401 * Executed call on behalf of token452 * Executed call on behalf of tokentests/src/interfaces/augment-api-query.tsdiffbeforeafterboth2/* eslint-disable */2/* eslint-disable */334import type { ApiTypes } from '@polkadot/api-base/types';4import type { ApiTypes } from '@polkadot/api-base/types';5import type { BTreeMap, Bytes, Option, U256, Vec, bool, u128, u16, u32, u64 } from '@polkadot/types-codec';5import type { BTreeMap, Bytes, Option, U256, U8aFixed, Vec, bool, u128, u16, u32, u64 } from '@polkadot/types-codec';6import type { AnyNumber, ITuple } from '@polkadot/types-codec/types';6import type { AnyNumber, ITuple } from '@polkadot/types-codec/types';7import type { AccountId32, H160, H256 } from '@polkadot/types/interfaces/runtime';7import type { AccountId32, H160, H256 } from '@polkadot/types/interfaces/runtime';8import type { CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmpQueueInboundChannelDetails, CumulusPalletXcmpQueueOutboundChannelDetails, CumulusPalletXcmpQueueQueueConfigData, EthereumBlock, EthereumLog, EthereumReceiptReceiptV3, EthereumTransactionTransactionV2, FpRpcTransactionStatus, FrameSupportWeightsPerDispatchClassU64, FrameSystemAccountInfo, FrameSystemEventRecord, FrameSystemLastRuntimeUpgradeInfo, FrameSystemPhase, OrmlVestingVestingSchedule, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesReleases, PalletBalancesReserveData, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmContractHelpersSponsoringModeT, PalletNonfungibleItemData, PalletRefungibleItemData, PalletTransactionPaymentReleases, PalletTreasuryProposal, PhantomTypeUpDataStructs, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotPrimitivesV2AbridgedHostConfiguration, PolkadotPrimitivesV2PersistedValidationData, PolkadotPrimitivesV2UpgradeRestriction, SpRuntimeDigest, SpTrieStorageProof, UpDataStructsCollection, UpDataStructsCollectionStats, UpDataStructsProperties, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsPropertyPermission, UpDataStructsTokenChild } from '@polkadot/types/lookup';8import type { CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmpQueueInboundChannelDetails, CumulusPalletXcmpQueueOutboundChannelDetails, CumulusPalletXcmpQueueQueueConfigData, EthereumBlock, EthereumLog, EthereumReceiptReceiptV3, EthereumTransactionTransactionV2, FpRpcTransactionStatus, FrameSupportWeightsPerDispatchClassU64, FrameSystemAccountInfo, FrameSystemEventRecord, FrameSystemLastRuntimeUpgradeInfo, FrameSystemPhase, OrmlVestingVestingSchedule, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesReleases, PalletBalancesReserveData, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmContractHelpersSponsoringModeT, PalletNonfungibleItemData, PalletRefungibleItemData, PalletTransactionPaymentReleases, PalletTreasuryProposal, PalletUnqSchedulerScheduledV3, PhantomTypeUpDataStructs, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotPrimitivesV2AbridgedHostConfiguration, PolkadotPrimitivesV2PersistedValidationData, PolkadotPrimitivesV2UpgradeRestriction, SpRuntimeDigest, SpTrieStorageProof, UpDataStructsCollection, UpDataStructsCollectionStats, UpDataStructsProperties, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsPropertyPermission, UpDataStructsTokenChild } from '@polkadot/types/lookup';9import type { Observable } from '@polkadot/types/types';9import type { Observable } from '@polkadot/types/types';101011declare module '@polkadot/api-base/types/storage' {11declare module '@polkadot/api-base/types/storage' {415 **/415 **/416 [key: string]: QueryableStorageEntry<ApiType>;416 [key: string]: QueryableStorageEntry<ApiType>;417 };417 };418 rmrkCore: {419 collectionIndex: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;420 rmrkInernalCollectionId: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<u32>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;421 uniqueCollectionId: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<u32>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;422 /**423 * Generic query424 **/425 [key: string]: QueryableStorageEntry<ApiType>;426 };427 rmrkEquip: {428 baseHasDefaultTheme: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<bool>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;429 inernalPartId: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array) => Observable<Option<u32>>, [u32, u32]> & QueryableStorageEntry<ApiType, [u32, u32]>;430 /**431 * Generic query432 **/433 [key: string]: QueryableStorageEntry<ApiType>;434 };435 scheduler: {436 /**437 * Items to be executed, indexed by the block number that they should be executed on.438 **/439 agenda: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<Vec<Option<PalletUnqSchedulerScheduledV3>>>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;440 /**441 * Lookup from identity to the block number and index of the task.442 **/443 lookup: AugmentedQuery<ApiType, (arg: U8aFixed | string | Uint8Array) => Observable<Option<ITuple<[u32, u32]>>>, [U8aFixed]> & QueryableStorageEntry<ApiType, [U8aFixed]>;444 /**445 * Generic query446 **/447 [key: string]: QueryableStorageEntry<ApiType>;448 };418 structure: {449 structure: {419 /**450 /**420 * Generic query451 * Generic querytests/src/interfaces/augment-api-rpc.tsdiffbeforeafterboth1// Auto-generated via `yarn polkadot-types-from-chain`, do not edit1// Auto-generated via `yarn polkadot-types-from-chain`, do not edit2/* eslint-disable */2/* eslint-disable */334import type { PalletEvmAccountBasicCrossAccountIdRepr, UpDataStructsCollectionLimits, UpDataStructsCollectionStats, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, UpDataStructsRpcCollection, UpDataStructsTokenChild, UpDataStructsTokenData } from './default';4import type { PalletEvmAccountBasicCrossAccountIdRepr, RmrkTraitsBaseBaseInfo, RmrkTraitsCollectionCollectionInfo, RmrkTraitsNftNftChild, RmrkTraitsNftNftInfo, RmrkTraitsPartPartType, RmrkTraitsPropertyPropertyInfo, RmrkTraitsResourceResourceInfo, RmrkTraitsTheme, UpDataStructsCollectionLimits, UpDataStructsCollectionStats, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, UpDataStructsRpcCollection, UpDataStructsTokenChild, UpDataStructsTokenData } from './default';5import type { AugmentedRpc } from '@polkadot/rpc-core/types';5import type { AugmentedRpc } from '@polkadot/rpc-core/types';6import type { Metadata, StorageKey } from '@polkadot/types';6import type { Metadata, StorageKey } from '@polkadot/types';7import type { Bytes, HashMap, Json, Null, Option, Text, U256, U64, Vec, bool, u128, u32, u64 } from '@polkadot/types-codec';7import type { Bytes, HashMap, Json, Null, Option, Text, U256, U64, Vec, bool, u128, u32, u64 } from '@polkadot/types-codec';22import type { StorageKind } from '@polkadot/types/interfaces/offchain';22import type { StorageKind } from '@polkadot/types/interfaces/offchain';23import type { FeeDetails, RuntimeDispatchInfo } from '@polkadot/types/interfaces/payment';23import type { FeeDetails, RuntimeDispatchInfo } from '@polkadot/types/interfaces/payment';24import type { RpcMethods } from '@polkadot/types/interfaces/rpc';24import type { RpcMethods } from '@polkadot/types/interfaces/rpc';25import type { AccountId, BlockNumber, H160, H256, H64, Hash, Header, Index, Justification, KeyValue, SignedBlock, StorageData } from '@polkadot/types/interfaces/runtime';25import type { AccountId, AccountId32, BlockNumber, H160, H256, H64, Hash, Header, Index, Justification, KeyValue, SignedBlock, StorageData } from '@polkadot/types/interfaces/runtime';26import type { MigrationStatusResult, ReadProof, RuntimeVersion, TraceBlockResponse } from '@polkadot/types/interfaces/state';26import type { MigrationStatusResult, ReadProof, RuntimeVersion, TraceBlockResponse } from '@polkadot/types/interfaces/state';27import type { ApplyExtrinsicResult, ChainProperties, ChainType, Health, NetworkState, NodeRole, PeerInfo, SyncState } from '@polkadot/types/interfaces/system';27import type { ApplyExtrinsicResult, ChainProperties, ChainType, Health, NetworkState, NodeRole, PeerInfo, SyncState } from '@polkadot/types/interfaces/system';28import type { IExtrinsic, Observable } from '@polkadot/types/types';28import type { IExtrinsic, Observable } from '@polkadot/types/types';397 **/397 **/398 queryInfo: AugmentedRpc<(extrinsic: Bytes | string | Uint8Array, at?: BlockHash | string | Uint8Array) => Observable<RuntimeDispatchInfo>>;398 queryInfo: AugmentedRpc<(extrinsic: Bytes | string | Uint8Array, at?: BlockHash | string | Uint8Array) => Observable<RuntimeDispatchInfo>>;399 };399 };400 rmrk: {401 /**402 * Get tokens owned by an account in a collection403 **/404 accountTokens: AugmentedRpc<(accountId: AccountId32 | string | Uint8Array, collectionId: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Vec<u32>>>;405 /**406 * Get base info407 **/408 base: AugmentedRpc<(baseId: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Option<RmrkTraitsBaseBaseInfo>>>;409 /**410 * Get all Base's parts411 **/412 baseParts: AugmentedRpc<(baseId: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Vec<RmrkTraitsPartPartType>>>;413 /**414 * Get collection by id415 **/416 collectionById: AugmentedRpc<(id: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Option<RmrkTraitsCollectionCollectionInfo>>>;417 /**418 * Get collection properties419 **/420 collectionProperties: AugmentedRpc<(collectionId: u32 | AnyNumber | Uint8Array, filterKeys?: Vec<Text> | (Text | string)[], at?: Hash | string | Uint8Array) => Observable<Vec<RmrkTraitsPropertyPropertyInfo>>>;421 /**422 * Get the latest created collection id423 **/424 lastCollectionIdx: AugmentedRpc<(at?: Hash | string | Uint8Array) => Observable<u32>>;425 /**426 * Get NFT by collection id and NFT id427 **/428 nftById: AugmentedRpc<(collectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Option<RmrkTraitsNftNftInfo>>>;429 /**430 * Get NFT children431 **/432 nftChildren: AugmentedRpc<(collectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Vec<RmrkTraitsNftNftChild>>>;433 /**434 * Get NFT properties435 **/436 nftProperties: AugmentedRpc<(collectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array, filterKeys?: Vec<Text> | (Text | string)[], at?: Hash | string | Uint8Array) => Observable<Vec<RmrkTraitsPropertyPropertyInfo>>>;437 /**438 * Get NFT resource priorities439 **/440 nftResourcePriority: AugmentedRpc<(collectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array, resourceId: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Option<u32>>>;441 /**442 * Get NFT resources443 **/444 nftResources: AugmentedRpc<(collectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Vec<RmrkTraitsResourceResourceInfo>>>;445 /**446 * Get Base's theme names447 **/448 themeNames: AugmentedRpc<(baseId: u32 | AnyNumber | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Vec<Bytes>>>;449 /**450 * Get Theme's keys values451 **/452 themes: AugmentedRpc<(baseId: u32 | AnyNumber | Uint8Array, themeName: Text | string, keys: Option<Vec<Text>> | null | object | string | Uint8Array, at?: Hash | string | Uint8Array) => Observable<Option<RmrkTraitsTheme>>>;453 };400 rpc: {454 rpc: {401 /**455 /**402 * Retrieves the list of RPC methods that are exposed by the node456 * Retrieves the list of RPC methods that are exposed by the nodetests/src/interfaces/augment-api-tx.tsdiffbeforeafterboth2/* eslint-disable */2/* eslint-disable */334import type { ApiTypes } from '@polkadot/api-base/types';4import type { ApiTypes } from '@polkadot/api-base/types';5import type { Bytes, Compact, Option, U256, Vec, bool, u128, u16, u32, u64 } from '@polkadot/types-codec';5import type { Bytes, Compact, Option, U256, U8aFixed, Vec, bool, u128, u16, u32, u64, u8 } from '@polkadot/types-codec';6import type { AnyNumber, IMethod, ITuple } from '@polkadot/types-codec/types';6import type { AnyNumber, IMethod, ITuple } from '@polkadot/types-codec/types';7import type { AccountId32, Call, H160, H256, MultiAddress, Perbill } from '@polkadot/types/interfaces/runtime';7import type { AccountId32, Call, H160, H256, MultiAddress, Perbill, Permill } from '@polkadot/types/interfaces/runtime';8import type { CumulusPrimitivesParachainInherentParachainInherentData, EthereumTransactionTransactionV2, OrmlVestingVestingSchedule, PalletEvmAccountBasicCrossAccountIdRepr, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCollectionPermissions, UpDataStructsCreateCollectionData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, XcmV1MultiLocation, XcmV2WeightLimit, XcmVersionedMultiAssets, XcmVersionedMultiLocation, XcmVersionedXcm } from '@polkadot/types/lookup';8import 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';9910declare module '@polkadot/api-base/types/submittable' {10declare module '@polkadot/api-base/types/submittable' {11 export interface AugmentedSubmittables<ApiType extends ApiTypes> {11 export interface AugmentedSubmittables<ApiType extends ApiTypes> {346 **/346 **/347 [key: string]: SubmittableExtrinsicFunction<ApiType>;347 [key: string]: SubmittableExtrinsicFunction<ApiType>;348 };348 };349 rmrkCore: {350 acceptNft: AugmentedSubmittable<(rmrkCollectionId: u32 | AnyNumber | Uint8Array, rmrkNftId: u32 | AnyNumber | Uint8Array, newOwner: RmrkTraitsNftAccountIdOrCollectionNftTuple | { AccountId: any } | { CollectionAndNftTuple: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, u32, RmrkTraitsNftAccountIdOrCollectionNftTuple]>;351 acceptResource: AugmentedSubmittable<(rmrkCollectionId: u32 | AnyNumber | Uint8Array, rmrkNftId: u32 | AnyNumber | Uint8Array, rmrkResourceId: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, u32, u32]>;352 acceptResourceRemoval: AugmentedSubmittable<(rmrkCollectionId: u32 | AnyNumber | Uint8Array, rmrkNftId: u32 | AnyNumber | Uint8Array, rmrkResourceId: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, u32, u32]>;353 addBasicResource: AugmentedSubmittable<(rmrkCollectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array, resource: RmrkTraitsResourceBasicResource | { src?: any; metadata?: any; license?: any; thumb?: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, u32, RmrkTraitsResourceBasicResource]>;354 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<ApiType>, [u32, u32, Bytes, RmrkTraitsResourceComposableResource]>;355 addSlotResource: AugmentedSubmittable<(rmrkCollectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array, resource: RmrkTraitsResourceSlotResource | { base?: any; src?: any; metadata?: any; slot?: any; license?: any; thumb?: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, u32, RmrkTraitsResourceSlotResource]>;356 burnNft: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, u32]>;357 changeCollectionIssuer: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array, newIssuer: MultiAddress | { Id: any } | { Index: any } | { Raw: any } | { Address32: any } | { Address20: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, MultiAddress]>;358 createCollection: AugmentedSubmittable<(metadata: Bytes | string | Uint8Array, max: Option<u32> | null | object | string | Uint8Array, symbol: Bytes | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [Bytes, Option<u32>, Bytes]>;359 destroyCollection: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32]>;360 lockCollection: AugmentedSubmittable<(collectionId: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32]>;361 mintNft: AugmentedSubmittable<(owner: AccountId32 | string | Uint8Array, collectionId: u32 | AnyNumber | Uint8Array, recipient: Option<AccountId32> | null | object | string | Uint8Array, royaltyAmount: Option<Permill> | null | object | string | Uint8Array, metadata: Bytes | string | Uint8Array, transferable: bool | boolean | Uint8Array) => SubmittableExtrinsic<ApiType>, [AccountId32, u32, Option<AccountId32>, Option<Permill>, Bytes, bool]>;362 rejectNft: AugmentedSubmittable<(rmrkCollectionId: u32 | AnyNumber | Uint8Array, rmrkNftId: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, u32]>;363 removeResource: AugmentedSubmittable<(rmrkCollectionId: u32 | AnyNumber | Uint8Array, nftId: u32 | AnyNumber | Uint8Array, resourceId: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, u32, u32]>;364 send: AugmentedSubmittable<(rmrkCollectionId: u32 | AnyNumber | Uint8Array, rmrkNftId: u32 | AnyNumber | Uint8Array, newOwner: RmrkTraitsNftAccountIdOrCollectionNftTuple | { AccountId: any } | { CollectionAndNftTuple: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, u32, RmrkTraitsNftAccountIdOrCollectionNftTuple]>;365 setPriority: AugmentedSubmittable<(rmrkCollectionId: u32 | AnyNumber | Uint8Array, rmrkNftId: u32 | AnyNumber | Uint8Array, priorities: Vec<u32> | (u32 | AnyNumber | Uint8Array)[]) => SubmittableExtrinsic<ApiType>, [u32, u32, Vec<u32>]>;366 setProperty: AugmentedSubmittable<(rmrkCollectionId: Compact<u32> | AnyNumber | Uint8Array, maybeNftId: Option<u32> | null | object | string | Uint8Array, key: Bytes | string | Uint8Array, value: Bytes | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [Compact<u32>, Option<u32>, Bytes, Bytes]>;367 /**368 * Generic tx369 **/370 [key: string]: SubmittableExtrinsicFunction<ApiType>;371 };372 rmrkEquip: {373 createBase: AugmentedSubmittable<(baseType: Bytes | string | Uint8Array, symbol: Bytes | string | Uint8Array, parts: Vec<RmrkTraitsPartPartType> | (RmrkTraitsPartPartType | { FixedPart: any } | { SlotPart: any } | string | Uint8Array)[]) => SubmittableExtrinsic<ApiType>, [Bytes, Bytes, Vec<RmrkTraitsPartPartType>]>;374 themeAdd: AugmentedSubmittable<(baseId: u32 | AnyNumber | Uint8Array, theme: RmrkTraitsTheme | { name?: any; properties?: any; inherit?: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [u32, RmrkTraitsTheme]>;375 /**376 * Generic tx377 **/378 [key: string]: SubmittableExtrinsicFunction<ApiType>;379 };380 scheduler: {381 /**382 * Cancel a named scheduled task.383 **/384 cancelNamed: AugmentedSubmittable<(id: U8aFixed | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [U8aFixed]>;385 /**386 * Schedule a named task.387 **/388 scheduleNamed: AugmentedSubmittable<(id: U8aFixed | string | Uint8Array, when: u32 | AnyNumber | Uint8Array, maybePeriodic: Option<ITuple<[u32, u32]>> | null | object | string | Uint8Array, priority: u8 | AnyNumber | Uint8Array, call: FrameSupportScheduleMaybeHashed | { Value: any } | { Hash: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [U8aFixed, u32, Option<ITuple<[u32, u32]>>, u8, FrameSupportScheduleMaybeHashed]>;389 /**390 * Schedule a named task after a delay.391 * 392 * # <weight>393 * Same as [`schedule_named`](Self::schedule_named).394 * # </weight>395 **/396 scheduleNamedAfter: AugmentedSubmittable<(id: U8aFixed | string | Uint8Array, after: u32 | AnyNumber | Uint8Array, maybePeriodic: Option<ITuple<[u32, u32]>> | null | object | string | Uint8Array, priority: u8 | AnyNumber | Uint8Array, call: FrameSupportScheduleMaybeHashed | { Value: any } | { Hash: any } | string | Uint8Array) => SubmittableExtrinsic<ApiType>, [U8aFixed, u32, Option<ITuple<[u32, u32]>>, u8, FrameSupportScheduleMaybeHashed]>;397 /**398 * Generic tx399 **/400 [key: string]: SubmittableExtrinsicFunction<ApiType>;401 };349 structure: {402 structure: {350 /**403 /**351 * Generic tx404 * Generic tx542 * # </weight>595 * # </weight>543 **/596 **/544 rejectProposal: AugmentedSubmittable<(proposalId: Compact<u32> | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [Compact<u32>]>;597 rejectProposal: AugmentedSubmittable<(proposalId: Compact<u32> | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [Compact<u32>]>;598 /**599 * Force a previously approved proposal to be removed from the approval queue.600 * The original deposit will no longer be returned.601 * 602 * May only be called from `T::RejectOrigin`.603 * - `proposal_id`: The index of a proposal604 * 605 * # <weight>606 * - Complexity: O(A) where `A` is the number of approvals607 * - Db reads and writes: `Approvals`608 * # </weight>609 * 610 * Errors:611 * - `ProposalNotApproved`: The `proposal_id` supplied was not found in the approval queue,612 * i.e., the proposal has not been approved. This could also mean the proposal does not613 * exist altogether, thus there is no way it would have been approved in the first place.614 **/615 removeApproval: AugmentedSubmittable<(proposalId: Compact<u32> | AnyNumber | Uint8Array) => SubmittableExtrinsic<ApiType>, [Compact<u32>]>;545 /**616 /**546 * Generic tx617 * Generic tx547 **/618 **/tests/src/interfaces/augment-types.tsdiffbeforeafterboth1// Auto-generated via `yarn polkadot-types-from-defs`, do not edit1// Auto-generated via `yarn polkadot-types-from-defs`, do not edit2/* eslint-disable */2/* eslint-disable */334import type { CumulusPalletDmpQueueCall, CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueueError, CumulusPalletDmpQueueEvent, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemCall, CumulusPalletParachainSystemError, CumulusPalletParachainSystemEvent, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmCall, CumulusPalletXcmError, CumulusPalletXcmEvent, CumulusPalletXcmpQueueCall, CumulusPalletXcmpQueueError, CumulusPalletXcmpQueueEvent, CumulusPalletXcmpQueueInboundChannelDetails, CumulusPalletXcmpQueueInboundState, CumulusPalletXcmpQueueOutboundChannelDetails, CumulusPalletXcmpQueueOutboundState, CumulusPalletXcmpQueueQueueConfigData, CumulusPrimitivesParachainInherentParachainInherentData, EthbloomBloom, EthereumBlock, EthereumHeader, EthereumLog, EthereumReceiptEip658ReceiptData, EthereumReceiptReceiptV3, EthereumTransactionAccessListItem, EthereumTransactionEip1559Transaction, EthereumTransactionEip2930Transaction, EthereumTransactionLegacyTransaction, EthereumTransactionTransactionAction, EthereumTransactionTransactionSignature, EthereumTransactionTransactionV2, EthereumTypesHashH64, EvmCoreErrorExitError, EvmCoreErrorExitFatal, EvmCoreErrorExitReason, EvmCoreErrorExitRevert, EvmCoreErrorExitSucceed, FpRpcTransactionStatus, FrameSupportPalletId, FrameSupportTokensMiscBalanceStatus, FrameSupportWeightsDispatchClass, FrameSupportWeightsDispatchInfo, FrameSupportWeightsPays, FrameSupportWeightsPerDispatchClassU32, FrameSupportWeightsPerDispatchClassU64, FrameSupportWeightsPerDispatchClassWeightsPerClass, FrameSupportWeightsRuntimeDbWeight, FrameSupportWeightsWeightToFeeCoefficient, FrameSystemAccountInfo, FrameSystemCall, FrameSystemError, FrameSystemEvent, FrameSystemEventRecord, FrameSystemExtensionsCheckGenesis, FrameSystemExtensionsCheckNonce, FrameSystemExtensionsCheckSpecVersion, FrameSystemExtensionsCheckWeight, FrameSystemLastRuntimeUpgradeInfo, FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, FrameSystemLimitsWeightsPerClass, FrameSystemPhase, OpalRuntimeRuntime, OrmlVestingModuleCall, OrmlVestingModuleError, OrmlVestingModuleEvent, OrmlVestingVestingSchedule, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesCall, PalletBalancesError, PalletBalancesEvent, PalletBalancesReasons, PalletBalancesReleases, PalletBalancesReserveData, PalletCommonError, PalletCommonEvent, PalletEthereumCall, PalletEthereumError, PalletEthereumEvent, PalletEthereumFakeTransactionFinalizer, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmCall, PalletEvmCoderSubstrateError, PalletEvmContractHelpersError, PalletEvmContractHelpersSponsoringModeT, PalletEvmError, PalletEvmEvent, PalletEvmMigrationCall, PalletEvmMigrationError, PalletFungibleError, PalletInflationCall, PalletNonfungibleError, PalletNonfungibleItemData, PalletRefungibleError, PalletRefungibleItemData, PalletStructureCall, PalletStructureError, PalletStructureEvent, PalletSudoCall, PalletSudoError, PalletSudoEvent, PalletTemplateTransactionPaymentCall, PalletTemplateTransactionPaymentChargeTransactionPayment, PalletTimestampCall, PalletTransactionPaymentReleases, PalletTreasuryCall, PalletTreasuryError, PalletTreasuryEvent, PalletTreasuryProposal, PalletUniqueCall, PalletUniqueError, PalletUniqueRawEvent, PalletXcmCall, PalletXcmError, PalletXcmEvent, PhantomTypeUpDataStructs, PolkadotCorePrimitivesInboundDownwardMessage, PolkadotCorePrimitivesInboundHrmpMessage, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotParachainPrimitivesXcmpMessageFormat, PolkadotPrimitivesV2AbridgedHostConfiguration, PolkadotPrimitivesV2AbridgedHrmpChannel, PolkadotPrimitivesV2PersistedValidationData, PolkadotPrimitivesV2UpgradeRestriction, SpCoreEcdsaSignature, SpCoreEd25519Signature, SpCoreSr25519Signature, SpRuntimeArithmeticError, SpRuntimeDigest, SpRuntimeDigestDigestItem, SpRuntimeDispatchError, SpRuntimeModuleError, SpRuntimeMultiSignature, SpRuntimeTokenError, SpRuntimeTransactionalError, SpTrieStorageProof, SpVersionRuntimeVersion, UpDataStructsAccessMode, UpDataStructsCollection, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCollectionPermissions, UpDataStructsCollectionStats, UpDataStructsCreateCollectionData, UpDataStructsCreateFungibleData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsCreateNftData, UpDataStructsCreateNftExData, UpDataStructsCreateReFungibleData, UpDataStructsCreateRefungibleExData, UpDataStructsNestingRule, UpDataStructsProperties, UpDataStructsPropertiesMapBoundedVec, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, UpDataStructsPropertyPermission, UpDataStructsRmrkAccountIdOrCollectionNftTuple, UpDataStructsRmrkBaseInfo, UpDataStructsRmrkBasicResource, UpDataStructsRmrkCollectionInfo, UpDataStructsRmrkComposableResource, UpDataStructsRmrkEquippableList, UpDataStructsRmrkFixedPart, UpDataStructsRmrkNftChild, UpDataStructsRmrkNftInfo, UpDataStructsRmrkPartType, UpDataStructsRmrkPropertyInfo, UpDataStructsRmrkResourceInfo, UpDataStructsRmrkResourceTypes, UpDataStructsRmrkRoyaltyInfo, UpDataStructsRmrkSlotPart, UpDataStructsRmrkSlotResource, UpDataStructsRmrkTheme, UpDataStructsRmrkThemeProperty, UpDataStructsRpcCollection, UpDataStructsSponsoringRateLimit, UpDataStructsSponsorshipState, UpDataStructsTokenChild, UpDataStructsTokenData, XcmDoubleEncoded, XcmV0Junction, XcmV0JunctionBodyId, XcmV0JunctionBodyPart, XcmV0JunctionNetworkId, XcmV0MultiAsset, XcmV0MultiLocation, XcmV0Order, XcmV0OriginKind, XcmV0Response, XcmV0Xcm, XcmV1Junction, XcmV1MultiAsset, XcmV1MultiLocation, XcmV1MultiassetAssetId, XcmV1MultiassetAssetInstance, XcmV1MultiassetFungibility, XcmV1MultiassetMultiAssetFilter, XcmV1MultiassetMultiAssets, XcmV1MultiassetWildFungibility, XcmV1MultiassetWildMultiAsset, XcmV1MultilocationJunctions, XcmV1Order, XcmV1Response, XcmV1Xcm, XcmV2Instruction, XcmV2Response, XcmV2TraitsError, XcmV2TraitsOutcome, XcmV2WeightLimit, XcmV2Xcm, XcmVersionedMultiAssets, XcmVersionedMultiLocation, XcmVersionedXcm } from './default';4import type { CumulusPalletDmpQueueCall, CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueueError, CumulusPalletDmpQueueEvent, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemCall, CumulusPalletParachainSystemError, CumulusPalletParachainSystemEvent, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmCall, CumulusPalletXcmError, CumulusPalletXcmEvent, CumulusPalletXcmOrigin, CumulusPalletXcmpQueueCall, CumulusPalletXcmpQueueError, CumulusPalletXcmpQueueEvent, CumulusPalletXcmpQueueInboundChannelDetails, CumulusPalletXcmpQueueInboundState, CumulusPalletXcmpQueueOutboundChannelDetails, CumulusPalletXcmpQueueOutboundState, CumulusPalletXcmpQueueQueueConfigData, CumulusPrimitivesParachainInherentParachainInherentData, EthbloomBloom, EthereumBlock, EthereumHeader, EthereumLog, EthereumReceiptEip658ReceiptData, EthereumReceiptReceiptV3, EthereumTransactionAccessListItem, EthereumTransactionEip1559Transaction, EthereumTransactionEip2930Transaction, EthereumTransactionLegacyTransaction, EthereumTransactionTransactionAction, EthereumTransactionTransactionSignature, EthereumTransactionTransactionV2, EthereumTypesHashH64, EvmCoreErrorExitError, EvmCoreErrorExitFatal, EvmCoreErrorExitReason, EvmCoreErrorExitRevert, EvmCoreErrorExitSucceed, FpRpcTransactionStatus, FrameSupportDispatchRawOrigin, FrameSupportPalletId, FrameSupportScheduleLookupError, FrameSupportScheduleMaybeHashed, FrameSupportTokensMiscBalanceStatus, FrameSupportWeightsDispatchClass, FrameSupportWeightsDispatchInfo, FrameSupportWeightsPays, FrameSupportWeightsPerDispatchClassU32, FrameSupportWeightsPerDispatchClassU64, FrameSupportWeightsPerDispatchClassWeightsPerClass, FrameSupportWeightsRuntimeDbWeight, FrameSupportWeightsWeightToFeeCoefficient, FrameSystemAccountInfo, FrameSystemCall, FrameSystemError, FrameSystemEvent, FrameSystemEventRecord, FrameSystemExtensionsCheckGenesis, FrameSystemExtensionsCheckNonce, FrameSystemExtensionsCheckSpecVersion, FrameSystemExtensionsCheckWeight, FrameSystemLastRuntimeUpgradeInfo, FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, FrameSystemLimitsWeightsPerClass, FrameSystemPhase, OpalRuntimeOriginCaller, OpalRuntimeRuntime, OrmlVestingModuleCall, OrmlVestingModuleError, OrmlVestingModuleEvent, OrmlVestingVestingSchedule, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesCall, PalletBalancesError, PalletBalancesEvent, PalletBalancesReasons, PalletBalancesReleases, PalletBalancesReserveData, PalletCommonError, PalletCommonEvent, PalletEthereumCall, PalletEthereumError, PalletEthereumEvent, PalletEthereumFakeTransactionFinalizer, PalletEthereumRawOrigin, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmCall, PalletEvmCoderSubstrateError, PalletEvmContractHelpersError, PalletEvmContractHelpersSponsoringModeT, PalletEvmError, PalletEvmEvent, PalletEvmMigrationCall, PalletEvmMigrationError, PalletFungibleError, PalletInflationCall, PalletNonfungibleError, PalletNonfungibleItemData, PalletRefungibleError, PalletRefungibleItemData, PalletRmrkCoreCall, PalletRmrkCoreError, PalletRmrkCoreEvent, PalletRmrkEquipCall, PalletRmrkEquipError, PalletRmrkEquipEvent, PalletStructureCall, PalletStructureError, PalletStructureEvent, PalletSudoCall, PalletSudoError, PalletSudoEvent, PalletTemplateTransactionPaymentCall, PalletTemplateTransactionPaymentChargeTransactionPayment, PalletTimestampCall, PalletTransactionPaymentReleases, PalletTreasuryCall, PalletTreasuryError, PalletTreasuryEvent, PalletTreasuryProposal, PalletUniqueCall, PalletUniqueError, PalletUniqueRawEvent, PalletUnqSchedulerCall, PalletUnqSchedulerError, PalletUnqSchedulerEvent, PalletUnqSchedulerScheduledV3, PalletXcmCall, PalletXcmError, PalletXcmEvent, PalletXcmOrigin, PhantomTypeUpDataStructs, PolkadotCorePrimitivesInboundDownwardMessage, PolkadotCorePrimitivesInboundHrmpMessage, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotParachainPrimitivesXcmpMessageFormat, PolkadotPrimitivesV2AbridgedHostConfiguration, PolkadotPrimitivesV2AbridgedHrmpChannel, PolkadotPrimitivesV2PersistedValidationData, PolkadotPrimitivesV2UpgradeRestriction, RmrkTraitsBaseBaseInfo, RmrkTraitsCollectionCollectionInfo, RmrkTraitsNftAccountIdOrCollectionNftTuple, RmrkTraitsNftNftChild, RmrkTraitsNftNftInfo, RmrkTraitsNftRoyaltyInfo, RmrkTraitsPartEquippableList, RmrkTraitsPartFixedPart, RmrkTraitsPartPartType, RmrkTraitsPartSlotPart, RmrkTraitsPropertyPropertyInfo, RmrkTraitsResourceBasicResource, RmrkTraitsResourceComposableResource, RmrkTraitsResourceResourceInfo, RmrkTraitsResourceResourceTypes, RmrkTraitsResourceSlotResource, RmrkTraitsTheme, RmrkTraitsThemeThemeProperty, SpCoreEcdsaSignature, SpCoreEd25519Signature, SpCoreSr25519Signature, SpCoreVoid, SpRuntimeArithmeticError, SpRuntimeDigest, SpRuntimeDigestDigestItem, SpRuntimeDispatchError, SpRuntimeModuleError, SpRuntimeMultiSignature, SpRuntimeTokenError, SpRuntimeTransactionalError, SpTrieStorageProof, SpVersionRuntimeVersion, UpDataStructsAccessMode, UpDataStructsCollection, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCollectionPermissions, UpDataStructsCollectionStats, UpDataStructsCreateCollectionData, UpDataStructsCreateFungibleData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsCreateNftData, UpDataStructsCreateNftExData, UpDataStructsCreateReFungibleData, UpDataStructsCreateRefungibleExData, UpDataStructsNestingRule, UpDataStructsProperties, UpDataStructsPropertiesMapBoundedVec, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, UpDataStructsPropertyPermission, UpDataStructsRpcCollection, UpDataStructsSponsoringRateLimit, UpDataStructsSponsorshipState, UpDataStructsTokenChild, UpDataStructsTokenData, XcmDoubleEncoded, XcmV0Junction, XcmV0JunctionBodyId, XcmV0JunctionBodyPart, XcmV0JunctionNetworkId, XcmV0MultiAsset, XcmV0MultiLocation, XcmV0Order, XcmV0OriginKind, XcmV0Response, XcmV0Xcm, XcmV1Junction, XcmV1MultiAsset, XcmV1MultiLocation, XcmV1MultiassetAssetId, XcmV1MultiassetAssetInstance, XcmV1MultiassetFungibility, XcmV1MultiassetMultiAssetFilter, XcmV1MultiassetMultiAssets, XcmV1MultiassetWildFungibility, XcmV1MultiassetWildMultiAsset, XcmV1MultilocationJunctions, XcmV1Order, XcmV1Response, XcmV1Xcm, XcmV2Instruction, XcmV2Response, XcmV2TraitsError, XcmV2TraitsOutcome, XcmV2WeightLimit, XcmV2Xcm, XcmVersionedMultiAssets, XcmVersionedMultiLocation, XcmVersionedXcm } from './default';5import type { Data, StorageKey } from '@polkadot/types';5import type { Data, StorageKey } from '@polkadot/types';6import type { BitVec, Bool, Bytes, I128, I16, I256, I32, I64, I8, Json, Null, OptionBool, Raw, Text, Type, U128, U16, U256, U32, U64, U8, USize, bool, i128, i16, i256, i32, i64, i8, u128, u16, u256, u32, u64, u8, usize } from '@polkadot/types-codec';6import type { BitVec, Bool, Bytes, I128, I16, I256, I32, I64, I8, Json, Null, OptionBool, Raw, Text, Type, U128, U16, U256, U32, U64, U8, USize, bool, i128, i16, i256, i32, i64, i8, u128, u16, u256, u32, u64, u8, usize } from '@polkadot/types-codec';7import type { AssetApproval, AssetApprovalKey, AssetBalance, AssetDestroyWitness, AssetDetails, AssetMetadata, TAssetBalance, TAssetDepositBalance } from '@polkadot/types/interfaces/assets';7import type { AssetApproval, AssetApprovalKey, AssetBalance, AssetDestroyWitness, AssetDetails, AssetMetadata, TAssetBalance, TAssetDepositBalance } from '@polkadot/types/interfaces/assets';18import type { StatementKind } from '@polkadot/types/interfaces/claims';18import type { StatementKind } from '@polkadot/types/interfaces/claims';19import type { CollectiveOrigin, MemberCount, ProposalIndex, Votes, VotesTo230 } from '@polkadot/types/interfaces/collective';19import type { CollectiveOrigin, MemberCount, ProposalIndex, Votes, VotesTo230 } from '@polkadot/types/interfaces/collective';20import type { AuthorityId, RawVRFOutput } from '@polkadot/types/interfaces/consensus';20import type { AuthorityId, RawVRFOutput } from '@polkadot/types/interfaces/consensus';21import type { AliveContractInfo, CodeHash, CodeSource, CodeUploadRequest, CodeUploadResult, CodeUploadResultValue, ContractCallFlags, ContractCallRequest, ContractExecResult, ContractExecResultErr, ContractExecResultErrModule, ContractExecResultOk, ContractExecResultResult, ContractExecResultSuccessTo255, ContractExecResultSuccessTo260, ContractExecResultTo255, ContractExecResultTo260, ContractExecResultTo267, ContractInfo, ContractInstantiateResult, ContractInstantiateResultTo267, ContractInstantiateResultTo299, ContractReturnFlags, ContractStorageKey, DeletedContract, ExecReturnValue, Gas, HostFnWeights, HostFnWeightsTo264, InstantiateRequest, InstantiateRequestV1, InstantiateRequestV2, InstantiateReturnValue, InstantiateReturnValueOk, InstantiateReturnValueTo267, InstructionWeights, Limits, LimitsTo264, PrefabWasmModule, RentProjection, Schedule, ScheduleTo212, ScheduleTo258, ScheduleTo264, SeedOf, StorageDeposit, TombstoneContractInfo, TrieId } from '@polkadot/types/interfaces/contracts';21import type { AliveContractInfo, CodeHash, CodeSource, CodeUploadRequest, CodeUploadResult, CodeUploadResultValue, ContractCallFlags, ContractCallRequest, ContractExecResult, ContractExecResultOk, ContractExecResultResult, ContractExecResultSuccessTo255, ContractExecResultSuccessTo260, ContractExecResultTo255, ContractExecResultTo260, ContractExecResultTo267, ContractInfo, ContractInstantiateResult, ContractInstantiateResultTo267, ContractInstantiateResultTo299, ContractReturnFlags, ContractStorageKey, DeletedContract, ExecReturnValue, Gas, HostFnWeights, HostFnWeightsTo264, InstantiateRequest, InstantiateRequestV1, InstantiateRequestV2, InstantiateReturnValue, InstantiateReturnValueOk, InstantiateReturnValueTo267, InstructionWeights, Limits, LimitsTo264, PrefabWasmModule, RentProjection, Schedule, ScheduleTo212, ScheduleTo258, ScheduleTo264, SeedOf, StorageDeposit, TombstoneContractInfo, TrieId } from '@polkadot/types/interfaces/contracts';22import type { ContractConstructorSpecLatest, ContractConstructorSpecV0, ContractConstructorSpecV1, ContractConstructorSpecV2, ContractConstructorSpecV3, ContractContractSpecV0, ContractContractSpecV1, ContractContractSpecV2, ContractContractSpecV3, ContractCryptoHasher, ContractDiscriminant, ContractDisplayName, ContractEventParamSpecLatest, ContractEventParamSpecV0, ContractEventParamSpecV2, ContractEventSpecLatest, ContractEventSpecV0, ContractEventSpecV1, ContractEventSpecV2, ContractLayoutArray, ContractLayoutCell, ContractLayoutEnum, ContractLayoutHash, ContractLayoutHashingStrategy, ContractLayoutKey, ContractLayoutStruct, ContractLayoutStructField, ContractMessageParamSpecLatest, ContractMessageParamSpecV0, ContractMessageParamSpecV2, ContractMessageSpecLatest, ContractMessageSpecV0, ContractMessageSpecV1, ContractMessageSpecV2, ContractMetadata, ContractMetadataLatest, ContractMetadataV0, ContractMetadataV1, ContractMetadataV2, ContractMetadataV3, ContractProject, ContractProjectContract, ContractProjectInfo, ContractProjectSource, ContractProjectV0, ContractSelector, ContractStorageLayout, ContractTypeSpec } from '@polkadot/types/interfaces/contractsAbi';22import type { ContractConstructorSpecLatest, ContractConstructorSpecV0, ContractConstructorSpecV1, ContractConstructorSpecV2, ContractConstructorSpecV3, ContractContractSpecV0, ContractContractSpecV1, ContractContractSpecV2, ContractContractSpecV3, ContractCryptoHasher, ContractDiscriminant, ContractDisplayName, ContractEventParamSpecLatest, ContractEventParamSpecV0, ContractEventParamSpecV2, ContractEventSpecLatest, ContractEventSpecV0, ContractEventSpecV1, ContractEventSpecV2, ContractLayoutArray, ContractLayoutCell, ContractLayoutEnum, ContractLayoutHash, ContractLayoutHashingStrategy, ContractLayoutKey, ContractLayoutStruct, ContractLayoutStructField, ContractMessageParamSpecLatest, ContractMessageParamSpecV0, ContractMessageParamSpecV2, ContractMessageSpecLatest, ContractMessageSpecV0, ContractMessageSpecV1, ContractMessageSpecV2, ContractMetadata, ContractMetadataLatest, ContractMetadataV0, ContractMetadataV1, ContractMetadataV2, ContractMetadataV3, ContractProject, ContractProjectContract, ContractProjectInfo, ContractProjectSource, ContractProjectV0, ContractSelector, ContractStorageLayout, ContractTypeSpec } from '@polkadot/types/interfaces/contractsAbi';23import type { FundIndex, FundInfo, LastContribution, TrieIndex } from '@polkadot/types/interfaces/crowdloan';23import type { FundIndex, FundInfo, LastContribution, TrieIndex } from '@polkadot/types/interfaces/crowdloan';24import type { ConfigData, MessageId, OverweightIndex, PageCounter, PageIndexData } from '@polkadot/types/interfaces/cumulus';24import type { ConfigData, MessageId, OverweightIndex, PageCounter, PageIndexData } from '@polkadot/types/interfaces/cumulus';54import type { ActiveEraInfo, CompactAssignments, CompactAssignmentsTo257, CompactAssignmentsTo265, CompactAssignmentsWith16, CompactAssignmentsWith24, CompactScore, CompactScoreCompact, ElectionCompute, ElectionPhase, ElectionResult, ElectionScore, ElectionSize, ElectionStatus, EraIndex, EraPoints, EraRewardPoints, EraRewards, Exposure, ExtendedBalance, Forcing, IndividualExposure, KeyType, MomentOf, Nominations, NominatorIndex, NominatorIndexCompact, OffchainAccuracy, OffchainAccuracyCompact, PhragmenScore, Points, RawSolution, RawSolutionTo265, RawSolutionWith16, RawSolutionWith24, ReadySolution, RewardDestination, RewardPoint, RoundSnapshot, SeatHolder, SignedSubmission, SignedSubmissionOf, SignedSubmissionTo276, SlashJournalEntry, SlashingSpans, SlashingSpansTo204, SolutionOrSnapshotSize, SolutionSupport, SolutionSupports, SpanIndex, SpanRecord, StakingLedger, StakingLedgerTo223, StakingLedgerTo240, SubmissionIndicesOf, Supports, UnappliedSlash, UnappliedSlashOther, UnlockChunk, ValidatorIndex, ValidatorIndexCompact, ValidatorPrefs, ValidatorPrefsTo145, ValidatorPrefsTo196, ValidatorPrefsWithBlocked, ValidatorPrefsWithCommission, VoteWeight, Voter } from '@polkadot/types/interfaces/staking';54import type { ActiveEraInfo, CompactAssignments, CompactAssignmentsTo257, CompactAssignmentsTo265, CompactAssignmentsWith16, CompactAssignmentsWith24, CompactScore, CompactScoreCompact, ElectionCompute, ElectionPhase, ElectionResult, ElectionScore, ElectionSize, ElectionStatus, EraIndex, EraPoints, EraRewardPoints, EraRewards, Exposure, ExtendedBalance, Forcing, IndividualExposure, KeyType, MomentOf, Nominations, NominatorIndex, NominatorIndexCompact, OffchainAccuracy, OffchainAccuracyCompact, PhragmenScore, Points, RawSolution, RawSolutionTo265, RawSolutionWith16, RawSolutionWith24, ReadySolution, RewardDestination, RewardPoint, RoundSnapshot, SeatHolder, SignedSubmission, SignedSubmissionOf, SignedSubmissionTo276, SlashJournalEntry, SlashingSpans, SlashingSpansTo204, SolutionOrSnapshotSize, SolutionSupport, SolutionSupports, SpanIndex, SpanRecord, StakingLedger, StakingLedgerTo223, StakingLedgerTo240, SubmissionIndicesOf, Supports, UnappliedSlash, UnappliedSlashOther, UnlockChunk, ValidatorIndex, ValidatorIndexCompact, ValidatorPrefs, ValidatorPrefsTo145, ValidatorPrefsTo196, ValidatorPrefsWithBlocked, ValidatorPrefsWithCommission, VoteWeight, Voter } from '@polkadot/types/interfaces/staking';55import type { ApiId, BlockTrace, BlockTraceEvent, BlockTraceEventData, BlockTraceSpan, KeyValueOption, MigrationStatusResult, ReadProof, RuntimeVersion, RuntimeVersionApi, RuntimeVersionPartial, SpecVersion, StorageChangeSet, TraceBlockResponse, TraceError } from '@polkadot/types/interfaces/state';55import type { ApiId, BlockTrace, BlockTraceEvent, BlockTraceEventData, BlockTraceSpan, KeyValueOption, MigrationStatusResult, ReadProof, RuntimeVersion, RuntimeVersionApi, RuntimeVersionPartial, SpecVersion, StorageChangeSet, TraceBlockResponse, TraceError } from '@polkadot/types/interfaces/state';56import type { WeightToFeeCoefficient } from '@polkadot/types/interfaces/support';56import type { WeightToFeeCoefficient } from '@polkadot/types/interfaces/support';57import type { AccountInfo, AccountInfoWithDualRefCount, AccountInfoWithProviders, AccountInfoWithRefCount, AccountInfoWithRefCountU8, AccountInfoWithTripleRefCount, ApplyExtrinsicResult, ArithmeticError, BlockLength, BlockWeights, ChainProperties, ChainType, ConsumedWeight, DigestOf, DispatchClass, DispatchError, DispatchErrorModule, DispatchErrorModuleU8a, DispatchErrorTo198, DispatchInfo, DispatchInfoTo190, DispatchInfoTo244, DispatchOutcome, DispatchResult, DispatchResultOf, DispatchResultTo198, Event, EventId, EventIndex, EventRecord, Health, InvalidTransaction, Key, LastRuntimeUpgradeInfo, NetworkState, NetworkStatePeerset, NetworkStatePeersetInfo, NodeRole, NotConnectedPeer, Peer, PeerEndpoint, PeerEndpointAddr, PeerInfo, PeerPing, PerDispatchClassU32, PerDispatchClassWeight, PerDispatchClassWeightsPerClass, Phase, RawOrigin, RefCount, RefCountTo259, SyncState, SystemOrigin, TokenError, TransactionValidityError, UnknownTransaction, WeightPerClass } from '@polkadot/types/interfaces/system';57import type { AccountInfo, AccountInfoWithDualRefCount, AccountInfoWithProviders, AccountInfoWithRefCount, AccountInfoWithRefCountU8, AccountInfoWithTripleRefCount, ApplyExtrinsicResult, ArithmeticError, BlockLength, BlockWeights, ChainProperties, ChainType, ConsumedWeight, DigestOf, DispatchClass, DispatchError, DispatchErrorModule, DispatchErrorModuleU8, DispatchErrorModuleU8a, DispatchErrorTo198, DispatchInfo, DispatchInfoTo190, DispatchInfoTo244, DispatchOutcome, DispatchResult, DispatchResultOf, DispatchResultTo198, Event, EventId, EventIndex, EventRecord, Health, InvalidTransaction, Key, LastRuntimeUpgradeInfo, NetworkState, NetworkStatePeerset, NetworkStatePeersetInfo, NodeRole, NotConnectedPeer, Peer, PeerEndpoint, PeerEndpointAddr, PeerInfo, PeerPing, PerDispatchClassU32, PerDispatchClassWeight, PerDispatchClassWeightsPerClass, Phase, RawOrigin, RefCount, RefCountTo259, SyncState, SystemOrigin, TokenError, TransactionValidityError, TransactionalError, UnknownTransaction, WeightPerClass } from '@polkadot/types/interfaces/system';58import type { Bounty, BountyIndex, BountyStatus, BountyStatusActive, BountyStatusCuratorProposed, BountyStatusPendingPayout, OpenTip, OpenTipFinderTo225, OpenTipTip, OpenTipTo225, TreasuryProposal } from '@polkadot/types/interfaces/treasury';58import type { Bounty, BountyIndex, BountyStatus, BountyStatusActive, BountyStatusCuratorProposed, BountyStatusPendingPayout, OpenTip, OpenTipFinderTo225, OpenTipTip, OpenTipTo225, TreasuryProposal } from '@polkadot/types/interfaces/treasury';59import type { Multiplier } from '@polkadot/types/interfaces/txpayment';59import type { Multiplier } from '@polkadot/types/interfaces/txpayment';60import type { ClassDetails, ClassId, ClassMetadata, DepositBalance, DepositBalanceOf, DestroyWitness, InstanceDetails, InstanceId, InstanceMetadata } from '@polkadot/types/interfaces/uniques';60import type { ClassDetails, ClassId, ClassMetadata, DepositBalance, DepositBalanceOf, DestroyWitness, InstanceDetails, InstanceId, InstanceMetadata } from '@polkadot/types/interfaces/uniques';241 ContractEventSpecV1: ContractEventSpecV1;241 ContractEventSpecV1: ContractEventSpecV1;242 ContractEventSpecV2: ContractEventSpecV2;242 ContractEventSpecV2: ContractEventSpecV2;243 ContractExecResult: ContractExecResult;243 ContractExecResult: ContractExecResult;244 ContractExecResultErr: ContractExecResultErr;245 ContractExecResultErrModule: ContractExecResultErrModule;246 ContractExecResultOk: ContractExecResultOk;244 ContractExecResultOk: ContractExecResultOk;247 ContractExecResultResult: ContractExecResultResult;245 ContractExecResultResult: ContractExecResultResult;248 ContractExecResultSuccessTo255: ContractExecResultSuccessTo255;246 ContractExecResultSuccessTo255: ContractExecResultSuccessTo255;303 CumulusPalletXcmCall: CumulusPalletXcmCall;301 CumulusPalletXcmCall: CumulusPalletXcmCall;304 CumulusPalletXcmError: CumulusPalletXcmError;302 CumulusPalletXcmError: CumulusPalletXcmError;305 CumulusPalletXcmEvent: CumulusPalletXcmEvent;303 CumulusPalletXcmEvent: CumulusPalletXcmEvent;304 CumulusPalletXcmOrigin: CumulusPalletXcmOrigin;306 CumulusPalletXcmpQueueCall: CumulusPalletXcmpQueueCall;305 CumulusPalletXcmpQueueCall: CumulusPalletXcmpQueueCall;307 CumulusPalletXcmpQueueError: CumulusPalletXcmpQueueError;306 CumulusPalletXcmpQueueError: CumulusPalletXcmpQueueError;308 CumulusPalletXcmpQueueEvent: CumulusPalletXcmpQueueEvent;307 CumulusPalletXcmpQueueEvent: CumulusPalletXcmpQueueEvent;329 DispatchClass: DispatchClass;328 DispatchClass: DispatchClass;330 DispatchError: DispatchError;329 DispatchError: DispatchError;331 DispatchErrorModule: DispatchErrorModule;330 DispatchErrorModule: DispatchErrorModule;331 DispatchErrorModuleU8: DispatchErrorModuleU8;332 DispatchErrorModuleU8a: DispatchErrorModuleU8a;332 DispatchErrorModuleU8a: DispatchErrorModuleU8a;333 DispatchErrorTo198: DispatchErrorTo198;333 DispatchErrorTo198: DispatchErrorTo198;334 DispatchFeePayment: DispatchFeePayment;334 DispatchFeePayment: DispatchFeePayment;477 ForkTreePendingChange: ForkTreePendingChange;477 ForkTreePendingChange: ForkTreePendingChange;478 ForkTreePendingChangeNode: ForkTreePendingChangeNode;478 ForkTreePendingChangeNode: ForkTreePendingChangeNode;479 FpRpcTransactionStatus: FpRpcTransactionStatus;479 FpRpcTransactionStatus: FpRpcTransactionStatus;480 FrameSupportDispatchRawOrigin: FrameSupportDispatchRawOrigin;480 FrameSupportPalletId: FrameSupportPalletId;481 FrameSupportPalletId: FrameSupportPalletId;482 FrameSupportScheduleLookupError: FrameSupportScheduleLookupError;483 FrameSupportScheduleMaybeHashed: FrameSupportScheduleMaybeHashed;481 FrameSupportTokensMiscBalanceStatus: FrameSupportTokensMiscBalanceStatus;484 FrameSupportTokensMiscBalanceStatus: FrameSupportTokensMiscBalanceStatus;482 FrameSupportWeightsDispatchClass: FrameSupportWeightsDispatchClass;485 FrameSupportWeightsDispatchClass: FrameSupportWeightsDispatchClass;483 FrameSupportWeightsDispatchInfo: FrameSupportWeightsDispatchInfo;486 FrameSupportWeightsDispatchInfo: FrameSupportWeightsDispatchInfo;717 OffchainAccuracyCompact: OffchainAccuracyCompact;720 OffchainAccuracyCompact: OffchainAccuracyCompact;718 OffenceDetails: OffenceDetails;721 OffenceDetails: OffenceDetails;719 Offender: Offender;722 Offender: Offender;723 OpalRuntimeOriginCaller: OpalRuntimeOriginCaller;720 OpalRuntimeRuntime: OpalRuntimeRuntime;724 OpalRuntimeRuntime: OpalRuntimeRuntime;721 OpaqueCall: OpaqueCall;725 OpaqueCall: OpaqueCall;722 OpaqueMultiaddr: OpaqueMultiaddr;726 OpaqueMultiaddr: OpaqueMultiaddr;768 PalletEthereumError: PalletEthereumError;772 PalletEthereumError: PalletEthereumError;769 PalletEthereumEvent: PalletEthereumEvent;773 PalletEthereumEvent: PalletEthereumEvent;770 PalletEthereumFakeTransactionFinalizer: PalletEthereumFakeTransactionFinalizer;774 PalletEthereumFakeTransactionFinalizer: PalletEthereumFakeTransactionFinalizer;775 PalletEthereumRawOrigin: PalletEthereumRawOrigin;771 PalletEventMetadataLatest: PalletEventMetadataLatest;776 PalletEventMetadataLatest: PalletEventMetadataLatest;772 PalletEventMetadataV14: PalletEventMetadataV14;777 PalletEventMetadataV14: PalletEventMetadataV14;773 PalletEvmAccountBasicCrossAccountIdRepr: PalletEvmAccountBasicCrossAccountIdRepr;778 PalletEvmAccountBasicCrossAccountIdRepr: PalletEvmAccountBasicCrossAccountIdRepr;788 PalletNonfungibleItemData: PalletNonfungibleItemData;793 PalletNonfungibleItemData: PalletNonfungibleItemData;789 PalletRefungibleError: PalletRefungibleError;794 PalletRefungibleError: PalletRefungibleError;790 PalletRefungibleItemData: PalletRefungibleItemData;795 PalletRefungibleItemData: PalletRefungibleItemData;796 PalletRmrkCoreCall: PalletRmrkCoreCall;797 PalletRmrkCoreError: PalletRmrkCoreError;798 PalletRmrkCoreEvent: PalletRmrkCoreEvent;799 PalletRmrkEquipCall: PalletRmrkEquipCall;800 PalletRmrkEquipError: PalletRmrkEquipError;801 PalletRmrkEquipEvent: PalletRmrkEquipEvent;791 PalletsOrigin: PalletsOrigin;802 PalletsOrigin: PalletsOrigin;792 PalletStorageMetadataLatest: PalletStorageMetadataLatest;803 PalletStorageMetadataLatest: PalletStorageMetadataLatest;793 PalletStorageMetadataV14: PalletStorageMetadataV14;804 PalletStorageMetadataV14: PalletStorageMetadataV14;808 PalletUniqueCall: PalletUniqueCall;819 PalletUniqueCall: PalletUniqueCall;809 PalletUniqueError: PalletUniqueError;820 PalletUniqueError: PalletUniqueError;810 PalletUniqueRawEvent: PalletUniqueRawEvent;821 PalletUniqueRawEvent: PalletUniqueRawEvent;822 PalletUnqSchedulerCall: PalletUnqSchedulerCall;823 PalletUnqSchedulerError: PalletUnqSchedulerError;824 PalletUnqSchedulerEvent: PalletUnqSchedulerEvent;825 PalletUnqSchedulerScheduledV3: PalletUnqSchedulerScheduledV3;811 PalletVersion: PalletVersion;826 PalletVersion: PalletVersion;812 PalletXcmCall: PalletXcmCall;827 PalletXcmCall: PalletXcmCall;813 PalletXcmError: PalletXcmError;828 PalletXcmError: PalletXcmError;814 PalletXcmEvent: PalletXcmEvent;829 PalletXcmEvent: PalletXcmEvent;830 PalletXcmOrigin: PalletXcmOrigin;815 ParachainDispatchOrigin: ParachainDispatchOrigin;831 ParachainDispatchOrigin: ParachainDispatchOrigin;816 ParachainInherentData: ParachainInherentData;832 ParachainInherentData: ParachainInherentData;817 ParachainProposal: ParachainProposal;833 ParachainProposal: ParachainProposal;943 Retriable: Retriable;959 Retriable: Retriable;944 RewardDestination: RewardDestination;960 RewardDestination: RewardDestination;945 RewardPoint: RewardPoint;961 RewardPoint: RewardPoint;962 RmrkTraitsBaseBaseInfo: RmrkTraitsBaseBaseInfo;963 RmrkTraitsCollectionCollectionInfo: RmrkTraitsCollectionCollectionInfo;964 RmrkTraitsNftAccountIdOrCollectionNftTuple: RmrkTraitsNftAccountIdOrCollectionNftTuple;965 RmrkTraitsNftNftChild: RmrkTraitsNftNftChild;966 RmrkTraitsNftNftInfo: RmrkTraitsNftNftInfo;967 RmrkTraitsNftRoyaltyInfo: RmrkTraitsNftRoyaltyInfo;968 RmrkTraitsPartEquippableList: RmrkTraitsPartEquippableList;969 RmrkTraitsPartFixedPart: RmrkTraitsPartFixedPart;970 RmrkTraitsPartPartType: RmrkTraitsPartPartType;971 RmrkTraitsPartSlotPart: RmrkTraitsPartSlotPart;972 RmrkTraitsPropertyPropertyInfo: RmrkTraitsPropertyPropertyInfo;973 RmrkTraitsResourceBasicResource: RmrkTraitsResourceBasicResource;974 RmrkTraitsResourceComposableResource: RmrkTraitsResourceComposableResource;975 RmrkTraitsResourceResourceInfo: RmrkTraitsResourceResourceInfo;976 RmrkTraitsResourceResourceTypes: RmrkTraitsResourceResourceTypes;977 RmrkTraitsResourceSlotResource: RmrkTraitsResourceSlotResource;978 RmrkTraitsTheme: RmrkTraitsTheme;979 RmrkTraitsThemeThemeProperty: RmrkTraitsThemeThemeProperty;946 RoundSnapshot: RoundSnapshot;980 RoundSnapshot: RoundSnapshot;947 RoundState: RoundState;981 RoundState: RoundState;948 RpcMethods: RpcMethods;982 RpcMethods: RpcMethods;1061 SpCoreEcdsaSignature: SpCoreEcdsaSignature;1095 SpCoreEcdsaSignature: SpCoreEcdsaSignature;1062 SpCoreEd25519Signature: SpCoreEd25519Signature;1096 SpCoreEd25519Signature: SpCoreEd25519Signature;1063 SpCoreSr25519Signature: SpCoreSr25519Signature;1097 SpCoreSr25519Signature: SpCoreSr25519Signature;1098 SpCoreVoid: SpCoreVoid;1064 SpecVersion: SpecVersion;1099 SpecVersion: SpecVersion;1065 SpRuntimeArithmeticError: SpRuntimeArithmeticError;1100 SpRuntimeArithmeticError: SpRuntimeArithmeticError;1066 SpRuntimeDigest: SpRuntimeDigest;1101 SpRuntimeDigest: SpRuntimeDigest;1136 TombstoneContractInfo: TombstoneContractInfo;1171 TombstoneContractInfo: TombstoneContractInfo;1137 TraceBlockResponse: TraceBlockResponse;1172 TraceBlockResponse: TraceBlockResponse;1138 TraceError: TraceError;1173 TraceError: TraceError;1174 TransactionalError: TransactionalError;1139 TransactionInfo: TransactionInfo;1175 TransactionInfo: TransactionInfo;1140 TransactionPriority: TransactionPriority;1176 TransactionPriority: TransactionPriority;1141 TransactionStorageProof: TransactionStorageProof;1177 TransactionStorageProof: TransactionStorageProof;1189 UpDataStructsProperty: UpDataStructsProperty;1225 UpDataStructsProperty: UpDataStructsProperty;1190 UpDataStructsPropertyKeyPermission: UpDataStructsPropertyKeyPermission;1226 UpDataStructsPropertyKeyPermission: UpDataStructsPropertyKeyPermission;1191 UpDataStructsPropertyPermission: UpDataStructsPropertyPermission;1227 UpDataStructsPropertyPermission: UpDataStructsPropertyPermission;1192 UpDataStructsRmrkAccountIdOrCollectionNftTuple: UpDataStructsRmrkAccountIdOrCollectionNftTuple;1193 UpDataStructsRmrkBaseInfo: UpDataStructsRmrkBaseInfo;1194 UpDataStructsRmrkBasicResource: UpDataStructsRmrkBasicResource;1195 UpDataStructsRmrkCollectionInfo: UpDataStructsRmrkCollectionInfo;1196 UpDataStructsRmrkComposableResource: UpDataStructsRmrkComposableResource;1197 UpDataStructsRmrkEquippableList: UpDataStructsRmrkEquippableList;1198 UpDataStructsRmrkFixedPart: UpDataStructsRmrkFixedPart;1199 UpDataStructsRmrkNftChild: UpDataStructsRmrkNftChild;1200 UpDataStructsRmrkNftInfo: UpDataStructsRmrkNftInfo;1201 UpDataStructsRmrkPartType: UpDataStructsRmrkPartType;1202 UpDataStructsRmrkPropertyInfo: UpDataStructsRmrkPropertyInfo;1203 UpDataStructsRmrkResourceInfo: UpDataStructsRmrkResourceInfo;1204 UpDataStructsRmrkResourceTypes: UpDataStructsRmrkResourceTypes;1205 UpDataStructsRmrkRoyaltyInfo: UpDataStructsRmrkRoyaltyInfo;1206 UpDataStructsRmrkSlotPart: UpDataStructsRmrkSlotPart;1207 UpDataStructsRmrkSlotResource: UpDataStructsRmrkSlotResource;1208 UpDataStructsRmrkTheme: UpDataStructsRmrkTheme;1209 UpDataStructsRmrkThemeProperty: UpDataStructsRmrkThemeProperty;1210 UpDataStructsRpcCollection: UpDataStructsRpcCollection;1228 UpDataStructsRpcCollection: UpDataStructsRpcCollection;1211 UpDataStructsSponsoringRateLimit: UpDataStructsSponsoringRateLimit;1229 UpDataStructsSponsoringRateLimit: UpDataStructsSponsoringRateLimit;1212 UpDataStructsSponsorshipState: UpDataStructsSponsorshipState;1230 UpDataStructsSponsorshipState: UpDataStructsSponsorshipState;tests/src/interfaces/default/types.tsdiffbeforeafterboth126 readonly type: 'InvalidFormat' | 'UnsupportedVersion' | 'ExecutedDownward';126 readonly type: 'InvalidFormat' | 'UnsupportedVersion' | 'ExecutedDownward';127}127}128129/** @name CumulusPalletXcmOrigin */130export interface CumulusPalletXcmOrigin extends Enum {131 readonly isRelay: boolean;132 readonly isSiblingParachain: boolean;133 readonly asSiblingParachain: u32;134 readonly type: 'Relay' | 'SiblingParachain';135}128136129/** @name CumulusPalletXcmpQueueCall */137/** @name CumulusPalletXcmpQueueCall */130export interface CumulusPalletXcmpQueueCall extends Enum {138export interface CumulusPalletXcmpQueueCall extends Enum {443 readonly logsBloom: EthbloomBloom;451 readonly logsBloom: EthbloomBloom;444}452}453454/** @name FrameSupportDispatchRawOrigin */455export interface FrameSupportDispatchRawOrigin extends Enum {456 readonly isRoot: boolean;457 readonly isSigned: boolean;458 readonly asSigned: AccountId32;459 readonly isNone: boolean;460 readonly type: 'Root' | 'Signed' | 'None';461}445462446/** @name FrameSupportPalletId */463/** @name FrameSupportPalletId */447export interface FrameSupportPalletId extends U8aFixed {}464export interface FrameSupportPalletId extends U8aFixed {}465466/** @name FrameSupportScheduleLookupError */467export interface FrameSupportScheduleLookupError extends Enum {468 readonly isUnknown: boolean;469 readonly isBadFormat: boolean;470 readonly type: 'Unknown' | 'BadFormat';471}472473/** @name FrameSupportScheduleMaybeHashed */474export interface FrameSupportScheduleMaybeHashed extends Enum {475 readonly isValue: boolean;476 readonly asValue: Call;477 readonly isHash: boolean;478 readonly asHash: H256;479 readonly type: 'Value' | 'Hash';480}448481449/** @name FrameSupportTokensMiscBalanceStatus */482/** @name FrameSupportTokensMiscBalanceStatus */450export interface FrameSupportTokensMiscBalanceStatus extends Enum {483export interface FrameSupportTokensMiscBalanceStatus extends Enum {654 readonly type: 'ApplyExtrinsic' | 'Finalization' | 'Initialization';687 readonly type: 'ApplyExtrinsic' | 'Finalization' | 'Initialization';655}688}689690/** @name OpalRuntimeOriginCaller */691export interface OpalRuntimeOriginCaller extends Enum {692 readonly isVoid: boolean;693 readonly asVoid: SpCoreVoid;694 readonly isSystem: boolean;695 readonly asSystem: FrameSupportDispatchRawOrigin;696 readonly isPolkadotXcm: boolean;697 readonly asPolkadotXcm: PalletXcmOrigin;698 readonly isCumulusXcm: boolean;699 readonly asCumulusXcm: CumulusPalletXcmOrigin;700 readonly isEthereum: boolean;701 readonly asEthereum: PalletEthereumRawOrigin;702 readonly type: 'Void' | 'System' | 'PolkadotXcm' | 'CumulusXcm' | 'Ethereum';703}656704657/** @name OpalRuntimeRuntime */705/** @name OpalRuntimeRuntime */658export interface OpalRuntimeRuntime extends Null {}706export interface OpalRuntimeRuntime extends Null {}896 readonly isPropertyKeyIsTooLong: boolean;944 readonly isPropertyKeyIsTooLong: boolean;897 readonly isInvalidCharacterInPropertyKey: boolean;945 readonly isInvalidCharacterInPropertyKey: boolean;898 readonly isEmptyPropertyKey: boolean;946 readonly isEmptyPropertyKey: boolean;947 readonly isCollectionIsExternal: boolean;948 readonly isCollectionIsInternal: boolean;899 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' | 'NestingIsDisabled' | 'OnlyOwnerAllowedToNest' | 'SourceCollectionIsNotAllowedToNest' | 'CollectionFieldSizeExceeded' | 'NoSpaceForProperty' | 'PropertyLimitReached' | 'PropertyKeyIsTooLong' | 'InvalidCharacterInPropertyKey' | 'EmptyPropertyKey';949 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' | 'NestingIsDisabled' | 'OnlyOwnerAllowedToNest' | 'SourceCollectionIsNotAllowedToNest' | 'CollectionFieldSizeExceeded' | 'NoSpaceForProperty' | 'PropertyLimitReached' | 'PropertyKeyIsTooLong' | 'InvalidCharacterInPropertyKey' | 'EmptyPropertyKey' | 'CollectionIsExternal' | 'CollectionIsInternal';900}950}901951902/** @name PalletCommonEvent */952/** @name PalletCommonEvent */952/** @name PalletEthereumFakeTransactionFinalizer */1002/** @name PalletEthereumFakeTransactionFinalizer */953export interface PalletEthereumFakeTransactionFinalizer extends Null {}1003export interface PalletEthereumFakeTransactionFinalizer extends Null {}10041005/** @name PalletEthereumRawOrigin */1006export interface PalletEthereumRawOrigin extends Enum {1007 readonly isEthereumTransaction: boolean;1008 readonly asEthereumTransaction: H160;1009 readonly type: 'EthereumTransaction';1010}9541011955/** @name PalletEvmAccountBasicCrossAccountIdRepr */1012/** @name PalletEvmAccountBasicCrossAccountIdRepr */956export interface PalletEvmAccountBasicCrossAccountIdRepr extends Enum {1013export interface PalletEvmAccountBasicCrossAccountIdRepr extends Enum {1129 readonly constData: Bytes;1186 readonly constData: Bytes;1130}1187}11881189/** @name PalletRmrkCoreCall */1190export interface PalletRmrkCoreCall extends Enum {1191 readonly isCreateCollection: boolean;1192 readonly asCreateCollection: {1193 readonly metadata: Bytes;1194 readonly max: Option<u32>;1195 readonly symbol: Bytes;1196 } & Struct;1197 readonly isDestroyCollection: boolean;1198 readonly asDestroyCollection: {1199 readonly collectionId: u32;1200 } & Struct;1201 readonly isChangeCollectionIssuer: boolean;1202 readonly asChangeCollectionIssuer: {1203 readonly collectionId: u32;1204 readonly newIssuer: MultiAddress;1205 } & Struct;1206 readonly isLockCollection: boolean;1207 readonly asLockCollection: {1208 readonly collectionId: u32;1209 } & Struct;1210 readonly isMintNft: boolean;1211 readonly asMintNft: {1212 readonly owner: AccountId32;1213 readonly collectionId: u32;1214 readonly recipient: Option<AccountId32>;1215 readonly royaltyAmount: Option<Permill>;1216 readonly metadata: Bytes;1217 readonly transferable: bool;1218 } & Struct;1219 readonly isBurnNft: boolean;1220 readonly asBurnNft: {1221 readonly collectionId: u32;1222 readonly nftId: u32;1223 } & Struct;1224 readonly isSend: boolean;1225 readonly asSend: {1226 readonly rmrkCollectionId: u32;1227 readonly rmrkNftId: u32;1228 readonly newOwner: RmrkTraitsNftAccountIdOrCollectionNftTuple;1229 } & Struct;1230 readonly isAcceptNft: boolean;1231 readonly asAcceptNft: {1232 readonly rmrkCollectionId: u32;1233 readonly rmrkNftId: u32;1234 readonly newOwner: RmrkTraitsNftAccountIdOrCollectionNftTuple;1235 } & Struct;1236 readonly isRejectNft: boolean;1237 readonly asRejectNft: {1238 readonly rmrkCollectionId: u32;1239 readonly rmrkNftId: u32;1240 } & Struct;1241 readonly isAcceptResource: boolean;1242 readonly asAcceptResource: {1243 readonly rmrkCollectionId: u32;1244 readonly rmrkNftId: u32;1245 readonly rmrkResourceId: u32;1246 } & Struct;1247 readonly isAcceptResourceRemoval: boolean;1248 readonly asAcceptResourceRemoval: {1249 readonly rmrkCollectionId: u32;1250 readonly rmrkNftId: u32;1251 readonly rmrkResourceId: u32;1252 } & Struct;1253 readonly isSetProperty: boolean;1254 readonly asSetProperty: {1255 readonly rmrkCollectionId: Compact<u32>;1256 readonly maybeNftId: Option<u32>;1257 readonly key: Bytes;1258 readonly value: Bytes;1259 } & Struct;1260 readonly isSetPriority: boolean;1261 readonly asSetPriority: {1262 readonly rmrkCollectionId: u32;1263 readonly rmrkNftId: u32;1264 readonly priorities: Vec<u32>;1265 } & Struct;1266 readonly isAddBasicResource: boolean;1267 readonly asAddBasicResource: {1268 readonly rmrkCollectionId: u32;1269 readonly nftId: u32;1270 readonly resource: RmrkTraitsResourceBasicResource;1271 } & Struct;1272 readonly isAddComposableResource: boolean;1273 readonly asAddComposableResource: {1274 readonly rmrkCollectionId: u32;1275 readonly nftId: u32;1276 readonly resourceId: Bytes;1277 readonly resource: RmrkTraitsResourceComposableResource;1278 } & Struct;1279 readonly isAddSlotResource: boolean;1280 readonly asAddSlotResource: {1281 readonly rmrkCollectionId: u32;1282 readonly nftId: u32;1283 readonly resource: RmrkTraitsResourceSlotResource;1284 } & Struct;1285 readonly isRemoveResource: boolean;1286 readonly asRemoveResource: {1287 readonly rmrkCollectionId: u32;1288 readonly nftId: u32;1289 readonly resourceId: u32;1290 } & Struct;1291 readonly type: 'CreateCollection' | 'DestroyCollection' | 'ChangeCollectionIssuer' | 'LockCollection' | 'MintNft' | 'BurnNft' | 'Send' | 'AcceptNft' | 'RejectNft' | 'AcceptResource' | 'AcceptResourceRemoval' | 'SetProperty' | 'SetPriority' | 'AddBasicResource' | 'AddComposableResource' | 'AddSlotResource' | 'RemoveResource';1292}12931294/** @name PalletRmrkCoreError */1295export interface PalletRmrkCoreError extends Enum {1296 readonly isCorruptedCollectionType: boolean;1297 readonly isNftTypeEncodeError: boolean;1298 readonly isRmrkPropertyKeyIsTooLong: boolean;1299 readonly isRmrkPropertyValueIsTooLong: boolean;1300 readonly isCollectionNotEmpty: boolean;1301 readonly isNoAvailableCollectionId: boolean;1302 readonly isNoAvailableNftId: boolean;1303 readonly isCollectionUnknown: boolean;1304 readonly isNoPermission: boolean;1305 readonly isNonTransferable: boolean;1306 readonly isCollectionFullOrLocked: boolean;1307 readonly isResourceDoesntExist: boolean;1308 readonly isCannotSendToDescendentOrSelf: boolean;1309 readonly isCannotAcceptNonOwnedNft: boolean;1310 readonly isCannotRejectNonOwnedNft: boolean;1311 readonly isResourceNotPending: boolean;1312 readonly type: 'CorruptedCollectionType' | 'NftTypeEncodeError' | 'RmrkPropertyKeyIsTooLong' | 'RmrkPropertyValueIsTooLong' | 'CollectionNotEmpty' | 'NoAvailableCollectionId' | 'NoAvailableNftId' | 'CollectionUnknown' | 'NoPermission' | 'NonTransferable' | 'CollectionFullOrLocked' | 'ResourceDoesntExist' | 'CannotSendToDescendentOrSelf' | 'CannotAcceptNonOwnedNft' | 'CannotRejectNonOwnedNft' | 'ResourceNotPending';1313}13141315/** @name PalletRmrkCoreEvent */1316export interface PalletRmrkCoreEvent extends Enum {1317 readonly isCollectionCreated: boolean;1318 readonly asCollectionCreated: {1319 readonly issuer: AccountId32;1320 readonly collectionId: u32;1321 } & Struct;1322 readonly isCollectionDestroyed: boolean;1323 readonly asCollectionDestroyed: {1324 readonly issuer: AccountId32;1325 readonly collectionId: u32;1326 } & Struct;1327 readonly isIssuerChanged: boolean;1328 readonly asIssuerChanged: {1329 readonly oldIssuer: AccountId32;1330 readonly newIssuer: AccountId32;1331 readonly collectionId: u32;1332 } & Struct;1333 readonly isCollectionLocked: boolean;1334 readonly asCollectionLocked: {1335 readonly issuer: AccountId32;1336 readonly collectionId: u32;1337 } & Struct;1338 readonly isNftMinted: boolean;1339 readonly asNftMinted: {1340 readonly owner: AccountId32;1341 readonly collectionId: u32;1342 readonly nftId: u32;1343 } & Struct;1344 readonly isNftBurned: boolean;1345 readonly asNftBurned: {1346 readonly owner: AccountId32;1347 readonly nftId: u32;1348 } & Struct;1349 readonly isNftSent: boolean;1350 readonly asNftSent: {1351 readonly sender: AccountId32;1352 readonly recipient: RmrkTraitsNftAccountIdOrCollectionNftTuple;1353 readonly collectionId: u32;1354 readonly nftId: u32;1355 readonly approvalRequired: bool;1356 } & Struct;1357 readonly isNftAccepted: boolean;1358 readonly asNftAccepted: {1359 readonly sender: AccountId32;1360 readonly recipient: RmrkTraitsNftAccountIdOrCollectionNftTuple;1361 readonly collectionId: u32;1362 readonly nftId: u32;1363 } & Struct;1364 readonly isNftRejected: boolean;1365 readonly asNftRejected: {1366 readonly sender: AccountId32;1367 readonly collectionId: u32;1368 readonly nftId: u32;1369 } & Struct;1370 readonly isPropertySet: boolean;1371 readonly asPropertySet: {1372 readonly collectionId: u32;1373 readonly maybeNftId: Option<u32>;1374 readonly key: Bytes;1375 readonly value: Bytes;1376 } & Struct;1377 readonly isResourceAdded: boolean;1378 readonly asResourceAdded: {1379 readonly nftId: u32;1380 readonly resourceId: u32;1381 } & Struct;1382 readonly isResourceRemoval: boolean;1383 readonly asResourceRemoval: {1384 readonly nftId: u32;1385 readonly resourceId: u32;1386 } & Struct;1387 readonly isResourceAccepted: boolean;1388 readonly asResourceAccepted: {1389 readonly nftId: u32;1390 readonly resourceId: u32;1391 } & Struct;1392 readonly isResourceRemovalAccepted: boolean;1393 readonly asResourceRemovalAccepted: {1394 readonly nftId: u32;1395 readonly resourceId: u32;1396 } & Struct;1397 readonly isPrioritySet: boolean;1398 readonly asPrioritySet: {1399 readonly collectionId: u32;1400 readonly nftId: u32;1401 } & Struct;1402 readonly type: 'CollectionCreated' | 'CollectionDestroyed' | 'IssuerChanged' | 'CollectionLocked' | 'NftMinted' | 'NftBurned' | 'NftSent' | 'NftAccepted' | 'NftRejected' | 'PropertySet' | 'ResourceAdded' | 'ResourceRemoval' | 'ResourceAccepted' | 'ResourceRemovalAccepted' | 'PrioritySet';1403}14041405/** @name PalletRmrkEquipCall */1406export interface PalletRmrkEquipCall extends Enum {1407 readonly isCreateBase: boolean;1408 readonly asCreateBase: {1409 readonly baseType: Bytes;1410 readonly symbol: Bytes;1411 readonly parts: Vec<RmrkTraitsPartPartType>;1412 } & Struct;1413 readonly isThemeAdd: boolean;1414 readonly asThemeAdd: {1415 readonly baseId: u32;1416 readonly theme: RmrkTraitsTheme;1417 } & Struct;1418 readonly type: 'CreateBase' | 'ThemeAdd';1419}14201421/** @name PalletRmrkEquipError */1422export interface PalletRmrkEquipError extends Enum {1423 readonly isPermissionError: boolean;1424 readonly isNoAvailableBaseId: boolean;1425 readonly isNoAvailablePartId: boolean;1426 readonly isBaseDoesntExist: boolean;1427 readonly isNeedsDefaultThemeFirst: boolean;1428 readonly type: 'PermissionError' | 'NoAvailableBaseId' | 'NoAvailablePartId' | 'BaseDoesntExist' | 'NeedsDefaultThemeFirst';1429}14301431/** @name PalletRmrkEquipEvent */1432export interface PalletRmrkEquipEvent extends Enum {1433 readonly isBaseCreated: boolean;1434 readonly asBaseCreated: {1435 readonly issuer: AccountId32;1436 readonly baseId: u32;1437 } & Struct;1438 readonly type: 'BaseCreated';1439}113114401132/** @name PalletStructureCall */1441/** @name PalletStructureCall */1133export interface PalletStructureCall extends Null {}1442export interface PalletStructureCall extends Null {}1230 readonly asApproveProposal: {1539 readonly asApproveProposal: {1231 readonly proposalId: Compact<u32>;1540 readonly proposalId: Compact<u32>;1232 } & Struct;1541 } & Struct;1542 readonly isRemoveApproval: boolean;1543 readonly asRemoveApproval: {1544 readonly proposalId: Compact<u32>;1545 } & Struct;1233 readonly type: 'ProposeSpend' | 'RejectProposal' | 'ApproveProposal';1546 readonly type: 'ProposeSpend' | 'RejectProposal' | 'ApproveProposal' | 'RemoveApproval';1234}1547}123515481236/** @name PalletTreasuryError */1549/** @name PalletTreasuryError */1237export interface PalletTreasuryError extends Enum {1550export interface PalletTreasuryError extends Enum {1238 readonly isInsufficientProposersBalance: boolean;1551 readonly isInsufficientProposersBalance: boolean;1239 readonly isInvalidIndex: boolean;1552 readonly isInvalidIndex: boolean;1240 readonly isTooManyApprovals: boolean;1553 readonly isTooManyApprovals: boolean;1554 readonly isProposalNotApproved: boolean;1241 readonly type: 'InsufficientProposersBalance' | 'InvalidIndex' | 'TooManyApprovals';1555 readonly type: 'InsufficientProposersBalance' | 'InvalidIndex' | 'TooManyApprovals' | 'ProposalNotApproved';1242}1556}124315571244/** @name PalletTreasuryEvent */1558/** @name PalletTreasuryEvent */1470 readonly type: 'CollectionSponsorRemoved' | 'CollectionAdminAdded' | 'CollectionOwnedChanged' | 'CollectionSponsorSet' | 'SponsorshipConfirmed' | 'CollectionAdminRemoved' | 'AllowListAddressRemoved' | 'AllowListAddressAdded' | 'CollectionLimitSet' | 'CollectionPermissionSet';1784 readonly type: 'CollectionSponsorRemoved' | 'CollectionAdminAdded' | 'CollectionOwnedChanged' | 'CollectionSponsorSet' | 'SponsorshipConfirmed' | 'CollectionAdminRemoved' | 'AllowListAddressRemoved' | 'AllowListAddressAdded' | 'CollectionLimitSet' | 'CollectionPermissionSet';1471}1785}17861787/** @name PalletUnqSchedulerCall */1788export interface PalletUnqSchedulerCall extends Enum {1789 readonly isScheduleNamed: boolean;1790 readonly asScheduleNamed: {1791 readonly id: U8aFixed;1792 readonly when: u32;1793 readonly maybePeriodic: Option<ITuple<[u32, u32]>>;1794 readonly priority: u8;1795 readonly call: FrameSupportScheduleMaybeHashed;1796 } & Struct;1797 readonly isCancelNamed: boolean;1798 readonly asCancelNamed: {1799 readonly id: U8aFixed;1800 } & Struct;1801 readonly isScheduleNamedAfter: boolean;1802 readonly asScheduleNamedAfter: {1803 readonly id: U8aFixed;1804 readonly after: u32;1805 readonly maybePeriodic: Option<ITuple<[u32, u32]>>;1806 readonly priority: u8;1807 readonly call: FrameSupportScheduleMaybeHashed;1808 } & Struct;1809 readonly type: 'ScheduleNamed' | 'CancelNamed' | 'ScheduleNamedAfter';1810}18111812/** @name PalletUnqSchedulerError */1813export interface PalletUnqSchedulerError extends Enum {1814 readonly isFailedToSchedule: boolean;1815 readonly isNotFound: boolean;1816 readonly isTargetBlockNumberInPast: boolean;1817 readonly isRescheduleNoChange: boolean;1818 readonly type: 'FailedToSchedule' | 'NotFound' | 'TargetBlockNumberInPast' | 'RescheduleNoChange';1819}18201821/** @name PalletUnqSchedulerEvent */1822export interface PalletUnqSchedulerEvent extends Enum {1823 readonly isScheduled: boolean;1824 readonly asScheduled: {1825 readonly when: u32;1826 readonly index: u32;1827 } & Struct;1828 readonly isCanceled: boolean;1829 readonly asCanceled: {1830 readonly when: u32;1831 readonly index: u32;1832 } & Struct;1833 readonly isDispatched: boolean;1834 readonly asDispatched: {1835 readonly task: ITuple<[u32, u32]>;1836 readonly id: Option<U8aFixed>;1837 readonly result: Result<Null, SpRuntimeDispatchError>;1838 } & Struct;1839 readonly isCallLookupFailed: boolean;1840 readonly asCallLookupFailed: {1841 readonly task: ITuple<[u32, u32]>;1842 readonly id: Option<U8aFixed>;1843 readonly error: FrameSupportScheduleLookupError;1844 } & Struct;1845 readonly type: 'Scheduled' | 'Canceled' | 'Dispatched' | 'CallLookupFailed';1846}18471848/** @name PalletUnqSchedulerScheduledV3 */1849export interface PalletUnqSchedulerScheduledV3 extends Struct {1850 readonly maybeId: Option<U8aFixed>;1851 readonly priority: u8;1852 readonly call: FrameSupportScheduleMaybeHashed;1853 readonly maybePeriodic: Option<ITuple<[u32, u32]>>;1854 readonly origin: OpalRuntimeOriginCaller;1855}147218561473/** @name PalletXcmCall */1857/** @name PalletXcmCall */1474export interface PalletXcmCall extends Enum {1858export interface PalletXcmCall extends Enum {1587 readonly type: 'Attempted' | 'Sent' | 'UnexpectedResponse' | 'ResponseReady' | 'Notified' | 'NotifyOverweight' | 'NotifyDispatchError' | 'NotifyDecodeFailed' | 'InvalidResponder' | 'InvalidResponderVersion' | 'ResponseTaken' | 'AssetsTrapped' | 'VersionChangeNotified' | 'SupportedVersionChanged' | 'NotifyTargetSendFail' | 'NotifyTargetMigrationFail';1971 readonly type: 'Attempted' | 'Sent' | 'UnexpectedResponse' | 'ResponseReady' | 'Notified' | 'NotifyOverweight' | 'NotifyDispatchError' | 'NotifyDecodeFailed' | 'InvalidResponder' | 'InvalidResponderVersion' | 'ResponseTaken' | 'AssetsTrapped' | 'VersionChangeNotified' | 'SupportedVersionChanged' | 'NotifyTargetSendFail' | 'NotifyTargetMigrationFail';1588}1972}19731974/** @name PalletXcmOrigin */1975export interface PalletXcmOrigin extends Enum {1976 readonly isXcm: boolean;1977 readonly asXcm: XcmV1MultiLocation;1978 readonly isResponse: boolean;1979 readonly asResponse: XcmV1MultiLocation;1980 readonly type: 'Xcm' | 'Response';1981}158919821590/** @name PhantomTypeUpDataStructs */1983/** @name PhantomTypeUpDataStructs */1591export interface PhantomTypeUpDataStructs extends Vec<ITuple<[UpDataStructsTokenData, UpDataStructsRpcCollection, UpDataStructsRmrkCollectionInfo, UpDataStructsRmrkNftInfo, UpDataStructsRmrkResourceInfo, UpDataStructsRmrkPropertyInfo, UpDataStructsRmrkBaseInfo, UpDataStructsRmrkPartType, UpDataStructsRmrkTheme, UpDataStructsRmrkNftChild]>> {}1984export interface PhantomTypeUpDataStructs extends Vec<ITuple<[UpDataStructsTokenData, UpDataStructsRpcCollection, RmrkTraitsCollectionCollectionInfo, RmrkTraitsNftNftInfo, RmrkTraitsResourceResourceInfo, RmrkTraitsPropertyPropertyInfo, RmrkTraitsBaseBaseInfo, RmrkTraitsPartPartType, RmrkTraitsTheme, RmrkTraitsNftNftChild]>> {}159219851593/** @name PolkadotCorePrimitivesInboundDownwardMessage */1986/** @name PolkadotCorePrimitivesInboundDownwardMessage */1594export interface PolkadotCorePrimitivesInboundDownwardMessage extends Struct {1987export interface PolkadotCorePrimitivesInboundDownwardMessage extends Struct {1653 readonly type: 'Present';2046 readonly type: 'Present';1654}2047}20482049/** @name RmrkTraitsBaseBaseInfo */2050export interface RmrkTraitsBaseBaseInfo extends Struct {2051 readonly issuer: AccountId32;2052 readonly baseType: Bytes;2053 readonly symbol: Bytes;2054}20552056/** @name RmrkTraitsCollectionCollectionInfo */2057export interface RmrkTraitsCollectionCollectionInfo extends Struct {2058 readonly issuer: AccountId32;2059 readonly metadata: Bytes;2060 readonly max: Option<u32>;2061 readonly symbol: Bytes;2062 readonly nftsCount: u32;2063}20642065/** @name RmrkTraitsNftAccountIdOrCollectionNftTuple */2066export interface RmrkTraitsNftAccountIdOrCollectionNftTuple extends Enum {2067 readonly isAccountId: boolean;2068 readonly asAccountId: AccountId32;2069 readonly isCollectionAndNftTuple: boolean;2070 readonly asCollectionAndNftTuple: ITuple<[u32, u32]>;2071 readonly type: 'AccountId' | 'CollectionAndNftTuple';2072}20732074/** @name RmrkTraitsNftNftChild */2075export interface RmrkTraitsNftNftChild extends Struct {2076 readonly collectionId: u32;2077 readonly nftId: u32;2078}20792080/** @name RmrkTraitsNftNftInfo */2081export interface RmrkTraitsNftNftInfo extends Struct {2082 readonly owner: RmrkTraitsNftAccountIdOrCollectionNftTuple;2083 readonly royalty: Option<RmrkTraitsNftRoyaltyInfo>;2084 readonly metadata: Bytes;2085 readonly equipped: bool;2086 readonly pending: bool;2087}20882089/** @name RmrkTraitsNftRoyaltyInfo */2090export interface RmrkTraitsNftRoyaltyInfo extends Struct {2091 readonly recipient: AccountId32;2092 readonly amount: Permill;2093}20942095/** @name RmrkTraitsPartEquippableList */2096export interface RmrkTraitsPartEquippableList extends Enum {2097 readonly isAll: boolean;2098 readonly isEmpty: boolean;2099 readonly isCustom: boolean;2100 readonly asCustom: Vec<u32>;2101 readonly type: 'All' | 'Empty' | 'Custom';2102}21032104/** @name RmrkTraitsPartFixedPart */2105export interface RmrkTraitsPartFixedPart extends Struct {2106 readonly id: u32;2107 readonly z: u32;2108 readonly src: Bytes;2109}21102111/** @name RmrkTraitsPartPartType */2112export interface RmrkTraitsPartPartType extends Enum {2113 readonly isFixedPart: boolean;2114 readonly asFixedPart: RmrkTraitsPartFixedPart;2115 readonly isSlotPart: boolean;2116 readonly asSlotPart: RmrkTraitsPartSlotPart;2117 readonly type: 'FixedPart' | 'SlotPart';2118}21192120/** @name RmrkTraitsPartSlotPart */2121export interface RmrkTraitsPartSlotPart extends Struct {2122 readonly id: u32;2123 readonly equippable: RmrkTraitsPartEquippableList;2124 readonly src: Bytes;2125 readonly z: u32;2126}21272128/** @name RmrkTraitsPropertyPropertyInfo */2129export interface RmrkTraitsPropertyPropertyInfo extends Struct {2130 readonly key: Bytes;2131 readonly value: Bytes;2132}21332134/** @name RmrkTraitsResourceBasicResource */2135export interface RmrkTraitsResourceBasicResource extends Struct {2136 readonly src: Option<Bytes>;2137 readonly metadata: Option<Bytes>;2138 readonly license: Option<Bytes>;2139 readonly thumb: Option<Bytes>;2140}21412142/** @name RmrkTraitsResourceComposableResource */2143export interface RmrkTraitsResourceComposableResource extends Struct {2144 readonly parts: Vec<u32>;2145 readonly base: u32;2146 readonly src: Option<Bytes>;2147 readonly metadata: Option<Bytes>;2148 readonly license: Option<Bytes>;2149 readonly thumb: Option<Bytes>;2150}21512152/** @name RmrkTraitsResourceResourceInfo */2153export interface RmrkTraitsResourceResourceInfo extends Struct {2154 readonly id: u32;2155 readonly resource: RmrkTraitsResourceResourceTypes;2156 readonly pending: bool;2157 readonly pendingRemoval: bool;2158}21592160/** @name RmrkTraitsResourceResourceTypes */2161export interface RmrkTraitsResourceResourceTypes extends Enum {2162 readonly isBasic: boolean;2163 readonly asBasic: RmrkTraitsResourceBasicResource;2164 readonly isComposable: boolean;2165 readonly asComposable: RmrkTraitsResourceComposableResource;2166 readonly isSlot: boolean;2167 readonly asSlot: RmrkTraitsResourceSlotResource;2168 readonly type: 'Basic' | 'Composable' | 'Slot';2169}21702171/** @name RmrkTraitsResourceSlotResource */2172export interface RmrkTraitsResourceSlotResource extends Struct {2173 readonly base: u32;2174 readonly src: Option<Bytes>;2175 readonly metadata: Option<Bytes>;2176 readonly slot: u32;2177 readonly license: Option<Bytes>;2178 readonly thumb: Option<Bytes>;2179}21802181/** @name RmrkTraitsTheme */2182export interface RmrkTraitsTheme extends Struct {2183 readonly name: Bytes;2184 readonly properties: Vec<RmrkTraitsThemeThemeProperty>;2185 readonly inherit: bool;2186}21872188/** @name RmrkTraitsThemeThemeProperty */2189export interface RmrkTraitsThemeThemeProperty extends Struct {2190 readonly key: Bytes;2191 readonly value: Bytes;2192}165521931656/** @name SpCoreEcdsaSignature */2194/** @name SpCoreEcdsaSignature */1657export interface SpCoreEcdsaSignature extends U8aFixed {}2195export interface SpCoreEcdsaSignature extends U8aFixed {}1662/** @name SpCoreSr25519Signature */2200/** @name SpCoreSr25519Signature */1663export interface SpCoreSr25519Signature extends U8aFixed {}2201export interface SpCoreSr25519Signature extends U8aFixed {}22022203/** @name SpCoreVoid */2204export interface SpCoreVoid extends Null {}166422051665/** @name SpRuntimeArithmeticError */2206/** @name SpRuntimeArithmeticError */1666export interface SpRuntimeArithmeticError extends Enum {2207export interface SpRuntimeArithmeticError extends Enum {1778 readonly sponsorship: UpDataStructsSponsorshipState;2319 readonly sponsorship: UpDataStructsSponsorshipState;1779 readonly limits: UpDataStructsCollectionLimits;2320 readonly limits: UpDataStructsCollectionLimits;1780 readonly permissions: UpDataStructsCollectionPermissions;2321 readonly permissions: UpDataStructsCollectionPermissions;2322 readonly externalCollection: bool;1781}2323}178223241783/** @name UpDataStructsCollectionLimits */2325/** @name UpDataStructsCollectionLimits */1923 readonly tokenOwner: bool;2465 readonly tokenOwner: bool;1924}2466}19251926/** @name UpDataStructsRmrkAccountIdOrCollectionNftTuple */1927export interface UpDataStructsRmrkAccountIdOrCollectionNftTuple extends Enum {1928 readonly isAccountId: boolean;1929 readonly asAccountId: AccountId32;1930 readonly isCollectionAndNftTuple: boolean;1931 readonly asCollectionAndNftTuple: ITuple<[u32, u32]>;1932 readonly type: 'AccountId' | 'CollectionAndNftTuple';1933}19341935/** @name UpDataStructsRmrkBaseInfo */1936export interface UpDataStructsRmrkBaseInfo extends Struct {1937 readonly issuer: AccountId32;1938 readonly baseType: Bytes;1939 readonly symbol: Bytes;1940}19411942/** @name UpDataStructsRmrkBasicResource */1943export interface UpDataStructsRmrkBasicResource extends Struct {1944 readonly src: Option<Bytes>;1945 readonly metadata: Option<Bytes>;1946 readonly license: Option<Bytes>;1947 readonly thumb: Option<Bytes>;1948}19491950/** @name UpDataStructsRmrkCollectionInfo */1951export interface UpDataStructsRmrkCollectionInfo extends Struct {1952 readonly issuer: AccountId32;1953 readonly metadata: Bytes;1954 readonly max: Option<u32>;1955 readonly symbol: Bytes;1956 readonly nftsCount: u32;1957}19581959/** @name UpDataStructsRmrkComposableResource */1960export interface UpDataStructsRmrkComposableResource extends Struct {1961 readonly parts: Vec<u32>;1962 readonly base: u32;1963 readonly src: Option<Bytes>;1964 readonly metadata: Option<Bytes>;1965 readonly license: Option<Bytes>;1966 readonly thumb: Option<Bytes>;1967}19681969/** @name UpDataStructsRmrkEquippableList */1970export interface UpDataStructsRmrkEquippableList extends Enum {1971 readonly isAll: boolean;1972 readonly isEmpty: boolean;1973 readonly isCustom: boolean;1974 readonly asCustom: Vec<u32>;1975 readonly type: 'All' | 'Empty' | 'Custom';1976}19771978/** @name UpDataStructsRmrkFixedPart */1979export interface UpDataStructsRmrkFixedPart extends Struct {1980 readonly id: u32;1981 readonly z: u32;1982 readonly src: Bytes;1983}19841985/** @name UpDataStructsRmrkNftChild */1986export interface UpDataStructsRmrkNftChild extends Struct {1987 readonly collectionId: u32;1988 readonly nftId: u32;1989}19901991/** @name UpDataStructsRmrkNftInfo */1992export interface UpDataStructsRmrkNftInfo extends Struct {1993 readonly owner: UpDataStructsRmrkAccountIdOrCollectionNftTuple;1994 readonly royalty: Option<UpDataStructsRmrkRoyaltyInfo>;1995 readonly metadata: Bytes;1996 readonly equipped: bool;1997 readonly pending: bool;1998}19992000/** @name UpDataStructsRmrkPartType */2001export interface UpDataStructsRmrkPartType extends Enum {2002 readonly isFixedPart: boolean;2003 readonly asFixedPart: UpDataStructsRmrkFixedPart;2004 readonly isSlotPart: boolean;2005 readonly asSlotPart: UpDataStructsRmrkSlotPart;2006 readonly type: 'FixedPart' | 'SlotPart';2007}20082009/** @name UpDataStructsRmrkPropertyInfo */2010export interface UpDataStructsRmrkPropertyInfo extends Struct {2011 readonly key: Bytes;2012 readonly value: Bytes;2013}20142015/** @name UpDataStructsRmrkResourceInfo */2016export interface UpDataStructsRmrkResourceInfo extends Struct {2017 readonly id: Bytes;2018 readonly resource: UpDataStructsRmrkResourceTypes;2019 readonly pending: bool;2020 readonly pendingRemoval: bool;2021}20222023/** @name UpDataStructsRmrkResourceTypes */2024export interface UpDataStructsRmrkResourceTypes extends Enum {2025 readonly isBasic: boolean;2026 readonly asBasic: UpDataStructsRmrkBasicResource;2027 readonly isComposable: boolean;2028 readonly asComposable: UpDataStructsRmrkComposableResource;2029 readonly isSlot: boolean;2030 readonly asSlot: UpDataStructsRmrkSlotResource;2031 readonly type: 'Basic' | 'Composable' | 'Slot';2032}20332034/** @name UpDataStructsRmrkRoyaltyInfo */2035export interface UpDataStructsRmrkRoyaltyInfo extends Struct {2036 readonly recipient: AccountId32;2037 readonly amount: Permill;2038}20392040/** @name UpDataStructsRmrkSlotPart */2041export interface UpDataStructsRmrkSlotPart extends Struct {2042 readonly id: u32;2043 readonly equippable: UpDataStructsRmrkEquippableList;2044 readonly src: Bytes;2045 readonly z: u32;2046}20472048/** @name UpDataStructsRmrkSlotResource */2049export interface UpDataStructsRmrkSlotResource extends Struct {2050 readonly base: u32;2051 readonly src: Option<Bytes>;2052 readonly metadata: Option<Bytes>;2053 readonly slot: u32;2054 readonly license: Option<Bytes>;2055 readonly thumb: Option<Bytes>;2056}20572058/** @name UpDataStructsRmrkTheme */2059export interface UpDataStructsRmrkTheme extends Struct {2060 readonly name: Bytes;2061 readonly properties: Vec<UpDataStructsRmrkThemeProperty>;2062 readonly inherit: bool;2063}20642065/** @name UpDataStructsRmrkThemeProperty */2066export interface UpDataStructsRmrkThemeProperty extends Struct {2067 readonly key: Bytes;2068 readonly value: Bytes;2069}207024672071/** @name UpDataStructsRpcCollection */2468/** @name UpDataStructsRpcCollection */2072export interface UpDataStructsRpcCollection extends Struct {2469export interface UpDataStructsRpcCollection extends Struct {2080 readonly permissions: UpDataStructsCollectionPermissions;2477 readonly permissions: UpDataStructsCollectionPermissions;2081 readonly tokenPropertyPermissions: Vec<UpDataStructsPropertyKeyPermission>;2478 readonly tokenPropertyPermissions: Vec<UpDataStructsPropertyKeyPermission>;2082 readonly properties: Vec<UpDataStructsProperty>;2479 readonly properties: Vec<UpDataStructsProperty>;2480 readonly readOnly: bool;2083}2481}208424822085/** @name UpDataStructsSponsoringRateLimit */2483/** @name UpDataStructsSponsoringRateLimit */tests/src/interfaces/definitions.tsdiffbeforeafterboth15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.161617export {default as unique} from './unique/definitions';17export {default as unique} from './unique/definitions';18// TODO free RMRK! export {default as rmrk} from './rmrk/definitions';18export {default as rmrk} from './rmrk/definitions';19export {default as default} from './default/definitions';19export {default as default} from './default/definitions';tests/src/interfaces/lookup.tsdiffbeforeafterboth154 * Lookup48: pallet_balances::ReserveData<ReserveIdentifier, Balance>154 * Lookup48: pallet_balances::ReserveData<ReserveIdentifier, Balance>155 **/155 **/156 PalletBalancesReserveData: {156 PalletBalancesReserveData: {157 id: '[u8;8]',157 id: '[u8;16]',158 amount: 'u128'158 amount: 'u128'159 },159 },160 /**160 /**161 * Lookup50: pallet_balances::Releases161 * Lookup51: pallet_balances::Releases162 **/162 **/163 PalletBalancesReleases: {163 PalletBalancesReleases: {164 _enum: ['V1_0_0', 'V2_0_0']164 _enum: ['V1_0_0', 'V2_0_0']165 },165 },166 /**166 /**167 * Lookup51: pallet_balances::pallet::Call<T, I>167 * Lookup52: pallet_balances::pallet::Call<T, I>168 **/168 **/169 PalletBalancesCall: {169 PalletBalancesCall: {170 _enum: {170 _enum: {171 transfer: {171 transfer: {196 }196 }197 }197 }198 },198 },199 /**199 /**200 * Lookup57: pallet_balances::pallet::Event<T, I>200 * Lookup58: pallet_balances::pallet::Event<T, I>201 **/201 **/202 PalletBalancesEvent: {202 PalletBalancesEvent: {203 _enum: {203 _enum: {204 Endowed: {204 Endowed: {247 }247 }248 }248 }249 },249 },250 /**250 /**251 * Lookup58: frame_support::traits::tokens::misc::BalanceStatus251 * Lookup59: frame_support::traits::tokens::misc::BalanceStatus252 **/252 **/253 FrameSupportTokensMiscBalanceStatus: {253 FrameSupportTokensMiscBalanceStatus: {254 _enum: ['Free', 'Reserved']254 _enum: ['Free', 'Reserved']255 },255 },256 /**256 /**257 * Lookup59: pallet_balances::pallet::Error<T, I>257 * Lookup60: pallet_balances::pallet::Error<T, I>258 **/258 **/259 PalletBalancesError: {259 PalletBalancesError: {260 _enum: ['VestingBalance', 'LiquidityRestrictions', 'InsufficientBalance', 'ExistentialDeposit', 'KeepAlive', 'ExistingVestingSchedule', 'DeadAccount', 'TooManyReserves']260 _enum: ['VestingBalance', 'LiquidityRestrictions', 'InsufficientBalance', 'ExistentialDeposit', 'KeepAlive', 'ExistingVestingSchedule', 'DeadAccount', 'TooManyReserves']261 },261 },262 /**262 /**263 * Lookup62: pallet_timestamp::pallet::Call<T>263 * Lookup63: pallet_timestamp::pallet::Call<T>264 **/264 **/265 PalletTimestampCall: {265 PalletTimestampCall: {266 _enum: {266 _enum: {267 set: {267 set: {268 now: 'Compact<u64>'268 now: 'Compact<u64>'269 }269 }270 }270 }271 },271 },272 /**272 /**273 * Lookup65: pallet_transaction_payment::Releases273 * Lookup66: pallet_transaction_payment::Releases274 **/274 **/275 PalletTransactionPaymentReleases: {275 PalletTransactionPaymentReleases: {276 _enum: ['V1Ancient', 'V2']276 _enum: ['V1Ancient', 'V2']277 },277 },278 /**278 /**279 * Lookup67: frame_support::weights::WeightToFeeCoefficient<Balance>279 * Lookup68: frame_support::weights::WeightToFeeCoefficient<Balance>280 **/280 **/281 FrameSupportWeightsWeightToFeeCoefficient: {281 FrameSupportWeightsWeightToFeeCoefficient: {282 coeffInteger: 'u128',282 coeffInteger: 'u128',283 coeffFrac: 'Perbill',283 coeffFrac: 'Perbill',284 negative: 'bool',284 negative: 'bool',285 degree: 'u8'285 degree: 'u8'286 },286 },287 /**287 /**288 * Lookup69: pallet_treasury::Proposal<sp_core::crypto::AccountId32, Balance>288 * Lookup70: pallet_treasury::Proposal<sp_core::crypto::AccountId32, Balance>289 **/289 **/290 PalletTreasuryProposal: {290 PalletTreasuryProposal: {291 proposer: 'AccountId32',291 proposer: 'AccountId32',292 value: 'u128',292 value: 'u128',293 beneficiary: 'AccountId32',293 beneficiary: 'AccountId32',294 bond: 'u128'294 bond: 'u128'295 },295 },296 /**296 /**297 * Lookup72: pallet_treasury::pallet::Call<T, I>297 * Lookup73: pallet_treasury::pallet::Call<T, I>298 **/298 **/299 PalletTreasuryCall: {299 PalletTreasuryCall: {300 _enum: {300 _enum: {301 propose_spend: {301 propose_spend: {307 },307 },308 approve_proposal: {308 approve_proposal: {309 proposalId: 'Compact<u32>'309 proposalId: 'Compact<u32>',310 }310 },311 remove_approval: {312 proposalId: 'Compact<u32>'313 }311 }314 }312 },315 },313 /**316 /**314 * Lookup74: pallet_treasury::pallet::Event<T, I>317 * Lookup75: pallet_treasury::pallet::Event<T, I>315 **/318 **/316 PalletTreasuryEvent: {319 PalletTreasuryEvent: {317 _enum: {320 _enum: {318 Proposed: {321 Proposed: {341 }344 }342 }345 }343 },346 },344 /**347 /**345 * Lookup77: frame_support::PalletId348 * Lookup78: frame_support::PalletId346 **/349 **/347 FrameSupportPalletId: '[u8;8]',350 FrameSupportPalletId: '[u8;8]',348 /**351 /**349 * Lookup78: pallet_treasury::pallet::Error<T, I>352 * Lookup79: pallet_treasury::pallet::Error<T, I>350 **/353 **/351 PalletTreasuryError: {354 PalletTreasuryError: {352 _enum: ['InsufficientProposersBalance', 'InvalidIndex', 'TooManyApprovals']355 _enum: ['InsufficientProposersBalance', 'InvalidIndex', 'TooManyApprovals', 'ProposalNotApproved']353 },356 },354 /**357 /**355 * Lookup79: pallet_sudo::pallet::Call<T>358 * Lookup80: pallet_sudo::pallet::Call<T>356 **/359 **/357 PalletSudoCall: {360 PalletSudoCall: {358 _enum: {361 _enum: {359 sudo: {362 sudo: {375 }378 }376 }379 }377 },380 },378 /**381 /**379 * Lookup81: frame_system::pallet::Call<T>382 * Lookup82: frame_system::pallet::Call<T>380 **/383 **/381 FrameSystemCall: {384 FrameSystemCall: {382 _enum: {385 _enum: {383 fill_block: {386 fill_block: {413 }416 }414 }417 }415 },418 },416 /**419 /**417 * Lookup84: orml_vesting::module::Call<T>420 * Lookup85: orml_vesting::module::Call<T>418 **/421 **/419 OrmlVestingModuleCall: {422 OrmlVestingModuleCall: {420 _enum: {423 _enum: {421 claim: 'Null',424 claim: 'Null',432 }435 }433 }436 }434 },437 },435 /**438 /**436 * Lookup85: orml_vesting::VestingSchedule<BlockNumber, Balance>439 * Lookup86: orml_vesting::VestingSchedule<BlockNumber, Balance>437 **/440 **/438 OrmlVestingVestingSchedule: {441 OrmlVestingVestingSchedule: {439 start: 'u32',442 start: 'u32',440 period: 'u32',443 period: 'u32',441 periodCount: 'u32',444 periodCount: 'u32',442 perPeriod: 'Compact<u128>'445 perPeriod: 'Compact<u128>'443 },446 },444 /**447 /**445 * Lookup87: cumulus_pallet_xcmp_queue::pallet::Call<T>448 * Lookup88: cumulus_pallet_xcmp_queue::pallet::Call<T>446 **/449 **/447 CumulusPalletXcmpQueueCall: {450 CumulusPalletXcmpQueueCall: {448 _enum: {451 _enum: {449 service_overweight: {452 service_overweight: {490 }493 }491 }494 }492 },495 },493 /**496 /**494 * Lookup88: pallet_xcm::pallet::Call<T>497 * Lookup89: pallet_xcm::pallet::Call<T>495 **/498 **/496 PalletXcmCall: {499 PalletXcmCall: {497 _enum: {500 _enum: {498 send: {501 send: {544 }547 }545 }548 }546 },549 },547 /**550 /**548 * Lookup89: xcm::VersionedMultiLocation551 * Lookup90: xcm::VersionedMultiLocation549 **/552 **/550 XcmVersionedMultiLocation: {553 XcmVersionedMultiLocation: {551 _enum: {554 _enum: {552 V0: 'XcmV0MultiLocation',555 V0: 'XcmV0MultiLocation',553 V1: 'XcmV1MultiLocation'556 V1: 'XcmV1MultiLocation'554 }557 }555 },558 },556 /**559 /**557 * Lookup90: xcm::v0::multi_location::MultiLocation560 * Lookup91: xcm::v0::multi_location::MultiLocation558 **/561 **/559 XcmV0MultiLocation: {562 XcmV0MultiLocation: {560 _enum: {563 _enum: {561 Null: 'Null',564 Null: 'Null',569 X8: '(XcmV0Junction,XcmV0Junction,XcmV0Junction,XcmV0Junction,XcmV0Junction,XcmV0Junction,XcmV0Junction,XcmV0Junction)'572 X8: '(XcmV0Junction,XcmV0Junction,XcmV0Junction,XcmV0Junction,XcmV0Junction,XcmV0Junction,XcmV0Junction,XcmV0Junction)'570 }573 }571 },574 },572 /**575 /**573 * Lookup91: xcm::v0::junction::Junction576 * Lookup92: xcm::v0::junction::Junction574 **/577 **/575 XcmV0Junction: {578 XcmV0Junction: {576 _enum: {579 _enum: {577 Parent: 'Null',580 Parent: 'Null',598 }601 }599 }602 }600 },603 },601 /**604 /**602 * Lookup92: xcm::v0::junction::NetworkId605 * Lookup93: xcm::v0::junction::NetworkId603 **/606 **/604 XcmV0JunctionNetworkId: {607 XcmV0JunctionNetworkId: {605 _enum: {608 _enum: {606 Any: 'Null',609 Any: 'Null',609 Kusama: 'Null'612 Kusama: 'Null'610 }613 }611 },614 },612 /**615 /**613 * Lookup93: xcm::v0::junction::BodyId616 * Lookup94: xcm::v0::junction::BodyId614 **/617 **/615 XcmV0JunctionBodyId: {618 XcmV0JunctionBodyId: {616 _enum: {619 _enum: {617 Unit: 'Null',620 Unit: 'Null',623 Judicial: 'Null'626 Judicial: 'Null'624 }627 }625 },628 },626 /**629 /**627 * Lookup94: xcm::v0::junction::BodyPart630 * Lookup95: xcm::v0::junction::BodyPart628 **/631 **/629 XcmV0JunctionBodyPart: {632 XcmV0JunctionBodyPart: {630 _enum: {633 _enum: {631 Voice: 'Null',634 Voice: 'Null',646 }649 }647 }650 }648 },651 },649 /**652 /**650 * Lookup95: xcm::v1::multilocation::MultiLocation653 * Lookup96: xcm::v1::multilocation::MultiLocation651 **/654 **/652 XcmV1MultiLocation: {655 XcmV1MultiLocation: {653 parents: 'u8',656 parents: 'u8',654 interior: 'XcmV1MultilocationJunctions'657 interior: 'XcmV1MultilocationJunctions'655 },658 },656 /**659 /**657 * Lookup96: xcm::v1::multilocation::Junctions660 * Lookup97: xcm::v1::multilocation::Junctions658 **/661 **/659 XcmV1MultilocationJunctions: {662 XcmV1MultilocationJunctions: {660 _enum: {663 _enum: {661 Here: 'Null',664 Here: 'Null',669 X8: '(XcmV1Junction,XcmV1Junction,XcmV1Junction,XcmV1Junction,XcmV1Junction,XcmV1Junction,XcmV1Junction,XcmV1Junction)'672 X8: '(XcmV1Junction,XcmV1Junction,XcmV1Junction,XcmV1Junction,XcmV1Junction,XcmV1Junction,XcmV1Junction,XcmV1Junction)'670 }673 }671 },674 },672 /**675 /**673 * Lookup97: xcm::v1::junction::Junction676 * Lookup98: xcm::v1::junction::Junction674 **/677 **/675 XcmV1Junction: {678 XcmV1Junction: {676 _enum: {679 _enum: {677 Parachain: 'Compact<u32>',680 Parachain: 'Compact<u32>',697 }700 }698 }701 }699 },702 },700 /**703 /**701 * Lookup98: xcm::VersionedXcm<Call>704 * Lookup99: xcm::VersionedXcm<Call>702 **/705 **/703 XcmVersionedXcm: {706 XcmVersionedXcm: {704 _enum: {707 _enum: {705 V0: 'XcmV0Xcm',708 V0: 'XcmV0Xcm',706 V1: 'XcmV1Xcm',709 V1: 'XcmV1Xcm',707 V2: 'XcmV2Xcm'710 V2: 'XcmV2Xcm'708 }711 }709 },712 },710 /**713 /**711 * Lookup99: xcm::v0::Xcm<Call>714 * Lookup100: xcm::v0::Xcm<Call>712 **/715 **/713 XcmV0Xcm: {716 XcmV0Xcm: {714 _enum: {717 _enum: {715 WithdrawAsset: {718 WithdrawAsset: {761 }764 }762 }765 }763 },766 },764 /**767 /**765 * Lookup101: xcm::v0::multi_asset::MultiAsset768 * Lookup102: xcm::v0::multi_asset::MultiAsset766 **/769 **/767 XcmV0MultiAsset: {770 XcmV0MultiAsset: {768 _enum: {771 _enum: {769 None: 'Null',772 None: 'Null',800 }803 }801 }804 }802 },805 },803 /**806 /**804 * Lookup102: xcm::v1::multiasset::AssetInstance807 * Lookup103: xcm::v1::multiasset::AssetInstance805 **/808 **/806 XcmV1MultiassetAssetInstance: {809 XcmV1MultiassetAssetInstance: {807 _enum: {810 _enum: {808 Undefined: 'Null',811 Undefined: 'Null',1519 constData: 'Bytes',1522 constData: 'Bytes',1520 users: 'BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr, u128>'1523 users: 'BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr, u128>'1521 },1524 },1525 /**1526 * Lookup204: pallet_unq_scheduler::pallet::Call<T>1527 **/1528 PalletUnqSchedulerCall: {1529 _enum: {1530 schedule_named: {1531 id: '[u8;16]',1532 when: 'u32',1533 maybePeriodic: 'Option<(u32,u32)>',1534 priority: 'u8',1535 call: 'FrameSupportScheduleMaybeHashed',1536 },1537 cancel_named: {1538 id: '[u8;16]',1539 },1540 schedule_named_after: {1541 id: '[u8;16]',1542 after: 'u32',1543 maybePeriodic: 'Option<(u32,u32)>',1544 priority: 'u8',1545 call: 'FrameSupportScheduleMaybeHashed'1546 }1547 }1548 },1549 /**1550 * Lookup206: frame_support::traits::schedule::MaybeHashed<opal_runtime::Call, primitive_types::H256>1551 **/1552 FrameSupportScheduleMaybeHashed: {1553 _enum: {1554 Value: 'Call',1555 Hash: 'H256'1556 }1557 },1522 /**1558 /**1523 * Lookup204: pallet_template_transaction_payment::Call<T>1559 * Lookup207: pallet_template_transaction_payment::Call<T>1524 **/1560 **/1525 PalletTemplateTransactionPaymentCall: 'Null',1561 PalletTemplateTransactionPaymentCall: 'Null',1526 /**1562 /**1527 * Lookup205: pallet_structure::pallet::Call<T>1563 * Lookup208: pallet_structure::pallet::Call<T>1528 **/1564 **/1529 PalletStructureCall: 'Null',1565 PalletStructureCall: 'Null',1566 /**1567 * Lookup209: pallet_rmrk_core::pallet::Call<T>1568 **/1569 PalletRmrkCoreCall: {1570 _enum: {1571 create_collection: {1572 metadata: 'Bytes',1573 max: 'Option<u32>',1574 symbol: 'Bytes',1575 },1576 destroy_collection: {1577 collectionId: 'u32',1578 },1579 change_collection_issuer: {1580 collectionId: 'u32',1581 newIssuer: 'MultiAddress',1582 },1583 lock_collection: {1584 collectionId: 'u32',1585 },1586 mint_nft: {1587 owner: 'AccountId32',1588 collectionId: 'u32',1589 recipient: 'Option<AccountId32>',1590 royaltyAmount: 'Option<Permill>',1591 metadata: 'Bytes',1592 transferable: 'bool',1593 },1594 burn_nft: {1595 collectionId: 'u32',1596 nftId: 'u32',1597 },1598 send: {1599 rmrkCollectionId: 'u32',1600 rmrkNftId: 'u32',1601 newOwner: 'RmrkTraitsNftAccountIdOrCollectionNftTuple',1602 },1603 accept_nft: {1604 rmrkCollectionId: 'u32',1605 rmrkNftId: 'u32',1606 newOwner: 'RmrkTraitsNftAccountIdOrCollectionNftTuple',1607 },1608 reject_nft: {1609 rmrkCollectionId: 'u32',1610 rmrkNftId: 'u32',1611 },1612 accept_resource: {1613 rmrkCollectionId: 'u32',1614 rmrkNftId: 'u32',1615 rmrkResourceId: 'u32',1616 },1617 accept_resource_removal: {1618 rmrkCollectionId: 'u32',1619 rmrkNftId: 'u32',1620 rmrkResourceId: 'u32',1621 },1622 set_property: {1623 rmrkCollectionId: 'Compact<u32>',1624 maybeNftId: 'Option<u32>',1625 key: 'Bytes',1626 value: 'Bytes',1627 },1628 set_priority: {1629 rmrkCollectionId: 'u32',1630 rmrkNftId: 'u32',1631 priorities: 'Vec<u32>',1632 },1633 add_basic_resource: {1634 rmrkCollectionId: 'u32',1635 nftId: 'u32',1636 resource: 'RmrkTraitsResourceBasicResource',1637 },1638 add_composable_resource: {1639 rmrkCollectionId: 'u32',1640 nftId: 'u32',1641 resourceId: 'Bytes',1642 resource: 'RmrkTraitsResourceComposableResource',1643 },1644 add_slot_resource: {1645 rmrkCollectionId: 'u32',1646 nftId: 'u32',1647 resource: 'RmrkTraitsResourceSlotResource',1648 },1649 remove_resource: {1650 rmrkCollectionId: 'u32',1651 nftId: 'u32',1652 resourceId: 'u32'1653 }1654 }1655 },1656 /**1657 * Lookup213: rmrk_traits::nft::AccountIdOrCollectionNftTuple<sp_core::crypto::AccountId32>1658 **/1659 RmrkTraitsNftAccountIdOrCollectionNftTuple: {1660 _enum: {1661 AccountId: 'AccountId32',1662 CollectionAndNftTuple: '(u32,u32)'1663 }1664 },1665 /**1666 * Lookup217: rmrk_traits::resource::BasicResource<frame_support::storage::bounded_vec::BoundedVec<T, S>>1667 **/1668 RmrkTraitsResourceBasicResource: {1669 src: 'Option<Bytes>',1670 metadata: 'Option<Bytes>',1671 license: 'Option<Bytes>',1672 thumb: 'Option<Bytes>'1673 },1674 /**1675 * Lookup220: rmrk_traits::resource::ComposableResource<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>1676 **/1677 RmrkTraitsResourceComposableResource: {1678 parts: 'Vec<u32>',1679 base: 'u32',1680 src: 'Option<Bytes>',1681 metadata: 'Option<Bytes>',1682 license: 'Option<Bytes>',1683 thumb: 'Option<Bytes>'1684 },1685 /**1686 * Lookup222: rmrk_traits::resource::SlotResource<frame_support::storage::bounded_vec::BoundedVec<T, S>>1687 **/1688 RmrkTraitsResourceSlotResource: {1689 base: 'u32',1690 src: 'Option<Bytes>',1691 metadata: 'Option<Bytes>',1692 slot: 'u32',1693 license: 'Option<Bytes>',1694 thumb: 'Option<Bytes>'1695 },1696 /**1697 * Lookup223: pallet_rmrk_equip::pallet::Call<T>1698 **/1699 PalletRmrkEquipCall: {1700 _enum: {1701 create_base: {1702 baseType: 'Bytes',1703 symbol: 'Bytes',1704 parts: 'Vec<RmrkTraitsPartPartType>',1705 },1706 theme_add: {1707 baseId: 'u32',1708 theme: 'RmrkTraitsTheme'1709 }1710 }1711 },1712 /**1713 * Lookup225: rmrk_traits::part::PartType<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>1714 **/1715 RmrkTraitsPartPartType: {1716 _enum: {1717 FixedPart: 'RmrkTraitsPartFixedPart',1718 SlotPart: 'RmrkTraitsPartSlotPart'1719 }1720 },1721 /**1722 * Lookup227: rmrk_traits::part::FixedPart<frame_support::storage::bounded_vec::BoundedVec<T, S>>1723 **/1724 RmrkTraitsPartFixedPart: {1725 id: 'u32',1726 z: 'u32',1727 src: 'Bytes'1728 },1729 /**1730 * Lookup228: rmrk_traits::part::SlotPart<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>1731 **/1732 RmrkTraitsPartSlotPart: {1733 id: 'u32',1734 equippable: 'RmrkTraitsPartEquippableList',1735 src: 'Bytes',1736 z: 'u32'1737 },1738 /**1739 * Lookup229: rmrk_traits::part::EquippableList<frame_support::storage::bounded_vec::BoundedVec<T, S>>1740 **/1741 RmrkTraitsPartEquippableList: {1742 _enum: {1743 All: 'Null',1744 Empty: 'Null',1745 Custom: 'Vec<u32>'1746 }1747 },1748 /**1749 * Lookup231: rmrk_traits::theme::Theme<frame_support::storage::bounded_vec::BoundedVec<T, S>, PropertyList>1750 **/1751 RmrkTraitsTheme: {1752 name: 'Bytes',1753 properties: 'Vec<RmrkTraitsThemeThemeProperty>',1754 inherit: 'bool'1755 },1756 /**1757 * Lookup233: rmrk_traits::theme::ThemeProperty<frame_support::storage::bounded_vec::BoundedVec<T, S>>1758 **/1759 RmrkTraitsThemeThemeProperty: {1760 key: 'Bytes',1761 value: 'Bytes'1762 },1530 /**1763 /**1531 * Lookup206: pallet_evm::pallet::Call<T>1764 * Lookup234: pallet_evm::pallet::Call<T>1532 **/1765 **/1533 PalletEvmCall: {1766 PalletEvmCall: {1534 _enum: {1767 _enum: {1535 withdraw: {1768 withdraw: {1570 }1803 }1571 }1804 }1572 },1805 },1573 /**1806 /**1574 * Lookup212: pallet_ethereum::pallet::Call<T>1807 * Lookup240: pallet_ethereum::pallet::Call<T>1575 **/1808 **/1576 PalletEthereumCall: {1809 PalletEthereumCall: {1577 _enum: {1810 _enum: {1578 transact: {1811 transact: {1579 transaction: 'EthereumTransactionTransactionV2'1812 transaction: 'EthereumTransactionTransactionV2'1580 }1813 }1581 }1814 }1582 },1815 },1583 /**1816 /**1584 * Lookup213: ethereum::transaction::TransactionV21817 * Lookup241: ethereum::transaction::TransactionV21585 **/1818 **/1586 EthereumTransactionTransactionV2: {1819 EthereumTransactionTransactionV2: {1587 _enum: {1820 _enum: {1588 Legacy: 'EthereumTransactionLegacyTransaction',1821 Legacy: 'EthereumTransactionLegacyTransaction',1589 EIP2930: 'EthereumTransactionEip2930Transaction',1822 EIP2930: 'EthereumTransactionEip2930Transaction',1590 EIP1559: 'EthereumTransactionEip1559Transaction'1823 EIP1559: 'EthereumTransactionEip1559Transaction'1591 }1824 }1592 },1825 },1593 /**1826 /**1594 * Lookup214: ethereum::transaction::LegacyTransaction1827 * Lookup242: ethereum::transaction::LegacyTransaction1595 **/1828 **/1596 EthereumTransactionLegacyTransaction: {1829 EthereumTransactionLegacyTransaction: {1597 nonce: 'U256',1830 nonce: 'U256',1598 gasPrice: 'U256',1831 gasPrice: 'U256',1602 input: 'Bytes',1835 input: 'Bytes',1603 signature: 'EthereumTransactionTransactionSignature'1836 signature: 'EthereumTransactionTransactionSignature'1604 },1837 },1605 /**1838 /**1606 * Lookup215: ethereum::transaction::TransactionAction1839 * Lookup243: ethereum::transaction::TransactionAction1607 **/1840 **/1608 EthereumTransactionTransactionAction: {1841 EthereumTransactionTransactionAction: {1609 _enum: {1842 _enum: {1610 Call: 'H160',1843 Call: 'H160',1611 Create: 'Null'1844 Create: 'Null'1612 }1845 }1613 },1846 },1614 /**1847 /**1615 * Lookup216: ethereum::transaction::TransactionSignature1848 * Lookup244: ethereum::transaction::TransactionSignature1616 **/1849 **/1617 EthereumTransactionTransactionSignature: {1850 EthereumTransactionTransactionSignature: {1618 v: 'u64',1851 v: 'u64',1619 r: 'H256',1852 r: 'H256',1620 s: 'H256'1853 s: 'H256'1621 },1854 },1622 /**1855 /**1623 * Lookup218: ethereum::transaction::EIP2930Transaction1856 * Lookup246: ethereum::transaction::EIP2930Transaction1624 **/1857 **/1625 EthereumTransactionEip2930Transaction: {1858 EthereumTransactionEip2930Transaction: {1626 chainId: 'u64',1859 chainId: 'u64',1627 nonce: 'U256',1860 nonce: 'U256',1635 r: 'H256',1868 r: 'H256',1636 s: 'H256'1869 s: 'H256'1637 },1870 },1638 /**1871 /**1639 * Lookup220: ethereum::transaction::AccessListItem1872 * Lookup248: ethereum::transaction::AccessListItem1640 **/1873 **/1641 EthereumTransactionAccessListItem: {1874 EthereumTransactionAccessListItem: {1642 address: 'H160',1875 address: 'H160',1643 storageKeys: 'Vec<H256>'1876 storageKeys: 'Vec<H256>'1644 },1877 },1645 /**1878 /**1646 * Lookup221: ethereum::transaction::EIP1559Transaction1879 * Lookup249: ethereum::transaction::EIP1559Transaction1647 **/1880 **/1648 EthereumTransactionEip1559Transaction: {1881 EthereumTransactionEip1559Transaction: {1649 chainId: 'u64',1882 chainId: 'u64',1650 nonce: 'U256',1883 nonce: 'U256',1659 r: 'H256',1892 r: 'H256',1660 s: 'H256'1893 s: 'H256'1661 },1894 },1662 /**1895 /**1663 * Lookup222: pallet_evm_migration::pallet::Call<T>1896 * Lookup250: pallet_evm_migration::pallet::Call<T>1664 **/1897 **/1665 PalletEvmMigrationCall: {1898 PalletEvmMigrationCall: {1666 _enum: {1899 _enum: {1667 begin: {1900 begin: {1677 }1910 }1678 }1911 }1679 },1912 },1680 /**1913 /**1681 * Lookup225: pallet_sudo::pallet::Event<T>1914 * Lookup253: pallet_sudo::pallet::Event<T>1682 **/1915 **/1683 PalletSudoEvent: {1916 PalletSudoEvent: {1684 _enum: {1917 _enum: {1685 Sudid: {1918 Sudid: {1693 }1926 }1694 }1927 }1695 },1928 },1696 /**1929 /**1697 * Lookup227: sp_runtime::DispatchError1930 * Lookup255: sp_runtime::DispatchError1698 **/1931 **/1699 SpRuntimeDispatchError: {1932 SpRuntimeDispatchError: {1700 _enum: {1933 _enum: {1701 Other: 'Null',1934 Other: 'Null',1710 Transactional: 'SpRuntimeTransactionalError'1943 Transactional: 'SpRuntimeTransactionalError'1711 }1944 }1712 },1945 },1713 /**1946 /**1714 * Lookup228: sp_runtime::ModuleError1947 * Lookup256: sp_runtime::ModuleError1715 **/1948 **/1716 SpRuntimeModuleError: {1949 SpRuntimeModuleError: {1717 index: 'u8',1950 index: 'u8',1718 error: '[u8;4]'1951 error: '[u8;4]'1719 },1952 },1720 /**1953 /**1721 * Lookup229: sp_runtime::TokenError1954 * Lookup257: sp_runtime::TokenError1722 **/1955 **/1723 SpRuntimeTokenError: {1956 SpRuntimeTokenError: {1724 _enum: ['NoFunds', 'WouldDie', 'BelowMinimum', 'CannotCreate', 'UnknownAsset', 'Frozen', 'Unsupported']1957 _enum: ['NoFunds', 'WouldDie', 'BelowMinimum', 'CannotCreate', 'UnknownAsset', 'Frozen', 'Unsupported']1725 },1958 },1726 /**1959 /**1727 * Lookup230: sp_runtime::ArithmeticError1960 * Lookup258: sp_runtime::ArithmeticError1728 **/1961 **/1729 SpRuntimeArithmeticError: {1962 SpRuntimeArithmeticError: {1730 _enum: ['Underflow', 'Overflow', 'DivisionByZero']1963 _enum: ['Underflow', 'Overflow', 'DivisionByZero']1731 },1964 },1732 /**1965 /**1733 * Lookup231: sp_runtime::TransactionalError1966 * Lookup259: sp_runtime::TransactionalError1734 **/1967 **/1735 SpRuntimeTransactionalError: {1968 SpRuntimeTransactionalError: {1736 _enum: ['LimitReached', 'NoLayer']1969 _enum: ['LimitReached', 'NoLayer']1737 },1970 },1738 /**1971 /**1739 * Lookup232: pallet_sudo::pallet::Error<T>1972 * Lookup260: pallet_sudo::pallet::Error<T>1740 **/1973 **/1741 PalletSudoError: {1974 PalletSudoError: {1742 _enum: ['RequireSudo']1975 _enum: ['RequireSudo']1743 },1976 },1744 /**1977 /**1745 * Lookup233: frame_system::AccountInfo<Index, pallet_balances::AccountData<Balance>>1978 * Lookup261: frame_system::AccountInfo<Index, pallet_balances::AccountData<Balance>>1746 **/1979 **/1747 FrameSystemAccountInfo: {1980 FrameSystemAccountInfo: {1748 nonce: 'u32',1981 nonce: 'u32',1749 consumers: 'u32',1982 consumers: 'u32',1750 providers: 'u32',1983 providers: 'u32',1751 sufficients: 'u32',1984 sufficients: 'u32',1752 data: 'PalletBalancesAccountData'1985 data: 'PalletBalancesAccountData'1753 },1986 },1754 /**1987 /**1755 * Lookup234: frame_support::weights::PerDispatchClass<T>1988 * Lookup262: frame_support::weights::PerDispatchClass<T>1756 **/1989 **/1757 FrameSupportWeightsPerDispatchClassU64: {1990 FrameSupportWeightsPerDispatchClassU64: {1758 normal: 'u64',1991 normal: 'u64',1759 operational: 'u64',1992 operational: 'u64',1760 mandatory: 'u64'1993 mandatory: 'u64'1761 },1994 },1762 /**1995 /**1763 * Lookup235: sp_runtime::generic::digest::Digest1996 * Lookup263: sp_runtime::generic::digest::Digest1764 **/1997 **/1765 SpRuntimeDigest: {1998 SpRuntimeDigest: {1766 logs: 'Vec<SpRuntimeDigestDigestItem>'1999 logs: 'Vec<SpRuntimeDigestDigestItem>'1767 },2000 },1768 /**2001 /**1769 * Lookup237: sp_runtime::generic::digest::DigestItem2002 * Lookup265: sp_runtime::generic::digest::DigestItem1770 **/2003 **/1771 SpRuntimeDigestDigestItem: {2004 SpRuntimeDigestDigestItem: {1772 _enum: {2005 _enum: {1773 Other: 'Bytes',2006 Other: 'Bytes',1781 RuntimeEnvironmentUpdated: 'Null'2014 RuntimeEnvironmentUpdated: 'Null'1782 }2015 }1783 },2016 },1784 /**2017 /**1785 * Lookup239: frame_system::EventRecord<opal_runtime::Event, primitive_types::H256>2018 * Lookup267: frame_system::EventRecord<opal_runtime::Event, primitive_types::H256>1786 **/2019 **/1787 FrameSystemEventRecord: {2020 FrameSystemEventRecord: {1788 phase: 'FrameSystemPhase',2021 phase: 'FrameSystemPhase',1789 event: 'Event',2022 event: 'Event',1790 topics: 'Vec<H256>'2023 topics: 'Vec<H256>'1791 },2024 },1792 /**2025 /**1793 * Lookup241: frame_system::pallet::Event<T>2026 * Lookup269: frame_system::pallet::Event<T>1794 **/2027 **/1795 FrameSystemEvent: {2028 FrameSystemEvent: {1796 _enum: {2029 _enum: {1797 ExtrinsicSuccess: {2030 ExtrinsicSuccess: {1817 }2050 }1818 }2051 }1819 },2052 },1820 /**2053 /**1821 * Lookup242: frame_support::weights::DispatchInfo2054 * Lookup270: frame_support::weights::DispatchInfo1822 **/2055 **/1823 FrameSupportWeightsDispatchInfo: {2056 FrameSupportWeightsDispatchInfo: {1824 weight: 'u64',2057 weight: 'u64',1825 class: 'FrameSupportWeightsDispatchClass',2058 class: 'FrameSupportWeightsDispatchClass',1826 paysFee: 'FrameSupportWeightsPays'2059 paysFee: 'FrameSupportWeightsPays'1827 },2060 },1828 /**2061 /**1829 * Lookup243: frame_support::weights::DispatchClass2062 * Lookup271: frame_support::weights::DispatchClass1830 **/2063 **/1831 FrameSupportWeightsDispatchClass: {2064 FrameSupportWeightsDispatchClass: {1832 _enum: ['Normal', 'Operational', 'Mandatory']2065 _enum: ['Normal', 'Operational', 'Mandatory']1833 },2066 },1834 /**2067 /**1835 * Lookup244: frame_support::weights::Pays2068 * Lookup272: frame_support::weights::Pays1836 **/2069 **/1837 FrameSupportWeightsPays: {2070 FrameSupportWeightsPays: {1838 _enum: ['Yes', 'No']2071 _enum: ['Yes', 'No']1839 },2072 },1840 /**2073 /**1841 * Lookup245: orml_vesting::module::Event<T>2074 * Lookup273: orml_vesting::module::Event<T>1842 **/2075 **/1843 OrmlVestingModuleEvent: {2076 OrmlVestingModuleEvent: {1844 _enum: {2077 _enum: {1845 VestingScheduleAdded: {2078 VestingScheduleAdded: {1856 }2089 }1857 }2090 }1858 },2091 },1859 /**2092 /**1860 * Lookup246: cumulus_pallet_xcmp_queue::pallet::Event<T>2093 * Lookup274: cumulus_pallet_xcmp_queue::pallet::Event<T>1861 **/2094 **/1862 CumulusPalletXcmpQueueEvent: {2095 CumulusPalletXcmpQueueEvent: {1863 _enum: {2096 _enum: {1864 Success: 'Option<H256>',2097 Success: 'Option<H256>',1871 OverweightServiced: '(u64,u64)'2104 OverweightServiced: '(u64,u64)'1872 }2105 }1873 },2106 },1874 /**2107 /**1875 * Lookup247: pallet_xcm::pallet::Event<T>2108 * Lookup275: pallet_xcm::pallet::Event<T>1876 **/2109 **/1877 PalletXcmEvent: {2110 PalletXcmEvent: {1878 _enum: {2111 _enum: {1879 Attempted: 'XcmV2TraitsOutcome',2112 Attempted: 'XcmV2TraitsOutcome',1894 NotifyTargetMigrationFail: '(XcmVersionedMultiLocation,u64)'2127 NotifyTargetMigrationFail: '(XcmVersionedMultiLocation,u64)'1895 }2128 }1896 },2129 },1897 /**2130 /**1898 * Lookup248: xcm::v2::traits::Outcome2131 * Lookup276: xcm::v2::traits::Outcome1899 **/2132 **/1900 XcmV2TraitsOutcome: {2133 XcmV2TraitsOutcome: {1901 _enum: {2134 _enum: {1902 Complete: 'u64',2135 Complete: 'u64',1903 Incomplete: '(u64,XcmV2TraitsError)',2136 Incomplete: '(u64,XcmV2TraitsError)',1904 Error: 'XcmV2TraitsError'2137 Error: 'XcmV2TraitsError'1905 }2138 }1906 },2139 },1907 /**2140 /**1908 * Lookup250: cumulus_pallet_xcm::pallet::Event<T>2141 * Lookup278: cumulus_pallet_xcm::pallet::Event<T>1909 **/2142 **/1910 CumulusPalletXcmEvent: {2143 CumulusPalletXcmEvent: {1911 _enum: {2144 _enum: {1912 InvalidFormat: '[u8;8]',2145 InvalidFormat: '[u8;8]',1913 UnsupportedVersion: '[u8;8]',2146 UnsupportedVersion: '[u8;8]',1914 ExecutedDownward: '([u8;8],XcmV2TraitsOutcome)'2147 ExecutedDownward: '([u8;8],XcmV2TraitsOutcome)'1915 }2148 }1916 },2149 },1917 /**2150 /**1918 * Lookup251: cumulus_pallet_dmp_queue::pallet::Event<T>2151 * Lookup279: cumulus_pallet_dmp_queue::pallet::Event<T>1919 **/2152 **/1920 CumulusPalletDmpQueueEvent: {2153 CumulusPalletDmpQueueEvent: {1921 _enum: {2154 _enum: {1922 InvalidFormat: '[u8;32]',2155 InvalidFormat: '[u8;32]',1927 OverweightServiced: '(u64,u64)'2160 OverweightServiced: '(u64,u64)'1928 }2161 }1929 },2162 },1930 /**2163 /**1931 * Lookup252: pallet_unique::RawEvent<sp_core::crypto::AccountId32, pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>2164 * Lookup280: pallet_unique::RawEvent<sp_core::crypto::AccountId32, pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>1932 **/2165 **/1933 PalletUniqueRawEvent: {2166 PalletUniqueRawEvent: {1934 _enum: {2167 _enum: {1935 CollectionSponsorRemoved: 'u32',2168 CollectionSponsorRemoved: 'u32',1944 CollectionPermissionSet: 'u32'2177 CollectionPermissionSet: 'u32'1945 }2178 }1946 },2179 },2180 /**2181 * Lookup281: pallet_unq_scheduler::pallet::Event<T>2182 **/2183 PalletUnqSchedulerEvent: {2184 _enum: {2185 Scheduled: {2186 when: 'u32',2187 index: 'u32',2188 },2189 Canceled: {2190 when: 'u32',2191 index: 'u32',2192 },2193 Dispatched: {2194 task: '(u32,u32)',2195 id: 'Option<[u8;16]>',2196 result: 'Result<Null, SpRuntimeDispatchError>',2197 },2198 CallLookupFailed: {2199 task: '(u32,u32)',2200 id: 'Option<[u8;16]>',2201 error: 'FrameSupportScheduleLookupError'2202 }2203 }2204 },2205 /**2206 * Lookup283: frame_support::traits::schedule::LookupError2207 **/2208 FrameSupportScheduleLookupError: {2209 _enum: ['Unknown', 'BadFormat']2210 },1947 /**2211 /**1948 * Lookup253: pallet_common::pallet::Event<T>2212 * Lookup284: pallet_common::pallet::Event<T>1949 **/2213 **/1950 PalletCommonEvent: {2214 PalletCommonEvent: {1951 _enum: {2215 _enum: {1952 CollectionCreated: '(u32,u8,AccountId32)',2216 CollectionCreated: '(u32,u8,AccountId32)',1962 PropertyPermissionSet: '(u32,Bytes)'2226 PropertyPermissionSet: '(u32,Bytes)'1963 }2227 }1964 },2228 },1965 /**2229 /**1966 * Lookup254: pallet_structure::pallet::Event<T>2230 * Lookup285: pallet_structure::pallet::Event<T>1967 **/2231 **/1968 PalletStructureEvent: {2232 PalletStructureEvent: {1969 _enum: {2233 _enum: {1970 Executed: 'Result<Null, SpRuntimeDispatchError>'2234 Executed: 'Result<Null, SpRuntimeDispatchError>'1971 }2235 }1972 },2236 },2237 /**2238 * Lookup286: pallet_rmrk_core::pallet::Event<T>2239 **/2240 PalletRmrkCoreEvent: {2241 _enum: {2242 CollectionCreated: {2243 issuer: 'AccountId32',2244 collectionId: 'u32',2245 },2246 CollectionDestroyed: {2247 issuer: 'AccountId32',2248 collectionId: 'u32',2249 },2250 IssuerChanged: {2251 oldIssuer: 'AccountId32',2252 newIssuer: 'AccountId32',2253 collectionId: 'u32',2254 },2255 CollectionLocked: {2256 issuer: 'AccountId32',2257 collectionId: 'u32',2258 },2259 NftMinted: {2260 owner: 'AccountId32',2261 collectionId: 'u32',2262 nftId: 'u32',2263 },2264 NFTBurned: {2265 owner: 'AccountId32',2266 nftId: 'u32',2267 },2268 NFTSent: {2269 sender: 'AccountId32',2270 recipient: 'RmrkTraitsNftAccountIdOrCollectionNftTuple',2271 collectionId: 'u32',2272 nftId: 'u32',2273 approvalRequired: 'bool',2274 },2275 NFTAccepted: {2276 sender: 'AccountId32',2277 recipient: 'RmrkTraitsNftAccountIdOrCollectionNftTuple',2278 collectionId: 'u32',2279 nftId: 'u32',2280 },2281 NFTRejected: {2282 sender: 'AccountId32',2283 collectionId: 'u32',2284 nftId: 'u32',2285 },2286 PropertySet: {2287 collectionId: 'u32',2288 maybeNftId: 'Option<u32>',2289 key: 'Bytes',2290 value: 'Bytes',2291 },2292 ResourceAdded: {2293 nftId: 'u32',2294 resourceId: 'u32',2295 },2296 ResourceRemoval: {2297 nftId: 'u32',2298 resourceId: 'u32',2299 },2300 ResourceAccepted: {2301 nftId: 'u32',2302 resourceId: 'u32',2303 },2304 ResourceRemovalAccepted: {2305 nftId: 'u32',2306 resourceId: 'u32',2307 },2308 PrioritySet: {2309 collectionId: 'u32',2310 nftId: 'u32'2311 }2312 }2313 },2314 /**2315 * Lookup287: pallet_rmrk_equip::pallet::Event<T>2316 **/2317 PalletRmrkEquipEvent: {2318 _enum: {2319 BaseCreated: {2320 issuer: 'AccountId32',2321 baseId: 'u32'2322 }2323 }2324 },1973 /**2325 /**1974 * Lookup255: pallet_evm::pallet::Event<T>2326 * Lookup288: pallet_evm::pallet::Event<T>1975 **/2327 **/1976 PalletEvmEvent: {2328 PalletEvmEvent: {1977 _enum: {2329 _enum: {1978 Log: 'EthereumLog',2330 Log: 'EthereumLog',1984 BalanceWithdraw: '(AccountId32,H160,U256)'2336 BalanceWithdraw: '(AccountId32,H160,U256)'1985 }2337 }1986 },2338 },1987 /**2339 /**1988 * Lookup256: ethereum::log::Log2340 * Lookup289: ethereum::log::Log1989 **/2341 **/1990 EthereumLog: {2342 EthereumLog: {1991 address: 'H160',2343 address: 'H160',1992 topics: 'Vec<H256>',2344 topics: 'Vec<H256>',1993 data: 'Bytes'2345 data: 'Bytes'1994 },2346 },1995 /**2347 /**1996 * Lookup257: pallet_ethereum::pallet::Event2348 * Lookup290: pallet_ethereum::pallet::Event1997 **/2349 **/1998 PalletEthereumEvent: {2350 PalletEthereumEvent: {1999 _enum: {2351 _enum: {2000 Executed: '(H160,H160,H256,EvmCoreErrorExitReason)'2352 Executed: '(H160,H160,H256,EvmCoreErrorExitReason)'2001 }2353 }2002 },2354 },2003 /**2355 /**2004 * Lookup258: evm_core::error::ExitReason2356 * Lookup291: evm_core::error::ExitReason2005 **/2357 **/2006 EvmCoreErrorExitReason: {2358 EvmCoreErrorExitReason: {2007 _enum: {2359 _enum: {2008 Succeed: 'EvmCoreErrorExitSucceed',2360 Succeed: 'EvmCoreErrorExitSucceed',2011 Fatal: 'EvmCoreErrorExitFatal'2363 Fatal: 'EvmCoreErrorExitFatal'2012 }2364 }2013 },2365 },2014 /**2366 /**2015 * Lookup259: evm_core::error::ExitSucceed2367 * Lookup292: evm_core::error::ExitSucceed2016 **/2368 **/2017 EvmCoreErrorExitSucceed: {2369 EvmCoreErrorExitSucceed: {2018 _enum: ['Stopped', 'Returned', 'Suicided']2370 _enum: ['Stopped', 'Returned', 'Suicided']2019 },2371 },2020 /**2372 /**2021 * Lookup260: evm_core::error::ExitError2373 * Lookup293: evm_core::error::ExitError2022 **/2374 **/2023 EvmCoreErrorExitError: {2375 EvmCoreErrorExitError: {2024 _enum: {2376 _enum: {2025 StackUnderflow: 'Null',2377 StackUnderflow: 'Null',2039 InvalidCode: 'Null'2391 InvalidCode: 'Null'2040 }2392 }2041 },2393 },2042 /**2394 /**2043 * Lookup263: evm_core::error::ExitRevert2395 * Lookup296: evm_core::error::ExitRevert2044 **/2396 **/2045 EvmCoreErrorExitRevert: {2397 EvmCoreErrorExitRevert: {2046 _enum: ['Reverted']2398 _enum: ['Reverted']2047 },2399 },2048 /**2400 /**2049 * Lookup264: evm_core::error::ExitFatal2401 * Lookup297: evm_core::error::ExitFatal2050 **/2402 **/2051 EvmCoreErrorExitFatal: {2403 EvmCoreErrorExitFatal: {2052 _enum: {2404 _enum: {2053 NotSupported: 'Null',2405 NotSupported: 'Null',2056 Other: 'Text'2408 Other: 'Text'2057 }2409 }2058 },2410 },2059 /**2411 /**2060 * Lookup265: frame_system::Phase2412 * Lookup298: frame_system::Phase2061 **/2413 **/2062 FrameSystemPhase: {2414 FrameSystemPhase: {2063 _enum: {2415 _enum: {2064 ApplyExtrinsic: 'u32',2416 ApplyExtrinsic: 'u32',2065 Finalization: 'Null',2417 Finalization: 'Null',2066 Initialization: 'Null'2418 Initialization: 'Null'2067 }2419 }2068 },2420 },2069 /**2421 /**2070 * Lookup267: frame_system::LastRuntimeUpgradeInfo2422 * Lookup300: frame_system::LastRuntimeUpgradeInfo2071 **/2423 **/2072 FrameSystemLastRuntimeUpgradeInfo: {2424 FrameSystemLastRuntimeUpgradeInfo: {2073 specVersion: 'Compact<u32>',2425 specVersion: 'Compact<u32>',2074 specName: 'Text'2426 specName: 'Text'2075 },2427 },2076 /**2428 /**2077 * Lookup268: frame_system::limits::BlockWeights2429 * Lookup301: frame_system::limits::BlockWeights2078 **/2430 **/2079 FrameSystemLimitsBlockWeights: {2431 FrameSystemLimitsBlockWeights: {2080 baseBlock: 'u64',2432 baseBlock: 'u64',2081 maxBlock: 'u64',2433 maxBlock: 'u64',2082 perClass: 'FrameSupportWeightsPerDispatchClassWeightsPerClass'2434 perClass: 'FrameSupportWeightsPerDispatchClassWeightsPerClass'2083 },2435 },2084 /**2436 /**2085 * Lookup269: frame_support::weights::PerDispatchClass<frame_system::limits::WeightsPerClass>2437 * Lookup302: frame_support::weights::PerDispatchClass<frame_system::limits::WeightsPerClass>2086 **/2438 **/2087 FrameSupportWeightsPerDispatchClassWeightsPerClass: {2439 FrameSupportWeightsPerDispatchClassWeightsPerClass: {2088 normal: 'FrameSystemLimitsWeightsPerClass',2440 normal: 'FrameSystemLimitsWeightsPerClass',2089 operational: 'FrameSystemLimitsWeightsPerClass',2441 operational: 'FrameSystemLimitsWeightsPerClass',2090 mandatory: 'FrameSystemLimitsWeightsPerClass'2442 mandatory: 'FrameSystemLimitsWeightsPerClass'2091 },2443 },2092 /**2444 /**2093 * Lookup270: frame_system::limits::WeightsPerClass2445 * Lookup303: frame_system::limits::WeightsPerClass2094 **/2446 **/2095 FrameSystemLimitsWeightsPerClass: {2447 FrameSystemLimitsWeightsPerClass: {2096 baseExtrinsic: 'u64',2448 baseExtrinsic: 'u64',2097 maxExtrinsic: 'Option<u64>',2449 maxExtrinsic: 'Option<u64>',2098 maxTotal: 'Option<u64>',2450 maxTotal: 'Option<u64>',2099 reserved: 'Option<u64>'2451 reserved: 'Option<u64>'2100 },2452 },2101 /**2453 /**2102 * Lookup272: frame_system::limits::BlockLength2454 * Lookup305: frame_system::limits::BlockLength2103 **/2455 **/2104 FrameSystemLimitsBlockLength: {2456 FrameSystemLimitsBlockLength: {2105 max: 'FrameSupportWeightsPerDispatchClassU32'2457 max: 'FrameSupportWeightsPerDispatchClassU32'2106 },2458 },2107 /**2459 /**2108 * Lookup273: frame_support::weights::PerDispatchClass<T>2460 * Lookup306: frame_support::weights::PerDispatchClass<T>2109 **/2461 **/2110 FrameSupportWeightsPerDispatchClassU32: {2462 FrameSupportWeightsPerDispatchClassU32: {2111 normal: 'u32',2463 normal: 'u32',2112 operational: 'u32',2464 operational: 'u32',2113 mandatory: 'u32'2465 mandatory: 'u32'2114 },2466 },2115 /**2467 /**2116 * Lookup274: frame_support::weights::RuntimeDbWeight2468 * Lookup307: frame_support::weights::RuntimeDbWeight2117 **/2469 **/2118 FrameSupportWeightsRuntimeDbWeight: {2470 FrameSupportWeightsRuntimeDbWeight: {2119 read: 'u64',2471 read: 'u64',2120 write: 'u64'2472 write: 'u64'2121 },2473 },2122 /**2474 /**2123 * Lookup275: sp_version::RuntimeVersion2475 * Lookup308: sp_version::RuntimeVersion2124 **/2476 **/2125 SpVersionRuntimeVersion: {2477 SpVersionRuntimeVersion: {2126 specName: 'Text',2478 specName: 'Text',2127 implName: 'Text',2479 implName: 'Text',2132 transactionVersion: 'u32',2484 transactionVersion: 'u32',2133 stateVersion: 'u8'2485 stateVersion: 'u8'2134 },2486 },2135 /**2487 /**2136 * Lookup279: frame_system::pallet::Error<T>2488 * Lookup312: frame_system::pallet::Error<T>2137 **/2489 **/2138 FrameSystemError: {2490 FrameSystemError: {2139 _enum: ['InvalidSpecName', 'SpecVersionNeedsToIncrease', 'FailedToExtractRuntimeVersion', 'NonDefaultComposite', 'NonZeroRefCount', 'CallFiltered']2491 _enum: ['InvalidSpecName', 'SpecVersionNeedsToIncrease', 'FailedToExtractRuntimeVersion', 'NonDefaultComposite', 'NonZeroRefCount', 'CallFiltered']2140 },2492 },2141 /**2493 /**2142 * Lookup281: orml_vesting::module::Error<T>2494 * Lookup314: orml_vesting::module::Error<T>2143 **/2495 **/2144 OrmlVestingModuleError: {2496 OrmlVestingModuleError: {2145 _enum: ['ZeroVestingPeriod', 'ZeroVestingPeriodCount', 'InsufficientBalanceToLock', 'TooManyVestingSchedules', 'AmountLow', 'MaxVestingSchedulesExceeded']2497 _enum: ['ZeroVestingPeriod', 'ZeroVestingPeriodCount', 'InsufficientBalanceToLock', 'TooManyVestingSchedules', 'AmountLow', 'MaxVestingSchedulesExceeded']2146 },2498 },2147 /**2499 /**2148 * Lookup283: cumulus_pallet_xcmp_queue::InboundChannelDetails2500 * Lookup316: cumulus_pallet_xcmp_queue::InboundChannelDetails2149 **/2501 **/2150 CumulusPalletXcmpQueueInboundChannelDetails: {2502 CumulusPalletXcmpQueueInboundChannelDetails: {2151 sender: 'u32',2503 sender: 'u32',2152 state: 'CumulusPalletXcmpQueueInboundState',2504 state: 'CumulusPalletXcmpQueueInboundState',2153 messageMetadata: 'Vec<(u32,PolkadotParachainPrimitivesXcmpMessageFormat)>'2505 messageMetadata: 'Vec<(u32,PolkadotParachainPrimitivesXcmpMessageFormat)>'2154 },2506 },2155 /**2507 /**2156 * Lookup284: cumulus_pallet_xcmp_queue::InboundState2508 * Lookup317: cumulus_pallet_xcmp_queue::InboundState2157 **/2509 **/2158 CumulusPalletXcmpQueueInboundState: {2510 CumulusPalletXcmpQueueInboundState: {2159 _enum: ['Ok', 'Suspended']2511 _enum: ['Ok', 'Suspended']2160 },2512 },2161 /**2513 /**2162 * Lookup287: polkadot_parachain::primitives::XcmpMessageFormat2514 * Lookup320: polkadot_parachain::primitives::XcmpMessageFormat2163 **/2515 **/2164 PolkadotParachainPrimitivesXcmpMessageFormat: {2516 PolkadotParachainPrimitivesXcmpMessageFormat: {2165 _enum: ['ConcatenatedVersionedXcm', 'ConcatenatedEncodedBlob', 'Signals']2517 _enum: ['ConcatenatedVersionedXcm', 'ConcatenatedEncodedBlob', 'Signals']2166 },2518 },2167 /**2519 /**2168 * Lookup290: cumulus_pallet_xcmp_queue::OutboundChannelDetails2520 * Lookup323: cumulus_pallet_xcmp_queue::OutboundChannelDetails2169 **/2521 **/2170 CumulusPalletXcmpQueueOutboundChannelDetails: {2522 CumulusPalletXcmpQueueOutboundChannelDetails: {2171 recipient: 'u32',2523 recipient: 'u32',2172 state: 'CumulusPalletXcmpQueueOutboundState',2524 state: 'CumulusPalletXcmpQueueOutboundState',2173 signalsExist: 'bool',2525 signalsExist: 'bool',2174 firstIndex: 'u16',2526 firstIndex: 'u16',2175 lastIndex: 'u16'2527 lastIndex: 'u16'2176 },2528 },2177 /**2529 /**2178 * Lookup291: cumulus_pallet_xcmp_queue::OutboundState2530 * Lookup324: cumulus_pallet_xcmp_queue::OutboundState2179 **/2531 **/2180 CumulusPalletXcmpQueueOutboundState: {2532 CumulusPalletXcmpQueueOutboundState: {2181 _enum: ['Ok', 'Suspended']2533 _enum: ['Ok', 'Suspended']2182 },2534 },2183 /**2535 /**2184 * Lookup293: cumulus_pallet_xcmp_queue::QueueConfigData2536 * Lookup326: cumulus_pallet_xcmp_queue::QueueConfigData2185 **/2537 **/2186 CumulusPalletXcmpQueueQueueConfigData: {2538 CumulusPalletXcmpQueueQueueConfigData: {2187 suspendThreshold: 'u32',2539 suspendThreshold: 'u32',2188 dropThreshold: 'u32',2540 dropThreshold: 'u32',2191 weightRestrictDecay: 'u64',2543 weightRestrictDecay: 'u64',2192 xcmpMaxIndividualWeight: 'u64'2544 xcmpMaxIndividualWeight: 'u64'2193 },2545 },2194 /**2546 /**2195 * Lookup295: cumulus_pallet_xcmp_queue::pallet::Error<T>2547 * Lookup328: cumulus_pallet_xcmp_queue::pallet::Error<T>2196 **/2548 **/2197 CumulusPalletXcmpQueueError: {2549 CumulusPalletXcmpQueueError: {2198 _enum: ['FailedToSend', 'BadXcmOrigin', 'BadXcm', 'BadOverweightIndex', 'WeightOverLimit']2550 _enum: ['FailedToSend', 'BadXcmOrigin', 'BadXcm', 'BadOverweightIndex', 'WeightOverLimit']2199 },2551 },2200 /**2552 /**2201 * Lookup296: pallet_xcm::pallet::Error<T>2553 * Lookup329: pallet_xcm::pallet::Error<T>2202 **/2554 **/2203 PalletXcmError: {2555 PalletXcmError: {2204 _enum: ['Unreachable', 'SendFailure', 'Filtered', 'UnweighableMessage', 'DestinationNotInvertible', 'Empty', 'CannotReanchor', 'TooManyAssets', 'InvalidOrigin', 'BadVersion', 'BadLocation', 'NoSubscription', 'AlreadySubscribed']2556 _enum: ['Unreachable', 'SendFailure', 'Filtered', 'UnweighableMessage', 'DestinationNotInvertible', 'Empty', 'CannotReanchor', 'TooManyAssets', 'InvalidOrigin', 'BadVersion', 'BadLocation', 'NoSubscription', 'AlreadySubscribed']2205 },2557 },2206 /**2558 /**2207 * Lookup297: cumulus_pallet_xcm::pallet::Error<T>2559 * Lookup330: cumulus_pallet_xcm::pallet::Error<T>2208 **/2560 **/2209 CumulusPalletXcmError: 'Null',2561 CumulusPalletXcmError: 'Null',2210 /**2562 /**2211 * Lookup298: cumulus_pallet_dmp_queue::ConfigData2563 * Lookup331: cumulus_pallet_dmp_queue::ConfigData2212 **/2564 **/2213 CumulusPalletDmpQueueConfigData: {2565 CumulusPalletDmpQueueConfigData: {2214 maxIndividual: 'u64'2566 maxIndividual: 'u64'2215 },2567 },2216 /**2568 /**2217 * Lookup299: cumulus_pallet_dmp_queue::PageIndexData2569 * Lookup332: cumulus_pallet_dmp_queue::PageIndexData2218 **/2570 **/2219 CumulusPalletDmpQueuePageIndexData: {2571 CumulusPalletDmpQueuePageIndexData: {2220 beginUsed: 'u32',2572 beginUsed: 'u32',2221 endUsed: 'u32',2573 endUsed: 'u32',2222 overweightCount: 'u64'2574 overweightCount: 'u64'2223 },2575 },2224 /**2576 /**2225 * Lookup302: cumulus_pallet_dmp_queue::pallet::Error<T>2577 * Lookup335: cumulus_pallet_dmp_queue::pallet::Error<T>2226 **/2578 **/2227 CumulusPalletDmpQueueError: {2579 CumulusPalletDmpQueueError: {2228 _enum: ['Unknown', 'OverLimit']2580 _enum: ['Unknown', 'OverLimit']2229 },2581 },2230 /**2582 /**2231 * Lookup306: pallet_unique::Error<T>2583 * Lookup339: pallet_unique::Error<T>2232 **/2584 **/2233 PalletUniqueError: {2585 PalletUniqueError: {2234 _enum: ['CollectionDecimalPointLimitExceeded', 'ConfirmUnsetSponsorFail', 'EmptyArgument']2586 _enum: ['CollectionDecimalPointLimitExceeded', 'ConfirmUnsetSponsorFail', 'EmptyArgument']2235 },2587 },2588 /**2589 * Lookup342: pallet_unq_scheduler::ScheduledV3<frame_support::traits::schedule::MaybeHashed<opal_runtime::Call, primitive_types::H256>, BlockNumber, opal_runtime::OriginCaller, sp_core::crypto::AccountId32>2590 **/2591 PalletUnqSchedulerScheduledV3: {2592 maybeId: 'Option<[u8;16]>',2593 priority: 'u8',2594 call: 'FrameSupportScheduleMaybeHashed',2595 maybePeriodic: 'Option<(u32,u32)>',2596 origin: 'OpalRuntimeOriginCaller'2597 },2598 /**2599 * Lookup343: opal_runtime::OriginCaller2600 **/2601 OpalRuntimeOriginCaller: {2602 _enum: {2603 __Unused0: 'Null',2604 __Unused1: 'Null',2605 __Unused2: 'Null',2606 __Unused3: 'Null',2607 Void: 'SpCoreVoid',2608 __Unused5: 'Null',2609 __Unused6: 'Null',2610 __Unused7: 'Null',2611 __Unused8: 'Null',2612 __Unused9: 'Null',2613 __Unused10: 'Null',2614 __Unused11: 'Null',2615 __Unused12: 'Null',2616 __Unused13: 'Null',2617 __Unused14: 'Null',2618 __Unused15: 'Null',2619 __Unused16: 'Null',2620 __Unused17: 'Null',2621 __Unused18: 'Null',2622 __Unused19: 'Null',2623 __Unused20: 'Null',2624 __Unused21: 'Null',2625 __Unused22: 'Null',2626 __Unused23: 'Null',2627 __Unused24: 'Null',2628 __Unused25: 'Null',2629 __Unused26: 'Null',2630 __Unused27: 'Null',2631 __Unused28: 'Null',2632 __Unused29: 'Null',2633 __Unused30: 'Null',2634 __Unused31: 'Null',2635 __Unused32: 'Null',2636 __Unused33: 'Null',2637 __Unused34: 'Null',2638 __Unused35: 'Null',2639 system: 'FrameSupportDispatchRawOrigin',2640 __Unused37: 'Null',2641 __Unused38: 'Null',2642 __Unused39: 'Null',2643 __Unused40: 'Null',2644 __Unused41: 'Null',2645 __Unused42: 'Null',2646 __Unused43: 'Null',2647 __Unused44: 'Null',2648 __Unused45: 'Null',2649 __Unused46: 'Null',2650 __Unused47: 'Null',2651 __Unused48: 'Null',2652 __Unused49: 'Null',2653 __Unused50: 'Null',2654 PolkadotXcm: 'PalletXcmOrigin',2655 CumulusXcm: 'CumulusPalletXcmOrigin',2656 __Unused53: 'Null',2657 __Unused54: 'Null',2658 __Unused55: 'Null',2659 __Unused56: 'Null',2660 __Unused57: 'Null',2661 __Unused58: 'Null',2662 __Unused59: 'Null',2663 __Unused60: 'Null',2664 __Unused61: 'Null',2665 __Unused62: 'Null',2666 __Unused63: 'Null',2667 __Unused64: 'Null',2668 __Unused65: 'Null',2669 __Unused66: 'Null',2670 __Unused67: 'Null',2671 __Unused68: 'Null',2672 __Unused69: 'Null',2673 __Unused70: 'Null',2674 __Unused71: 'Null',2675 __Unused72: 'Null',2676 __Unused73: 'Null',2677 __Unused74: 'Null',2678 __Unused75: 'Null',2679 __Unused76: 'Null',2680 __Unused77: 'Null',2681 __Unused78: 'Null',2682 __Unused79: 'Null',2683 __Unused80: 'Null',2684 __Unused81: 'Null',2685 __Unused82: 'Null',2686 __Unused83: 'Null',2687 __Unused84: 'Null',2688 __Unused85: 'Null',2689 __Unused86: 'Null',2690 __Unused87: 'Null',2691 __Unused88: 'Null',2692 __Unused89: 'Null',2693 __Unused90: 'Null',2694 __Unused91: 'Null',2695 __Unused92: 'Null',2696 __Unused93: 'Null',2697 __Unused94: 'Null',2698 __Unused95: 'Null',2699 __Unused96: 'Null',2700 __Unused97: 'Null',2701 __Unused98: 'Null',2702 __Unused99: 'Null',2703 __Unused100: 'Null',2704 Ethereum: 'PalletEthereumRawOrigin'2705 }2706 },2707 /**2708 * Lookup344: frame_support::dispatch::RawOrigin<sp_core::crypto::AccountId32>2709 **/2710 FrameSupportDispatchRawOrigin: {2711 _enum: {2712 Root: 'Null',2713 Signed: 'AccountId32',2714 None: 'Null'2715 }2716 },2717 /**2718 * Lookup345: pallet_xcm::pallet::Origin2719 **/2720 PalletXcmOrigin: {2721 _enum: {2722 Xcm: 'XcmV1MultiLocation',2723 Response: 'XcmV1MultiLocation'2724 }2725 },2726 /**2727 * Lookup346: cumulus_pallet_xcm::pallet::Origin2728 **/2729 CumulusPalletXcmOrigin: {2730 _enum: {2731 Relay: 'Null',2732 SiblingParachain: 'u32'2733 }2734 },2735 /**2736 * Lookup347: pallet_ethereum::RawOrigin2737 **/2738 PalletEthereumRawOrigin: {2739 _enum: {2740 EthereumTransaction: 'H160'2741 }2742 },2743 /**2744 * Lookup348: sp_core::Void2745 **/2746 SpCoreVoid: 'Null',2747 /**2748 * Lookup349: pallet_unq_scheduler::pallet::Error<T>2749 **/2750 PalletUnqSchedulerError: {2751 _enum: ['FailedToSchedule', 'NotFound', 'TargetBlockNumberInPast', 'RescheduleNoChange']2752 },2236 /**2753 /**2237 * Lookup307: up_data_structs::Collection<sp_core::crypto::AccountId32>2754 * Lookup350: up_data_structs::Collection<sp_core::crypto::AccountId32>2238 **/2755 **/2239 UpDataStructsCollection: {2756 UpDataStructsCollection: {2240 owner: 'AccountId32',2757 owner: 'AccountId32',2241 mode: 'UpDataStructsCollectionMode',2758 mode: 'UpDataStructsCollectionMode',2244 tokenPrefix: 'Bytes',2761 tokenPrefix: 'Bytes',2245 sponsorship: 'UpDataStructsSponsorshipState',2762 sponsorship: 'UpDataStructsSponsorshipState',2246 limits: 'UpDataStructsCollectionLimits',2763 limits: 'UpDataStructsCollectionLimits',2247 permissions: 'UpDataStructsCollectionPermissions'2764 permissions: 'UpDataStructsCollectionPermissions',2765 externalCollection: 'bool'2248 },2766 },2249 /**2767 /**2250 * Lookup308: up_data_structs::SponsorshipState<sp_core::crypto::AccountId32>2768 * Lookup351: up_data_structs::SponsorshipState<sp_core::crypto::AccountId32>2251 **/2769 **/2252 UpDataStructsSponsorshipState: {2770 UpDataStructsSponsorshipState: {2253 _enum: {2771 _enum: {2254 Disabled: 'Null',2772 Disabled: 'Null',2255 Unconfirmed: 'AccountId32',2773 Unconfirmed: 'AccountId32',2256 Confirmed: 'AccountId32'2774 Confirmed: 'AccountId32'2257 }2775 }2258 },2776 },2259 /**2777 /**2260 * Lookup309: up_data_structs::Properties2778 * Lookup352: up_data_structs::Properties2261 **/2779 **/2262 UpDataStructsProperties: {2780 UpDataStructsProperties: {2263 map: 'UpDataStructsPropertiesMapBoundedVec',2781 map: 'UpDataStructsPropertiesMapBoundedVec',2264 consumedSpace: 'u32',2782 consumedSpace: 'u32',2265 spaceLimit: 'u32'2783 spaceLimit: 'u32'2266 },2784 },2267 /**2785 /**2268 * Lookup310: up_data_structs::PropertiesMap<frame_support::storage::bounded_vec::BoundedVec<T, S>>2786 * Lookup353: up_data_structs::PropertiesMap<frame_support::storage::bounded_vec::BoundedVec<T, S>>2269 **/2787 **/2270 UpDataStructsPropertiesMapBoundedVec: 'BTreeMap<Bytes, Bytes>',2788 UpDataStructsPropertiesMapBoundedVec: 'BTreeMap<Bytes, Bytes>',2271 /**2789 /**2272 * Lookup315: up_data_structs::PropertiesMap<up_data_structs::PropertyPermission>2790 * Lookup358: up_data_structs::PropertiesMap<up_data_structs::PropertyPermission>2273 **/2791 **/2274 UpDataStructsPropertiesMapPropertyPermission: 'BTreeMap<Bytes, UpDataStructsPropertyPermission>',2792 UpDataStructsPropertiesMapPropertyPermission: 'BTreeMap<Bytes, UpDataStructsPropertyPermission>',2275 /**2793 /**2276 * Lookup322: up_data_structs::CollectionStats2794 * Lookup365: up_data_structs::CollectionStats2277 **/2795 **/2278 UpDataStructsCollectionStats: {2796 UpDataStructsCollectionStats: {2279 created: 'u32',2797 created: 'u32',2280 destroyed: 'u32',2798 destroyed: 'u32',2281 alive: 'u32'2799 alive: 'u32'2282 },2800 },2283 /**2801 /**2284 * Lookup323: up_data_structs::TokenChild2802 * Lookup366: up_data_structs::TokenChild2285 **/2803 **/2286 UpDataStructsTokenChild: {2804 UpDataStructsTokenChild: {2287 token: 'u32',2805 token: 'u32',2288 collection: 'u32'2806 collection: 'u32'2289 },2807 },2290 /**2808 /**2291 * Lookup324: PhantomType::up_data_structs<T>2809 * Lookup367: PhantomType::up_data_structs<T>2292 **/2810 **/2293 PhantomTypeUpDataStructs: '[(UpDataStructsTokenData,UpDataStructsRpcCollection,UpDataStructsRmrkCollectionInfo,UpDataStructsRmrkNftInfo,UpDataStructsRmrkResourceInfo,UpDataStructsRmrkPropertyInfo,UpDataStructsRmrkBaseInfo,UpDataStructsRmrkPartType,UpDataStructsRmrkTheme,UpDataStructsRmrkNftChild);0]',2811 PhantomTypeUpDataStructs: '[(UpDataStructsTokenData,UpDataStructsRpcCollection,RmrkTraitsCollectionCollectionInfo,RmrkTraitsNftNftInfo,RmrkTraitsResourceResourceInfo,RmrkTraitsPropertyPropertyInfo,RmrkTraitsBaseBaseInfo,RmrkTraitsPartPartType,RmrkTraitsTheme,RmrkTraitsNftNftChild);0]',2294 /**2812 /**2295 * Lookup326: up_data_structs::TokenData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>2813 * Lookup369: up_data_structs::TokenData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>2296 **/2814 **/2297 UpDataStructsTokenData: {2815 UpDataStructsTokenData: {2298 properties: 'Vec<UpDataStructsProperty>',2816 properties: 'Vec<UpDataStructsProperty>',2299 owner: 'Option<PalletEvmAccountBasicCrossAccountIdRepr>'2817 owner: 'Option<PalletEvmAccountBasicCrossAccountIdRepr>'2300 },2818 },2301 /**2819 /**2302 * Lookup328: up_data_structs::RpcCollection<sp_core::crypto::AccountId32>2820 * Lookup371: up_data_structs::RpcCollection<sp_core::crypto::AccountId32>2303 **/2821 **/2304 UpDataStructsRpcCollection: {2822 UpDataStructsRpcCollection: {2305 owner: 'AccountId32',2823 owner: 'AccountId32',2306 mode: 'UpDataStructsCollectionMode',2824 mode: 'UpDataStructsCollectionMode',2311 limits: 'UpDataStructsCollectionLimits',2829 limits: 'UpDataStructsCollectionLimits',2312 permissions: 'UpDataStructsCollectionPermissions',2830 permissions: 'UpDataStructsCollectionPermissions',2313 tokenPropertyPermissions: 'Vec<UpDataStructsPropertyKeyPermission>',2831 tokenPropertyPermissions: 'Vec<UpDataStructsPropertyKeyPermission>',2314 properties: 'Vec<UpDataStructsProperty>'2832 properties: 'Vec<UpDataStructsProperty>',2833 readOnly: 'bool'2315 },2834 },2316 /**2835 /**2317 * Lookup329: up_data_structs::rmrk::CollectionInfo<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>, sp_core::crypto::AccountId32>2836 * Lookup372: rmrk_traits::collection::CollectionInfo<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>, sp_core::crypto::AccountId32>2318 **/2837 **/2319 UpDataStructsRmrkCollectionInfo: {2838 RmrkTraitsCollectionCollectionInfo: {2320 issuer: 'AccountId32',2839 issuer: 'AccountId32',2321 metadata: 'Bytes',2840 metadata: 'Bytes',2322 max: 'Option<u32>',2841 max: 'Option<u32>',2323 symbol: 'Bytes',2842 symbol: 'Bytes',2324 nftsCount: 'u32'2843 nftsCount: 'u32'2325 },2844 },2326 /**2845 /**2327 * Lookup332: up_data_structs::rmrk::NftInfo<sp_core::crypto::AccountId32, sp_arithmetic::per_things::Permill, frame_support::storage::bounded_vec::BoundedVec<T, S>>2846 * Lookup373: rmrk_traits::nft::NftInfo<sp_core::crypto::AccountId32, sp_arithmetic::per_things::Permill, frame_support::storage::bounded_vec::BoundedVec<T, S>>2328 **/2847 **/2329 UpDataStructsRmrkNftInfo: {2848 RmrkTraitsNftNftInfo: {2330 owner: 'UpDataStructsRmrkAccountIdOrCollectionNftTuple',2849 owner: 'RmrkTraitsNftAccountIdOrCollectionNftTuple',2331 royalty: 'Option<UpDataStructsRmrkRoyaltyInfo>',2850 royalty: 'Option<RmrkTraitsNftRoyaltyInfo>',2332 metadata: 'Bytes',2851 metadata: 'Bytes',2333 equipped: 'bool',2852 equipped: 'bool',2334 pending: 'bool'2853 pending: 'bool'2335 },2854 },2336 /**2337 * Lookup333: up_data_structs::rmrk::AccountIdOrCollectionNftTuple<sp_core::crypto::AccountId32>2338 **/2339 UpDataStructsRmrkAccountIdOrCollectionNftTuple: {2340 _enum: {2341 AccountId: 'AccountId32',2342 CollectionAndNftTuple: '(u32,u32)'2343 }2344 },2345 /**2855 /**2346 * Lookup335: up_data_structs::rmrk::RoyaltyInfo<sp_core::crypto::AccountId32, sp_arithmetic::per_things::Permill>2856 * Lookup375: rmrk_traits::nft::RoyaltyInfo<sp_core::crypto::AccountId32, sp_arithmetic::per_things::Permill>2347 **/2857 **/2348 UpDataStructsRmrkRoyaltyInfo: {2858 RmrkTraitsNftRoyaltyInfo: {2349 recipient: 'AccountId32',2859 recipient: 'AccountId32',2350 amount: 'Permill'2860 amount: 'Permill'2351 },2861 },2352 /**2862 /**2353 * Lookup336: up_data_structs::rmrk::ResourceInfo<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>2863 * Lookup376: rmrk_traits::resource::ResourceInfo<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>2354 **/2864 **/2355 UpDataStructsRmrkResourceInfo: {2865 RmrkTraitsResourceResourceInfo: {2356 id: 'Bytes',2866 id: 'u32',2357 resource: 'UpDataStructsRmrkResourceTypes',2867 resource: 'RmrkTraitsResourceResourceTypes',2358 pending: 'bool',2868 pending: 'bool',2359 pendingRemoval: 'bool'2869 pendingRemoval: 'bool'2360 },2870 },2361 /**2871 /**2362 * Lookup339: up_data_structs::rmrk::ResourceTypes<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>2872 * Lookup377: rmrk_traits::resource::ResourceTypes<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>2363 **/2873 **/2364 UpDataStructsRmrkResourceTypes: {2874 RmrkTraitsResourceResourceTypes: {2365 _enum: {2875 _enum: {2366 Basic: 'UpDataStructsRmrkBasicResource',2876 Basic: 'RmrkTraitsResourceBasicResource',2367 Composable: 'UpDataStructsRmrkComposableResource',2877 Composable: 'RmrkTraitsResourceComposableResource',2368 Slot: 'UpDataStructsRmrkSlotResource'2878 Slot: 'RmrkTraitsResourceSlotResource'2369 }2879 }2370 },2880 },2371 /**2372 * Lookup340: up_data_structs::rmrk::BasicResource<frame_support::storage::bounded_vec::BoundedVec<T, S>>2373 **/2374 UpDataStructsRmrkBasicResource: {2375 src: 'Option<Bytes>',2376 metadata: 'Option<Bytes>',2377 license: 'Option<Bytes>',2378 thumb: 'Option<Bytes>'2379 },2380 /**2381 * Lookup342: up_data_structs::rmrk::ComposableResource<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>2382 **/2383 UpDataStructsRmrkComposableResource: {2384 parts: 'Vec<u32>',2385 base: 'u32',2386 src: 'Option<Bytes>',2387 metadata: 'Option<Bytes>',2388 license: 'Option<Bytes>',2389 thumb: 'Option<Bytes>'2390 },2391 /**2392 * Lookup343: up_data_structs::rmrk::SlotResource<frame_support::storage::bounded_vec::BoundedVec<T, S>>2393 **/2394 UpDataStructsRmrkSlotResource: {2395 base: 'u32',2396 src: 'Option<Bytes>',2397 metadata: 'Option<Bytes>',2398 slot: 'u32',2399 license: 'Option<Bytes>',2400 thumb: 'Option<Bytes>'2401 },2402 /**2881 /**2403 * Lookup344: up_data_structs::rmrk::PropertyInfo<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>2882 * Lookup378: rmrk_traits::property::PropertyInfo<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>2404 **/2883 **/2405 UpDataStructsRmrkPropertyInfo: {2884 RmrkTraitsPropertyPropertyInfo: {2406 key: 'Bytes',2885 key: 'Bytes',2407 value: 'Bytes'2886 value: 'Bytes'2408 },2887 },2409 /**2888 /**2410 * Lookup347: up_data_structs::rmrk::BaseInfo<sp_core::crypto::AccountId32, frame_support::storage::bounded_vec::BoundedVec<T, S>>2889 * Lookup379: rmrk_traits::base::BaseInfo<sp_core::crypto::AccountId32, frame_support::storage::bounded_vec::BoundedVec<T, S>>2411 **/2890 **/2412 UpDataStructsRmrkBaseInfo: {2891 RmrkTraitsBaseBaseInfo: {2413 issuer: 'AccountId32',2892 issuer: 'AccountId32',2414 baseType: 'Bytes',2893 baseType: 'Bytes',2415 symbol: 'Bytes'2894 symbol: 'Bytes'2416 },2895 },2417 /**2418 * Lookup348: up_data_structs::rmrk::PartType<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>2419 **/2420 UpDataStructsRmrkPartType: {2421 _enum: {2422 FixedPart: 'UpDataStructsRmrkFixedPart',2423 SlotPart: 'UpDataStructsRmrkSlotPart'2424 }2425 },2426 /**2427 * Lookup350: up_data_structs::rmrk::FixedPart<frame_support::storage::bounded_vec::BoundedVec<T, S>>2428 **/2429 UpDataStructsRmrkFixedPart: {2430 id: 'u32',2431 z: 'u32',2432 src: 'Bytes'2433 },2434 /**2435 * Lookup351: up_data_structs::rmrk::SlotPart<frame_support::storage::bounded_vec::BoundedVec<T, S>, frame_support::storage::bounded_vec::BoundedVec<T, S>>2436 **/2437 UpDataStructsRmrkSlotPart: {2438 id: 'u32',2439 equippable: 'UpDataStructsRmrkEquippableList',2440 src: 'Bytes',2441 z: 'u32'2442 },2443 /**2444 * Lookup352: up_data_structs::rmrk::EquippableList<frame_support::storage::bounded_vec::BoundedVec<T, S>>2445 **/2446 UpDataStructsRmrkEquippableList: {2447 _enum: {2448 All: 'Null',2449 Empty: 'Null',2450 Custom: 'Vec<u32>'2451 }2452 },2453 /**2454 * Lookup353: up_data_structs::rmrk::Theme<frame_support::storage::bounded_vec::BoundedVec<T, S>, PropertyList>2455 **/2456 UpDataStructsRmrkTheme: {2457 name: 'Bytes',2458 properties: 'Vec<UpDataStructsRmrkThemeProperty>',2459 inherit: 'bool'2460 },2461 /**2462 * Lookup355: up_data_structs::rmrk::ThemeProperty<frame_support::storage::bounded_vec::BoundedVec<T, S>>2463 **/2464 UpDataStructsRmrkThemeProperty: {2465 key: 'Bytes',2466 value: 'Bytes'2467 },2468 /**2896 /**2469 * Lookup356: up_data_structs::rmrk::NftChild2897 * Lookup380: rmrk_traits::nft::NftChild2470 **/2898 **/2471 UpDataStructsRmrkNftChild: {2899 RmrkTraitsNftNftChild: {2472 collectionId: 'u32',2900 collectionId: 'u32',2473 nftId: 'u32'2901 nftId: 'u32'2474 },2902 },2475 /**2903 /**2476 * Lookup358: pallet_common::pallet::Error<T>2904 * Lookup382: pallet_common::pallet::Error<T>2477 **/2905 **/2478 PalletCommonError: {2906 PalletCommonError: {2479 _enum: ['CollectionNotFound', 'MustBeTokenOwner', 'NoPermission', 'CantDestroyNotEmptyCollection', 'PublicMintingNotAllowed', 'AddressNotInAllowlist', 'CollectionNameLimitExceeded', 'CollectionDescriptionLimitExceeded', 'CollectionTokenPrefixLimitExceeded', 'TotalCollectionsLimitExceeded', 'CollectionAdminCountExceeded', 'CollectionLimitBoundsExceeded', 'OwnerPermissionsCantBeReverted', 'TransferNotAllowed', 'AccountTokenLimitExceeded', 'CollectionTokenLimitExceeded', 'MetadataFlagFrozen', 'TokenNotFound', 'TokenValueTooLow', 'ApprovedValueTooLow', 'CantApproveMoreThanOwned', 'AddressIsZero', 'UnsupportedOperation', 'NotSufficientFounds', 'NestingIsDisabled', 'OnlyOwnerAllowedToNest', 'SourceCollectionIsNotAllowedToNest', 'CollectionFieldSizeExceeded', 'NoSpaceForProperty', 'PropertyLimitReached', 'PropertyKeyIsTooLong', 'InvalidCharacterInPropertyKey', 'EmptyPropertyKey']2907 _enum: ['CollectionNotFound', 'MustBeTokenOwner', 'NoPermission', 'CantDestroyNotEmptyCollection', 'PublicMintingNotAllowed', 'AddressNotInAllowlist', 'CollectionNameLimitExceeded', 'CollectionDescriptionLimitExceeded', 'CollectionTokenPrefixLimitExceeded', 'TotalCollectionsLimitExceeded', 'CollectionAdminCountExceeded', 'CollectionLimitBoundsExceeded', 'OwnerPermissionsCantBeReverted', 'TransferNotAllowed', 'AccountTokenLimitExceeded', 'CollectionTokenLimitExceeded', 'MetadataFlagFrozen', 'TokenNotFound', 'TokenValueTooLow', 'ApprovedValueTooLow', 'CantApproveMoreThanOwned', 'AddressIsZero', 'UnsupportedOperation', 'NotSufficientFounds', 'NestingIsDisabled', 'OnlyOwnerAllowedToNest', 'SourceCollectionIsNotAllowedToNest', 'CollectionFieldSizeExceeded', 'NoSpaceForProperty', 'PropertyLimitReached', 'PropertyKeyIsTooLong', 'InvalidCharacterInPropertyKey', 'EmptyPropertyKey', 'CollectionIsExternal', 'CollectionIsInternal']2480 },2908 },2481 /**2909 /**2482 * Lookup360: pallet_fungible::pallet::Error<T>2910 * Lookup384: pallet_fungible::pallet::Error<T>2483 **/2911 **/2484 PalletFungibleError: {2912 PalletFungibleError: {2485 _enum: ['NotFungibleDataUsedToMintFungibleCollectionToken', 'FungibleItemsHaveNoId', 'FungibleItemsDontHaveData', 'FungibleDisallowsNesting', 'SettingPropertiesNotAllowed']2913 _enum: ['NotFungibleDataUsedToMintFungibleCollectionToken', 'FungibleItemsHaveNoId', 'FungibleItemsDontHaveData', 'FungibleDisallowsNesting', 'SettingPropertiesNotAllowed']2486 },2914 },2487 /**2915 /**2488 * Lookup361: pallet_refungible::ItemData2916 * Lookup385: pallet_refungible::ItemData2489 **/2917 **/2490 PalletRefungibleItemData: {2918 PalletRefungibleItemData: {2491 constData: 'Bytes'2919 constData: 'Bytes'2492 },2920 },2493 /**2921 /**2494 * Lookup365: pallet_refungible::pallet::Error<T>2922 * Lookup389: pallet_refungible::pallet::Error<T>2495 **/2923 **/2496 PalletRefungibleError: {2924 PalletRefungibleError: {2497 _enum: ['NotRefungibleDataUsedToMintFungibleCollectionToken', 'WrongRefungiblePieces', 'RefungibleDisallowsNesting', 'SettingPropertiesNotAllowed']2925 _enum: ['NotRefungibleDataUsedToMintFungibleCollectionToken', 'WrongRefungiblePieces', 'RefungibleDisallowsNesting', 'SettingPropertiesNotAllowed']2498 },2926 },2499 /**2927 /**2500 * Lookup366: pallet_nonfungible::ItemData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>2928 * Lookup390: pallet_nonfungible::ItemData<pallet_evm::account::BasicCrossAccountIdRepr<sp_core::crypto::AccountId32>>2501 **/2929 **/2502 PalletNonfungibleItemData: {2930 PalletNonfungibleItemData: {2503 owner: 'PalletEvmAccountBasicCrossAccountIdRepr'2931 owner: 'PalletEvmAccountBasicCrossAccountIdRepr'2504 },2932 },2505 /**2933 /**2506 * Lookup368: pallet_nonfungible::pallet::Error<T>2934 * Lookup392: pallet_nonfungible::pallet::Error<T>2507 **/2935 **/2508 PalletNonfungibleError: {2936 PalletNonfungibleError: {2509 _enum: ['NotNonfungibleDataUsedToMintFungibleCollectionToken', 'NonfungibleItemsHaveNoAmount', 'CantBurnNftWithChildren']2937 _enum: ['NotNonfungibleDataUsedToMintFungibleCollectionToken', 'NonfungibleItemsHaveNoAmount', 'CantBurnNftWithChildren']2510 },2938 },2511 /**2939 /**2512 * Lookup369: pallet_structure::pallet::Error<T>2940 * Lookup393: pallet_structure::pallet::Error<T>2513 **/2941 **/2514 PalletStructureError: {2942 PalletStructureError: {2515 _enum: ['OuroborosDetected', 'DepthLimit', 'TokenNotFound']2943 _enum: ['OuroborosDetected', 'DepthLimit', 'TokenNotFound']2516 },2944 },2945 /**2946 * Lookup394: pallet_rmrk_core::pallet::Error<T>2947 **/2948 PalletRmrkCoreError: {2949 _enum: ['CorruptedCollectionType', 'NftTypeEncodeError', 'RmrkPropertyKeyIsTooLong', 'RmrkPropertyValueIsTooLong', 'CollectionNotEmpty', 'NoAvailableCollectionId', 'NoAvailableNftId', 'CollectionUnknown', 'NoPermission', 'NonTransferable', 'CollectionFullOrLocked', 'ResourceDoesntExist', 'CannotSendToDescendentOrSelf', 'CannotAcceptNonOwnedNft', 'CannotRejectNonOwnedNft', 'ResourceNotPending']2950 },2951 /**2952 * Lookup396: pallet_rmrk_equip::pallet::Error<T>2953 **/2954 PalletRmrkEquipError: {2955 _enum: ['PermissionError', 'NoAvailableBaseId', 'NoAvailablePartId', 'BaseDoesntExist', 'NeedsDefaultThemeFirst']2956 },2517 /**2957 /**2518 * Lookup372: pallet_evm::pallet::Error<T>2958 * Lookup399: pallet_evm::pallet::Error<T>2519 **/2959 **/2520 PalletEvmError: {2960 PalletEvmError: {2521 _enum: ['BalanceLow', 'FeeOverflow', 'PaymentOverflow', 'WithdrawFailed', 'GasPriceTooLow', 'InvalidNonce']2961 _enum: ['BalanceLow', 'FeeOverflow', 'PaymentOverflow', 'WithdrawFailed', 'GasPriceTooLow', 'InvalidNonce']2522 },2962 },2523 /**2963 /**2524 * Lookup375: fp_rpc::TransactionStatus2964 * Lookup402: fp_rpc::TransactionStatus2525 **/2965 **/2526 FpRpcTransactionStatus: {2966 FpRpcTransactionStatus: {2527 transactionHash: 'H256',2967 transactionHash: 'H256',2528 transactionIndex: 'u32',2968 transactionIndex: 'u32',2532 logs: 'Vec<EthereumLog>',2972 logs: 'Vec<EthereumLog>',2533 logsBloom: 'EthbloomBloom'2973 logsBloom: 'EthbloomBloom'2534 },2974 },2535 /**2975 /**2536 * Lookup377: ethbloom::Bloom2976 * Lookup404: ethbloom::Bloom2537 **/2977 **/2538 EthbloomBloom: '[u8;256]',2978 EthbloomBloom: '[u8;256]',2539 /**2979 /**2540 * Lookup379: ethereum::receipt::ReceiptV32980 * Lookup406: ethereum::receipt::ReceiptV32541 **/2981 **/2542 EthereumReceiptReceiptV3: {2982 EthereumReceiptReceiptV3: {2543 _enum: {2983 _enum: {2544 Legacy: 'EthereumReceiptEip658ReceiptData',2984 Legacy: 'EthereumReceiptEip658ReceiptData',2545 EIP2930: 'EthereumReceiptEip658ReceiptData',2985 EIP2930: 'EthereumReceiptEip658ReceiptData',2546 EIP1559: 'EthereumReceiptEip658ReceiptData'2986 EIP1559: 'EthereumReceiptEip658ReceiptData'2547 }2987 }2548 },2988 },2549 /**2989 /**2550 * Lookup380: ethereum::receipt::EIP658ReceiptData2990 * Lookup407: ethereum::receipt::EIP658ReceiptData2551 **/2991 **/2552 EthereumReceiptEip658ReceiptData: {2992 EthereumReceiptEip658ReceiptData: {2553 statusCode: 'u8',2993 statusCode: 'u8',2554 usedGas: 'U256',2994 usedGas: 'U256',2555 logsBloom: 'EthbloomBloom',2995 logsBloom: 'EthbloomBloom',2556 logs: 'Vec<EthereumLog>'2996 logs: 'Vec<EthereumLog>'2557 },2997 },2558 /**2998 /**2559 * Lookup381: ethereum::block::Block<ethereum::transaction::TransactionV2>2999 * Lookup408: ethereum::block::Block<ethereum::transaction::TransactionV2>2560 **/3000 **/2561 EthereumBlock: {3001 EthereumBlock: {2562 header: 'EthereumHeader',3002 header: 'EthereumHeader',2563 transactions: 'Vec<EthereumTransactionTransactionV2>',3003 transactions: 'Vec<EthereumTransactionTransactionV2>',2564 ommers: 'Vec<EthereumHeader>'3004 ommers: 'Vec<EthereumHeader>'2565 },3005 },2566 /**3006 /**2567 * Lookup382: ethereum::header::Header3007 * Lookup409: ethereum::header::Header2568 **/3008 **/2569 EthereumHeader: {3009 EthereumHeader: {2570 parentHash: 'H256',3010 parentHash: 'H256',2571 ommersHash: 'H256',3011 ommersHash: 'H256',2583 mixHash: 'H256',3023 mixHash: 'H256',2584 nonce: 'EthereumTypesHashH64'3024 nonce: 'EthereumTypesHashH64'2585 },3025 },2586 /**3026 /**2587 * Lookup383: ethereum_types::hash::H643027 * Lookup410: ethereum_types::hash::H642588 **/3028 **/2589 EthereumTypesHashH64: '[u8;8]',3029 EthereumTypesHashH64: '[u8;8]',2590 /**3030 /**2591 * Lookup388: pallet_ethereum::pallet::Error<T>3031 * Lookup415: pallet_ethereum::pallet::Error<T>2592 **/3032 **/2593 PalletEthereumError: {3033 PalletEthereumError: {2594 _enum: ['InvalidSignature', 'PreLogExists']3034 _enum: ['InvalidSignature', 'PreLogExists']2595 },3035 },2596 /**3036 /**2597 * Lookup389: pallet_evm_coder_substrate::pallet::Error<T>3037 * Lookup416: pallet_evm_coder_substrate::pallet::Error<T>2598 **/3038 **/2599 PalletEvmCoderSubstrateError: {3039 PalletEvmCoderSubstrateError: {2600 _enum: ['OutOfGas', 'OutOfFund']3040 _enum: ['OutOfGas', 'OutOfFund']2601 },3041 },2602 /**3042 /**2603 * Lookup390: pallet_evm_contract_helpers::SponsoringModeT3043 * Lookup417: pallet_evm_contract_helpers::SponsoringModeT2604 **/3044 **/2605 PalletEvmContractHelpersSponsoringModeT: {3045 PalletEvmContractHelpersSponsoringModeT: {2606 _enum: ['Disabled', 'Allowlisted', 'Generous']3046 _enum: ['Disabled', 'Allowlisted', 'Generous']2607 },3047 },2608 /**3048 /**2609 * Lookup392: pallet_evm_contract_helpers::pallet::Error<T>3049 * Lookup419: pallet_evm_contract_helpers::pallet::Error<T>2610 **/3050 **/2611 PalletEvmContractHelpersError: {3051 PalletEvmContractHelpersError: {2612 _enum: ['NoPermission']3052 _enum: ['NoPermission']2613 },3053 },2614 /**3054 /**2615 * Lookup393: pallet_evm_migration::pallet::Error<T>3055 * Lookup420: pallet_evm_migration::pallet::Error<T>2616 **/3056 **/2617 PalletEvmMigrationError: {3057 PalletEvmMigrationError: {2618 _enum: ['AccountNotEmpty', 'AccountIsNotMigrating']3058 _enum: ['AccountNotEmpty', 'AccountIsNotMigrating']2619 },3059 },2620 /**3060 /**2621 * Lookup395: sp_runtime::MultiSignature3061 * Lookup422: sp_runtime::MultiSignature2622 **/3062 **/2623 SpRuntimeMultiSignature: {3063 SpRuntimeMultiSignature: {2624 _enum: {3064 _enum: {2625 Ed25519: 'SpCoreEd25519Signature',3065 Ed25519: 'SpCoreEd25519Signature',2626 Sr25519: 'SpCoreSr25519Signature',3066 Sr25519: 'SpCoreSr25519Signature',2627 Ecdsa: 'SpCoreEcdsaSignature'3067 Ecdsa: 'SpCoreEcdsaSignature'2628 }3068 }2629 },3069 },2630 /**3070 /**2631 * Lookup396: sp_core::ed25519::Signature3071 * Lookup423: sp_core::ed25519::Signature2632 **/3072 **/2633 SpCoreEd25519Signature: '[u8;64]',3073 SpCoreEd25519Signature: '[u8;64]',2634 /**3074 /**2635 * Lookup398: sp_core::sr25519::Signature3075 * Lookup425: sp_core::sr25519::Signature2636 **/3076 **/2637 SpCoreSr25519Signature: '[u8;64]',3077 SpCoreSr25519Signature: '[u8;64]',2638 /**3078 /**2639 * Lookup399: sp_core::ecdsa::Signature3079 * Lookup426: sp_core::ecdsa::Signature2640 **/3080 **/2641 SpCoreEcdsaSignature: '[u8;65]',3081 SpCoreEcdsaSignature: '[u8;65]',2642 /**3082 /**2643 * Lookup402: frame_system::extensions::check_spec_version::CheckSpecVersion<T>3083 * Lookup429: frame_system::extensions::check_spec_version::CheckSpecVersion<T>2644 **/3084 **/2645 FrameSystemExtensionsCheckSpecVersion: 'Null',3085 FrameSystemExtensionsCheckSpecVersion: 'Null',2646 /**3086 /**2647 * Lookup403: frame_system::extensions::check_genesis::CheckGenesis<T>3087 * Lookup430: frame_system::extensions::check_genesis::CheckGenesis<T>2648 **/3088 **/2649 FrameSystemExtensionsCheckGenesis: 'Null',3089 FrameSystemExtensionsCheckGenesis: 'Null',2650 /**3090 /**2651 * Lookup406: frame_system::extensions::check_nonce::CheckNonce<T>3091 * Lookup433: frame_system::extensions::check_nonce::CheckNonce<T>2652 **/3092 **/2653 FrameSystemExtensionsCheckNonce: 'Compact<u32>',3093 FrameSystemExtensionsCheckNonce: 'Compact<u32>',2654 /**3094 /**2655 * Lookup407: frame_system::extensions::check_weight::CheckWeight<T>3095 * Lookup434: frame_system::extensions::check_weight::CheckWeight<T>2656 **/3096 **/2657 FrameSystemExtensionsCheckWeight: 'Null',3097 FrameSystemExtensionsCheckWeight: 'Null',2658 /**3098 /**2659 * Lookup408: pallet_template_transaction_payment::ChargeTransactionPayment<opal_runtime::Runtime>3099 * Lookup435: pallet_template_transaction_payment::ChargeTransactionPayment<opal_runtime::Runtime>2660 **/3100 **/2661 PalletTemplateTransactionPaymentChargeTransactionPayment: 'Compact<u128>',3101 PalletTemplateTransactionPaymentChargeTransactionPayment: 'Compact<u128>',2662 /**3102 /**2663 * Lookup409: opal_runtime::Runtime3103 * Lookup436: opal_runtime::Runtime2664 **/3104 **/2665 OpalRuntimeRuntime: 'Null',3105 OpalRuntimeRuntime: 'Null',2666 /**3106 /**2667 * Lookup410: pallet_ethereum::FakeTransactionFinalizer<opal_runtime::Runtime>3107 * Lookup437: pallet_ethereum::FakeTransactionFinalizer<opal_runtime::Runtime>2668 **/3108 **/2669 PalletEthereumFakeTransactionFinalizer: 'Null'3109 PalletEthereumFakeTransactionFinalizer: 'Null'2670};3110};26713111tests/src/interfaces/registry.tsdiffbeforeafterboth1// Auto-generated via `yarn polkadot-types-from-defs`, do not edit1// Auto-generated via `yarn polkadot-types-from-defs`, do not edit2/* eslint-disable */2/* eslint-disable */334import type { CumulusPalletDmpQueueCall, CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueueError, CumulusPalletDmpQueueEvent, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemCall, CumulusPalletParachainSystemError, CumulusPalletParachainSystemEvent, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmCall, CumulusPalletXcmError, CumulusPalletXcmEvent, CumulusPalletXcmpQueueCall, CumulusPalletXcmpQueueError, CumulusPalletXcmpQueueEvent, CumulusPalletXcmpQueueInboundChannelDetails, CumulusPalletXcmpQueueInboundState, CumulusPalletXcmpQueueOutboundChannelDetails, CumulusPalletXcmpQueueOutboundState, CumulusPalletXcmpQueueQueueConfigData, CumulusPrimitivesParachainInherentParachainInherentData, EthbloomBloom, EthereumBlock, EthereumHeader, EthereumLog, EthereumReceiptEip658ReceiptData, EthereumReceiptReceiptV3, EthereumTransactionAccessListItem, EthereumTransactionEip1559Transaction, EthereumTransactionEip2930Transaction, EthereumTransactionLegacyTransaction, EthereumTransactionTransactionAction, EthereumTransactionTransactionSignature, EthereumTransactionTransactionV2, EthereumTypesHashH64, EvmCoreErrorExitError, EvmCoreErrorExitFatal, EvmCoreErrorExitReason, EvmCoreErrorExitRevert, EvmCoreErrorExitSucceed, FpRpcTransactionStatus, FrameSupportPalletId, FrameSupportTokensMiscBalanceStatus, FrameSupportWeightsDispatchClass, FrameSupportWeightsDispatchInfo, FrameSupportWeightsPays, FrameSupportWeightsPerDispatchClassU32, FrameSupportWeightsPerDispatchClassU64, FrameSupportWeightsPerDispatchClassWeightsPerClass, FrameSupportWeightsRuntimeDbWeight, FrameSupportWeightsWeightToFeeCoefficient, FrameSystemAccountInfo, FrameSystemCall, FrameSystemError, FrameSystemEvent, FrameSystemEventRecord, FrameSystemExtensionsCheckGenesis, FrameSystemExtensionsCheckNonce, FrameSystemExtensionsCheckSpecVersion, FrameSystemExtensionsCheckWeight, FrameSystemLastRuntimeUpgradeInfo, FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, FrameSystemLimitsWeightsPerClass, FrameSystemPhase, OpalRuntimeRuntime, OrmlVestingModuleCall, OrmlVestingModuleError, OrmlVestingModuleEvent, OrmlVestingVestingSchedule, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesCall, PalletBalancesError, PalletBalancesEvent, PalletBalancesReasons, PalletBalancesReleases, PalletBalancesReserveData, PalletCommonError, PalletCommonEvent, PalletEthereumCall, PalletEthereumError, PalletEthereumEvent, PalletEthereumFakeTransactionFinalizer, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmCall, PalletEvmCoderSubstrateError, PalletEvmContractHelpersError, PalletEvmContractHelpersSponsoringModeT, PalletEvmError, PalletEvmEvent, PalletEvmMigrationCall, PalletEvmMigrationError, PalletFungibleError, PalletInflationCall, PalletNonfungibleError, PalletNonfungibleItemData, PalletRefungibleError, PalletRefungibleItemData, PalletStructureCall, PalletStructureError, PalletStructureEvent, PalletSudoCall, PalletSudoError, PalletSudoEvent, PalletTemplateTransactionPaymentCall, PalletTemplateTransactionPaymentChargeTransactionPayment, PalletTimestampCall, PalletTransactionPaymentReleases, PalletTreasuryCall, PalletTreasuryError, PalletTreasuryEvent, PalletTreasuryProposal, PalletUniqueCall, PalletUniqueError, PalletUniqueRawEvent, PalletXcmCall, PalletXcmError, PalletXcmEvent, PhantomTypeUpDataStructs, PolkadotCorePrimitivesInboundDownwardMessage, PolkadotCorePrimitivesInboundHrmpMessage, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotParachainPrimitivesXcmpMessageFormat, PolkadotPrimitivesV2AbridgedHostConfiguration, PolkadotPrimitivesV2AbridgedHrmpChannel, PolkadotPrimitivesV2PersistedValidationData, PolkadotPrimitivesV2UpgradeRestriction, SpCoreEcdsaSignature, SpCoreEd25519Signature, SpCoreSr25519Signature, SpRuntimeArithmeticError, SpRuntimeDigest, SpRuntimeDigestDigestItem, SpRuntimeDispatchError, SpRuntimeModuleError, SpRuntimeMultiSignature, SpRuntimeTokenError, SpRuntimeTransactionalError, SpTrieStorageProof, SpVersionRuntimeVersion, UpDataStructsAccessMode, UpDataStructsCollection, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCollectionPermissions, UpDataStructsCollectionStats, UpDataStructsCreateCollectionData, UpDataStructsCreateFungibleData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsCreateNftData, UpDataStructsCreateNftExData, UpDataStructsCreateReFungibleData, UpDataStructsCreateRefungibleExData, UpDataStructsNestingRule, UpDataStructsProperties, UpDataStructsPropertiesMapBoundedVec, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, UpDataStructsPropertyPermission, UpDataStructsRmrkAccountIdOrCollectionNftTuple, UpDataStructsRmrkBaseInfo, UpDataStructsRmrkBasicResource, UpDataStructsRmrkCollectionInfo, UpDataStructsRmrkComposableResource, UpDataStructsRmrkEquippableList, UpDataStructsRmrkFixedPart, UpDataStructsRmrkNftChild, UpDataStructsRmrkNftInfo, UpDataStructsRmrkPartType, UpDataStructsRmrkPropertyInfo, UpDataStructsRmrkResourceInfo, UpDataStructsRmrkResourceTypes, UpDataStructsRmrkRoyaltyInfo, UpDataStructsRmrkSlotPart, UpDataStructsRmrkSlotResource, UpDataStructsRmrkTheme, UpDataStructsRmrkThemeProperty, UpDataStructsRpcCollection, UpDataStructsSponsoringRateLimit, UpDataStructsSponsorshipState, UpDataStructsTokenChild, UpDataStructsTokenData, XcmDoubleEncoded, XcmV0Junction, XcmV0JunctionBodyId, XcmV0JunctionBodyPart, XcmV0JunctionNetworkId, XcmV0MultiAsset, XcmV0MultiLocation, XcmV0Order, XcmV0OriginKind, XcmV0Response, XcmV0Xcm, XcmV1Junction, XcmV1MultiAsset, XcmV1MultiLocation, XcmV1MultiassetAssetId, XcmV1MultiassetAssetInstance, XcmV1MultiassetFungibility, XcmV1MultiassetMultiAssetFilter, XcmV1MultiassetMultiAssets, XcmV1MultiassetWildFungibility, XcmV1MultiassetWildMultiAsset, XcmV1MultilocationJunctions, XcmV1Order, XcmV1Response, XcmV1Xcm, XcmV2Instruction, XcmV2Response, XcmV2TraitsError, XcmV2TraitsOutcome, XcmV2WeightLimit, XcmV2Xcm, XcmVersionedMultiAssets, XcmVersionedMultiLocation, XcmVersionedXcm } from '@polkadot/types/lookup';4import type { CumulusPalletDmpQueueCall, CumulusPalletDmpQueueConfigData, CumulusPalletDmpQueueError, CumulusPalletDmpQueueEvent, CumulusPalletDmpQueuePageIndexData, CumulusPalletParachainSystemCall, CumulusPalletParachainSystemError, CumulusPalletParachainSystemEvent, CumulusPalletParachainSystemRelayStateSnapshotMessagingStateSnapshot, CumulusPalletXcmCall, CumulusPalletXcmError, CumulusPalletXcmEvent, CumulusPalletXcmOrigin, CumulusPalletXcmpQueueCall, CumulusPalletXcmpQueueError, CumulusPalletXcmpQueueEvent, CumulusPalletXcmpQueueInboundChannelDetails, CumulusPalletXcmpQueueInboundState, CumulusPalletXcmpQueueOutboundChannelDetails, CumulusPalletXcmpQueueOutboundState, CumulusPalletXcmpQueueQueueConfigData, CumulusPrimitivesParachainInherentParachainInherentData, EthbloomBloom, EthereumBlock, EthereumHeader, EthereumLog, EthereumReceiptEip658ReceiptData, EthereumReceiptReceiptV3, EthereumTransactionAccessListItem, EthereumTransactionEip1559Transaction, EthereumTransactionEip2930Transaction, EthereumTransactionLegacyTransaction, EthereumTransactionTransactionAction, EthereumTransactionTransactionSignature, EthereumTransactionTransactionV2, EthereumTypesHashH64, EvmCoreErrorExitError, EvmCoreErrorExitFatal, EvmCoreErrorExitReason, EvmCoreErrorExitRevert, EvmCoreErrorExitSucceed, FpRpcTransactionStatus, FrameSupportDispatchRawOrigin, FrameSupportPalletId, FrameSupportScheduleLookupError, FrameSupportScheduleMaybeHashed, FrameSupportTokensMiscBalanceStatus, FrameSupportWeightsDispatchClass, FrameSupportWeightsDispatchInfo, FrameSupportWeightsPays, FrameSupportWeightsPerDispatchClassU32, FrameSupportWeightsPerDispatchClassU64, FrameSupportWeightsPerDispatchClassWeightsPerClass, FrameSupportWeightsRuntimeDbWeight, FrameSupportWeightsWeightToFeeCoefficient, FrameSystemAccountInfo, FrameSystemCall, FrameSystemError, FrameSystemEvent, FrameSystemEventRecord, FrameSystemExtensionsCheckGenesis, FrameSystemExtensionsCheckNonce, FrameSystemExtensionsCheckSpecVersion, FrameSystemExtensionsCheckWeight, FrameSystemLastRuntimeUpgradeInfo, FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, FrameSystemLimitsWeightsPerClass, FrameSystemPhase, OpalRuntimeOriginCaller, OpalRuntimeRuntime, OrmlVestingModuleCall, OrmlVestingModuleError, OrmlVestingModuleEvent, OrmlVestingVestingSchedule, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesCall, PalletBalancesError, PalletBalancesEvent, PalletBalancesReasons, PalletBalancesReleases, PalletBalancesReserveData, PalletCommonError, PalletCommonEvent, PalletEthereumCall, PalletEthereumError, PalletEthereumEvent, PalletEthereumFakeTransactionFinalizer, PalletEthereumRawOrigin, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmCall, PalletEvmCoderSubstrateError, PalletEvmContractHelpersError, PalletEvmContractHelpersSponsoringModeT, PalletEvmError, PalletEvmEvent, PalletEvmMigrationCall, PalletEvmMigrationError, PalletFungibleError, PalletInflationCall, PalletNonfungibleError, PalletNonfungibleItemData, PalletRefungibleError, PalletRefungibleItemData, PalletRmrkCoreCall, PalletRmrkCoreError, PalletRmrkCoreEvent, PalletRmrkEquipCall, PalletRmrkEquipError, PalletRmrkEquipEvent, PalletStructureCall, PalletStructureError, PalletStructureEvent, PalletSudoCall, PalletSudoError, PalletSudoEvent, PalletTemplateTransactionPaymentCall, PalletTemplateTransactionPaymentChargeTransactionPayment, PalletTimestampCall, PalletTransactionPaymentReleases, PalletTreasuryCall, PalletTreasuryError, PalletTreasuryEvent, PalletTreasuryProposal, PalletUniqueCall, PalletUniqueError, PalletUniqueRawEvent, PalletUnqSchedulerCall, PalletUnqSchedulerError, PalletUnqSchedulerEvent, PalletUnqSchedulerScheduledV3, PalletXcmCall, PalletXcmError, PalletXcmEvent, PalletXcmOrigin, PhantomTypeUpDataStructs, PolkadotCorePrimitivesInboundDownwardMessage, PolkadotCorePrimitivesInboundHrmpMessage, PolkadotCorePrimitivesOutboundHrmpMessage, PolkadotParachainPrimitivesXcmpMessageFormat, PolkadotPrimitivesV2AbridgedHostConfiguration, PolkadotPrimitivesV2AbridgedHrmpChannel, PolkadotPrimitivesV2PersistedValidationData, PolkadotPrimitivesV2UpgradeRestriction, RmrkTraitsBaseBaseInfo, RmrkTraitsCollectionCollectionInfo, RmrkTraitsNftAccountIdOrCollectionNftTuple, RmrkTraitsNftNftChild, RmrkTraitsNftNftInfo, RmrkTraitsNftRoyaltyInfo, RmrkTraitsPartEquippableList, RmrkTraitsPartFixedPart, RmrkTraitsPartPartType, RmrkTraitsPartSlotPart, RmrkTraitsPropertyPropertyInfo, RmrkTraitsResourceBasicResource, RmrkTraitsResourceComposableResource, RmrkTraitsResourceResourceInfo, RmrkTraitsResourceResourceTypes, RmrkTraitsResourceSlotResource, RmrkTraitsTheme, RmrkTraitsThemeThemeProperty, SpCoreEcdsaSignature, SpCoreEd25519Signature, SpCoreSr25519Signature, SpCoreVoid, SpRuntimeArithmeticError, SpRuntimeDigest, SpRuntimeDigestDigestItem, SpRuntimeDispatchError, SpRuntimeModuleError, SpRuntimeMultiSignature, SpRuntimeTokenError, SpRuntimeTransactionalError, SpTrieStorageProof, SpVersionRuntimeVersion, UpDataStructsAccessMode, UpDataStructsCollection, UpDataStructsCollectionLimits, UpDataStructsCollectionMode, UpDataStructsCollectionPermissions, UpDataStructsCollectionStats, UpDataStructsCreateCollectionData, UpDataStructsCreateFungibleData, UpDataStructsCreateItemData, UpDataStructsCreateItemExData, UpDataStructsCreateNftData, UpDataStructsCreateNftExData, UpDataStructsCreateReFungibleData, UpDataStructsCreateRefungibleExData, UpDataStructsNestingRule, UpDataStructsProperties, UpDataStructsPropertiesMapBoundedVec, UpDataStructsPropertiesMapPropertyPermission, UpDataStructsProperty, UpDataStructsPropertyKeyPermission, UpDataStructsPropertyPermission, UpDataStructsRpcCollection, UpDataStructsSponsoringRateLimit, UpDataStructsSponsorshipState, UpDataStructsTokenChild, UpDataStructsTokenData, XcmDoubleEncoded, XcmV0Junction, XcmV0JunctionBodyId, XcmV0JunctionBodyPart, XcmV0JunctionNetworkId, XcmV0MultiAsset, XcmV0MultiLocation, XcmV0Order, XcmV0OriginKind, XcmV0Response, XcmV0Xcm, XcmV1Junction, XcmV1MultiAsset, XcmV1MultiLocation, XcmV1MultiassetAssetId, XcmV1MultiassetAssetInstance, XcmV1MultiassetFungibility, XcmV1MultiassetMultiAssetFilter, XcmV1MultiassetMultiAssets, XcmV1MultiassetWildFungibility, XcmV1MultiassetWildMultiAsset, XcmV1MultilocationJunctions, XcmV1Order, XcmV1Response, XcmV1Xcm, XcmV2Instruction, XcmV2Response, XcmV2TraitsError, XcmV2TraitsOutcome, XcmV2WeightLimit, XcmV2Xcm, XcmVersionedMultiAssets, XcmVersionedMultiLocation, XcmVersionedXcm } from '@polkadot/types/lookup';556declare module '@polkadot/types/types/registry' {6declare module '@polkadot/types/types/registry' {7 export interface InterfaceTypes {7 export interface InterfaceTypes {17 CumulusPalletXcmCall: CumulusPalletXcmCall;17 CumulusPalletXcmCall: CumulusPalletXcmCall;18 CumulusPalletXcmError: CumulusPalletXcmError;18 CumulusPalletXcmError: CumulusPalletXcmError;19 CumulusPalletXcmEvent: CumulusPalletXcmEvent;19 CumulusPalletXcmEvent: CumulusPalletXcmEvent;20 CumulusPalletXcmOrigin: CumulusPalletXcmOrigin;20 CumulusPalletXcmpQueueCall: CumulusPalletXcmpQueueCall;21 CumulusPalletXcmpQueueCall: CumulusPalletXcmpQueueCall;21 CumulusPalletXcmpQueueError: CumulusPalletXcmpQueueError;22 CumulusPalletXcmpQueueError: CumulusPalletXcmpQueueError;22 CumulusPalletXcmpQueueEvent: CumulusPalletXcmpQueueEvent;23 CumulusPalletXcmpQueueEvent: CumulusPalletXcmpQueueEvent;46 EvmCoreErrorExitRevert: EvmCoreErrorExitRevert;47 EvmCoreErrorExitRevert: EvmCoreErrorExitRevert;47 EvmCoreErrorExitSucceed: EvmCoreErrorExitSucceed;48 EvmCoreErrorExitSucceed: EvmCoreErrorExitSucceed;48 FpRpcTransactionStatus: FpRpcTransactionStatus;49 FpRpcTransactionStatus: FpRpcTransactionStatus;50 FrameSupportDispatchRawOrigin: FrameSupportDispatchRawOrigin;49 FrameSupportPalletId: FrameSupportPalletId;51 FrameSupportPalletId: FrameSupportPalletId;52 FrameSupportScheduleLookupError: FrameSupportScheduleLookupError;53 FrameSupportScheduleMaybeHashed: FrameSupportScheduleMaybeHashed;50 FrameSupportTokensMiscBalanceStatus: FrameSupportTokensMiscBalanceStatus;54 FrameSupportTokensMiscBalanceStatus: FrameSupportTokensMiscBalanceStatus;51 FrameSupportWeightsDispatchClass: FrameSupportWeightsDispatchClass;55 FrameSupportWeightsDispatchClass: FrameSupportWeightsDispatchClass;52 FrameSupportWeightsDispatchInfo: FrameSupportWeightsDispatchInfo;56 FrameSupportWeightsDispatchInfo: FrameSupportWeightsDispatchInfo;70 FrameSystemLimitsBlockWeights: FrameSystemLimitsBlockWeights;74 FrameSystemLimitsBlockWeights: FrameSystemLimitsBlockWeights;71 FrameSystemLimitsWeightsPerClass: FrameSystemLimitsWeightsPerClass;75 FrameSystemLimitsWeightsPerClass: FrameSystemLimitsWeightsPerClass;72 FrameSystemPhase: FrameSystemPhase;76 FrameSystemPhase: FrameSystemPhase;77 OpalRuntimeOriginCaller: OpalRuntimeOriginCaller;73 OpalRuntimeRuntime: OpalRuntimeRuntime;78 OpalRuntimeRuntime: OpalRuntimeRuntime;74 OrmlVestingModuleCall: OrmlVestingModuleCall;79 OrmlVestingModuleCall: OrmlVestingModuleCall;75 OrmlVestingModuleError: OrmlVestingModuleError;80 OrmlVestingModuleError: OrmlVestingModuleError;89 PalletEthereumError: PalletEthereumError;94 PalletEthereumError: PalletEthereumError;90 PalletEthereumEvent: PalletEthereumEvent;95 PalletEthereumEvent: PalletEthereumEvent;91 PalletEthereumFakeTransactionFinalizer: PalletEthereumFakeTransactionFinalizer;96 PalletEthereumFakeTransactionFinalizer: PalletEthereumFakeTransactionFinalizer;97 PalletEthereumRawOrigin: PalletEthereumRawOrigin;92 PalletEvmAccountBasicCrossAccountIdRepr: PalletEvmAccountBasicCrossAccountIdRepr;98 PalletEvmAccountBasicCrossAccountIdRepr: PalletEvmAccountBasicCrossAccountIdRepr;93 PalletEvmCall: PalletEvmCall;99 PalletEvmCall: PalletEvmCall;94 PalletEvmCoderSubstrateError: PalletEvmCoderSubstrateError;100 PalletEvmCoderSubstrateError: PalletEvmCoderSubstrateError;104 PalletNonfungibleItemData: PalletNonfungibleItemData;110 PalletNonfungibleItemData: PalletNonfungibleItemData;105 PalletRefungibleError: PalletRefungibleError;111 PalletRefungibleError: PalletRefungibleError;106 PalletRefungibleItemData: PalletRefungibleItemData;112 PalletRefungibleItemData: PalletRefungibleItemData;113 PalletRmrkCoreCall: PalletRmrkCoreCall;114 PalletRmrkCoreError: PalletRmrkCoreError;115 PalletRmrkCoreEvent: PalletRmrkCoreEvent;116 PalletRmrkEquipCall: PalletRmrkEquipCall;117 PalletRmrkEquipError: PalletRmrkEquipError;118 PalletRmrkEquipEvent: PalletRmrkEquipEvent;107 PalletStructureCall: PalletStructureCall;119 PalletStructureCall: PalletStructureCall;108 PalletStructureError: PalletStructureError;120 PalletStructureError: PalletStructureError;109 PalletStructureEvent: PalletStructureEvent;121 PalletStructureEvent: PalletStructureEvent;121 PalletUniqueCall: PalletUniqueCall;133 PalletUniqueCall: PalletUniqueCall;122 PalletUniqueError: PalletUniqueError;134 PalletUniqueError: PalletUniqueError;123 PalletUniqueRawEvent: PalletUniqueRawEvent;135 PalletUniqueRawEvent: PalletUniqueRawEvent;136 PalletUnqSchedulerCall: PalletUnqSchedulerCall;137 PalletUnqSchedulerError: PalletUnqSchedulerError;138 PalletUnqSchedulerEvent: PalletUnqSchedulerEvent;139 PalletUnqSchedulerScheduledV3: PalletUnqSchedulerScheduledV3;124 PalletXcmCall: PalletXcmCall;140 PalletXcmCall: PalletXcmCall;125 PalletXcmError: PalletXcmError;141 PalletXcmError: PalletXcmError;126 PalletXcmEvent: PalletXcmEvent;142 PalletXcmEvent: PalletXcmEvent;143 PalletXcmOrigin: PalletXcmOrigin;127 PhantomTypeUpDataStructs: PhantomTypeUpDataStructs;144 PhantomTypeUpDataStructs: PhantomTypeUpDataStructs;128 PolkadotCorePrimitivesInboundDownwardMessage: PolkadotCorePrimitivesInboundDownwardMessage;145 PolkadotCorePrimitivesInboundDownwardMessage: PolkadotCorePrimitivesInboundDownwardMessage;129 PolkadotCorePrimitivesInboundHrmpMessage: PolkadotCorePrimitivesInboundHrmpMessage;146 PolkadotCorePrimitivesInboundHrmpMessage: PolkadotCorePrimitivesInboundHrmpMessage;133 PolkadotPrimitivesV2AbridgedHrmpChannel: PolkadotPrimitivesV2AbridgedHrmpChannel;150 PolkadotPrimitivesV2AbridgedHrmpChannel: PolkadotPrimitivesV2AbridgedHrmpChannel;134 PolkadotPrimitivesV2PersistedValidationData: PolkadotPrimitivesV2PersistedValidationData;151 PolkadotPrimitivesV2PersistedValidationData: PolkadotPrimitivesV2PersistedValidationData;135 PolkadotPrimitivesV2UpgradeRestriction: PolkadotPrimitivesV2UpgradeRestriction;152 PolkadotPrimitivesV2UpgradeRestriction: PolkadotPrimitivesV2UpgradeRestriction;153 RmrkTraitsBaseBaseInfo: RmrkTraitsBaseBaseInfo;154 RmrkTraitsCollectionCollectionInfo: RmrkTraitsCollectionCollectionInfo;155 RmrkTraitsNftAccountIdOrCollectionNftTuple: RmrkTraitsNftAccountIdOrCollectionNftTuple;156 RmrkTraitsNftNftChild: RmrkTraitsNftNftChild;157 RmrkTraitsNftNftInfo: RmrkTraitsNftNftInfo;158 RmrkTraitsNftRoyaltyInfo: RmrkTraitsNftRoyaltyInfo;159 RmrkTraitsPartEquippableList: RmrkTraitsPartEquippableList;160 RmrkTraitsPartFixedPart: RmrkTraitsPartFixedPart;161 RmrkTraitsPartPartType: RmrkTraitsPartPartType;162 RmrkTraitsPartSlotPart: RmrkTraitsPartSlotPart;163 RmrkTraitsPropertyPropertyInfo: RmrkTraitsPropertyPropertyInfo;164 RmrkTraitsResourceBasicResource: RmrkTraitsResourceBasicResource;165 RmrkTraitsResourceComposableResource: RmrkTraitsResourceComposableResource;166 RmrkTraitsResourceResourceInfo: RmrkTraitsResourceResourceInfo;167 RmrkTraitsResourceResourceTypes: RmrkTraitsResourceResourceTypes;168 RmrkTraitsResourceSlotResource: RmrkTraitsResourceSlotResource;169 RmrkTraitsTheme: RmrkTraitsTheme;170 RmrkTraitsThemeThemeProperty: RmrkTraitsThemeThemeProperty;136 SpCoreEcdsaSignature: SpCoreEcdsaSignature;171 SpCoreEcdsaSignature: SpCoreEcdsaSignature;137 SpCoreEd25519Signature: SpCoreEd25519Signature;172 SpCoreEd25519Signature: SpCoreEd25519Signature;138 SpCoreSr25519Signature: SpCoreSr25519Signature;173 SpCoreSr25519Signature: SpCoreSr25519Signature;174 SpCoreVoid: SpCoreVoid;139 SpRuntimeArithmeticError: SpRuntimeArithmeticError;175 SpRuntimeArithmeticError: SpRuntimeArithmeticError;140 SpRuntimeDigest: SpRuntimeDigest;176 SpRuntimeDigest: SpRuntimeDigest;141 SpRuntimeDigestDigestItem: SpRuntimeDigestDigestItem;177 SpRuntimeDigestDigestItem: SpRuntimeDigestDigestItem;167 UpDataStructsProperty: UpDataStructsProperty;203 UpDataStructsProperty: UpDataStructsProperty;168 UpDataStructsPropertyKeyPermission: UpDataStructsPropertyKeyPermission;204 UpDataStructsPropertyKeyPermission: UpDataStructsPropertyKeyPermission;169 UpDataStructsPropertyPermission: UpDataStructsPropertyPermission;205 UpDataStructsPropertyPermission: UpDataStructsPropertyPermission;170 UpDataStructsRmrkAccountIdOrCollectionNftTuple: UpDataStructsRmrkAccountIdOrCollectionNftTuple;171 UpDataStructsRmrkBaseInfo: UpDataStructsRmrkBaseInfo;172 UpDataStructsRmrkBasicResource: UpDataStructsRmrkBasicResource;173 UpDataStructsRmrkCollectionInfo: UpDataStructsRmrkCollectionInfo;174 UpDataStructsRmrkComposableResource: UpDataStructsRmrkComposableResource;175 UpDataStructsRmrkEquippableList: UpDataStructsRmrkEquippableList;176 UpDataStructsRmrkFixedPart: UpDataStructsRmrkFixedPart;177 UpDataStructsRmrkNftChild: UpDataStructsRmrkNftChild;178 UpDataStructsRmrkNftInfo: UpDataStructsRmrkNftInfo;179 UpDataStructsRmrkPartType: UpDataStructsRmrkPartType;180 UpDataStructsRmrkPropertyInfo: UpDataStructsRmrkPropertyInfo;181 UpDataStructsRmrkResourceInfo: UpDataStructsRmrkResourceInfo;182 UpDataStructsRmrkResourceTypes: UpDataStructsRmrkResourceTypes;183 UpDataStructsRmrkRoyaltyInfo: UpDataStructsRmrkRoyaltyInfo;184 UpDataStructsRmrkSlotPart: UpDataStructsRmrkSlotPart;185 UpDataStructsRmrkSlotResource: UpDataStructsRmrkSlotResource;186 UpDataStructsRmrkTheme: UpDataStructsRmrkTheme;187 UpDataStructsRmrkThemeProperty: UpDataStructsRmrkThemeProperty;188 UpDataStructsRpcCollection: UpDataStructsRpcCollection;206 UpDataStructsRpcCollection: UpDataStructsRpcCollection;189 UpDataStructsSponsoringRateLimit: UpDataStructsSponsoringRateLimit;207 UpDataStructsSponsoringRateLimit: UpDataStructsSponsoringRateLimit;190 UpDataStructsSponsorshipState: UpDataStructsSponsorshipState;208 UpDataStructsSponsorshipState: UpDataStructsSponsorshipState;tests/src/interfaces/rmrk/definitions.tsdiffbeforeafterboth31 types: {},31 types: {},32 rpc: {32 rpc: {33 lastCollectionIdx: fn('Get the latest created collection id', [], 'u32'),33 lastCollectionIdx: fn('Get the latest created collection id', [], 'u32'),34 collectionById: fn('Get collection by id', [{name: 'id', type: 'u32'}], 'Option<UpDataStructsRmrkCollectionInfo>'),34 collectionById: fn('Get collection by id', [{name: 'id', type: 'u32'}], 'Option<RmrkTraitsCollectionCollectionInfo>'),35 nftById: fn(35 nftById: fn(36 'Get NFT by collection id and NFT id',36 'Get NFT by collection id and NFT id',37 [37 [38 {name: 'collectionId', type: 'u32'},38 {name: 'collectionId', type: 'u32'},39 {name: 'nftId', type: 'u32'},39 {name: 'nftId', type: 'u32'},40 ],40 ],41 'Option<UpDataStructsRmrkNftInfo>',41 'Option<RmrkTraitsNftNftInfo>',42 ),42 ),43 accountTokens: fn(43 accountTokens: fn(44 'Get tokens owned by an account in a collection',44 'Get tokens owned by an account in a collection',54 {name: 'collectionId', type: 'u32'},54 {name: 'collectionId', type: 'u32'},55 {name: 'nftId', type: 'u32'},55 {name: 'nftId', type: 'u32'},56 ],56 ],57 'Vec<UpDataStructsRmrkNftChild>',57 'Vec<RmrkTraitsNftNftChild>',58 ),58 ),59 collectionProperties: fn(59 collectionProperties: fn(60 'Get collection properties',60 'Get collection properties',61 [{name: 'collectionId', type: 'u32'}],61 [62 {name: 'collectionId', type: 'u32'},63 {name: 'filterKeys', type: 'Vec<String>', isOptional: true},64 ],62 'Vec<UpDataStructsRmrkPropertyInfo>',65 'Vec<RmrkTraitsPropertyPropertyInfo>',63 ),66 ),64 nftProperties: fn(67 nftProperties: fn(65 'Get NFT properties',68 'Get NFT properties',66 [69 [67 {name: 'collectionId', type: 'u32'},70 {name: 'collectionId', type: 'u32'},68 {name: 'nftId', type: 'u32'},71 {name: 'nftId', type: 'u32'},72 {name: 'filterKeys', type: 'Vec<String>', isOptional: true},69 ],73 ],70 'Vec<UpDataStructsRmrkPropertyInfo>',74 'Vec<RmrkTraitsPropertyPropertyInfo>',71 ),75 ),72 nftResources: fn(76 nftResources: fn(73 'Get NFT resources',77 'Get NFT resources',74 [78 [75 {name: 'collectionId', type: 'u32'},79 {name: 'collectionId', type: 'u32'},76 {name: 'nftId', type: 'u32'},80 {name: 'nftId', type: 'u32'},77 ],81 ],78 'Vec<UpDataStructsRmrkResourceInfo>',82 'Vec<RmrkTraitsResourceResourceInfo>',79 ),83 ),80 nftResourcePriorities: fn(84 nftResourcePriority: fn(81 'Get NFT resource priorities',85 'Get NFT resource priorities',82 [86 [83 {name: 'collectionId', type: 'u32'},87 {name: 'collectionId', type: 'u32'},84 {name: 'nftId', type: 'u32'},88 {name: 'nftId', type: 'u32'},89 {name: 'resourceId', type: 'u32'},85 ],90 ],86 'Vec<Bytes>',91 'Option<u32>',87 ),92 ),88 base: fn(93 base: fn(89 'Get base info',94 'Get base info',90 [{name: 'baseId', type: 'u32'}],95 [{name: 'baseId', type: 'u32'}],91 'Option<UpDataStructsRmrkBaseInfo>',96 'Option<RmrkTraitsBaseBaseInfo>',92 ),97 ),93 baseParts: fn(98 baseParts: fn(94 'Get all Base\'s parts',99 'Get all Base\'s parts',95 [{name: 'baseId', type: 'u32'}],100 [{name: 'baseId', type: 'u32'}],96 'Vec<UpDataStructsRmrkPartType>',101 'Vec<RmrkTraitsPartPartType>',97 ),102 ),98 themeNames: fn(103 themeNames: fn(99 'Get Base\'s theme names',104 'Get Base\'s theme names',107 {name: 'themeName', type: 'String'},112 {name: 'themeName', type: 'String'},108 {name: 'keys', type: 'Option<Vec<String>>'},113 {name: 'keys', type: 'Option<Vec<String>>'},109 ],114 ],110 'Option<UpDataStructsRmrkTheme>',115 'Option<RmrkTraitsTheme>',111 ),116 ),112 },117 },113};118};tests/src/interfaces/types-lookup.tsdiffbeforeafterboth161 readonly amount: u128;161 readonly amount: u128;162 }162 }163163164 /** @name PalletBalancesReleases (50) */164 /** @name PalletBalancesReleases (51) */165 export interface PalletBalancesReleases extends Enum {165 export interface PalletBalancesReleases extends Enum {166 readonly isV100: boolean;166 readonly isV100: boolean;167 readonly isV200: boolean;167 readonly isV200: boolean;168 readonly type: 'V100' | 'V200';168 readonly type: 'V100' | 'V200';169 }169 }170170171 /** @name PalletBalancesCall (51) */171 /** @name PalletBalancesCall (52) */172 export interface PalletBalancesCall extends Enum {172 export interface PalletBalancesCall extends Enum {173 readonly isTransfer: boolean;173 readonly isTransfer: boolean;174 readonly asTransfer: {174 readonly asTransfer: {205 readonly type: 'Transfer' | 'SetBalance' | 'ForceTransfer' | 'TransferKeepAlive' | 'TransferAll' | 'ForceUnreserve';205 readonly type: 'Transfer' | 'SetBalance' | 'ForceTransfer' | 'TransferKeepAlive' | 'TransferAll' | 'ForceUnreserve';206 }206 }207207208 /** @name PalletBalancesEvent (57) */208 /** @name PalletBalancesEvent (58) */209 export interface PalletBalancesEvent extends Enum {209 export interface PalletBalancesEvent extends Enum {210 readonly isEndowed: boolean;210 readonly isEndowed: boolean;211 readonly asEndowed: {211 readonly asEndowed: {264 readonly type: 'Endowed' | 'DustLost' | 'Transfer' | 'BalanceSet' | 'Reserved' | 'Unreserved' | 'ReserveRepatriated' | 'Deposit' | 'Withdraw' | 'Slashed';264 readonly type: 'Endowed' | 'DustLost' | 'Transfer' | 'BalanceSet' | 'Reserved' | 'Unreserved' | 'ReserveRepatriated' | 'Deposit' | 'Withdraw' | 'Slashed';265 }265 }266266267 /** @name FrameSupportTokensMiscBalanceStatus (58) */267 /** @name FrameSupportTokensMiscBalanceStatus (59) */268 export interface FrameSupportTokensMiscBalanceStatus extends Enum {268 export interface FrameSupportTokensMiscBalanceStatus extends Enum {269 readonly isFree: boolean;269 readonly isFree: boolean;270 readonly isReserved: boolean;270 readonly isReserved: boolean;271 readonly type: 'Free' | 'Reserved';271 readonly type: 'Free' | 'Reserved';272 }272 }273273274 /** @name PalletBalancesError (59) */274 /** @name PalletBalancesError (60) */275 export interface PalletBalancesError extends Enum {275 export interface PalletBalancesError extends Enum {276 readonly isVestingBalance: boolean;276 readonly isVestingBalance: boolean;277 readonly isLiquidityRestrictions: boolean;277 readonly isLiquidityRestrictions: boolean;284 readonly type: 'VestingBalance' | 'LiquidityRestrictions' | 'InsufficientBalance' | 'ExistentialDeposit' | 'KeepAlive' | 'ExistingVestingSchedule' | 'DeadAccount' | 'TooManyReserves';284 readonly type: 'VestingBalance' | 'LiquidityRestrictions' | 'InsufficientBalance' | 'ExistentialDeposit' | 'KeepAlive' | 'ExistingVestingSchedule' | 'DeadAccount' | 'TooManyReserves';285 }285 }286286287 /** @name PalletTimestampCall (62) */287 /** @name PalletTimestampCall (63) */288 export interface PalletTimestampCall extends Enum {288 export interface PalletTimestampCall extends Enum {289 readonly isSet: boolean;289 readonly isSet: boolean;290 readonly asSet: {290 readonly asSet: {293 readonly type: 'Set';293 readonly type: 'Set';294 }294 }295295296 /** @name PalletTransactionPaymentReleases (65) */296 /** @name PalletTransactionPaymentReleases (66) */297 export interface PalletTransactionPaymentReleases extends Enum {297 export interface PalletTransactionPaymentReleases extends Enum {298 readonly isV1Ancient: boolean;298 readonly isV1Ancient: boolean;299 readonly isV2: boolean;299 readonly isV2: boolean;300 readonly type: 'V1Ancient' | 'V2';300 readonly type: 'V1Ancient' | 'V2';301 }301 }302302303 /** @name FrameSupportWeightsWeightToFeeCoefficient (67) */303 /** @name FrameSupportWeightsWeightToFeeCoefficient (68) */304 export interface FrameSupportWeightsWeightToFeeCoefficient extends Struct {304 export interface FrameSupportWeightsWeightToFeeCoefficient extends Struct {305 readonly coeffInteger: u128;305 readonly coeffInteger: u128;306 readonly coeffFrac: Perbill;306 readonly coeffFrac: Perbill;307 readonly negative: bool;307 readonly negative: bool;308 readonly degree: u8;308 readonly degree: u8;309 }309 }310310311 /** @name PalletTreasuryProposal (69) */311 /** @name PalletTreasuryProposal (70) */312 export interface PalletTreasuryProposal extends Struct {312 export interface PalletTreasuryProposal extends Struct {313 readonly proposer: AccountId32;313 readonly proposer: AccountId32;314 readonly value: u128;314 readonly value: u128;315 readonly beneficiary: AccountId32;315 readonly beneficiary: AccountId32;316 readonly bond: u128;316 readonly bond: u128;317 }317 }318318319 /** @name PalletTreasuryCall (72) */319 /** @name PalletTreasuryCall (73) */320 export interface PalletTreasuryCall extends Enum {320 export interface PalletTreasuryCall extends Enum {321 readonly isProposeSpend: boolean;321 readonly isProposeSpend: boolean;322 readonly asProposeSpend: {322 readonly asProposeSpend: {331 readonly asApproveProposal: {331 readonly asApproveProposal: {332 readonly proposalId: Compact<u32>;332 readonly proposalId: Compact<u32>;333 } & Struct;333 } & Struct;334 readonly isRemoveApproval: boolean;335 readonly asRemoveApproval: {336 readonly proposalId: Compact<u32>;337 } & Struct;334 readonly type: 'ProposeSpend' | 'RejectProposal' | 'ApproveProposal';338 readonly type: 'ProposeSpend' | 'RejectProposal' | 'ApproveProposal' | 'RemoveApproval';335 }339 }336340337 /** @name PalletTreasuryEvent (74) */341 /** @name PalletTreasuryEvent (75) */338 export interface PalletTreasuryEvent extends Enum {342 export interface PalletTreasuryEvent extends Enum {339 readonly isProposed: boolean;343 readonly isProposed: boolean;340 readonly asProposed: {344 readonly asProposed: {370 readonly type: 'Proposed' | 'Spending' | 'Awarded' | 'Rejected' | 'Burnt' | 'Rollover' | 'Deposit';374 readonly type: 'Proposed' | 'Spending' | 'Awarded' | 'Rejected' | 'Burnt' | 'Rollover' | 'Deposit';371 }375 }372376373 /** @name FrameSupportPalletId (77) */377 /** @name FrameSupportPalletId (78) */374 export interface FrameSupportPalletId extends U8aFixed {}378 export interface FrameSupportPalletId extends U8aFixed {}375379376 /** @name PalletTreasuryError (78) */380 /** @name PalletTreasuryError (79) */377 export interface PalletTreasuryError extends Enum {381 export interface PalletTreasuryError extends Enum {378 readonly isInsufficientProposersBalance: boolean;382 readonly isInsufficientProposersBalance: boolean;379 readonly isInvalidIndex: boolean;383 readonly isInvalidIndex: boolean;380 readonly isTooManyApprovals: boolean;384 readonly isTooManyApprovals: boolean;385 readonly isProposalNotApproved: boolean;381 readonly type: 'InsufficientProposersBalance' | 'InvalidIndex' | 'TooManyApprovals';386 readonly type: 'InsufficientProposersBalance' | 'InvalidIndex' | 'TooManyApprovals' | 'ProposalNotApproved';382 }387 }383388384 /** @name PalletSudoCall (79) */389 /** @name PalletSudoCall (80) */385 export interface PalletSudoCall extends Enum {390 export interface PalletSudoCall extends Enum {386 readonly isSudo: boolean;391 readonly isSudo: boolean;387 readonly asSudo: {392 readonly asSudo: {404 readonly type: 'Sudo' | 'SudoUncheckedWeight' | 'SetKey' | 'SudoAs';409 readonly type: 'Sudo' | 'SudoUncheckedWeight' | 'SetKey' | 'SudoAs';405 }410 }406411407 /** @name FrameSystemCall (81) */412 /** @name FrameSystemCall (82) */408 export interface FrameSystemCall extends Enum {413 export interface FrameSystemCall extends Enum {409 readonly isFillBlock: boolean;414 readonly isFillBlock: boolean;410 readonly asFillBlock: {415 readonly asFillBlock: {446 readonly type: 'FillBlock' | 'Remark' | 'SetHeapPages' | 'SetCode' | 'SetCodeWithoutChecks' | 'SetStorage' | 'KillStorage' | 'KillPrefix' | 'RemarkWithEvent';451 readonly type: 'FillBlock' | 'Remark' | 'SetHeapPages' | 'SetCode' | 'SetCodeWithoutChecks' | 'SetStorage' | 'KillStorage' | 'KillPrefix' | 'RemarkWithEvent';447 }452 }448453449 /** @name OrmlVestingModuleCall (84) */454 /** @name OrmlVestingModuleCall (85) */450 export interface OrmlVestingModuleCall extends Enum {455 export interface OrmlVestingModuleCall extends Enum {451 readonly isClaim: boolean;456 readonly isClaim: boolean;452 readonly isVestedTransfer: boolean;457 readonly isVestedTransfer: boolean;466 readonly type: 'Claim' | 'VestedTransfer' | 'UpdateVestingSchedules' | 'ClaimFor';471 readonly type: 'Claim' | 'VestedTransfer' | 'UpdateVestingSchedules' | 'ClaimFor';467 }472 }468473469 /** @name OrmlVestingVestingSchedule (85) */474 /** @name OrmlVestingVestingSchedule (86) */470 export interface OrmlVestingVestingSchedule extends Struct {475 export interface OrmlVestingVestingSchedule extends Struct {471 readonly start: u32;476 readonly start: u32;472 readonly period: u32;477 readonly period: u32;473 readonly periodCount: u32;478 readonly periodCount: u32;474 readonly perPeriod: Compact<u128>;479 readonly perPeriod: Compact<u128>;475 }480 }476481477 /** @name CumulusPalletXcmpQueueCall (87) */482 /** @name CumulusPalletXcmpQueueCall (88) */478 export interface CumulusPalletXcmpQueueCall extends Enum {483 export interface CumulusPalletXcmpQueueCall extends Enum {479 readonly isServiceOverweight: boolean;484 readonly isServiceOverweight: boolean;480 readonly asServiceOverweight: {485 readonly asServiceOverweight: {510 readonly type: 'ServiceOverweight' | 'SuspendXcmExecution' | 'ResumeXcmExecution' | 'UpdateSuspendThreshold' | 'UpdateDropThreshold' | 'UpdateResumeThreshold' | 'UpdateThresholdWeight' | 'UpdateWeightRestrictDecay' | 'UpdateXcmpMaxIndividualWeight';515 readonly type: 'ServiceOverweight' | 'SuspendXcmExecution' | 'ResumeXcmExecution' | 'UpdateSuspendThreshold' | 'UpdateDropThreshold' | 'UpdateResumeThreshold' | 'UpdateThresholdWeight' | 'UpdateWeightRestrictDecay' | 'UpdateXcmpMaxIndividualWeight';511 }516 }512517513 /** @name PalletXcmCall (88) */518 /** @name PalletXcmCall (89) */514 export interface PalletXcmCall extends Enum {519 export interface PalletXcmCall extends Enum {515 readonly isSend: boolean;520 readonly isSend: boolean;516 readonly asSend: {521 readonly asSend: {572 readonly type: 'Send' | 'TeleportAssets' | 'ReserveTransferAssets' | 'Execute' | 'ForceXcmVersion' | 'ForceDefaultXcmVersion' | 'ForceSubscribeVersionNotify' | 'ForceUnsubscribeVersionNotify' | 'LimitedReserveTransferAssets' | 'LimitedTeleportAssets';577 readonly type: 'Send' | 'TeleportAssets' | 'ReserveTransferAssets' | 'Execute' | 'ForceXcmVersion' | 'ForceDefaultXcmVersion' | 'ForceSubscribeVersionNotify' | 'ForceUnsubscribeVersionNotify' | 'LimitedReserveTransferAssets' | 'LimitedTeleportAssets';573 }578 }574579575 /** @name XcmVersionedMultiLocation (89) */580 /** @name XcmVersionedMultiLocation (90) */576 export interface XcmVersionedMultiLocation extends Enum {581 export interface XcmVersionedMultiLocation extends Enum {577 readonly isV0: boolean;582 readonly isV0: boolean;578 readonly asV0: XcmV0MultiLocation;583 readonly asV0: XcmV0MultiLocation;581 readonly type: 'V0' | 'V1';586 readonly type: 'V0' | 'V1';582 }587 }583588584 /** @name XcmV0MultiLocation (90) */589 /** @name XcmV0MultiLocation (91) */585 export interface XcmV0MultiLocation extends Enum {590 export interface XcmV0MultiLocation extends Enum {586 readonly isNull: boolean;591 readonly isNull: boolean;587 readonly isX1: boolean;592 readonly isX1: boolean;603 readonly type: 'Null' | 'X1' | 'X2' | 'X3' | 'X4' | 'X5' | 'X6' | 'X7' | 'X8';608 readonly type: 'Null' | 'X1' | 'X2' | 'X3' | 'X4' | 'X5' | 'X6' | 'X7' | 'X8';604 }609 }605610606 /** @name XcmV0Junction (91) */611 /** @name XcmV0Junction (92) */607 export interface XcmV0Junction extends Enum {612 export interface XcmV0Junction extends Enum {608 readonly isParent: boolean;613 readonly isParent: boolean;609 readonly isParachain: boolean;614 readonly isParachain: boolean;638 readonly type: 'Parent' | 'Parachain' | 'AccountId32' | 'AccountIndex64' | 'AccountKey20' | 'PalletInstance' | 'GeneralIndex' | 'GeneralKey' | 'OnlyChild' | 'Plurality';643 readonly type: 'Parent' | 'Parachain' | 'AccountId32' | 'AccountIndex64' | 'AccountKey20' | 'PalletInstance' | 'GeneralIndex' | 'GeneralKey' | 'OnlyChild' | 'Plurality';639 }644 }640645641 /** @name XcmV0JunctionNetworkId (92) */646 /** @name XcmV0JunctionNetworkId (93) */642 export interface XcmV0JunctionNetworkId extends Enum {647 export interface XcmV0JunctionNetworkId extends Enum {643 readonly isAny: boolean;648 readonly isAny: boolean;644 readonly isNamed: boolean;649 readonly isNamed: boolean;648 readonly type: 'Any' | 'Named' | 'Polkadot' | 'Kusama';653 readonly type: 'Any' | 'Named' | 'Polkadot' | 'Kusama';649 }654 }650655651 /** @name XcmV0JunctionBodyId (93) */656 /** @name XcmV0JunctionBodyId (94) */652 export interface XcmV0JunctionBodyId extends Enum {657 export interface XcmV0JunctionBodyId extends Enum {653 readonly isUnit: boolean;658 readonly isUnit: boolean;654 readonly isNamed: boolean;659 readonly isNamed: boolean;662 readonly type: 'Unit' | 'Named' | 'Index' | 'Executive' | 'Technical' | 'Legislative' | 'Judicial';667 readonly type: 'Unit' | 'Named' | 'Index' | 'Executive' | 'Technical' | 'Legislative' | 'Judicial';663 }668 }664669665 /** @name XcmV0JunctionBodyPart (94) */670 /** @name XcmV0JunctionBodyPart (95) */666 export interface XcmV0JunctionBodyPart extends Enum {671 export interface XcmV0JunctionBodyPart extends Enum {667 readonly isVoice: boolean;672 readonly isVoice: boolean;668 readonly isMembers: boolean;673 readonly isMembers: boolean;687 readonly type: 'Voice' | 'Members' | 'Fraction' | 'AtLeastProportion' | 'MoreThanProportion';692 readonly type: 'Voice' | 'Members' | 'Fraction' | 'AtLeastProportion' | 'MoreThanProportion';688 }693 }689694690 /** @name XcmV1MultiLocation (95) */695 /** @name XcmV1MultiLocation (96) */691 export interface XcmV1MultiLocation extends Struct {696 export interface XcmV1MultiLocation extends Struct {692 readonly parents: u8;697 readonly parents: u8;693 readonly interior: XcmV1MultilocationJunctions;698 readonly interior: XcmV1MultilocationJunctions;694 }699 }695700696 /** @name XcmV1MultilocationJunctions (96) */701 /** @name XcmV1MultilocationJunctions (97) */697 export interface XcmV1MultilocationJunctions extends Enum {702 export interface XcmV1MultilocationJunctions extends Enum {698 readonly isHere: boolean;703 readonly isHere: boolean;699 readonly isX1: boolean;704 readonly isX1: boolean;715 readonly type: 'Here' | 'X1' | 'X2' | 'X3' | 'X4' | 'X5' | 'X6' | 'X7' | 'X8';720 readonly type: 'Here' | 'X1' | 'X2' | 'X3' | 'X4' | 'X5' | 'X6' | 'X7' | 'X8';716 }721 }717722718 /** @name XcmV1Junction (97) */723 /** @name XcmV1Junction (98) */719 export interface XcmV1Junction extends Enum {724 export interface XcmV1Junction extends Enum {720 readonly isParachain: boolean;725 readonly isParachain: boolean;721 readonly asParachain: Compact<u32>;726 readonly asParachain: Compact<u32>;749 readonly type: 'Parachain' | 'AccountId32' | 'AccountIndex64' | 'AccountKey20' | 'PalletInstance' | 'GeneralIndex' | 'GeneralKey' | 'OnlyChild' | 'Plurality';754 readonly type: 'Parachain' | 'AccountId32' | 'AccountIndex64' | 'AccountKey20' | 'PalletInstance' | 'GeneralIndex' | 'GeneralKey' | 'OnlyChild' | 'Plurality';750 }755 }751756752 /** @name XcmVersionedXcm (98) */757 /** @name XcmVersionedXcm (99) */753 export interface XcmVersionedXcm extends Enum {758 export interface XcmVersionedXcm extends Enum {754 readonly isV0: boolean;759 readonly isV0: boolean;755 readonly asV0: XcmV0Xcm;760 readonly asV0: XcmV0Xcm;760 readonly type: 'V0' | 'V1' | 'V2';765 readonly type: 'V0' | 'V1' | 'V2';761 }766 }762767763 /** @name XcmV0Xcm (99) */768 /** @name XcmV0Xcm (100) */764 export interface XcmV0Xcm extends Enum {769 export interface XcmV0Xcm extends Enum {765 readonly isWithdrawAsset: boolean;770 readonly isWithdrawAsset: boolean;766 readonly asWithdrawAsset: {771 readonly asWithdrawAsset: {823 readonly type: 'WithdrawAsset' | 'ReserveAssetDeposit' | 'TeleportAsset' | 'QueryResponse' | 'TransferAsset' | 'TransferReserveAsset' | 'Transact' | 'HrmpNewChannelOpenRequest' | 'HrmpChannelAccepted' | 'HrmpChannelClosing' | 'RelayedFrom';828 readonly type: 'WithdrawAsset' | 'ReserveAssetDeposit' | 'TeleportAsset' | 'QueryResponse' | 'TransferAsset' | 'TransferReserveAsset' | 'Transact' | 'HrmpNewChannelOpenRequest' | 'HrmpChannelAccepted' | 'HrmpChannelClosing' | 'RelayedFrom';824 }829 }825830826 /** @name XcmV0MultiAsset (101) */831 /** @name XcmV0MultiAsset (102) */827 export interface XcmV0MultiAsset extends Enum {832 export interface XcmV0MultiAsset extends Enum {828 readonly isNone: boolean;833 readonly isNone: boolean;829 readonly isAll: boolean;834 readonly isAll: boolean;868 readonly type: 'None' | 'All' | 'AllFungible' | 'AllNonFungible' | 'AllAbstractFungible' | 'AllAbstractNonFungible' | 'AllConcreteFungible' | 'AllConcreteNonFungible' | 'AbstractFungible' | 'AbstractNonFungible' | 'ConcreteFungible' | 'ConcreteNonFungible';873 readonly type: 'None' | 'All' | 'AllFungible' | 'AllNonFungible' | 'AllAbstractFungible' | 'AllAbstractNonFungible' | 'AllConcreteFungible' | 'AllConcreteNonFungible' | 'AbstractFungible' | 'AbstractNonFungible' | 'ConcreteFungible' | 'ConcreteNonFungible';869 }874 }870875871 /** @name XcmV1MultiassetAssetInstance (102) */876 /** @name XcmV1MultiassetAssetInstance (103) */872 export interface XcmV1MultiassetAssetInstance extends Enum {877 export interface XcmV1MultiassetAssetInstance extends Enum {873 readonly isUndefined: boolean;878 readonly isUndefined: boolean;874 readonly isIndex: boolean;879 readonly isIndex: boolean;1643 readonly users: BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr, u128>;1648 readonly users: BTreeMap<PalletEvmAccountBasicCrossAccountIdRepr, u128>;1644 }1649 }16501651 /** @name PalletUnqSchedulerCall (204) */1652 export interface PalletUnqSchedulerCall extends Enum {1653 readonly isScheduleNamed: boolean;1654 readonly asScheduleNamed: {1655 readonly id: U8aFixed;1656 readonly when: u32;1657 readonly maybePeriodic: Option<ITuple<[u32, u32]>>;1658 readonly priority: u8;1659 readonly call: FrameSupportScheduleMaybeHashed;1660 } & Struct;1661 readonly isCancelNamed: boolean;1662 readonly asCancelNamed: {1663 readonly id: U8aFixed;1664 } & Struct;1665 readonly isScheduleNamedAfter: boolean;1666 readonly asScheduleNamedAfter: {1667 readonly id: U8aFixed;1668 readonly after: u32;1669 readonly maybePeriodic: Option<ITuple<[u32, u32]>>;1670 readonly priority: u8;1671 readonly call: FrameSupportScheduleMaybeHashed;1672 } & Struct;1673 readonly type: 'ScheduleNamed' | 'CancelNamed' | 'ScheduleNamedAfter';1674 }16751676 /** @name FrameSupportScheduleMaybeHashed (206) */1677 export interface FrameSupportScheduleMaybeHashed extends Enum {1678 readonly isValue: boolean;1679 readonly asValue: Call;1680 readonly isHash: boolean;1681 readonly asHash: H256;1682 readonly type: 'Value' | 'Hash';1683 }164516841646 /** @name PalletTemplateTransactionPaymentCall (204) */1685 /** @name PalletTemplateTransactionPaymentCall (207) */1647 export type PalletTemplateTransactionPaymentCall = Null;1686 export type PalletTemplateTransactionPaymentCall = Null;164816871649 /** @name PalletStructureCall (205) */1688 /** @name PalletStructureCall (208) */1650 export type PalletStructureCall = Null;1689 export type PalletStructureCall = Null;16901691 /** @name PalletRmrkCoreCall (209) */1692 export interface PalletRmrkCoreCall extends Enum {1693 readonly isCreateCollection: boolean;1694 readonly asCreateCollection: {1695 readonly metadata: Bytes;1696 readonly max: Option<u32>;1697 readonly symbol: Bytes;1698 } & Struct;1699 readonly isDestroyCollection: boolean;1700 readonly asDestroyCollection: {1701 readonly collectionId: u32;1702 } & Struct;1703 readonly isChangeCollectionIssuer: boolean;1704 readonly asChangeCollectionIssuer: {1705 readonly collectionId: u32;1706 readonly newIssuer: MultiAddress;1707 } & Struct;1708 readonly isLockCollection: boolean;1709 readonly asLockCollection: {1710 readonly collectionId: u32;1711 } & Struct;1712 readonly isMintNft: boolean;1713 readonly asMintNft: {1714 readonly owner: AccountId32;1715 readonly collectionId: u32;1716 readonly recipient: Option<AccountId32>;1717 readonly royaltyAmount: Option<Permill>;1718 readonly metadata: Bytes;1719 readonly transferable: bool;1720 } & Struct;1721 readonly isBurnNft: boolean;1722 readonly asBurnNft: {1723 readonly collectionId: u32;1724 readonly nftId: u32;1725 } & Struct;1726 readonly isSend: boolean;1727 readonly asSend: {1728 readonly rmrkCollectionId: u32;1729 readonly rmrkNftId: u32;1730 readonly newOwner: RmrkTraitsNftAccountIdOrCollectionNftTuple;1731 } & Struct;1732 readonly isAcceptNft: boolean;1733 readonly asAcceptNft: {1734 readonly rmrkCollectionId: u32;1735 readonly rmrkNftId: u32;1736 readonly newOwner: RmrkTraitsNftAccountIdOrCollectionNftTuple;1737 } & Struct;1738 readonly isRejectNft: boolean;1739 readonly asRejectNft: {1740 readonly rmrkCollectionId: u32;1741 readonly rmrkNftId: u32;1742 } & Struct;1743 readonly isAcceptResource: boolean;1744 readonly asAcceptResource: {1745 readonly rmrkCollectionId: u32;1746 readonly rmrkNftId: u32;1747 readonly rmrkResourceId: u32;1748 } & Struct;1749 readonly isAcceptResourceRemoval: boolean;1750 readonly asAcceptResourceRemoval: {1751 readonly rmrkCollectionId: u32;1752 readonly rmrkNftId: u32;1753 readonly rmrkResourceId: u32;1754 } & Struct;1755 readonly isSetProperty: boolean;1756 readonly asSetProperty: {1757 readonly rmrkCollectionId: Compact<u32>;1758 readonly maybeNftId: Option<u32>;1759 readonly key: Bytes;1760 readonly value: Bytes;1761 } & Struct;1762 readonly isSetPriority: boolean;1763 readonly asSetPriority: {1764 readonly rmrkCollectionId: u32;1765 readonly rmrkNftId: u32;1766 readonly priorities: Vec<u32>;1767 } & Struct;1768 readonly isAddBasicResource: boolean;1769 readonly asAddBasicResource: {1770 readonly rmrkCollectionId: u32;1771 readonly nftId: u32;1772 readonly resource: RmrkTraitsResourceBasicResource;1773 } & Struct;1774 readonly isAddComposableResource: boolean;1775 readonly asAddComposableResource: {1776 readonly rmrkCollectionId: u32;1777 readonly nftId: u32;1778 readonly resourceId: Bytes;1779 readonly resource: RmrkTraitsResourceComposableResource;1780 } & Struct;1781 readonly isAddSlotResource: boolean;1782 readonly asAddSlotResource: {1783 readonly rmrkCollectionId: u32;1784 readonly nftId: u32;1785 readonly resource: RmrkTraitsResourceSlotResource;1786 } & Struct;1787 readonly isRemoveResource: boolean;1788 readonly asRemoveResource: {1789 readonly rmrkCollectionId: u32;1790 readonly nftId: u32;1791 readonly resourceId: u32;1792 } & Struct;1793 readonly type: 'CreateCollection' | 'DestroyCollection' | 'ChangeCollectionIssuer' | 'LockCollection' | 'MintNft' | 'BurnNft' | 'Send' | 'AcceptNft' | 'RejectNft' | 'AcceptResource' | 'AcceptResourceRemoval' | 'SetProperty' | 'SetPriority' | 'AddBasicResource' | 'AddComposableResource' | 'AddSlotResource' | 'RemoveResource';1794 }17951796 /** @name RmrkTraitsNftAccountIdOrCollectionNftTuple (213) */1797 export interface RmrkTraitsNftAccountIdOrCollectionNftTuple extends Enum {1798 readonly isAccountId: boolean;1799 readonly asAccountId: AccountId32;1800 readonly isCollectionAndNftTuple: boolean;1801 readonly asCollectionAndNftTuple: ITuple<[u32, u32]>;1802 readonly type: 'AccountId' | 'CollectionAndNftTuple';1803 }18041805 /** @name RmrkTraitsResourceBasicResource (217) */1806 export interface RmrkTraitsResourceBasicResource extends Struct {1807 readonly src: Option<Bytes>;1808 readonly metadata: Option<Bytes>;1809 readonly license: Option<Bytes>;1810 readonly thumb: Option<Bytes>;1811 }18121813 /** @name RmrkTraitsResourceComposableResource (220) */1814 export interface RmrkTraitsResourceComposableResource extends Struct {1815 readonly parts: Vec<u32>;1816 readonly base: u32;1817 readonly src: Option<Bytes>;1818 readonly metadata: Option<Bytes>;1819 readonly license: Option<Bytes>;1820 readonly thumb: Option<Bytes>;1821 }18221823 /** @name RmrkTraitsResourceSlotResource (222) */1824 export interface RmrkTraitsResourceSlotResource extends Struct {1825 readonly base: u32;1826 readonly src: Option<Bytes>;1827 readonly metadata: Option<Bytes>;1828 readonly slot: u32;1829 readonly license: Option<Bytes>;1830 readonly thumb: Option<Bytes>;1831 }18321833 /** @name PalletRmrkEquipCall (223) */1834 export interface PalletRmrkEquipCall extends Enum {1835 readonly isCreateBase: boolean;1836 readonly asCreateBase: {1837 readonly baseType: Bytes;1838 readonly symbol: Bytes;1839 readonly parts: Vec<RmrkTraitsPartPartType>;1840 } & Struct;1841 readonly isThemeAdd: boolean;1842 readonly asThemeAdd: {1843 readonly baseId: u32;1844 readonly theme: RmrkTraitsTheme;1845 } & Struct;1846 readonly type: 'CreateBase' | 'ThemeAdd';1847 }18481849 /** @name RmrkTraitsPartPartType (225) */1850 export interface RmrkTraitsPartPartType extends Enum {1851 readonly isFixedPart: boolean;1852 readonly asFixedPart: RmrkTraitsPartFixedPart;1853 readonly isSlotPart: boolean;1854 readonly asSlotPart: RmrkTraitsPartSlotPart;1855 readonly type: 'FixedPart' | 'SlotPart';1856 }18571858 /** @name RmrkTraitsPartFixedPart (227) */1859 export interface RmrkTraitsPartFixedPart extends Struct {1860 readonly id: u32;1861 readonly z: u32;1862 readonly src: Bytes;1863 }18641865 /** @name RmrkTraitsPartSlotPart (228) */1866 export interface RmrkTraitsPartSlotPart extends Struct {1867 readonly id: u32;1868 readonly equippable: RmrkTraitsPartEquippableList;1869 readonly src: Bytes;1870 readonly z: u32;1871 }18721873 /** @name RmrkTraitsPartEquippableList (229) */1874 export interface RmrkTraitsPartEquippableList extends Enum {1875 readonly isAll: boolean;1876 readonly isEmpty: boolean;1877 readonly isCustom: boolean;1878 readonly asCustom: Vec<u32>;1879 readonly type: 'All' | 'Empty' | 'Custom';1880 }18811882 /** @name RmrkTraitsTheme (231) */1883 export interface RmrkTraitsTheme extends Struct {1884 readonly name: Bytes;1885 readonly properties: Vec<RmrkTraitsThemeThemeProperty>;1886 readonly inherit: bool;1887 }18881889 /** @name RmrkTraitsThemeThemeProperty (233) */1890 export interface RmrkTraitsThemeThemeProperty extends Struct {1891 readonly key: Bytes;1892 readonly value: Bytes;1893 }165118941652 /** @name PalletEvmCall (206) */1895 /** @name PalletEvmCall (234) */1653 export interface PalletEvmCall extends Enum {1896 export interface PalletEvmCall extends Enum {1654 readonly isWithdraw: boolean;1897 readonly isWithdraw: boolean;1655 readonly asWithdraw: {1898 readonly asWithdraw: {1694 readonly type: 'Withdraw' | 'Call' | 'Create' | 'Create2';1937 readonly type: 'Withdraw' | 'Call' | 'Create' | 'Create2';1695 }1938 }169619391697 /** @name PalletEthereumCall (212) */1940 /** @name PalletEthereumCall (240) */1698 export interface PalletEthereumCall extends Enum {1941 export interface PalletEthereumCall extends Enum {1699 readonly isTransact: boolean;1942 readonly isTransact: boolean;1700 readonly asTransact: {1943 readonly asTransact: {1703 readonly type: 'Transact';1946 readonly type: 'Transact';1704 }1947 }170519481706 /** @name EthereumTransactionTransactionV2 (213) */1949 /** @name EthereumTransactionTransactionV2 (241) */1707 export interface EthereumTransactionTransactionV2 extends Enum {1950 export interface EthereumTransactionTransactionV2 extends Enum {1708 readonly isLegacy: boolean;1951 readonly isLegacy: boolean;1709 readonly asLegacy: EthereumTransactionLegacyTransaction;1952 readonly asLegacy: EthereumTransactionLegacyTransaction;1714 readonly type: 'Legacy' | 'Eip2930' | 'Eip1559';1957 readonly type: 'Legacy' | 'Eip2930' | 'Eip1559';1715 }1958 }171619591717 /** @name EthereumTransactionLegacyTransaction (214) */1960 /** @name EthereumTransactionLegacyTransaction (242) */1718 export interface EthereumTransactionLegacyTransaction extends Struct {1961 export interface EthereumTransactionLegacyTransaction extends Struct {1719 readonly nonce: U256;1962 readonly nonce: U256;1720 readonly gasPrice: U256;1963 readonly gasPrice: U256;1725 readonly signature: EthereumTransactionTransactionSignature;1968 readonly signature: EthereumTransactionTransactionSignature;1726 }1969 }172719701728 /** @name EthereumTransactionTransactionAction (215) */1971 /** @name EthereumTransactionTransactionAction (243) */1729 export interface EthereumTransactionTransactionAction extends Enum {1972 export interface EthereumTransactionTransactionAction extends Enum {1730 readonly isCall: boolean;1973 readonly isCall: boolean;1731 readonly asCall: H160;1974 readonly asCall: H160;1732 readonly isCreate: boolean;1975 readonly isCreate: boolean;1733 readonly type: 'Call' | 'Create';1976 readonly type: 'Call' | 'Create';1734 }1977 }173519781736 /** @name EthereumTransactionTransactionSignature (216) */1979 /** @name EthereumTransactionTransactionSignature (244) */1737 export interface EthereumTransactionTransactionSignature extends Struct {1980 export interface EthereumTransactionTransactionSignature extends Struct {1738 readonly v: u64;1981 readonly v: u64;1739 readonly r: H256;1982 readonly r: H256;1740 readonly s: H256;1983 readonly s: H256;1741 }1984 }174219851743 /** @name EthereumTransactionEip2930Transaction (218) */1986 /** @name EthereumTransactionEip2930Transaction (246) */1744 export interface EthereumTransactionEip2930Transaction extends Struct {1987 export interface EthereumTransactionEip2930Transaction extends Struct {1745 readonly chainId: u64;1988 readonly chainId: u64;1746 readonly nonce: U256;1989 readonly nonce: U256;1755 readonly s: H256;1998 readonly s: H256;1756 }1999 }175720001758 /** @name EthereumTransactionAccessListItem (220) */2001 /** @name EthereumTransactionAccessListItem (248) */1759 export interface EthereumTransactionAccessListItem extends Struct {2002 export interface EthereumTransactionAccessListItem extends Struct {1760 readonly address: H160;2003 readonly address: H160;1761 readonly storageKeys: Vec<H256>;2004 readonly storageKeys: Vec<H256>;1762 }2005 }176320061764 /** @name EthereumTransactionEip1559Transaction (221) */2007 /** @name EthereumTransactionEip1559Transaction (249) */1765 export interface EthereumTransactionEip1559Transaction extends Struct {2008 export interface EthereumTransactionEip1559Transaction extends Struct {1766 readonly chainId: u64;2009 readonly chainId: u64;1767 readonly nonce: U256;2010 readonly nonce: U256;1777 readonly s: H256;2020 readonly s: H256;1778 }2021 }177920221780 /** @name PalletEvmMigrationCall (222) */2023 /** @name PalletEvmMigrationCall (250) */1781 export interface PalletEvmMigrationCall extends Enum {2024 export interface PalletEvmMigrationCall extends Enum {1782 readonly isBegin: boolean;2025 readonly isBegin: boolean;1783 readonly asBegin: {2026 readonly asBegin: {1796 readonly type: 'Begin' | 'SetData' | 'Finish';2039 readonly type: 'Begin' | 'SetData' | 'Finish';1797 }2040 }179820411799 /** @name PalletSudoEvent (225) */2042 /** @name PalletSudoEvent (253) */1800 export interface PalletSudoEvent extends Enum {2043 export interface PalletSudoEvent extends Enum {1801 readonly isSudid: boolean;2044 readonly isSudid: boolean;1802 readonly asSudid: {2045 readonly asSudid: {1813 readonly type: 'Sudid' | 'KeyChanged' | 'SudoAsDone';2056 readonly type: 'Sudid' | 'KeyChanged' | 'SudoAsDone';1814 }2057 }181520581816 /** @name SpRuntimeDispatchError (227) */2059 /** @name SpRuntimeDispatchError (255) */1817 export interface SpRuntimeDispatchError extends Enum {2060 export interface SpRuntimeDispatchError extends Enum {1818 readonly isOther: boolean;2061 readonly isOther: boolean;1819 readonly isCannotLookup: boolean;2062 readonly isCannotLookup: boolean;1832 readonly type: 'Other' | 'CannotLookup' | 'BadOrigin' | 'Module' | 'ConsumerRemaining' | 'NoProviders' | 'TooManyConsumers' | 'Token' | 'Arithmetic' | 'Transactional';2075 readonly type: 'Other' | 'CannotLookup' | 'BadOrigin' | 'Module' | 'ConsumerRemaining' | 'NoProviders' | 'TooManyConsumers' | 'Token' | 'Arithmetic' | 'Transactional';1833 }2076 }183420771835 /** @name SpRuntimeModuleError (228) */2078 /** @name SpRuntimeModuleError (256) */1836 export interface SpRuntimeModuleError extends Struct {2079 export interface SpRuntimeModuleError extends Struct {1837 readonly index: u8;2080 readonly index: u8;1838 readonly error: U8aFixed;2081 readonly error: U8aFixed;1839 }2082 }184020831841 /** @name SpRuntimeTokenError (229) */2084 /** @name SpRuntimeTokenError (257) */1842 export interface SpRuntimeTokenError extends Enum {2085 export interface SpRuntimeTokenError extends Enum {1843 readonly isNoFunds: boolean;2086 readonly isNoFunds: boolean;1844 readonly isWouldDie: boolean;2087 readonly isWouldDie: boolean;1850 readonly type: 'NoFunds' | 'WouldDie' | 'BelowMinimum' | 'CannotCreate' | 'UnknownAsset' | 'Frozen' | 'Unsupported';2093 readonly type: 'NoFunds' | 'WouldDie' | 'BelowMinimum' | 'CannotCreate' | 'UnknownAsset' | 'Frozen' | 'Unsupported';1851 }2094 }185220951853 /** @name SpRuntimeArithmeticError (230) */2096 /** @name SpRuntimeArithmeticError (258) */1854 export interface SpRuntimeArithmeticError extends Enum {2097 export interface SpRuntimeArithmeticError extends Enum {1855 readonly isUnderflow: boolean;2098 readonly isUnderflow: boolean;1856 readonly isOverflow: boolean;2099 readonly isOverflow: boolean;1857 readonly isDivisionByZero: boolean;2100 readonly isDivisionByZero: boolean;1858 readonly type: 'Underflow' | 'Overflow' | 'DivisionByZero';2101 readonly type: 'Underflow' | 'Overflow' | 'DivisionByZero';1859 }2102 }186021031861 /** @name SpRuntimeTransactionalError (231) */2104 /** @name SpRuntimeTransactionalError (259) */1862 export interface SpRuntimeTransactionalError extends Enum {2105 export interface SpRuntimeTransactionalError extends Enum {1863 readonly isLimitReached: boolean;2106 readonly isLimitReached: boolean;1864 readonly isNoLayer: boolean;2107 readonly isNoLayer: boolean;1865 readonly type: 'LimitReached' | 'NoLayer';2108 readonly type: 'LimitReached' | 'NoLayer';1866 }2109 }186721101868 /** @name PalletSudoError (232) */2111 /** @name PalletSudoError (260) */1869 export interface PalletSudoError extends Enum {2112 export interface PalletSudoError extends Enum {1870 readonly isRequireSudo: boolean;2113 readonly isRequireSudo: boolean;1871 readonly type: 'RequireSudo';2114 readonly type: 'RequireSudo';1872 }2115 }187321161874 /** @name FrameSystemAccountInfo (233) */2117 /** @name FrameSystemAccountInfo (261) */1875 export interface FrameSystemAccountInfo extends Struct {2118 export interface FrameSystemAccountInfo extends Struct {1876 readonly nonce: u32;2119 readonly nonce: u32;1877 readonly consumers: u32;2120 readonly consumers: u32;1880 readonly data: PalletBalancesAccountData;2123 readonly data: PalletBalancesAccountData;1881 }2124 }188221251883 /** @name FrameSupportWeightsPerDispatchClassU64 (234) */2126 /** @name FrameSupportWeightsPerDispatchClassU64 (262) */1884 export interface FrameSupportWeightsPerDispatchClassU64 extends Struct {2127 export interface FrameSupportWeightsPerDispatchClassU64 extends Struct {1885 readonly normal: u64;2128 readonly normal: u64;1886 readonly operational: u64;2129 readonly operational: u64;1887 readonly mandatory: u64;2130 readonly mandatory: u64;1888 }2131 }188921321890 /** @name SpRuntimeDigest (235) */2133 /** @name SpRuntimeDigest (263) */1891 export interface SpRuntimeDigest extends Struct {2134 export interface SpRuntimeDigest extends Struct {1892 readonly logs: Vec<SpRuntimeDigestDigestItem>;2135 readonly logs: Vec<SpRuntimeDigestDigestItem>;1893 }2136 }189421371895 /** @name SpRuntimeDigestDigestItem (237) */2138 /** @name SpRuntimeDigestDigestItem (265) */1896 export interface SpRuntimeDigestDigestItem extends Enum {2139 export interface SpRuntimeDigestDigestItem extends Enum {1897 readonly isOther: boolean;2140 readonly isOther: boolean;1898 readonly asOther: Bytes;2141 readonly asOther: Bytes;1906 readonly type: 'Other' | 'Consensus' | 'Seal' | 'PreRuntime' | 'RuntimeEnvironmentUpdated';2149 readonly type: 'Other' | 'Consensus' | 'Seal' | 'PreRuntime' | 'RuntimeEnvironmentUpdated';1907 }2150 }190821511909 /** @name FrameSystemEventRecord (239) */2152 /** @name FrameSystemEventRecord (267) */1910 export interface FrameSystemEventRecord extends Struct {2153 export interface FrameSystemEventRecord extends Struct {1911 readonly phase: FrameSystemPhase;2154 readonly phase: FrameSystemPhase;1912 readonly event: Event;2155 readonly event: Event;1913 readonly topics: Vec<H256>;2156 readonly topics: Vec<H256>;1914 }2157 }191521581916 /** @name FrameSystemEvent (241) */2159 /** @name FrameSystemEvent (269) */1917 export interface FrameSystemEvent extends Enum {2160 export interface FrameSystemEvent extends Enum {1918 readonly isExtrinsicSuccess: boolean;2161 readonly isExtrinsicSuccess: boolean;1919 readonly asExtrinsicSuccess: {2162 readonly asExtrinsicSuccess: {1941 readonly type: 'ExtrinsicSuccess' | 'ExtrinsicFailed' | 'CodeUpdated' | 'NewAccount' | 'KilledAccount' | 'Remarked';2184 readonly type: 'ExtrinsicSuccess' | 'ExtrinsicFailed' | 'CodeUpdated' | 'NewAccount' | 'KilledAccount' | 'Remarked';1942 }2185 }194321861944 /** @name FrameSupportWeightsDispatchInfo (242) */2187 /** @name FrameSupportWeightsDispatchInfo (270) */1945 export interface FrameSupportWeightsDispatchInfo extends Struct {2188 export interface FrameSupportWeightsDispatchInfo extends Struct {1946 readonly weight: u64;2189 readonly weight: u64;1947 readonly class: FrameSupportWeightsDispatchClass;2190 readonly class: FrameSupportWeightsDispatchClass;1948 readonly paysFee: FrameSupportWeightsPays;2191 readonly paysFee: FrameSupportWeightsPays;1949 }2192 }195021931951 /** @name FrameSupportWeightsDispatchClass (243) */2194 /** @name FrameSupportWeightsDispatchClass (271) */1952 export interface FrameSupportWeightsDispatchClass extends Enum {2195 export interface FrameSupportWeightsDispatchClass extends Enum {1953 readonly isNormal: boolean;2196 readonly isNormal: boolean;1954 readonly isOperational: boolean;2197 readonly isOperational: boolean;1955 readonly isMandatory: boolean;2198 readonly isMandatory: boolean;1956 readonly type: 'Normal' | 'Operational' | 'Mandatory';2199 readonly type: 'Normal' | 'Operational' | 'Mandatory';1957 }2200 }195822011959 /** @name FrameSupportWeightsPays (244) */2202 /** @name FrameSupportWeightsPays (272) */1960 export interface FrameSupportWeightsPays extends Enum {2203 export interface FrameSupportWeightsPays extends Enum {1961 readonly isYes: boolean;2204 readonly isYes: boolean;1962 readonly isNo: boolean;2205 readonly isNo: boolean;1963 readonly type: 'Yes' | 'No';2206 readonly type: 'Yes' | 'No';1964 }2207 }196522081966 /** @name OrmlVestingModuleEvent (245) */2209 /** @name OrmlVestingModuleEvent (273) */1967 export interface OrmlVestingModuleEvent extends Enum {2210 export interface OrmlVestingModuleEvent extends Enum {1968 readonly isVestingScheduleAdded: boolean;2211 readonly isVestingScheduleAdded: boolean;1969 readonly asVestingScheduleAdded: {2212 readonly asVestingScheduleAdded: {1983 readonly type: 'VestingScheduleAdded' | 'Claimed' | 'VestingSchedulesUpdated';2226 readonly type: 'VestingScheduleAdded' | 'Claimed' | 'VestingSchedulesUpdated';1984 }2227 }198522281986 /** @name CumulusPalletXcmpQueueEvent (246) */2229 /** @name CumulusPalletXcmpQueueEvent (274) */1987 export interface CumulusPalletXcmpQueueEvent extends Enum {2230 export interface CumulusPalletXcmpQueueEvent extends Enum {1988 readonly isSuccess: boolean;2231 readonly isSuccess: boolean;1989 readonly asSuccess: Option<H256>;2232 readonly asSuccess: Option<H256>;2004 readonly type: 'Success' | 'Fail' | 'BadVersion' | 'BadFormat' | 'UpwardMessageSent' | 'XcmpMessageSent' | 'OverweightEnqueued' | 'OverweightServiced';2247 readonly type: 'Success' | 'Fail' | 'BadVersion' | 'BadFormat' | 'UpwardMessageSent' | 'XcmpMessageSent' | 'OverweightEnqueued' | 'OverweightServiced';2005 }2248 }200622492007 /** @name PalletXcmEvent (247) */2250 /** @name PalletXcmEvent (275) */2008 export interface PalletXcmEvent extends Enum {2251 export interface PalletXcmEvent extends Enum {2009 readonly isAttempted: boolean;2252 readonly isAttempted: boolean;2010 readonly asAttempted: XcmV2TraitsOutcome;2253 readonly asAttempted: XcmV2TraitsOutcome;2041 readonly type: 'Attempted' | 'Sent' | 'UnexpectedResponse' | 'ResponseReady' | 'Notified' | 'NotifyOverweight' | 'NotifyDispatchError' | 'NotifyDecodeFailed' | 'InvalidResponder' | 'InvalidResponderVersion' | 'ResponseTaken' | 'AssetsTrapped' | 'VersionChangeNotified' | 'SupportedVersionChanged' | 'NotifyTargetSendFail' | 'NotifyTargetMigrationFail';2284 readonly type: 'Attempted' | 'Sent' | 'UnexpectedResponse' | 'ResponseReady' | 'Notified' | 'NotifyOverweight' | 'NotifyDispatchError' | 'NotifyDecodeFailed' | 'InvalidResponder' | 'InvalidResponderVersion' | 'ResponseTaken' | 'AssetsTrapped' | 'VersionChangeNotified' | 'SupportedVersionChanged' | 'NotifyTargetSendFail' | 'NotifyTargetMigrationFail';2042 }2285 }204322862044 /** @name XcmV2TraitsOutcome (248) */2287 /** @name XcmV2TraitsOutcome (276) */2045 export interface XcmV2TraitsOutcome extends Enum {2288 export interface XcmV2TraitsOutcome extends Enum {2046 readonly isComplete: boolean;2289 readonly isComplete: boolean;2047 readonly asComplete: u64;2290 readonly asComplete: u64;2052 readonly type: 'Complete' | 'Incomplete' | 'Error';2295 readonly type: 'Complete' | 'Incomplete' | 'Error';2053 }2296 }205422972055 /** @name CumulusPalletXcmEvent (250) */2298 /** @name CumulusPalletXcmEvent (278) */2056 export interface CumulusPalletXcmEvent extends Enum {2299 export interface CumulusPalletXcmEvent extends Enum {2057 readonly isInvalidFormat: boolean;2300 readonly isInvalidFormat: boolean;2058 readonly asInvalidFormat: U8aFixed;2301 readonly asInvalidFormat: U8aFixed;2063 readonly type: 'InvalidFormat' | 'UnsupportedVersion' | 'ExecutedDownward';2306 readonly type: 'InvalidFormat' | 'UnsupportedVersion' | 'ExecutedDownward';2064 }2307 }206523082066 /** @name CumulusPalletDmpQueueEvent (251) */2309 /** @name CumulusPalletDmpQueueEvent (279) */2067 export interface CumulusPalletDmpQueueEvent extends Enum {2310 export interface CumulusPalletDmpQueueEvent extends Enum {2068 readonly isInvalidFormat: boolean;2311 readonly isInvalidFormat: boolean;2069 readonly asInvalidFormat: U8aFixed;2312 readonly asInvalidFormat: U8aFixed;2080 readonly type: 'InvalidFormat' | 'UnsupportedVersion' | 'ExecutedDownward' | 'WeightExhausted' | 'OverweightEnqueued' | 'OverweightServiced';2323 readonly type: 'InvalidFormat' | 'UnsupportedVersion' | 'ExecutedDownward' | 'WeightExhausted' | 'OverweightEnqueued' | 'OverweightServiced';2081 }2324 }208223252083 /** @name PalletUniqueRawEvent (252) */2326 /** @name PalletUniqueRawEvent (280) */2084 export interface PalletUniqueRawEvent extends Enum {2327 export interface PalletUniqueRawEvent extends Enum {2085 readonly isCollectionSponsorRemoved: boolean;2328 readonly isCollectionSponsorRemoved: boolean;2086 readonly asCollectionSponsorRemoved: u32;2329 readonly asCollectionSponsorRemoved: u32;2105 readonly type: 'CollectionSponsorRemoved' | 'CollectionAdminAdded' | 'CollectionOwnedChanged' | 'CollectionSponsorSet' | 'SponsorshipConfirmed' | 'CollectionAdminRemoved' | 'AllowListAddressRemoved' | 'AllowListAddressAdded' | 'CollectionLimitSet' | 'CollectionPermissionSet';2348 readonly type: 'CollectionSponsorRemoved' | 'CollectionAdminAdded' | 'CollectionOwnedChanged' | 'CollectionSponsorSet' | 'SponsorshipConfirmed' | 'CollectionAdminRemoved' | 'AllowListAddressRemoved' | 'AllowListAddressAdded' | 'CollectionLimitSet' | 'CollectionPermissionSet';2106 }2349 }23502351 /** @name PalletUnqSchedulerEvent (281) */2352 export interface PalletUnqSchedulerEvent extends Enum {2353 readonly isScheduled: boolean;2354 readonly asScheduled: {2355 readonly when: u32;2356 readonly index: u32;2357 } & Struct;2358 readonly isCanceled: boolean;2359 readonly asCanceled: {2360 readonly when: u32;2361 readonly index: u32;2362 } & Struct;2363 readonly isDispatched: boolean;2364 readonly asDispatched: {2365 readonly task: ITuple<[u32, u32]>;2366 readonly id: Option<U8aFixed>;2367 readonly result: Result<Null, SpRuntimeDispatchError>;2368 } & Struct;2369 readonly isCallLookupFailed: boolean;2370 readonly asCallLookupFailed: {2371 readonly task: ITuple<[u32, u32]>;2372 readonly id: Option<U8aFixed>;2373 readonly error: FrameSupportScheduleLookupError;2374 } & Struct;2375 readonly type: 'Scheduled' | 'Canceled' | 'Dispatched' | 'CallLookupFailed';2376 }23772378 /** @name FrameSupportScheduleLookupError (283) */2379 export interface FrameSupportScheduleLookupError extends Enum {2380 readonly isUnknown: boolean;2381 readonly isBadFormat: boolean;2382 readonly type: 'Unknown' | 'BadFormat';2383 }210723842108 /** @name PalletCommonEvent (253) */2385 /** @name PalletCommonEvent (284) */2109 export interface PalletCommonEvent extends Enum {2386 export interface PalletCommonEvent extends Enum {2110 readonly isCollectionCreated: boolean;2387 readonly isCollectionCreated: boolean;2111 readonly asCollectionCreated: ITuple<[u32, u8, AccountId32]>;2388 readonly asCollectionCreated: ITuple<[u32, u8, AccountId32]>;2132 readonly type: 'CollectionCreated' | 'CollectionDestroyed' | 'ItemCreated' | 'ItemDestroyed' | 'Transfer' | 'Approved' | 'CollectionPropertySet' | 'CollectionPropertyDeleted' | 'TokenPropertySet' | 'TokenPropertyDeleted' | 'PropertyPermissionSet';2409 readonly type: 'CollectionCreated' | 'CollectionDestroyed' | 'ItemCreated' | 'ItemDestroyed' | 'Transfer' | 'Approved' | 'CollectionPropertySet' | 'CollectionPropertyDeleted' | 'TokenPropertySet' | 'TokenPropertyDeleted' | 'PropertyPermissionSet';2133 }2410 }213424112135 /** @name PalletStructureEvent (254) */2412 /** @name PalletStructureEvent (285) */2136 export interface PalletStructureEvent extends Enum {2413 export interface PalletStructureEvent extends Enum {2137 readonly isExecuted: boolean;2414 readonly isExecuted: boolean;2138 readonly asExecuted: Result<Null, SpRuntimeDispatchError>;2415 readonly asExecuted: Result<Null, SpRuntimeDispatchError>;2139 readonly type: 'Executed';2416 readonly type: 'Executed';2140 }2417 }24182419 /** @name PalletRmrkCoreEvent (286) */2420 export interface PalletRmrkCoreEvent extends Enum {2421 readonly isCollectionCreated: boolean;2422 readonly asCollectionCreated: {2423 readonly issuer: AccountId32;2424 readonly collectionId: u32;2425 } & Struct;2426 readonly isCollectionDestroyed: boolean;2427 readonly asCollectionDestroyed: {2428 readonly issuer: AccountId32;2429 readonly collectionId: u32;2430 } & Struct;2431 readonly isIssuerChanged: boolean;2432 readonly asIssuerChanged: {2433 readonly oldIssuer: AccountId32;2434 readonly newIssuer: AccountId32;2435 readonly collectionId: u32;2436 } & Struct;2437 readonly isCollectionLocked: boolean;2438 readonly asCollectionLocked: {2439 readonly issuer: AccountId32;2440 readonly collectionId: u32;2441 } & Struct;2442 readonly isNftMinted: boolean;2443 readonly asNftMinted: {2444 readonly owner: AccountId32;2445 readonly collectionId: u32;2446 readonly nftId: u32;2447 } & Struct;2448 readonly isNftBurned: boolean;2449 readonly asNftBurned: {2450 readonly owner: AccountId32;2451 readonly nftId: u32;2452 } & Struct;2453 readonly isNftSent: boolean;2454 readonly asNftSent: {2455 readonly sender: AccountId32;2456 readonly recipient: RmrkTraitsNftAccountIdOrCollectionNftTuple;2457 readonly collectionId: u32;2458 readonly nftId: u32;2459 readonly approvalRequired: bool;2460 } & Struct;2461 readonly isNftAccepted: boolean;2462 readonly asNftAccepted: {2463 readonly sender: AccountId32;2464 readonly recipient: RmrkTraitsNftAccountIdOrCollectionNftTuple;2465 readonly collectionId: u32;2466 readonly nftId: u32;2467 } & Struct;2468 readonly isNftRejected: boolean;2469 readonly asNftRejected: {2470 readonly sender: AccountId32;2471 readonly collectionId: u32;2472 readonly nftId: u32;2473 } & Struct;2474 readonly isPropertySet: boolean;2475 readonly asPropertySet: {2476 readonly collectionId: u32;2477 readonly maybeNftId: Option<u32>;2478 readonly key: Bytes;2479 readonly value: Bytes;2480 } & Struct;2481 readonly isResourceAdded: boolean;2482 readonly asResourceAdded: {2483 readonly nftId: u32;2484 readonly resourceId: u32;2485 } & Struct;2486 readonly isResourceRemoval: boolean;2487 readonly asResourceRemoval: {2488 readonly nftId: u32;2489 readonly resourceId: u32;2490 } & Struct;2491 readonly isResourceAccepted: boolean;2492 readonly asResourceAccepted: {2493 readonly nftId: u32;2494 readonly resourceId: u32;2495 } & Struct;2496 readonly isResourceRemovalAccepted: boolean;2497 readonly asResourceRemovalAccepted: {2498 readonly nftId: u32;2499 readonly resourceId: u32;2500 } & Struct;2501 readonly isPrioritySet: boolean;2502 readonly asPrioritySet: {2503 readonly collectionId: u32;2504 readonly nftId: u32;2505 } & Struct;2506 readonly type: 'CollectionCreated' | 'CollectionDestroyed' | 'IssuerChanged' | 'CollectionLocked' | 'NftMinted' | 'NftBurned' | 'NftSent' | 'NftAccepted' | 'NftRejected' | 'PropertySet' | 'ResourceAdded' | 'ResourceRemoval' | 'ResourceAccepted' | 'ResourceRemovalAccepted' | 'PrioritySet';2507 }25082509 /** @name PalletRmrkEquipEvent (287) */2510 export interface PalletRmrkEquipEvent extends Enum {2511 readonly isBaseCreated: boolean;2512 readonly asBaseCreated: {2513 readonly issuer: AccountId32;2514 readonly baseId: u32;2515 } & Struct;2516 readonly type: 'BaseCreated';2517 }214125182142 /** @name PalletEvmEvent (255) */2519 /** @name PalletEvmEvent (288) */2143 export interface PalletEvmEvent extends Enum {2520 export interface PalletEvmEvent extends Enum {2144 readonly isLog: boolean;2521 readonly isLog: boolean;2145 readonly asLog: EthereumLog;2522 readonly asLog: EthereumLog;2158 readonly type: 'Log' | 'Created' | 'CreatedFailed' | 'Executed' | 'ExecutedFailed' | 'BalanceDeposit' | 'BalanceWithdraw';2535 readonly type: 'Log' | 'Created' | 'CreatedFailed' | 'Executed' | 'ExecutedFailed' | 'BalanceDeposit' | 'BalanceWithdraw';2159 }2536 }216025372161 /** @name EthereumLog (256) */2538 /** @name EthereumLog (289) */2162 export interface EthereumLog extends Struct {2539 export interface EthereumLog extends Struct {2163 readonly address: H160;2540 readonly address: H160;2164 readonly topics: Vec<H256>;2541 readonly topics: Vec<H256>;2165 readonly data: Bytes;2542 readonly data: Bytes;2166 }2543 }216725442168 /** @name PalletEthereumEvent (257) */2545 /** @name PalletEthereumEvent (290) */2169 export interface PalletEthereumEvent extends Enum {2546 export interface PalletEthereumEvent extends Enum {2170 readonly isExecuted: boolean;2547 readonly isExecuted: boolean;2171 readonly asExecuted: ITuple<[H160, H160, H256, EvmCoreErrorExitReason]>;2548 readonly asExecuted: ITuple<[H160, H160, H256, EvmCoreErrorExitReason]>;2172 readonly type: 'Executed';2549 readonly type: 'Executed';2173 }2550 }217425512175 /** @name EvmCoreErrorExitReason (258) */2552 /** @name EvmCoreErrorExitReason (291) */2176 export interface EvmCoreErrorExitReason extends Enum {2553 export interface EvmCoreErrorExitReason extends Enum {2177 readonly isSucceed: boolean;2554 readonly isSucceed: boolean;2178 readonly asSucceed: EvmCoreErrorExitSucceed;2555 readonly asSucceed: EvmCoreErrorExitSucceed;2185 readonly type: 'Succeed' | 'Error' | 'Revert' | 'Fatal';2562 readonly type: 'Succeed' | 'Error' | 'Revert' | 'Fatal';2186 }2563 }218725642188 /** @name EvmCoreErrorExitSucceed (259) */2565 /** @name EvmCoreErrorExitSucceed (292) */2189 export interface EvmCoreErrorExitSucceed extends Enum {2566 export interface EvmCoreErrorExitSucceed extends Enum {2190 readonly isStopped: boolean;2567 readonly isStopped: boolean;2191 readonly isReturned: boolean;2568 readonly isReturned: boolean;2192 readonly isSuicided: boolean;2569 readonly isSuicided: boolean;2193 readonly type: 'Stopped' | 'Returned' | 'Suicided';2570 readonly type: 'Stopped' | 'Returned' | 'Suicided';2194 }2571 }219525722196 /** @name EvmCoreErrorExitError (260) */2573 /** @name EvmCoreErrorExitError (293) */2197 export interface EvmCoreErrorExitError extends Enum {2574 export interface EvmCoreErrorExitError extends Enum {2198 readonly isStackUnderflow: boolean;2575 readonly isStackUnderflow: boolean;2199 readonly isStackOverflow: boolean;2576 readonly isStackOverflow: boolean;2214 readonly type: 'StackUnderflow' | 'StackOverflow' | 'InvalidJump' | 'InvalidRange' | 'DesignatedInvalid' | 'CallTooDeep' | 'CreateCollision' | 'CreateContractLimit' | 'OutOfOffset' | 'OutOfGas' | 'OutOfFund' | 'PcUnderflow' | 'CreateEmpty' | 'Other' | 'InvalidCode';2591 readonly type: 'StackUnderflow' | 'StackOverflow' | 'InvalidJump' | 'InvalidRange' | 'DesignatedInvalid' | 'CallTooDeep' | 'CreateCollision' | 'CreateContractLimit' | 'OutOfOffset' | 'OutOfGas' | 'OutOfFund' | 'PcUnderflow' | 'CreateEmpty' | 'Other' | 'InvalidCode';2215 }2592 }221625932217 /** @name EvmCoreErrorExitRevert (263) */2594 /** @name EvmCoreErrorExitRevert (296) */2218 export interface EvmCoreErrorExitRevert extends Enum {2595 export interface EvmCoreErrorExitRevert extends Enum {2219 readonly isReverted: boolean;2596 readonly isReverted: boolean;2220 readonly type: 'Reverted';2597 readonly type: 'Reverted';2221 }2598 }222225992223 /** @name EvmCoreErrorExitFatal (264) */2600 /** @name EvmCoreErrorExitFatal (297) */2224 export interface EvmCoreErrorExitFatal extends Enum {2601 export interface EvmCoreErrorExitFatal extends Enum {2225 readonly isNotSupported: boolean;2602 readonly isNotSupported: boolean;2226 readonly isUnhandledInterrupt: boolean;2603 readonly isUnhandledInterrupt: boolean;2231 readonly type: 'NotSupported' | 'UnhandledInterrupt' | 'CallErrorAsFatal' | 'Other';2608 readonly type: 'NotSupported' | 'UnhandledInterrupt' | 'CallErrorAsFatal' | 'Other';2232 }2609 }223326102234 /** @name FrameSystemPhase (265) */2611 /** @name FrameSystemPhase (298) */2235 export interface FrameSystemPhase extends Enum {2612 export interface FrameSystemPhase extends Enum {2236 readonly isApplyExtrinsic: boolean;2613 readonly isApplyExtrinsic: boolean;2237 readonly asApplyExtrinsic: u32;2614 readonly asApplyExtrinsic: u32;2240 readonly type: 'ApplyExtrinsic' | 'Finalization' | 'Initialization';2617 readonly type: 'ApplyExtrinsic' | 'Finalization' | 'Initialization';2241 }2618 }224226192243 /** @name FrameSystemLastRuntimeUpgradeInfo (267) */2620 /** @name FrameSystemLastRuntimeUpgradeInfo (300) */2244 export interface FrameSystemLastRuntimeUpgradeInfo extends Struct {2621 export interface FrameSystemLastRuntimeUpgradeInfo extends Struct {2245 readonly specVersion: Compact<u32>;2622 readonly specVersion: Compact<u32>;2246 readonly specName: Text;2623 readonly specName: Text;2247 }2624 }224826252249 /** @name FrameSystemLimitsBlockWeights (268) */2626 /** @name FrameSystemLimitsBlockWeights (301) */2250 export interface FrameSystemLimitsBlockWeights extends Struct {2627 export interface FrameSystemLimitsBlockWeights extends Struct {2251 readonly baseBlock: u64;2628 readonly baseBlock: u64;2252 readonly maxBlock: u64;2629 readonly maxBlock: u64;2253 readonly perClass: FrameSupportWeightsPerDispatchClassWeightsPerClass;2630 readonly perClass: FrameSupportWeightsPerDispatchClassWeightsPerClass;2254 }2631 }225526322256 /** @name FrameSupportWeightsPerDispatchClassWeightsPerClass (269) */2633 /** @name FrameSupportWeightsPerDispatchClassWeightsPerClass (302) */2257 export interface FrameSupportWeightsPerDispatchClassWeightsPerClass extends Struct {2634 export interface FrameSupportWeightsPerDispatchClassWeightsPerClass extends Struct {2258 readonly normal: FrameSystemLimitsWeightsPerClass;2635 readonly normal: FrameSystemLimitsWeightsPerClass;2259 readonly operational: FrameSystemLimitsWeightsPerClass;2636 readonly operational: FrameSystemLimitsWeightsPerClass;2260 readonly mandatory: FrameSystemLimitsWeightsPerClass;2637 readonly mandatory: FrameSystemLimitsWeightsPerClass;2261 }2638 }226226392263 /** @name FrameSystemLimitsWeightsPerClass (270) */2640 /** @name FrameSystemLimitsWeightsPerClass (303) */2264 export interface FrameSystemLimitsWeightsPerClass extends Struct {2641 export interface FrameSystemLimitsWeightsPerClass extends Struct {2265 readonly baseExtrinsic: u64;2642 readonly baseExtrinsic: u64;2266 readonly maxExtrinsic: Option<u64>;2643 readonly maxExtrinsic: Option<u64>;2267 readonly maxTotal: Option<u64>;2644 readonly maxTotal: Option<u64>;2268 readonly reserved: Option<u64>;2645 readonly reserved: Option<u64>;2269 }2646 }227026472271 /** @name FrameSystemLimitsBlockLength (272) */2648 /** @name FrameSystemLimitsBlockLength (305) */2272 export interface FrameSystemLimitsBlockLength extends Struct {2649 export interface FrameSystemLimitsBlockLength extends Struct {2273 readonly max: FrameSupportWeightsPerDispatchClassU32;2650 readonly max: FrameSupportWeightsPerDispatchClassU32;2274 }2651 }227526522276 /** @name FrameSupportWeightsPerDispatchClassU32 (273) */2653 /** @name FrameSupportWeightsPerDispatchClassU32 (306) */2277 export interface FrameSupportWeightsPerDispatchClassU32 extends Struct {2654 export interface FrameSupportWeightsPerDispatchClassU32 extends Struct {2278 readonly normal: u32;2655 readonly normal: u32;2279 readonly operational: u32;2656 readonly operational: u32;2280 readonly mandatory: u32;2657 readonly mandatory: u32;2281 }2658 }228226592283 /** @name FrameSupportWeightsRuntimeDbWeight (274) */2660 /** @name FrameSupportWeightsRuntimeDbWeight (307) */2284 export interface FrameSupportWeightsRuntimeDbWeight extends Struct {2661 export interface FrameSupportWeightsRuntimeDbWeight extends Struct {2285 readonly read: u64;2662 readonly read: u64;2286 readonly write: u64;2663 readonly write: u64;2287 }2664 }228826652289 /** @name SpVersionRuntimeVersion (275) */2666 /** @name SpVersionRuntimeVersion (308) */2290 export interface SpVersionRuntimeVersion extends Struct {2667 export interface SpVersionRuntimeVersion extends Struct {2291 readonly specName: Text;2668 readonly specName: Text;2292 readonly implName: Text;2669 readonly implName: Text;2298 readonly stateVersion: u8;2675 readonly stateVersion: u8;2299 }2676 }230026772301 /** @name FrameSystemError (279) */2678 /** @name FrameSystemError (312) */2302 export interface FrameSystemError extends Enum {2679 export interface FrameSystemError extends Enum {2303 readonly isInvalidSpecName: boolean;2680 readonly isInvalidSpecName: boolean;2304 readonly isSpecVersionNeedsToIncrease: boolean;2681 readonly isSpecVersionNeedsToIncrease: boolean;2309 readonly type: 'InvalidSpecName' | 'SpecVersionNeedsToIncrease' | 'FailedToExtractRuntimeVersion' | 'NonDefaultComposite' | 'NonZeroRefCount' | 'CallFiltered';2686 readonly type: 'InvalidSpecName' | 'SpecVersionNeedsToIncrease' | 'FailedToExtractRuntimeVersion' | 'NonDefaultComposite' | 'NonZeroRefCount' | 'CallFiltered';2310 }2687 }231126882312 /** @name OrmlVestingModuleError (281) */2689 /** @name OrmlVestingModuleError (314) */2313 export interface OrmlVestingModuleError extends Enum {2690 export interface OrmlVestingModuleError extends Enum {2314 readonly isZeroVestingPeriod: boolean;2691 readonly isZeroVestingPeriod: boolean;2315 readonly isZeroVestingPeriodCount: boolean;2692 readonly isZeroVestingPeriodCount: boolean;2320 readonly type: 'ZeroVestingPeriod' | 'ZeroVestingPeriodCount' | 'InsufficientBalanceToLock' | 'TooManyVestingSchedules' | 'AmountLow' | 'MaxVestingSchedulesExceeded';2697 readonly type: 'ZeroVestingPeriod' | 'ZeroVestingPeriodCount' | 'InsufficientBalanceToLock' | 'TooManyVestingSchedules' | 'AmountLow' | 'MaxVestingSchedulesExceeded';2321 }2698 }232226992323 /** @name CumulusPalletXcmpQueueInboundChannelDetails (283) */2700 /** @name CumulusPalletXcmpQueueInboundChannelDetails (316) */2324 export interface CumulusPalletXcmpQueueInboundChannelDetails extends Struct {2701 export interface CumulusPalletXcmpQueueInboundChannelDetails extends Struct {2325 readonly sender: u32;2702 readonly sender: u32;2326 readonly state: CumulusPalletXcmpQueueInboundState;2703 readonly state: CumulusPalletXcmpQueueInboundState;2327 readonly messageMetadata: Vec<ITuple<[u32, PolkadotParachainPrimitivesXcmpMessageFormat]>>;2704 readonly messageMetadata: Vec<ITuple<[u32, PolkadotParachainPrimitivesXcmpMessageFormat]>>;2328 }2705 }232927062330 /** @name CumulusPalletXcmpQueueInboundState (284) */2707 /** @name CumulusPalletXcmpQueueInboundState (317) */2331 export interface CumulusPalletXcmpQueueInboundState extends Enum {2708 export interface CumulusPalletXcmpQueueInboundState extends Enum {2332 readonly isOk: boolean;2709 readonly isOk: boolean;2333 readonly isSuspended: boolean;2710 readonly isSuspended: boolean;2334 readonly type: 'Ok' | 'Suspended';2711 readonly type: 'Ok' | 'Suspended';2335 }2712 }233627132337 /** @name PolkadotParachainPrimitivesXcmpMessageFormat (287) */2714 /** @name PolkadotParachainPrimitivesXcmpMessageFormat (320) */2338 export interface PolkadotParachainPrimitivesXcmpMessageFormat extends Enum {2715 export interface PolkadotParachainPrimitivesXcmpMessageFormat extends Enum {2339 readonly isConcatenatedVersionedXcm: boolean;2716 readonly isConcatenatedVersionedXcm: boolean;2340 readonly isConcatenatedEncodedBlob: boolean;2717 readonly isConcatenatedEncodedBlob: boolean;2341 readonly isSignals: boolean;2718 readonly isSignals: boolean;2342 readonly type: 'ConcatenatedVersionedXcm' | 'ConcatenatedEncodedBlob' | 'Signals';2719 readonly type: 'ConcatenatedVersionedXcm' | 'ConcatenatedEncodedBlob' | 'Signals';2343 }2720 }234427212345 /** @name CumulusPalletXcmpQueueOutboundChannelDetails (290) */2722 /** @name CumulusPalletXcmpQueueOutboundChannelDetails (323) */2346 export interface CumulusPalletXcmpQueueOutboundChannelDetails extends Struct {2723 export interface CumulusPalletXcmpQueueOutboundChannelDetails extends Struct {2347 readonly recipient: u32;2724 readonly recipient: u32;2348 readonly state: CumulusPalletXcmpQueueOutboundState;2725 readonly state: CumulusPalletXcmpQueueOutboundState;2351 readonly lastIndex: u16;2728 readonly lastIndex: u16;2352 }2729 }235327302354 /** @name CumulusPalletXcmpQueueOutboundState (291) */2731 /** @name CumulusPalletXcmpQueueOutboundState (324) */2355 export interface CumulusPalletXcmpQueueOutboundState extends Enum {2732 export interface CumulusPalletXcmpQueueOutboundState extends Enum {2356 readonly isOk: boolean;2733 readonly isOk: boolean;2357 readonly isSuspended: boolean;2734 readonly isSuspended: boolean;2358 readonly type: 'Ok' | 'Suspended';2735 readonly type: 'Ok' | 'Suspended';2359 }2736 }236027372361 /** @name CumulusPalletXcmpQueueQueueConfigData (293) */2738 /** @name CumulusPalletXcmpQueueQueueConfigData (326) */2362 export interface CumulusPalletXcmpQueueQueueConfigData extends Struct {2739 export interface CumulusPalletXcmpQueueQueueConfigData extends Struct {2363 readonly suspendThreshold: u32;2740 readonly suspendThreshold: u32;2364 readonly dropThreshold: u32;2741 readonly dropThreshold: u32;2368 readonly xcmpMaxIndividualWeight: u64;2745 readonly xcmpMaxIndividualWeight: u64;2369 }2746 }237027472371 /** @name CumulusPalletXcmpQueueError (295) */2748 /** @name CumulusPalletXcmpQueueError (328) */2372 export interface CumulusPalletXcmpQueueError extends Enum {2749 export interface CumulusPalletXcmpQueueError extends Enum {2373 readonly isFailedToSend: boolean;2750 readonly isFailedToSend: boolean;2374 readonly isBadXcmOrigin: boolean;2751 readonly isBadXcmOrigin: boolean;2378 readonly type: 'FailedToSend' | 'BadXcmOrigin' | 'BadXcm' | 'BadOverweightIndex' | 'WeightOverLimit';2755 readonly type: 'FailedToSend' | 'BadXcmOrigin' | 'BadXcm' | 'BadOverweightIndex' | 'WeightOverLimit';2379 }2756 }238027572381 /** @name PalletXcmError (296) */2758 /** @name PalletXcmError (329) */2382 export interface PalletXcmError extends Enum {2759 export interface PalletXcmError extends Enum {2383 readonly isUnreachable: boolean;2760 readonly isUnreachable: boolean;2384 readonly isSendFailure: boolean;2761 readonly isSendFailure: boolean;2396 readonly type: 'Unreachable' | 'SendFailure' | 'Filtered' | 'UnweighableMessage' | 'DestinationNotInvertible' | 'Empty' | 'CannotReanchor' | 'TooManyAssets' | 'InvalidOrigin' | 'BadVersion' | 'BadLocation' | 'NoSubscription' | 'AlreadySubscribed';2773 readonly type: 'Unreachable' | 'SendFailure' | 'Filtered' | 'UnweighableMessage' | 'DestinationNotInvertible' | 'Empty' | 'CannotReanchor' | 'TooManyAssets' | 'InvalidOrigin' | 'BadVersion' | 'BadLocation' | 'NoSubscription' | 'AlreadySubscribed';2397 }2774 }239827752399 /** @name CumulusPalletXcmError (297) */2776 /** @name CumulusPalletXcmError (330) */2400 export type CumulusPalletXcmError = Null;2777 export type CumulusPalletXcmError = Null;240127782402 /** @name CumulusPalletDmpQueueConfigData (298) */2779 /** @name CumulusPalletDmpQueueConfigData (331) */2403 export interface CumulusPalletDmpQueueConfigData extends Struct {2780 export interface CumulusPalletDmpQueueConfigData extends Struct {2404 readonly maxIndividual: u64;2781 readonly maxIndividual: u64;2405 }2782 }240627832407 /** @name CumulusPalletDmpQueuePageIndexData (299) */2784 /** @name CumulusPalletDmpQueuePageIndexData (332) */2408 export interface CumulusPalletDmpQueuePageIndexData extends Struct {2785 export interface CumulusPalletDmpQueuePageIndexData extends Struct {2409 readonly beginUsed: u32;2786 readonly beginUsed: u32;2410 readonly endUsed: u32;2787 readonly endUsed: u32;2411 readonly overweightCount: u64;2788 readonly overweightCount: u64;2412 }2789 }241327902414 /** @name CumulusPalletDmpQueueError (302) */2791 /** @name CumulusPalletDmpQueueError (335) */2415 export interface CumulusPalletDmpQueueError extends Enum {2792 export interface CumulusPalletDmpQueueError extends Enum {2416 readonly isUnknown: boolean;2793 readonly isUnknown: boolean;2417 readonly isOverLimit: boolean;2794 readonly isOverLimit: boolean;2418 readonly type: 'Unknown' | 'OverLimit';2795 readonly type: 'Unknown' | 'OverLimit';2419 }2796 }242027972421 /** @name PalletUniqueError (306) */2798 /** @name PalletUniqueError (339) */2422 export interface PalletUniqueError extends Enum {2799 export interface PalletUniqueError extends Enum {2423 readonly isCollectionDecimalPointLimitExceeded: boolean;2800 readonly isCollectionDecimalPointLimitExceeded: boolean;2424 readonly isConfirmUnsetSponsorFail: boolean;2801 readonly isConfirmUnsetSponsorFail: boolean;2425 readonly isEmptyArgument: boolean;2802 readonly isEmptyArgument: boolean;2426 readonly type: 'CollectionDecimalPointLimitExceeded' | 'ConfirmUnsetSponsorFail' | 'EmptyArgument';2803 readonly type: 'CollectionDecimalPointLimitExceeded' | 'ConfirmUnsetSponsorFail' | 'EmptyArgument';2427 }2804 }28052806 /** @name PalletUnqSchedulerScheduledV3 (342) */2807 export interface PalletUnqSchedulerScheduledV3 extends Struct {2808 readonly maybeId: Option<U8aFixed>;2809 readonly priority: u8;2810 readonly call: FrameSupportScheduleMaybeHashed;2811 readonly maybePeriodic: Option<ITuple<[u32, u32]>>;2812 readonly origin: OpalRuntimeOriginCaller;2813 }28142815 /** @name OpalRuntimeOriginCaller (343) */2816 export interface OpalRuntimeOriginCaller extends Enum {2817 readonly isVoid: boolean;2818 readonly isSystem: boolean;2819 readonly asSystem: FrameSupportDispatchRawOrigin;2820 readonly isPolkadotXcm: boolean;2821 readonly asPolkadotXcm: PalletXcmOrigin;2822 readonly isCumulusXcm: boolean;2823 readonly asCumulusXcm: CumulusPalletXcmOrigin;2824 readonly isEthereum: boolean;2825 readonly asEthereum: PalletEthereumRawOrigin;2826 readonly type: 'Void' | 'System' | 'PolkadotXcm' | 'CumulusXcm' | 'Ethereum';2827 }28282829 /** @name FrameSupportDispatchRawOrigin (344) */2830 export interface FrameSupportDispatchRawOrigin extends Enum {2831 readonly isRoot: boolean;2832 readonly isSigned: boolean;2833 readonly asSigned: AccountId32;2834 readonly isNone: boolean;2835 readonly type: 'Root' | 'Signed' | 'None';2836 }28372838 /** @name PalletXcmOrigin (345) */2839 export interface PalletXcmOrigin extends Enum {2840 readonly isXcm: boolean;2841 readonly asXcm: XcmV1MultiLocation;2842 readonly isResponse: boolean;2843 readonly asResponse: XcmV1MultiLocation;2844 readonly type: 'Xcm' | 'Response';2845 }28462847 /** @name CumulusPalletXcmOrigin (346) */2848 export interface CumulusPalletXcmOrigin extends Enum {2849 readonly isRelay: boolean;2850 readonly isSiblingParachain: boolean;2851 readonly asSiblingParachain: u32;2852 readonly type: 'Relay' | 'SiblingParachain';2853 }28542855 /** @name PalletEthereumRawOrigin (347) */2856 export interface PalletEthereumRawOrigin extends Enum {2857 readonly isEthereumTransaction: boolean;2858 readonly asEthereumTransaction: H160;2859 readonly type: 'EthereumTransaction';2860 }28612862 /** @name SpCoreVoid (348) */2863 export type SpCoreVoid = Null;28642865 /** @name PalletUnqSchedulerError (349) */2866 export interface PalletUnqSchedulerError extends Enum {2867 readonly isFailedToSchedule: boolean;2868 readonly isNotFound: boolean;2869 readonly isTargetBlockNumberInPast: boolean;2870 readonly isRescheduleNoChange: boolean;2871 readonly type: 'FailedToSchedule' | 'NotFound' | 'TargetBlockNumberInPast' | 'RescheduleNoChange';2872 }242828732429 /** @name UpDataStructsCollection (307) */2874 /** @name UpDataStructsCollection (350) */2430 export interface UpDataStructsCollection extends Struct {2875 export interface UpDataStructsCollection extends Struct {2431 readonly owner: AccountId32;2876 readonly owner: AccountId32;2432 readonly mode: UpDataStructsCollectionMode;2877 readonly mode: UpDataStructsCollectionMode;2436 readonly sponsorship: UpDataStructsSponsorshipState;2881 readonly sponsorship: UpDataStructsSponsorshipState;2437 readonly limits: UpDataStructsCollectionLimits;2882 readonly limits: UpDataStructsCollectionLimits;2438 readonly permissions: UpDataStructsCollectionPermissions;2883 readonly permissions: UpDataStructsCollectionPermissions;2884 readonly externalCollection: bool;2439 }2885 }244028862441 /** @name UpDataStructsSponsorshipState (308) */2887 /** @name UpDataStructsSponsorshipState (351) */2442 export interface UpDataStructsSponsorshipState extends Enum {2888 export interface UpDataStructsSponsorshipState extends Enum {2443 readonly isDisabled: boolean;2889 readonly isDisabled: boolean;2444 readonly isUnconfirmed: boolean;2890 readonly isUnconfirmed: boolean;2448 readonly type: 'Disabled' | 'Unconfirmed' | 'Confirmed';2894 readonly type: 'Disabled' | 'Unconfirmed' | 'Confirmed';2449 }2895 }245028962451 /** @name UpDataStructsProperties (309) */2897 /** @name UpDataStructsProperties (352) */2452 export interface UpDataStructsProperties extends Struct {2898 export interface UpDataStructsProperties extends Struct {2453 readonly map: UpDataStructsPropertiesMapBoundedVec;2899 readonly map: UpDataStructsPropertiesMapBoundedVec;2454 readonly consumedSpace: u32;2900 readonly consumedSpace: u32;2455 readonly spaceLimit: u32;2901 readonly spaceLimit: u32;2456 }2902 }245729032458 /** @name UpDataStructsPropertiesMapBoundedVec (310) */2904 /** @name UpDataStructsPropertiesMapBoundedVec (353) */2459 export interface UpDataStructsPropertiesMapBoundedVec extends BTreeMap<Bytes, Bytes> {}2905 export interface UpDataStructsPropertiesMapBoundedVec extends BTreeMap<Bytes, Bytes> {}246029062461 /** @name UpDataStructsPropertiesMapPropertyPermission (315) */2907 /** @name UpDataStructsPropertiesMapPropertyPermission (358) */2462 export interface UpDataStructsPropertiesMapPropertyPermission extends BTreeMap<Bytes, UpDataStructsPropertyPermission> {}2908 export interface UpDataStructsPropertiesMapPropertyPermission extends BTreeMap<Bytes, UpDataStructsPropertyPermission> {}246329092464 /** @name UpDataStructsCollectionStats (322) */2910 /** @name UpDataStructsCollectionStats (365) */2465 export interface UpDataStructsCollectionStats extends Struct {2911 export interface UpDataStructsCollectionStats extends Struct {2466 readonly created: u32;2912 readonly created: u32;2467 readonly destroyed: u32;2913 readonly destroyed: u32;2468 readonly alive: u32;2914 readonly alive: u32;2469 }2915 }247029162471 /** @name UpDataStructsTokenChild (323) */2917 /** @name UpDataStructsTokenChild (366) */2472 export interface UpDataStructsTokenChild extends Struct {2918 export interface UpDataStructsTokenChild extends Struct {2473 readonly token: u32;2919 readonly token: u32;2474 readonly collection: u32;2920 readonly collection: u32;2475 }2921 }247629222477 /** @name PhantomTypeUpDataStructs (324) */2923 /** @name PhantomTypeUpDataStructs (367) */2478 export interface PhantomTypeUpDataStructs extends Vec<ITuple<[UpDataStructsTokenData, UpDataStructsRpcCollection, UpDataStructsRmrkCollectionInfo, UpDataStructsRmrkNftInfo, UpDataStructsRmrkResourceInfo, UpDataStructsRmrkPropertyInfo, UpDataStructsRmrkBaseInfo, UpDataStructsRmrkPartType, UpDataStructsRmrkTheme, UpDataStructsRmrkNftChild]>> {}2924 export interface PhantomTypeUpDataStructs extends Vec<ITuple<[UpDataStructsTokenData, UpDataStructsRpcCollection, RmrkTraitsCollectionCollectionInfo, RmrkTraitsNftNftInfo, RmrkTraitsResourceResourceInfo, RmrkTraitsPropertyPropertyInfo, RmrkTraitsBaseBaseInfo, RmrkTraitsPartPartType, RmrkTraitsTheme, RmrkTraitsNftNftChild]>> {}247929252480 /** @name UpDataStructsTokenData (326) */2926 /** @name UpDataStructsTokenData (369) */2481 export interface UpDataStructsTokenData extends Struct {2927 export interface UpDataStructsTokenData extends Struct {2482 readonly properties: Vec<UpDataStructsProperty>;2928 readonly properties: Vec<UpDataStructsProperty>;2483 readonly owner: Option<PalletEvmAccountBasicCrossAccountIdRepr>;2929 readonly owner: Option<PalletEvmAccountBasicCrossAccountIdRepr>;2484 }2930 }248529312486 /** @name UpDataStructsRpcCollection (328) */2932 /** @name UpDataStructsRpcCollection (371) */2487 export interface UpDataStructsRpcCollection extends Struct {2933 export interface UpDataStructsRpcCollection extends Struct {2488 readonly owner: AccountId32;2934 readonly owner: AccountId32;2489 readonly mode: UpDataStructsCollectionMode;2935 readonly mode: UpDataStructsCollectionMode;2495 readonly permissions: UpDataStructsCollectionPermissions;2941 readonly permissions: UpDataStructsCollectionPermissions;2496 readonly tokenPropertyPermissions: Vec<UpDataStructsPropertyKeyPermission>;2942 readonly tokenPropertyPermissions: Vec<UpDataStructsPropertyKeyPermission>;2497 readonly properties: Vec<UpDataStructsProperty>;2943 readonly properties: Vec<UpDataStructsProperty>;2944 readonly readOnly: bool;2498 }2945 }249929462500 /** @name UpDataStructsRmrkCollectionInfo (329) */2947 /** @name RmrkTraitsCollectionCollectionInfo (372) */2501 export interface UpDataStructsRmrkCollectionInfo extends Struct {2948 export interface RmrkTraitsCollectionCollectionInfo extends Struct {2502 readonly issuer: AccountId32;2949 readonly issuer: AccountId32;2503 readonly metadata: Bytes;2950 readonly metadata: Bytes;2504 readonly max: Option<u32>;2951 readonly max: Option<u32>;2505 readonly symbol: Bytes;2952 readonly symbol: Bytes;2506 readonly nftsCount: u32;2953 readonly nftsCount: u32;2507 }2954 }250829552509 /** @name UpDataStructsRmrkNftInfo (332) */2956 /** @name RmrkTraitsNftNftInfo (373) */2510 export interface UpDataStructsRmrkNftInfo extends Struct {2957 export interface RmrkTraitsNftNftInfo extends Struct {2511 readonly owner: UpDataStructsRmrkAccountIdOrCollectionNftTuple;2958 readonly owner: RmrkTraitsNftAccountIdOrCollectionNftTuple;2512 readonly royalty: Option<UpDataStructsRmrkRoyaltyInfo>;2959 readonly royalty: Option<RmrkTraitsNftRoyaltyInfo>;2513 readonly metadata: Bytes;2960 readonly metadata: Bytes;2514 readonly equipped: bool;2961 readonly equipped: bool;2515 readonly pending: bool;2962 readonly pending: bool;2516 }2963 }25172518 /** @name UpDataStructsRmrkAccountIdOrCollectionNftTuple (333) */2519 export interface UpDataStructsRmrkAccountIdOrCollectionNftTuple extends Enum {2520 readonly isAccountId: boolean;2521 readonly asAccountId: AccountId32;2522 readonly isCollectionAndNftTuple: boolean;2523 readonly asCollectionAndNftTuple: ITuple<[u32, u32]>;2524 readonly type: 'AccountId' | 'CollectionAndNftTuple';2525 }252629642527 /** @name UpDataStructsRmrkRoyaltyInfo (335) */2965 /** @name RmrkTraitsNftRoyaltyInfo (375) */2528 export interface UpDataStructsRmrkRoyaltyInfo extends Struct {2966 export interface RmrkTraitsNftRoyaltyInfo extends Struct {2529 readonly recipient: AccountId32;2967 readonly recipient: AccountId32;2530 readonly amount: Permill;2968 readonly amount: Permill;2531 }2969 }253229702533 /** @name UpDataStructsRmrkResourceInfo (336) */2971 /** @name RmrkTraitsResourceResourceInfo (376) */2534 export interface UpDataStructsRmrkResourceInfo extends Struct {2972 export interface RmrkTraitsResourceResourceInfo extends Struct {2535 readonly id: Bytes;2973 readonly id: u32;2536 readonly resource: UpDataStructsRmrkResourceTypes;2974 readonly resource: RmrkTraitsResourceResourceTypes;2537 readonly pending: bool;2975 readonly pending: bool;2538 readonly pendingRemoval: bool;2976 readonly pendingRemoval: bool;2539 }2977 }254029782541 /** @name UpDataStructsRmrkResourceTypes (339) */2979 /** @name RmrkTraitsResourceResourceTypes (377) */2542 export interface UpDataStructsRmrkResourceTypes extends Enum {2980 export interface RmrkTraitsResourceResourceTypes extends Enum {2543 readonly isBasic: boolean;2981 readonly isBasic: boolean;2544 readonly asBasic: UpDataStructsRmrkBasicResource;2982 readonly asBasic: RmrkTraitsResourceBasicResource;2545 readonly isComposable: boolean;2983 readonly isComposable: boolean;2546 readonly asComposable: UpDataStructsRmrkComposableResource;2984 readonly asComposable: RmrkTraitsResourceComposableResource;2547 readonly isSlot: boolean;2985 readonly isSlot: boolean;2548 readonly asSlot: UpDataStructsRmrkSlotResource;2986 readonly asSlot: RmrkTraitsResourceSlotResource;2549 readonly type: 'Basic' | 'Composable' | 'Slot';2987 readonly type: 'Basic' | 'Composable' | 'Slot';2550 }2988 }25512552 /** @name UpDataStructsRmrkBasicResource (340) */2553 export interface UpDataStructsRmrkBasicResource extends Struct {2554 readonly src: Option<Bytes>;2555 readonly metadata: Option<Bytes>;2556 readonly license: Option<Bytes>;2557 readonly thumb: Option<Bytes>;2558 }25592560 /** @name UpDataStructsRmrkComposableResource (342) */2561 export interface UpDataStructsRmrkComposableResource extends Struct {2562 readonly parts: Vec<u32>;2563 readonly base: u32;2564 readonly src: Option<Bytes>;2565 readonly metadata: Option<Bytes>;2566 readonly license: Option<Bytes>;2567 readonly thumb: Option<Bytes>;2568 }25692570 /** @name UpDataStructsRmrkSlotResource (343) */2571 export interface UpDataStructsRmrkSlotResource extends Struct {2572 readonly base: u32;2573 readonly src: Option<Bytes>;2574 readonly metadata: Option<Bytes>;2575 readonly slot: u32;2576 readonly license: Option<Bytes>;2577 readonly thumb: Option<Bytes>;2578 }257929892580 /** @name UpDataStructsRmrkPropertyInfo (344) */2990 /** @name RmrkTraitsPropertyPropertyInfo (378) */2581 export interface UpDataStructsRmrkPropertyInfo extends Struct {2991 export interface RmrkTraitsPropertyPropertyInfo extends Struct {2582 readonly key: Bytes;2992 readonly key: Bytes;2583 readonly value: Bytes;2993 readonly value: Bytes;2584 }2994 }258529952586 /** @name UpDataStructsRmrkBaseInfo (347) */2996 /** @name RmrkTraitsBaseBaseInfo (379) */2587 export interface UpDataStructsRmrkBaseInfo extends Struct {2997 export interface RmrkTraitsBaseBaseInfo extends Struct {2588 readonly issuer: AccountId32;2998 readonly issuer: AccountId32;2589 readonly baseType: Bytes;2999 readonly baseType: Bytes;2590 readonly symbol: Bytes;3000 readonly symbol: Bytes;2591 }3001 }25922593 /** @name UpDataStructsRmrkPartType (348) */2594 export interface UpDataStructsRmrkPartType extends Enum {2595 readonly isFixedPart: boolean;2596 readonly asFixedPart: UpDataStructsRmrkFixedPart;2597 readonly isSlotPart: boolean;2598 readonly asSlotPart: UpDataStructsRmrkSlotPart;2599 readonly type: 'FixedPart' | 'SlotPart';2600 }26012602 /** @name UpDataStructsRmrkFixedPart (350) */2603 export interface UpDataStructsRmrkFixedPart extends Struct {2604 readonly id: u32;2605 readonly z: u32;2606 readonly src: Bytes;2607 }26082609 /** @name UpDataStructsRmrkSlotPart (351) */2610 export interface UpDataStructsRmrkSlotPart extends Struct {2611 readonly id: u32;2612 readonly equippable: UpDataStructsRmrkEquippableList;2613 readonly src: Bytes;2614 readonly z: u32;2615 }26162617 /** @name UpDataStructsRmrkEquippableList (352) */2618 export interface UpDataStructsRmrkEquippableList extends Enum {2619 readonly isAll: boolean;2620 readonly isEmpty: boolean;2621 readonly isCustom: boolean;2622 readonly asCustom: Vec<u32>;2623 readonly type: 'All' | 'Empty' | 'Custom';2624 }26252626 /** @name UpDataStructsRmrkTheme (353) */2627 export interface UpDataStructsRmrkTheme extends Struct {2628 readonly name: Bytes;2629 readonly properties: Vec<UpDataStructsRmrkThemeProperty>;2630 readonly inherit: bool;2631 }26322633 /** @name UpDataStructsRmrkThemeProperty (355) */2634 export interface UpDataStructsRmrkThemeProperty extends Struct {2635 readonly key: Bytes;2636 readonly value: Bytes;2637 }263830022639 /** @name UpDataStructsRmrkNftChild (356) */3003 /** @name RmrkTraitsNftNftChild (380) */2640 export interface UpDataStructsRmrkNftChild extends Struct {3004 export interface RmrkTraitsNftNftChild extends Struct {2641 readonly collectionId: u32;3005 readonly collectionId: u32;2642 readonly nftId: u32;3006 readonly nftId: u32;2643 }3007 }264430082645 /** @name PalletCommonError (358) */3009 /** @name PalletCommonError (382) */2646 export interface PalletCommonError extends Enum {3010 export interface PalletCommonError extends Enum {2647 readonly isCollectionNotFound: boolean;3011 readonly isCollectionNotFound: boolean;2648 readonly isMustBeTokenOwner: boolean;3012 readonly isMustBeTokenOwner: boolean;2677 readonly isPropertyKeyIsTooLong: boolean;3041 readonly isPropertyKeyIsTooLong: boolean;2678 readonly isInvalidCharacterInPropertyKey: boolean;3042 readonly isInvalidCharacterInPropertyKey: boolean;2679 readonly isEmptyPropertyKey: boolean;3043 readonly isEmptyPropertyKey: boolean;3044 readonly isCollectionIsExternal: boolean;3045 readonly isCollectionIsInternal: boolean;2680 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' | 'NestingIsDisabled' | 'OnlyOwnerAllowedToNest' | 'SourceCollectionIsNotAllowedToNest' | 'CollectionFieldSizeExceeded' | 'NoSpaceForProperty' | 'PropertyLimitReached' | 'PropertyKeyIsTooLong' | 'InvalidCharacterInPropertyKey' | 'EmptyPropertyKey';3046 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' | 'NestingIsDisabled' | 'OnlyOwnerAllowedToNest' | 'SourceCollectionIsNotAllowedToNest' | 'CollectionFieldSizeExceeded' | 'NoSpaceForProperty' | 'PropertyLimitReached' | 'PropertyKeyIsTooLong' | 'InvalidCharacterInPropertyKey' | 'EmptyPropertyKey' | 'CollectionIsExternal' | 'CollectionIsInternal';2681 }3047 }268230482683 /** @name PalletFungibleError (360) */3049 /** @name PalletFungibleError (384) */2684 export interface PalletFungibleError extends Enum {3050 export interface PalletFungibleError extends Enum {2685 readonly isNotFungibleDataUsedToMintFungibleCollectionToken: boolean;3051 readonly isNotFungibleDataUsedToMintFungibleCollectionToken: boolean;2686 readonly isFungibleItemsHaveNoId: boolean;3052 readonly isFungibleItemsHaveNoId: boolean;2690 readonly type: 'NotFungibleDataUsedToMintFungibleCollectionToken' | 'FungibleItemsHaveNoId' | 'FungibleItemsDontHaveData' | 'FungibleDisallowsNesting' | 'SettingPropertiesNotAllowed';3056 readonly type: 'NotFungibleDataUsedToMintFungibleCollectionToken' | 'FungibleItemsHaveNoId' | 'FungibleItemsDontHaveData' | 'FungibleDisallowsNesting' | 'SettingPropertiesNotAllowed';2691 }3057 }269230582693 /** @name PalletRefungibleItemData (361) */3059 /** @name PalletRefungibleItemData (385) */2694 export interface PalletRefungibleItemData extends Struct {3060 export interface PalletRefungibleItemData extends Struct {2695 readonly constData: Bytes;3061 readonly constData: Bytes;2696 }3062 }269730632698 /** @name PalletRefungibleError (365) */3064 /** @name PalletRefungibleError (389) */2699 export interface PalletRefungibleError extends Enum {3065 export interface PalletRefungibleError extends Enum {2700 readonly isNotRefungibleDataUsedToMintFungibleCollectionToken: boolean;3066 readonly isNotRefungibleDataUsedToMintFungibleCollectionToken: boolean;2701 readonly isWrongRefungiblePieces: boolean;3067 readonly isWrongRefungiblePieces: boolean;2704 readonly type: 'NotRefungibleDataUsedToMintFungibleCollectionToken' | 'WrongRefungiblePieces' | 'RefungibleDisallowsNesting' | 'SettingPropertiesNotAllowed';3070 readonly type: 'NotRefungibleDataUsedToMintFungibleCollectionToken' | 'WrongRefungiblePieces' | 'RefungibleDisallowsNesting' | 'SettingPropertiesNotAllowed';2705 }3071 }270630722707 /** @name PalletNonfungibleItemData (366) */3073 /** @name PalletNonfungibleItemData (390) */2708 export interface PalletNonfungibleItemData extends Struct {3074 export interface PalletNonfungibleItemData extends Struct {2709 readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;3075 readonly owner: PalletEvmAccountBasicCrossAccountIdRepr;2710 }3076 }271130772712 /** @name PalletNonfungibleError (368) */3078 /** @name PalletNonfungibleError (392) */2713 export interface PalletNonfungibleError extends Enum {3079 export interface PalletNonfungibleError extends Enum {2714 readonly isNotNonfungibleDataUsedToMintFungibleCollectionToken: boolean;3080 readonly isNotNonfungibleDataUsedToMintFungibleCollectionToken: boolean;2715 readonly isNonfungibleItemsHaveNoAmount: boolean;3081 readonly isNonfungibleItemsHaveNoAmount: boolean;2716 readonly isCantBurnNftWithChildren: boolean;3082 readonly isCantBurnNftWithChildren: boolean;2717 readonly type: 'NotNonfungibleDataUsedToMintFungibleCollectionToken' | 'NonfungibleItemsHaveNoAmount' | 'CantBurnNftWithChildren';3083 readonly type: 'NotNonfungibleDataUsedToMintFungibleCollectionToken' | 'NonfungibleItemsHaveNoAmount' | 'CantBurnNftWithChildren';2718 }3084 }271930852720 /** @name PalletStructureError (369) */3086 /** @name PalletStructureError (393) */2721 export interface PalletStructureError extends Enum {3087 export interface PalletStructureError extends Enum {2722 readonly isOuroborosDetected: boolean;3088 readonly isOuroborosDetected: boolean;2723 readonly isDepthLimit: boolean;3089 readonly isDepthLimit: boolean;2724 readonly isTokenNotFound: boolean;3090 readonly isTokenNotFound: boolean;2725 readonly type: 'OuroborosDetected' | 'DepthLimit' | 'TokenNotFound';3091 readonly type: 'OuroborosDetected' | 'DepthLimit' | 'TokenNotFound';2726 }3092 }30933094 /** @name PalletRmrkCoreError (394) */3095 export interface PalletRmrkCoreError extends Enum {3096 readonly isCorruptedCollectionType: boolean;3097 readonly isNftTypeEncodeError: boolean;3098 readonly isRmrkPropertyKeyIsTooLong: boolean;3099 readonly isRmrkPropertyValueIsTooLong: boolean;3100 readonly isCollectionNotEmpty: boolean;3101 readonly isNoAvailableCollectionId: boolean;3102 readonly isNoAvailableNftId: boolean;3103 readonly isCollectionUnknown: boolean;3104 readonly isNoPermission: boolean;3105 readonly isNonTransferable: boolean;3106 readonly isCollectionFullOrLocked: boolean;3107 readonly isResourceDoesntExist: boolean;3108 readonly isCannotSendToDescendentOrSelf: boolean;3109 readonly isCannotAcceptNonOwnedNft: boolean;3110 readonly isCannotRejectNonOwnedNft: boolean;3111 readonly isResourceNotPending: boolean;3112 readonly type: 'CorruptedCollectionType' | 'NftTypeEncodeError' | 'RmrkPropertyKeyIsTooLong' | 'RmrkPropertyValueIsTooLong' | 'CollectionNotEmpty' | 'NoAvailableCollectionId' | 'NoAvailableNftId' | 'CollectionUnknown' | 'NoPermission' | 'NonTransferable' | 'CollectionFullOrLocked' | 'ResourceDoesntExist' | 'CannotSendToDescendentOrSelf' | 'CannotAcceptNonOwnedNft' | 'CannotRejectNonOwnedNft' | 'ResourceNotPending';3113 }31143115 /** @name PalletRmrkEquipError (396) */3116 export interface PalletRmrkEquipError extends Enum {3117 readonly isPermissionError: boolean;3118 readonly isNoAvailableBaseId: boolean;3119 readonly isNoAvailablePartId: boolean;3120 readonly isBaseDoesntExist: boolean;3121 readonly isNeedsDefaultThemeFirst: boolean;3122 readonly type: 'PermissionError' | 'NoAvailableBaseId' | 'NoAvailablePartId' | 'BaseDoesntExist' | 'NeedsDefaultThemeFirst';3123 }272731242728 /** @name PalletEvmError (372) */3125 /** @name PalletEvmError (399) */2729 export interface PalletEvmError extends Enum {3126 export interface PalletEvmError extends Enum {2730 readonly isBalanceLow: boolean;3127 readonly isBalanceLow: boolean;2731 readonly isFeeOverflow: boolean;3128 readonly isFeeOverflow: boolean;2736 readonly type: 'BalanceLow' | 'FeeOverflow' | 'PaymentOverflow' | 'WithdrawFailed' | 'GasPriceTooLow' | 'InvalidNonce';3133 readonly type: 'BalanceLow' | 'FeeOverflow' | 'PaymentOverflow' | 'WithdrawFailed' | 'GasPriceTooLow' | 'InvalidNonce';2737 }3134 }273831352739 /** @name FpRpcTransactionStatus (375) */3136 /** @name FpRpcTransactionStatus (402) */2740 export interface FpRpcTransactionStatus extends Struct {3137 export interface FpRpcTransactionStatus extends Struct {2741 readonly transactionHash: H256;3138 readonly transactionHash: H256;2742 readonly transactionIndex: u32;3139 readonly transactionIndex: u32;2747 readonly logsBloom: EthbloomBloom;3144 readonly logsBloom: EthbloomBloom;2748 }3145 }274931462750 /** @name EthbloomBloom (377) */3147 /** @name EthbloomBloom (404) */2751 export interface EthbloomBloom extends U8aFixed {}3148 export interface EthbloomBloom extends U8aFixed {}275231492753 /** @name EthereumReceiptReceiptV3 (379) */3150 /** @name EthereumReceiptReceiptV3 (406) */2754 export interface EthereumReceiptReceiptV3 extends Enum {3151 export interface EthereumReceiptReceiptV3 extends Enum {2755 readonly isLegacy: boolean;3152 readonly isLegacy: boolean;2756 readonly asLegacy: EthereumReceiptEip658ReceiptData;3153 readonly asLegacy: EthereumReceiptEip658ReceiptData;2761 readonly type: 'Legacy' | 'Eip2930' | 'Eip1559';3158 readonly type: 'Legacy' | 'Eip2930' | 'Eip1559';2762 }3159 }276331602764 /** @name EthereumReceiptEip658ReceiptData (380) */3161 /** @name EthereumReceiptEip658ReceiptData (407) */2765 export interface EthereumReceiptEip658ReceiptData extends Struct {3162 export interface EthereumReceiptEip658ReceiptData extends Struct {2766 readonly statusCode: u8;3163 readonly statusCode: u8;2767 readonly usedGas: U256;3164 readonly usedGas: U256;2768 readonly logsBloom: EthbloomBloom;3165 readonly logsBloom: EthbloomBloom;2769 readonly logs: Vec<EthereumLog>;3166 readonly logs: Vec<EthereumLog>;2770 }3167 }277131682772 /** @name EthereumBlock (381) */3169 /** @name EthereumBlock (408) */2773 export interface EthereumBlock extends Struct {3170 export interface EthereumBlock extends Struct {2774 readonly header: EthereumHeader;3171 readonly header: EthereumHeader;2775 readonly transactions: Vec<EthereumTransactionTransactionV2>;3172 readonly transactions: Vec<EthereumTransactionTransactionV2>;2776 readonly ommers: Vec<EthereumHeader>;3173 readonly ommers: Vec<EthereumHeader>;2777 }3174 }277831752779 /** @name EthereumHeader (382) */3176 /** @name EthereumHeader (409) */2780 export interface EthereumHeader extends Struct {3177 export interface EthereumHeader extends Struct {2781 readonly parentHash: H256;3178 readonly parentHash: H256;2782 readonly ommersHash: H256;3179 readonly ommersHash: H256;2795 readonly nonce: EthereumTypesHashH64;3192 readonly nonce: EthereumTypesHashH64;2796 }3193 }279731942798 /** @name EthereumTypesHashH64 (383) */3195 /** @name EthereumTypesHashH64 (410) */2799 export interface EthereumTypesHashH64 extends U8aFixed {}3196 export interface EthereumTypesHashH64 extends U8aFixed {}280031972801 /** @name PalletEthereumError (388) */3198 /** @name PalletEthereumError (415) */2802 export interface PalletEthereumError extends Enum {3199 export interface PalletEthereumError extends Enum {2803 readonly isInvalidSignature: boolean;3200 readonly isInvalidSignature: boolean;2804 readonly isPreLogExists: boolean;3201 readonly isPreLogExists: boolean;2805 readonly type: 'InvalidSignature' | 'PreLogExists';3202 readonly type: 'InvalidSignature' | 'PreLogExists';2806 }3203 }280732042808 /** @name PalletEvmCoderSubstrateError (389) */3205 /** @name PalletEvmCoderSubstrateError (416) */2809 export interface PalletEvmCoderSubstrateError extends Enum {3206 export interface PalletEvmCoderSubstrateError extends Enum {2810 readonly isOutOfGas: boolean;3207 readonly isOutOfGas: boolean;2811 readonly isOutOfFund: boolean;3208 readonly isOutOfFund: boolean;2812 readonly type: 'OutOfGas' | 'OutOfFund';3209 readonly type: 'OutOfGas' | 'OutOfFund';2813 }3210 }281432112815 /** @name PalletEvmContractHelpersSponsoringModeT (390) */3212 /** @name PalletEvmContractHelpersSponsoringModeT (417) */2816 export interface PalletEvmContractHelpersSponsoringModeT extends Enum {3213 export interface PalletEvmContractHelpersSponsoringModeT extends Enum {2817 readonly isDisabled: boolean;3214 readonly isDisabled: boolean;2818 readonly isAllowlisted: boolean;3215 readonly isAllowlisted: boolean;2819 readonly isGenerous: boolean;3216 readonly isGenerous: boolean;2820 readonly type: 'Disabled' | 'Allowlisted' | 'Generous';3217 readonly type: 'Disabled' | 'Allowlisted' | 'Generous';2821 }3218 }282232192823 /** @name PalletEvmContractHelpersError (392) */3220 /** @name PalletEvmContractHelpersError (419) */2824 export interface PalletEvmContractHelpersError extends Enum {3221 export interface PalletEvmContractHelpersError extends Enum {2825 readonly isNoPermission: boolean;3222 readonly isNoPermission: boolean;2826 readonly type: 'NoPermission';3223 readonly type: 'NoPermission';2827 }3224 }282832252829 /** @name PalletEvmMigrationError (393) */3226 /** @name PalletEvmMigrationError (420) */2830 export interface PalletEvmMigrationError extends Enum {3227 export interface PalletEvmMigrationError extends Enum {2831 readonly isAccountNotEmpty: boolean;3228 readonly isAccountNotEmpty: boolean;2832 readonly isAccountIsNotMigrating: boolean;3229 readonly isAccountIsNotMigrating: boolean;2833 readonly type: 'AccountNotEmpty' | 'AccountIsNotMigrating';3230 readonly type: 'AccountNotEmpty' | 'AccountIsNotMigrating';2834 }3231 }283532322836 /** @name SpRuntimeMultiSignature (395) */3233 /** @name SpRuntimeMultiSignature (422) */2837 export interface SpRuntimeMultiSignature extends Enum {3234 export interface SpRuntimeMultiSignature extends Enum {2838 readonly isEd25519: boolean;3235 readonly isEd25519: boolean;2839 readonly asEd25519: SpCoreEd25519Signature;3236 readonly asEd25519: SpCoreEd25519Signature;2844 readonly type: 'Ed25519' | 'Sr25519' | 'Ecdsa';3241 readonly type: 'Ed25519' | 'Sr25519' | 'Ecdsa';2845 }3242 }284632432847 /** @name SpCoreEd25519Signature (396) */3244 /** @name SpCoreEd25519Signature (423) */2848 export interface SpCoreEd25519Signature extends U8aFixed {}3245 export interface SpCoreEd25519Signature extends U8aFixed {}284932462850 /** @name SpCoreSr25519Signature (398) */3247 /** @name SpCoreSr25519Signature (425) */2851 export interface SpCoreSr25519Signature extends U8aFixed {}3248 export interface SpCoreSr25519Signature extends U8aFixed {}285232492853 /** @name SpCoreEcdsaSignature (399) */3250 /** @name SpCoreEcdsaSignature (426) */2854 export interface SpCoreEcdsaSignature extends U8aFixed {}3251 export interface SpCoreEcdsaSignature extends U8aFixed {}285532522856 /** @name FrameSystemExtensionsCheckSpecVersion (402) */3253 /** @name FrameSystemExtensionsCheckSpecVersion (429) */2857 export type FrameSystemExtensionsCheckSpecVersion = Null;3254 export type FrameSystemExtensionsCheckSpecVersion = Null;285832552859 /** @name FrameSystemExtensionsCheckGenesis (403) */3256 /** @name FrameSystemExtensionsCheckGenesis (430) */2860 export type FrameSystemExtensionsCheckGenesis = Null;3257 export type FrameSystemExtensionsCheckGenesis = Null;286132582862 /** @name FrameSystemExtensionsCheckNonce (406) */3259 /** @name FrameSystemExtensionsCheckNonce (433) */2863 export interface FrameSystemExtensionsCheckNonce extends Compact<u32> {}3260 export interface FrameSystemExtensionsCheckNonce extends Compact<u32> {}286432612865 /** @name FrameSystemExtensionsCheckWeight (407) */3262 /** @name FrameSystemExtensionsCheckWeight (434) */2866 export type FrameSystemExtensionsCheckWeight = Null;3263 export type FrameSystemExtensionsCheckWeight = Null;286732642868 /** @name PalletTemplateTransactionPaymentChargeTransactionPayment (408) */3265 /** @name PalletTemplateTransactionPaymentChargeTransactionPayment (435) */2869 export interface PalletTemplateTransactionPaymentChargeTransactionPayment extends Compact<u128> {}3266 export interface PalletTemplateTransactionPaymentChargeTransactionPayment extends Compact<u128> {}287032672871 /** @name OpalRuntimeRuntime (409) */3268 /** @name OpalRuntimeRuntime (436) */2872 export type OpalRuntimeRuntime = Null;3269 export type OpalRuntimeRuntime = Null;287332702874 /** @name PalletEthereumFakeTransactionFinalizer (410) */3271 /** @name PalletEthereumFakeTransactionFinalizer (437) */2875 export type PalletEthereumFakeTransactionFinalizer = Null;3272 export type PalletEthereumFakeTransactionFinalizer = Null;287632732877} // declare module3274} // declare moduletests/src/interfaces/types.tsdiffbeforeafterboth2/* eslint-disable */2/* eslint-disable */334export * from './unique/types';4export * from './unique/types';5export * from './rmrk/types';5export * from './default/types';6export * from './default/types';67tests/src/pallet-presence.test.tsdiffbeforeafterboth50 'unique',50 'unique',51 'nonfungible',51 'nonfungible',52 'refungible',52 'refungible',53 'rmrkcore',54 'rmrkequip',53 'scheduler',55 'scheduler',54 'charging',56 'charging',55];57];tests/src/removeCollectionAdmin.test.tsdiffbeforeafterboth46 });46 });47 });47 });4849 it('Remove collection admin by admin.', async () => {50 await usingApi(async (api, privateKeyWrapper) => {51 const collectionId = await createCollectionExpectSuccess();52 const alice = privateKeyWrapper('//Alice');53 const bob = privateKeyWrapper('//Bob');54 const charlie = privateKeyWrapper('//Charlie');55 const collection = await queryCollectionExpectSuccess(api, collectionId);56 expect(collection.owner.toString()).to.be.eq(alice.address);57 // first - add collection admin Bob58 const addAdminTx = api.tx.unique.addCollectionAdmin(collectionId, normalizeAccountId(bob.address));59 await submitTransactionAsync(alice, addAdminTx);6061 const addAdminTx2 = api.tx.unique.addCollectionAdmin(collectionId, normalizeAccountId(charlie.address));62 await submitTransactionAsync(alice, addAdminTx2);6364 const adminListAfterAddAdmin = await getAdminList(api, collectionId);65 expect(adminListAfterAddAdmin).to.be.deep.contains(normalizeAccountId(bob.address));6667 // then remove bob from admins of collection68 const removeAdminTx = api.tx.unique.removeCollectionAdmin(collectionId, normalizeAccountId(bob.address));69 await submitTransactionAsync(charlie, removeAdminTx);7071 const adminListAfterRemoveAdmin = await getAdminList(api, collectionId);72 expect(adminListAfterRemoveAdmin).not.to.be.deep.contains(normalizeAccountId(bob.address));73 });74 });754876 it('Remove admin from collection that has no admins', async () => {49 it('Remove admin from collection that has no admins', async () => {77 await usingApi(async (api, privateKeyWrapper) => {50 await usingApi(async (api, privateKeyWrapper) => {120 });93 });121 });94 });12295123 it('Regular user Can\'t remove collection admin', async () => {96 it('Regular user can\'t remove collection admin', async () => {124 await usingApi(async (api, privateKeyWrapper) => {97 await usingApi(async (api, privateKeyWrapper) => {125 const collectionId = await createCollectionExpectSuccess();98 const collectionId = await createCollectionExpectSuccess();126 const alice = privateKeyWrapper('//Alice');99 const alice = privateKeyWrapper('//Alice');138 });111 });139 });112 });113114 it('Admin can\'t remove collection admin.', async () => {115 await usingApi(async (api, privateKeyWrapper) => {116 const collectionId = await createCollectionExpectSuccess();117 const alice = privateKeyWrapper('//Alice');118 const bob = privateKeyWrapper('//Bob');119 const charlie = privateKeyWrapper('//Charlie');120121 const adminListAfterAddAdmin = await getAdminList(api, collectionId);122 expect(adminListAfterAddAdmin).to.be.deep.contains(normalizeAccountId(bob.address));123124 const removeAdminTx = api.tx.unique.removeCollectionAdmin(collectionId, normalizeAccountId(bob.address));125 await expect(submitTransactionAsync(charlie, removeAdminTx)).to.be.rejected;126127 const adminListAfterRemoveAdmin = await getAdminList(api, collectionId);128 expect(adminListAfterRemoveAdmin).to.be.deep.contains(normalizeAccountId(bob.address));129 expect(adminListAfterRemoveAdmin).to.be.deep.contains(normalizeAccountId(charlie.address));130 });131 });140});132});141133tests/src/removeCollectionSponsor.test.tsdiffbeforeafterboth31 addCollectionAdminExpectSuccess,31 addCollectionAdminExpectSuccess,32 getCreatedCollectionCount,32 getCreatedCollectionCount,33} from './util/helpers';33} from './util/helpers';34import {Keyring} from '@polkadot/api';35import {IKeyringPair} from '@polkadot/types/types';34import {IKeyringPair} from '@polkadot/types/types';363537chai.use(chaiAsPromised);36chai.use(chaiAsPromised);43describe('integration test: ext. removeCollectionSponsor():', () => {42describe('integration test: ext. removeCollectionSponsor():', () => {444345 before(async () => {44 before(async () => {46 await usingApi(async () => {45 await usingApi(async (api, privateKeyWrapper) => {47 const keyring = new Keyring({type: 'sr25519'});48 alice = keyring.addFromUri('//Alice');46 alice = privateKeyWrapper('//Alice');49 bob = keyring.addFromUri('//Bob');47 bob = privateKeyWrapper('//Bob');50 });48 });51 });49 });525056 await confirmSponsorshipExpectSuccess(collectionId, '//Bob');54 await confirmSponsorshipExpectSuccess(collectionId, '//Bob');57 await removeCollectionSponsorExpectSuccess(collectionId);55 await removeCollectionSponsorExpectSuccess(collectionId);585659 await usingApi(async (api) => {57 await usingApi(async (api, privateKeyWrapper) => {60 // Find unused address58 // Find unused address61 const zeroBalance = await findUnusedAddress(api);59 const zeroBalance = await findUnusedAddress(api, privateKeyWrapper);626063 // Mint token for unused address61 // Mint token for unused address64 const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', zeroBalance.address);62 const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', zeroBalance.address);9997100describe('(!negative test!) integration test: ext. removeCollectionSponsor():', () => {98describe('(!negative test!) integration test: ext. removeCollectionSponsor():', () => {101 before(async () => {99 before(async () => {102 await usingApi(async () => {100 await usingApi(async (api, privateKeyWrapper) => {103 const keyring = new Keyring({type: 'sr25519'});104 alice = keyring.addFromUri('//Alice');101 alice = privateKeyWrapper('//Alice');105 bob = keyring.addFromUri('//Bob');102 bob = privateKeyWrapper('//Bob');106 });103 });107 });104 });108105tests/src/removeFromContractAllowList.test.tsdiffbeforeafterboth30 });30 });313132 it('user is no longer allowlisted after removal', async () => {32 it('user is no longer allowlisted after removal', async () => {33 await usingApi(async (api) => {33 await usingApi(async (api, privateKeyWrapper) => {34 const [flipper, deployer] = await deployFlipper(api);34 const [flipper, deployer] = await deployFlipper(api, privateKeyWrapper);353536 await addToContractAllowListExpectSuccess(deployer, flipper.address.toString(), bob.address);36 await addToContractAllowListExpectSuccess(deployer, flipper.address.toString(), bob.address);37 await removeFromContractAllowListExpectSuccess(deployer, flipper.address.toString(), bob.address);37 await removeFromContractAllowListExpectSuccess(deployer, flipper.address.toString(), bob.address);41 });41 });424243 it('user can\'t execute contract after removal', async () => {43 it('user can\'t execute contract after removal', async () => {44 await usingApi(async (api) => {44 await usingApi(async (api, privateKeyWrapper) => {45 const [flipper, deployer] = await deployFlipper(api);45 const [flipper, deployer] = await deployFlipper(api, privateKeyWrapper);46 await toggleContractAllowlistExpectSuccess(deployer, flipper.address.toString(), true);46 await toggleContractAllowlistExpectSuccess(deployer, flipper.address.toString(), true);474748 await addToContractAllowListExpectSuccess(deployer, flipper.address.toString(), bob.address);48 await addToContractAllowListExpectSuccess(deployer, flipper.address.toString(), bob.address);54 });54 });555556 it('can be called twice', async () => {56 it('can be called twice', async () => {57 await usingApi(async (api) => {57 await usingApi(async (api, privateKeyWrapper) => {58 const [flipper, deployer] = await deployFlipper(api);58 const [flipper, deployer] = await deployFlipper(api, privateKeyWrapper);595960 await addToContractAllowListExpectSuccess(deployer, flipper.address.toString(), bob.address);60 await addToContractAllowListExpectSuccess(deployer, flipper.address.toString(), bob.address);61 await removeFromContractAllowListExpectSuccess(deployer, flipper.address.toString(), bob.address);61 await removeFromContractAllowListExpectSuccess(deployer, flipper.address.toString(), bob.address);82 });82 });838384 it('fails when executed by non owner', async () => {84 it('fails when executed by non owner', async () => {85 await usingApi(async (api) => {85 await usingApi(async (api, privateKeyWrapper) => {86 const [flipper] = await deployFlipper(api);86 const [flipper] = await deployFlipper(api, privateKeyWrapper);878788 await removeFromContractAllowListExpectFailure(alice, flipper.address.toString(), bob.address);88 await removeFromContractAllowListExpectFailure(alice, flipper.address.toString(), bob.address);89 });89 });tests/src/rmrk/rmrk.test.tsdiffbeforeafterbothno changes
tests/src/rpc.load.tsdiffbeforeafterboth54 });54 });55}55}565657async function prepareDeployer(api: ApiPromise) {57async function prepareDeployer(api: ApiPromise, privateKeyWrapper: ((account: string) => IKeyringPair)) {58 // Find unused address58 // Find unused address59 const deployer = await findUnusedAddress(api);59 const deployer = await findUnusedAddress(api, privateKeyWrapper);606061 // Transfer balance to it61 // Transfer balance to it62 const keyring = new Keyring({type: 'sr25519'});63 const alice = keyring.addFromUri('//Alice');62 const alice = privateKeyWrapper('//Alice');64 const amount = BigInt(endowment) + 10n**15n;63 const amount = BigInt(endowment) + 10n**15n;65 const tx = api.tx.balances.transfer(deployer.address, amount);64 const tx = api.tx.balances.transfer(deployer.address, amount);66 await submitTransactionAsync(alice, tx);65 await submitTransactionAsync(alice, tx);676668 return deployer;67 return deployer;69}68}706971async function deployLoadTester(api: ApiPromise): Promise<[Contract, IKeyringPair]> {70async function deployLoadTester(api: ApiPromise, privateKeyWrapper: ((account: string) => IKeyringPair)): Promise<[Contract, IKeyringPair]> {72 const metadata = JSON.parse(fs.readFileSync('./src/load_test_sc/metadata.json').toString('utf-8'));71 const metadata = JSON.parse(fs.readFileSync('./src/load_test_sc/metadata.json').toString('utf-8'));73 const abi = new Abi(metadata);72 const abi = new Abi(metadata);747375 const deployer = await prepareDeployer(api);74 const deployer = await prepareDeployer(api, privateKeyWrapper);767577 const wasm = fs.readFileSync('./src/load_test_sc/loadtester.wasm');76 const wasm = fs.readFileSync('./src/load_test_sc/loadtester.wasm');7877123 await usingApi(async (api, privateKeyWrapper) => {122 await usingApi(async (api, privateKeyWrapper) => {124123125 // Deploy smart contract124 // Deploy smart contract126 const [contract, deployer] = await deployLoadTester(api);125 const [contract, deployer] = await deployLoadTester(api, privateKeyWrapper);127126128 // Fill smart contract up with data127 // Fill smart contract up with data129 const bob = privateKeyWrapper('//Bob');128 const bob = privateKeyWrapper('//Bob');tests/src/scheduler.test.tsdiffbeforeafterboth161617import chai, {expect} from 'chai';17import chai, {expect} from 'chai';18import chaiAsPromised from 'chai-as-promised';18import chaiAsPromised from 'chai-as-promised';19import privateKey from './substrate/privateKey';20import {19import {21 default as usingApi, 20 default as usingApi, 22 submitTransactionAsync,21 submitTransactionAsync,52 let scheduledIdSlider: number;51 let scheduledIdSlider: number;535254 before(async() => {53 before(async() => {55 await usingApi(async () => {54 await usingApi(async (api, privateKeyWrapper) => {56 alice = privateKey('//Alice');55 alice = privateKeyWrapper('//Alice');57 bob = privateKey('//Bob');56 bob = privateKeyWrapper('//Bob');58 });57 });595860 scheduledIdBase = '0x' + '0'.repeat(31);59 scheduledIdBase = '0x' + '0'.repeat(31);116 });115 });117116118 it('Schedules and dispatches a transaction even if the caller has no funds at the time of the dispatch', async () => {117 it('Schedules and dispatches a transaction even if the caller has no funds at the time of the dispatch', async () => {119 await usingApi(async (api) => {118 await usingApi(async (api, privateKeyWrapper) => {120 // Find an empty, unused account119 // Find an empty, unused account121 const zeroBalance = await findUnusedAddress(api);120 const zeroBalance = await findUnusedAddress(api, privateKeyWrapper);122121123 const collectionId = await createCollectionExpectSuccess();122 const collectionId = await createCollectionExpectSuccess();124123156 it('Sponsor going bankrupt does not impact a scheduled transaction', async () => {155 it('Sponsor going bankrupt does not impact a scheduled transaction', async () => {157 const collectionId = await createCollectionExpectSuccess();156 const collectionId = await createCollectionExpectSuccess();158157159 await usingApi(async (api) => {158 await usingApi(async (api, privateKeyWrapper) => {160 const zeroBalance = await findUnusedAddress(api);159 const zeroBalance = await findUnusedAddress(api, privateKeyWrapper);161 const balanceTx = api.tx.balances.transfer(zeroBalance.address, 1n * UNIQUE);160 const balanceTx = api.tx.balances.transfer(zeroBalance.address, 1n * UNIQUE);162 await submitTransactionAsync(alice, balanceTx);161 await submitTransactionAsync(alice, balanceTx);163162186 await setCollectionSponsorExpectSuccess(collectionId, bob.address);185 await setCollectionSponsorExpectSuccess(collectionId, bob.address);187 await confirmSponsorshipExpectSuccess(collectionId, '//Bob');186 await confirmSponsorshipExpectSuccess(collectionId, '//Bob');188187189 await usingApi(async (api) => {188 await usingApi(async (api, privateKeyWrapper) => {190 const zeroBalance = await findUnusedAddress(api);189 const zeroBalance = await findUnusedAddress(api, privateKeyWrapper);191190192 await enablePublicMintingExpectSuccess(alice, collectionId);191 await enablePublicMintingExpectSuccess(alice, collectionId);193 await addToAllowListExpectSuccess(alice, collectionId, zeroBalance.address);192 await addToAllowListExpectSuccess(alice, collectionId, zeroBalance.address);tests/src/setCollectionLimits.test.tsdiffbeforeafterboth15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.161617// https://unique-network.readthedocs.io/en/latest/jsapi.html#setchainlimits17// https://unique-network.readthedocs.io/en/latest/jsapi.html#setchainlimits18import {ApiPromise, Keyring} from '@polkadot/api';18import {ApiPromise} from '@polkadot/api';19import {IKeyringPair} from '@polkadot/types/types';19import {IKeyringPair} from '@polkadot/types/types';20import chai from 'chai';20import chai from 'chai';21import chaiAsPromised from 'chai-as-promised';21import chaiAsPromised from 'chai-as-promised';44describe('setCollectionLimits positive', () => {44describe('setCollectionLimits positive', () => {45 let tx;45 let tx;46 before(async () => {46 before(async () => {47 await usingApi(async () => {47 await usingApi(async (api, privateKeyWrapper) => {48 const keyring = new Keyring({type: 'sr25519'});49 alice = keyring.addFromUri('//Alice');48 alice = privateKeyWrapper('//Alice');50 collectionIdForTesting = await createCollectionExpectSuccess({name: 'A', description: 'B', tokenPrefix: 'C', mode: {type: 'NFT'}});49 collectionIdForTesting = await createCollectionExpectSuccess({name: 'A', description: 'B', tokenPrefix: 'C', mode: {type: 'NFT'}});51 });50 });52 });51 });121describe('setCollectionLimits negative', () => {120describe('setCollectionLimits negative', () => {122 let tx;121 let tx;123 before(async () => {122 before(async () => {124 await usingApi(async () => {123 await usingApi(async (api, privateKeyWrapper) => {125 const keyring = new Keyring({type: 'sr25519'});126 alice = keyring.addFromUri('//Alice');124 alice = privateKeyWrapper('//Alice');127 bob = keyring.addFromUri('//Bob');125 bob = privateKeyWrapper('//Bob');128 collectionIdForTesting = await createCollectionExpectSuccess({name: 'A', description: 'B', tokenPrefix: 'C', mode: {type: 'NFT'}});126 collectionIdForTesting = await createCollectionExpectSuccess({name: 'A', description: 'B', tokenPrefix: 'C', mode: {type: 'NFT'}});129 });127 });130 });128 });tests/src/setCollectionSponsor.test.tsdiffbeforeafterboth24 addCollectionAdminExpectSuccess,24 addCollectionAdminExpectSuccess,25 getCreatedCollectionCount,25 getCreatedCollectionCount,26} from './util/helpers';26} from './util/helpers';27import {Keyring} from '@polkadot/api';28import {IKeyringPair} from '@polkadot/types/types';27import {IKeyringPair} from '@polkadot/types/types';292830chai.use(chaiAsPromised);29chai.use(chaiAsPromised);36describe('integration test: ext. setCollectionSponsor():', () => {35describe('integration test: ext. setCollectionSponsor():', () => {373638 before(async () => {37 before(async () => {39 await usingApi(async () => {38 await usingApi(async (api, privateKeyWrapper) => {40 const keyring = new Keyring({type: 'sr25519'});39 alice = privateKeyWrapper('//Alice');41 alice = keyring.addFromUri('//Alice');40 bob = privateKeyWrapper('//Bob');42 bob = keyring.addFromUri('//Bob');41 charlie = privateKeyWrapper('//Charlie');43 });42 });44 });43 });454464 it('Replace collection sponsor', async () => {63 it('Replace collection sponsor', async () => {65 const collectionId = await createCollectionExpectSuccess();64 const collectionId = await createCollectionExpectSuccess();6667 const keyring = new Keyring({type: 'sr25519'});68 const charlie = keyring.addFromUri('//Charlie');69 await setCollectionSponsorExpectSuccess(collectionId, bob.address);65 await setCollectionSponsorExpectSuccess(collectionId, bob.address);70 await setCollectionSponsorExpectSuccess(collectionId, charlie.address);66 await setCollectionSponsorExpectSuccess(collectionId, charlie.address);71 });67 });72});68});736974describe('(!negative test!) integration test: ext. setCollectionSponsor():', () => {70describe('(!negative test!) integration test: ext. setCollectionSponsor():', () => {75 before(async () => {71 before(async () => {76 await usingApi(async () => {72 await usingApi(async (api, privateKeyWrapper) => {77 const keyring = new Keyring({type: 'sr25519'});78 alice = keyring.addFromUri('//Alice');73 alice = privateKeyWrapper('//Alice');79 bob = keyring.addFromUri('//Bob');74 bob = privateKeyWrapper('//Bob');80 charlie = keyring.addFromUri('//Charlie');75 charlie = privateKeyWrapper('//Charlie');81 });76 });82 });77 });8378tests/src/setContractSponsoringRateLimit.test.tsdiffbeforeafterboth272728describe.skip('Integration Test setContractSponsoringRateLimit', () => {28describe.skip('Integration Test setContractSponsoringRateLimit', () => {29 it('ensure sponsored contract can\'t be called twice without pause for free', async () => {29 it('ensure sponsored contract can\'t be called twice without pause for free', async () => {30 await usingApi(async (api) => {30 await usingApi(async (api, privateKeyWrapper) => {31 const user = await findUnusedAddress(api);31 const user = await findUnusedAddress(api, privateKeyWrapper);323233 const [flipper, deployer] = await deployFlipper(api);33 const [flipper, deployer] = await deployFlipper(api, privateKeyWrapper);34 await enableContractSponsoringExpectSuccess(deployer, flipper.address, true);34 await enableContractSponsoringExpectSuccess(deployer, flipper.address, true);35 await setContractSponsoringRateLimitExpectSuccess(deployer, flipper.address, 10);35 await setContractSponsoringRateLimitExpectSuccess(deployer, flipper.address, 10);36 await toggleFlipValueExpectSuccess(user, flipper);36 await toggleFlipValueExpectSuccess(user, flipper);39 });39 });404041 it('ensure sponsored contract can be called twice with pause for free', async () => {41 it('ensure sponsored contract can be called twice with pause for free', async () => {42 await usingApi(async (api) => {42 await usingApi(async (api, privateKeyWrapper) => {43 const user = await findUnusedAddress(api);43 const user = await findUnusedAddress(api, privateKeyWrapper);444445 const [flipper, deployer] = await deployFlipper(api);45 const [flipper, deployer] = await deployFlipper(api, privateKeyWrapper);46 await enableContractSponsoringExpectSuccess(deployer, flipper.address, true);46 await enableContractSponsoringExpectSuccess(deployer, flipper.address, true);47 await setContractSponsoringRateLimitExpectSuccess(deployer, flipper.address, 1);47 await setContractSponsoringRateLimitExpectSuccess(deployer, flipper.address, 1);48 await toggleFlipValueExpectSuccess(user, flipper);48 await toggleFlipValueExpectSuccess(user, flipper);62 });62 });636364 it('fails when called for non-contract address', async () => {64 it('fails when called for non-contract address', async () => {65 await usingApi(async (api) => {65 await usingApi(async (api, privateKeyWrapper) => {66 const user = await findUnusedAddress(api);66 const user = await findUnusedAddress(api, privateKeyWrapper);676768 await setContractSponsoringRateLimitExpectFailure(alice, user.address, 1);68 await setContractSponsoringRateLimitExpectFailure(alice, user.address, 1);69 });69 });70 });70 });717172 it('fails when called by non-owning user', async () => {72 it('fails when called by non-owning user', async () => {73 await usingApi(async (api) => {73 await usingApi(async (api, privateKeyWrapper) => {74 const [flipper] = await deployFlipper(api);74 const [flipper] = await deployFlipper(api, privateKeyWrapper);757576 await setContractSponsoringRateLimitExpectFailure(alice, flipper.address, 1);76 await setContractSponsoringRateLimitExpectFailure(alice, flipper.address, 1);77 });77 });tests/src/substrate/substrate-api.tsdiffbeforeafterboth42 },42 },43 rpc: {43 rpc: {44 unique: defs.unique.rpc,44 unique: defs.unique.rpc,45 // TODO free RMRK! rmrk: defs.rmrk.rpc,45 rmrk: defs.rmrk.rpc,46 eth: {46 eth: {47 feeHistory: {47 feeHistory: {48 description: 'Dummy',48 description: 'Dummy',88 await promisifySubstrate(api, async () => {88 await promisifySubstrate(api, async () => {89 if (api) {89 if (api) {90 await api.isReadyOrError;90 await api.isReadyOrError;91 const ss58Format = (api.registry.getChainProperties())!.toHuman().ss58Format;91 const ss58Format = (api.registry.getChainProperties())!.toJSON().ss58Format;92 const privateKeyWrapper = (account: string) => privateKey(account, Number(ss58Format));92 const privateKeyWrapper = (account: string) => privateKey(account, Number(ss58Format));93 result = await action(api, privateKeyWrapper);93 result = await action(api, privateKeyWrapper);94 }94 }tests/src/toggleContractAllowList.test.tsdiffbeforeafterboth34describe.skip('Integration Test toggleContractAllowList', () => {34describe.skip('Integration Test toggleContractAllowList', () => {353536 it('Enable allow list contract mode', async () => {36 it('Enable allow list contract mode', async () => {37 await usingApi(async api => {37 await usingApi(async (api, privateKeyWrapper) => {38 const [contract, deployer] = await deployFlipper(api);38 const [contract, deployer] = await deployFlipper(api, privateKeyWrapper);393940 const enabledBefore = (await api.query.unique.contractAllowListEnabled(contract.address)).toJSON();40 const enabledBefore = (await api.query.unique.contractAllowListEnabled(contract.address)).toJSON();41 const enableAllowListTx = api.tx.unique.toggleContractAllowList(contract.address, true);41 const enableAllowListTx = api.tx.unique.toggleContractAllowList(contract.address, true);52 await usingApi(async (api, privateKeyWrapper) => {52 await usingApi(async (api, privateKeyWrapper) => {53 const bob = privateKeyWrapper('//Bob');53 const bob = privateKeyWrapper('//Bob');545455 const [contract, deployer] = await deployFlipper(api);55 const [contract, deployer] = await deployFlipper(api, privateKeyWrapper);565657 let flipValueBefore = await getFlipValue(contract, deployer);57 let flipValueBefore = await getFlipValue(contract, deployer);58 const flip = contract.tx.flip(value, gasLimit);58 const flip = contract.tx.flip(value, gasLimit);111 });111 });112112113 it('Enabling allow list repeatedly should not produce errors', async () => {113 it('Enabling allow list repeatedly should not produce errors', async () => {114 await usingApi(async api => {114 await usingApi(async (api, privateKeyWrapper) => {115 const [contract, deployer] = await deployFlipper(api);115 const [contract, deployer] = await deployFlipper(api, privateKeyWrapper);116116117 const enabledBefore = (await api.query.unique.contractAllowListEnabled(contract.address)).toJSON();117 const enabledBefore = (await api.query.unique.contractAllowListEnabled(contract.address)).toJSON();118 const enableAllowListTx = api.tx.unique.toggleContractAllowList(contract.address, true);118 const enableAllowListTx = api.tx.unique.toggleContractAllowList(contract.address, true);151 it('Enable allow list using a non-owner address', async () => {151 it('Enable allow list using a non-owner address', async () => {152 await usingApi(async (api, privateKeyWrapper) => {152 await usingApi(async (api, privateKeyWrapper) => {153 const bob = privateKeyWrapper('//Bob');153 const bob = privateKeyWrapper('//Bob');154 const [contract] = await deployFlipper(api);154 const [contract] = await deployFlipper(api, privateKeyWrapper);155155156 const enabledBefore = (await api.query.unique.contractAllowListEnabled(contract.address)).toJSON();156 const enabledBefore = (await api.query.unique.contractAllowListEnabled(contract.address)).toJSON();157 const enableAllowListTx = api.tx.unique.toggleContractAllowList(contract.address, true);157 const enableAllowListTx = api.tx.unique.toggleContractAllowList(contract.address, true);tests/src/transfer.test.tsdiffbeforeafterboth17import {ApiPromise} from '@polkadot/api';17import {ApiPromise} from '@polkadot/api';18import {IKeyringPair} from '@polkadot/types/types';18import {IKeyringPair} from '@polkadot/types/types';19import {expect} from 'chai';19import {expect} from 'chai';20import {alicesPublicKey, bobsPublicKey} from './accounts';21import getBalance from './substrate/get-balance';20import getBalance from './substrate/get-balance';22import {default as usingApi, submitTransactionAsync} from './substrate/substrate-api';21import {default as usingApi, submitTransactionAsync} from './substrate/substrate-api';23import {22import {47let charlie: IKeyringPair;46let charlie: IKeyringPair;484749describe('Integration Test Transfer(recipient, collection_id, item_id, value)', () => {48describe('Integration Test Transfer(recipient, collection_id, item_id, value)', () => {49 before(async () => {50 await usingApi(async (api, privateKeyWrapper) => {51 alice = privateKeyWrapper('//Alice');52 bob = privateKeyWrapper('//Bob');53 });54 });55 50 it('Balance transfers and check balance', async () => {56 it('Balance transfers and check balance', async () => {51 await usingApi(async (api, privateKeyWrapper) => {57 await usingApi(async (api, privateKeyWrapper) => {52 const [alicesBalanceBefore, bobsBalanceBefore] = await getBalance(api, [alicesPublicKey, bobsPublicKey]);58 const [alicesBalanceBefore, bobsBalanceBefore] = await getBalance(api, [alice.address, bob.address]);5354 const alicePrivateKey = privateKeyWrapper('//Alice');555956 const transfer = api.tx.balances.transfer(bobsPublicKey, 1n);60 const transfer = api.tx.balances.transfer(bob.address, 1n);57 const events = await submitTransactionAsync(alicePrivateKey, transfer);61 const events = await submitTransactionAsync(alice, transfer);58 const result = getCreateItemResult(events);62 const result = getCreateItemResult(events);59 // tslint:disable-next-line:no-unused-expression63 // tslint:disable-next-line:no-unused-expression60 expect(result.success).to.be.true;64 expect(result.success).to.be.true;616562 const [alicesBalanceAfter, bobsBalanceAfter] = await getBalance(api, [alicesPublicKey, bobsPublicKey]);66 const [alicesBalanceAfter, bobsBalanceAfter] = await getBalance(api, [alice.address, bob.address]);636764 // tslint:disable-next-line:no-unused-expression68 // tslint:disable-next-line:no-unused-expression65 expect(alicesBalanceAfter < alicesBalanceBefore).to.be.true;69 expect(alicesBalanceAfter < alicesBalanceBefore).to.be.true;69 });73 });707471 it('Inability to pay fees error message is correct', async () => {75 it('Inability to pay fees error message is correct', async () => {72 await usingApi(async (api) => {76 await usingApi(async (api, privateKeyWrapper) => {73 // Find unused address77 // Find unused address74 const pk = await findUnusedAddress(api);78 const pk = await findUnusedAddress(api, privateKeyWrapper);757976 const badTransfer = api.tx.balances.transfer(bobsPublicKey, 1n);80 const badTransfer = api.tx.balances.transfer(bob.address, 1n);77 // const events = await submitTransactionAsync(pk, badTransfer);81 // const events = await submitTransactionAsync(pk, badTransfer);78 const badTransaction = async () => {82 const badTransaction = async () => {79 const events = await submitTransactionAsync(pk, badTransfer);83 const events = await submitTransactionAsync(pk, badTransfer);879188 it('User can transfer owned token', async () => {92 it('User can transfer owned token', async () => {89 await usingApi(async (api, privateKeyWrapper) => {93 await usingApi(async (api, privateKeyWrapper) => {90 const alice = privateKeyWrapper('//Alice');91 const bob = privateKeyWrapper('//Bob');92 // nft94 // nft93 const nftCollectionId = await createCollectionExpectSuccess();95 const nftCollectionId = await createCollectionExpectSuccess();94 const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT');96 const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT');114116115 it('Collection admin can transfer owned token', async () => {117 it('Collection admin can transfer owned token', async () => {116 await usingApi(async (api, privateKeyWrapper) => {118 await usingApi(async (api, privateKeyWrapper) => {117 const alice = privateKeyWrapper('//Alice');118 const bob = privateKeyWrapper('//Bob');119 // nft119 // nft120 const nftCollectionId = await createCollectionExpectSuccess();120 const nftCollectionId = await createCollectionExpectSuccess();121 await addCollectionAdminExpectSuccess(alice, nftCollectionId, bob.address);121 await addCollectionAdminExpectSuccess(alice, nftCollectionId, bob.address);316describe('Transfers to self (potentially over substrate-evm boundary)', () => {316describe('Transfers to self (potentially over substrate-evm boundary)', () => {317 itWeb3('Transfers to self. In case of same frontend', async ({api, privateKeyWrapper}) => {317 itWeb3('Transfers to self. In case of same frontend', async ({api, privateKeyWrapper}) => {318 const collectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});318 const collectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});319 const alice = privateKeyWrapper('//Alice');320 const aliceProxy = subToEth(alice.address);319 const aliceProxy = subToEth(alice.address);321 const tokenId = await createItemExpectSuccess(alice, collectionId, 'Fungible', {Substrate: alice.address});320 const tokenId = await createItemExpectSuccess(alice, collectionId, 'Fungible', {Substrate: alice.address});322 await transferExpectSuccess(collectionId, tokenId, alice, {Ethereum: aliceProxy}, 10, 'Fungible');321 await transferExpectSuccess(collectionId, tokenId, alice, {Ethereum: aliceProxy}, 10, 'Fungible');328327329 itWeb3('Transfers to self. In case of substrate-evm boundary', async ({api, privateKeyWrapper}) => {328 itWeb3('Transfers to self. In case of substrate-evm boundary', async ({api, privateKeyWrapper}) => {330 const collectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});329 const collectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});331 const alice = privateKeyWrapper('//Alice');332 const aliceProxy = subToEth(alice.address);330 const aliceProxy = subToEth(alice.address);333 const tokenId = await createItemExpectSuccess(alice, collectionId, 'Fungible', {Substrate: alice.address});331 const tokenId = await createItemExpectSuccess(alice, collectionId, 'Fungible', {Substrate: alice.address});334 const balanceAliceBefore = await getTokenBalance(api, collectionId, normalizeAccountId(alice), tokenId);332 const balanceAliceBefore = await getTokenBalance(api, collectionId, normalizeAccountId(alice), tokenId);340338341 itWeb3('Transfers to self. In case of inside substrate-evm', async ({api, privateKeyWrapper}) => {339 itWeb3('Transfers to self. In case of inside substrate-evm', async ({api, privateKeyWrapper}) => {342 const collectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});340 const collectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});343 const alice = privateKeyWrapper('//Alice');344 const tokenId = await createItemExpectSuccess(alice, collectionId, 'Fungible', {Substrate: alice.address});341 const tokenId = await createItemExpectSuccess(alice, collectionId, 'Fungible', {Substrate: alice.address});345 const balanceAliceBefore = await getTokenBalance(api, collectionId, normalizeAccountId(alice), tokenId);342 const balanceAliceBefore = await getTokenBalance(api, collectionId, normalizeAccountId(alice), tokenId);346 await transferExpectSuccess(collectionId, tokenId, alice, alice , 10, 'Fungible');343 await transferExpectSuccess(collectionId, tokenId, alice, alice , 10, 'Fungible');351348352 itWeb3('Transfers to self. In case of inside substrate-evm when not enought "Fungibles"', async ({api, privateKeyWrapper}) => {349 itWeb3('Transfers to self. In case of inside substrate-evm when not enought "Fungibles"', async ({api, privateKeyWrapper}) => {353 const collectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});350 const collectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}});354 const alice = privateKeyWrapper('//Alice');355 const tokenId = await createItemExpectSuccess(alice, collectionId, 'Fungible', {Substrate: alice.address});351 const tokenId = await createItemExpectSuccess(alice, collectionId, 'Fungible', {Substrate: alice.address});356 const balanceAliceBefore = await getTokenBalance(api, collectionId, normalizeAccountId(alice), tokenId);352 const balanceAliceBefore = await getTokenBalance(api, collectionId, normalizeAccountId(alice), tokenId);357 await transferExpectFailure(collectionId, tokenId, alice, alice , 11);353 await transferExpectFailure(collectionId, tokenId, alice, alice , 11);tests/src/util/contracthelpers.tsdiffbeforeafterboth20import fs from 'fs';20import fs from 'fs';21import {Abi, CodePromise, ContractPromise as Contract} from '@polkadot/api-contract';21import {Abi, CodePromise, ContractPromise as Contract} from '@polkadot/api-contract';22import {IKeyringPair} from '@polkadot/types/types';22import {IKeyringPair} from '@polkadot/types/types';23import {ApiPromise, Keyring} from '@polkadot/api';23import {ApiPromise} from '@polkadot/api';242425chai.use(chaiAsPromised);25chai.use(chaiAsPromised);26const expect = chai.expect;26const expect = chai.expect;45 });45 });46}46}474748async function prepareDeployer(api: ApiPromise) {48async function prepareDeployer(api: ApiPromise, privateKeyWrapper: (account: string) => IKeyringPair) {49 // Find unused address49 // Find unused address50 const deployer = await findUnusedAddress(api);50 const deployer = await findUnusedAddress(api, privateKeyWrapper);515152 // Transfer balance to it52 // Transfer balance to it53 const keyring = new Keyring({type: 'sr25519'});54 const alice = keyring.addFromUri('//Alice');53 const alice = privateKeyWrapper('//Alice');55 const amount = BigInt(endowment) + 10n**15n;54 const amount = BigInt(endowment) + 10n**15n;56 const tx = api.tx.balances.transfer(deployer.address, amount);55 const tx = api.tx.balances.transfer(deployer.address, amount);57 await submitTransactionAsync(alice, tx);56 await submitTransactionAsync(alice, tx);585759 return deployer;58 return deployer;60}59}616062export async function deployFlipper(api: ApiPromise): Promise<[Contract, IKeyringPair]> {61export async function deployFlipper(api: ApiPromise, privateKeyWrapper: (account: string) => IKeyringPair): Promise<[Contract, IKeyringPair]> {63 const metadata = JSON.parse(fs.readFileSync('./src/flipper/metadata.json').toString('utf-8'));62 const metadata = JSON.parse(fs.readFileSync('./src/flipper/metadata.json').toString('utf-8'));64 const abi = new Abi(metadata);63 const abi = new Abi(metadata);656466 const deployer = await prepareDeployer(api);65 const deployer = await prepareDeployer(api, privateKeyWrapper);676668 const wasm = fs.readFileSync('./src/flipper/flipper.wasm');67 const wasm = fs.readFileSync('./src/flipper/flipper.wasm');696899 await expect(submitTransactionExpectFailAsync(sender, tx)).to.be.rejected;98 await expect(submitTransactionExpectFailAsync(sender, tx)).to.be.rejected;100}99}101100102export async function deployTransferContract(api: ApiPromise): Promise<[Contract, IKeyringPair]> {101export async function deployTransferContract(api: ApiPromise, privateKeyWrapper: (account: string) => IKeyringPair): Promise<[Contract, IKeyringPair]> {103 const metadata = JSON.parse(fs.readFileSync('./src/transfer_contract/metadata.json').toString('utf-8'));102 const metadata = JSON.parse(fs.readFileSync('./src/transfer_contract/metadata.json').toString('utf-8'));104 const abi = new Abi(metadata);103 const abi = new Abi(metadata);105104106 const deployer = await prepareDeployer(api);105 const deployer = await prepareDeployer(api, privateKeyWrapper);107106108 const wasm = fs.readFileSync('./src/transfer_contract/nft_transfer.wasm');107 const wasm = fs.readFileSync('./src/transfer_contract/nft_transfer.wasm');109108tests/src/util/helpers.tsdiffbeforeafterboth161617import '../interfaces/augment-api-rpc';17import '../interfaces/augment-api-rpc';18import '../interfaces/augment-api-query';18import '../interfaces/augment-api-query';19import {ApiPromise, Keyring} from '@polkadot/api';19import {ApiPromise} from '@polkadot/api';20import type {AccountId, EventRecord, Event} from '@polkadot/types/interfaces';20import type {AccountId, EventRecord, Event} from '@polkadot/types/interfaces';21import type {GenericEventData} from '@polkadot/types';21import {AnyTuple, IEvent, IKeyringPair} from '@polkadot/types/types';22import {AnyTuple, IEvent, IKeyringPair} from '@polkadot/types/types';22import {evmToAddress} from '@polkadot/util-crypto';23import {evmToAddress} from '@polkadot/util-crypto';23import BN from 'bn.js';24import BN from 'bn.js';24import chai from 'chai';25import chai from 'chai';25import chaiAsPromised from 'chai-as-promised';26import chaiAsPromised from 'chai-as-promised';26import {alicesPublicKey} from '../accounts';27import {default as usingApi, executeTransaction, submitTransactionAsync, submitTransactionExpectFailAsync} from '../substrate/substrate-api';27import {default as usingApi, executeTransaction, submitTransactionAsync, submitTransactionExpectFailAsync} from '../substrate/substrate-api';28import {hexToStr, strToUTF16, utf16ToStr} from './util';28import {hexToStr, strToUTF16, utf16ToStr} from './util';29import {UpDataStructsRpcCollection, UpDataStructsCreateItemData, UpDataStructsProperty} from '@polkadot/types/lookup';29import {UpDataStructsRpcCollection, UpDataStructsCreateItemData, UpDataStructsProperty} from '@polkadot/types/lookup';404041export function normalizeAccountId(input: string | AccountId | CrossAccountId | IKeyringPair): CrossAccountId {41export function normalizeAccountId(input: string | AccountId | CrossAccountId | IKeyringPair): CrossAccountId {42 if (typeof input === 'string') {42 if (typeof input === 'string') {43 if (input.length === 48 || input.length === 47) {43 if (input.length >= 47) {44 return {Substrate: input};44 return {Substrate: input};45 } else if (input.length === 42 && input.startsWith('0x')) {45 } else if (input.length === 42 && input.startsWith('0x')) {46 return {Ethereum: input.toLowerCase()};46 return {Ethereum: input.toLowerCase()};88const CENTIUNIQUE = 10n * MILLIUNIQUE;88const CENTIUNIQUE = 10n * MILLIUNIQUE;89export const UNIQUE = 100n * CENTIUNIQUE;89export const UNIQUE = 100n * CENTIUNIQUE;909091type GenericResult = {91interface GenericResult<T> {92 success: boolean,92 success: boolean;93 data: T | null;93};94}949595interface CreateCollectionResult {96interface CreateCollectionResult {96 success: boolean;97 success: boolean;170 return event.event as T;171 return event.event as T;171}172}172173174export function getGenericResult<T>(events: EventRecord[]): GenericResult<T>;173export function getGenericResult(events: EventRecord[]): GenericResult {175export function getGenericResult<T>(176 events: EventRecord[],177 expectSection: string,174 const result: GenericResult = {178 expectMethod: string,175 success: false,176 };177 events.forEach(({event: {method}}) => {179 extractAction: (data: GenericEventData) => T178 // console.log(` ${phase}: ${section}.${method}:: ${data}`);180): GenericResult<T>;179 if (method === 'ExtrinsicSuccess') {180 result.success = true;181 }182 });183 return result;184}185186187181188export function getCreateCollectionResult(events: EventRecord[]): CreateCollectionResult {182export function getGenericResult<T>(183 events: EventRecord[],184 expectSection?: string,185 expectMethod?: string,186 extractAction?: (data: GenericEventData) => T,187): GenericResult<T> {189 let success = false;188 let success = false;190 let collectionId = 0;189 let successData = null;190191 events.forEach(({event: {data, method, section}}) => {191 events.forEach(({event: {data, method, section}}) => {192 // console.log(` ${phase}: ${section}.${method}:: ${data}`);192 // console.log(` ${phase}: ${section}.${method}:: ${data}`);193 if (method == 'ExtrinsicSuccess') {193 if (method === 'ExtrinsicSuccess') {194 success = true;194 success = true;195 } else if ((section == 'common') && (method == 'CollectionCreated')) {195 } else if ((expectSection == section) && (expectMethod == method)) {196 collectionId = parseInt(data[0].toString(), 10);196 successData = extractAction!(data);197 }197 }198 });198 });199199 const result: CreateCollectionResult = {200 const result: GenericResult<T> = {200 success,201 success,201 collectionId,202 data: successData,202 };203 };203 return result;204 return result;204}205}206207export function getCreateCollectionResult(events: EventRecord[]): CreateCollectionResult {208 const genericResult = getGenericResult(events, 'common', 'CollectionCreated', (data) => parseInt(data[0].toString(), 10));209 const result: CreateCollectionResult = {210 success: genericResult.success,211 collectionId: genericResult.data ?? 0,212 };213 return result;214}205215206export function getCreateItemsResult(events: EventRecord[]): CreateItemResult[] {216export function getCreateItemsResult(events: EventRecord[]): CreateItemResult[] {207 let success = false;208 let collectionId = 0;209 let itemId = 0;210 let recipient;211212 const results : CreateItemResult[] = [];217 const results: CreateItemResult[] = [];213218 214 events.forEach(({event: {data, method, section}}) => {219 const genericResult = getGenericResult<CreateItemResult[]>(events, 'common', 'ItemCreated', (data) => {215 // console.log(` ${phase}: ${section}.${method}:: ${data}`);216 if (method == 'ExtrinsicSuccess') {217 success = true;218 } else if ((section == 'common') && (method == 'ItemCreated')) {219 collectionId = parseInt(data[0].toString(), 10);220 const collectionId = parseInt(data[0].toString(), 10);220 itemId = parseInt(data[1].toString(), 10);221 const itemId = parseInt(data[1].toString(), 10);221 recipient = normalizeAccountId(data[2].toJSON() as any);222 const recipient = normalizeAccountId(data[2].toJSON() as any);222223223 const itemRes: CreateItemResult = {224 const itemRes: CreateItemResult = {224 success,225 success: true,225 collectionId,226 collectionId,226 itemId,227 itemId,227 recipient,228 recipient,228 };229 };229230230 results.push(itemRes);231 results.push(itemRes);231 }232 return results;232 });233 });233234235 if (!genericResult.success) return [];234 return results;236 return results;235}237}236238237export function getCreateItemResult(events: EventRecord[]): CreateItemResult {239export function getCreateItemResult(events: EventRecord[]): CreateItemResult {238 let success = false;239 let collectionId = 0;240 let itemId = 0;241 let recipient;242 events.forEach(({event: {data, method, section}}) => {240 const genericResult = getGenericResult<[number, number, CrossAccountId?]>(events, 'common', 'ItemCreated', (data) => [243 // console.log(` ${phase}: ${section}.${method}:: ${data}`);244 if (method == 'ExtrinsicSuccess') {245 success = true;246 } else if ((section == 'common') && (method == 'ItemCreated')) {247 collectionId = parseInt(data[0].toString(), 10);241 parseInt(data[0].toString(), 10),248 itemId = parseInt(data[1].toString(), 10);242 parseInt(data[1].toString(), 10),249 recipient = normalizeAccountId(data[2].toJSON() as any);243 normalizeAccountId(data[2].toJSON() as any),250 }251 });244 ]);245246 if (genericResult.data == null) genericResult.data = [0, 0];247252 const result: CreateItemResult = {248 const result: CreateItemResult = {253 success,249 success: genericResult.success,254 collectionId,250 collectionId: genericResult.data[0],255 itemId,251 itemId: genericResult.data[1],256 recipient,252 recipient: genericResult.data![2],257 };253 };254 258 return result;255 return result;363 // tslint:disable-next-line:no-unused-expression360 // tslint:disable-next-line:no-unused-expression364 expect(collection).to.be.not.null;361 expect(collection).to.be.not.null;365 expect(collectionCountAfter).to.be.equal(collectionCountBefore + 1, 'Error: NFT collection NOT created.');362 expect(collectionCountAfter).to.be.equal(collectionCountBefore + 1, 'Error: NFT collection NOT created.');366 expect(collection.owner.toString()).to.be.equal(toSubstrateAddress(alicesPublicKey));363 expect(collection.owner.toString()).to.be.equal(toSubstrateAddress(alicePrivateKey));367 expect(utf16ToStr(collection.name.toJSON() as any)).to.be.equal(name);364 expect(utf16ToStr(collection.name.toJSON() as any)).to.be.equal(name);368 expect(utf16ToStr(collection.description.toJSON() as any)).to.be.equal(description);365 expect(utf16ToStr(collection.description.toJSON() as any)).to.be.equal(description);369 expect(hexToStr(collection.tokenPrefix.toJSON())).to.be.equal(tokenPrefix);366 expect(hexToStr(collection.tokenPrefix.toJSON())).to.be.equal(tokenPrefix);411 // tslint:disable-next-line:no-unused-expression408 // tslint:disable-next-line:no-unused-expression412 expect(collection).to.be.not.null;409 expect(collection).to.be.not.null;413 expect(collectionCountAfter).to.be.equal(collectionCountBefore + 1, 'Error: NFT collection NOT created.');410 expect(collectionCountAfter).to.be.equal(collectionCountBefore + 1, 'Error: NFT collection NOT created.');414 expect(collection.owner.toString()).to.be.equal(toSubstrateAddress(alicesPublicKey));411 expect(collection.owner.toString()).to.be.equal(toSubstrateAddress(alicePrivateKey));415 expect(utf16ToStr(collection.name.toJSON() as any)).to.be.equal(name);412 expect(utf16ToStr(collection.name.toJSON() as any)).to.be.equal(name);416 expect(utf16ToStr(collection.description.toJSON() as any)).to.be.equal(description);413 expect(utf16ToStr(collection.description.toJSON() as any)).to.be.equal(description);417 expect(hexToStr(collection.tokenPrefix.toJSON())).to.be.equal(tokenPrefix);414 expect(hexToStr(collection.tokenPrefix.toJSON())).to.be.equal(tokenPrefix);482 });479 });483}480}484481485export async function findUnusedAddress(api: ApiPromise, seedAddition = ''): Promise<IKeyringPair> {482export async function findUnusedAddress(api: ApiPromise, privateKeyWrapper: (account: string) => IKeyringPair, seedAddition = ''): Promise<IKeyringPair> {486 let bal = 0n;483 let bal = 0n;487 let unused;484 let unused;488 do {485 do {489 const randomSeed = 'seed' + Math.floor(Math.random() * Math.floor(10000)) + seedAddition;486 const randomSeed = 'seed' + Math.floor(Math.random() * Math.floor(10000)) + seedAddition;490 const keyring = new Keyring({type: 'sr25519'});491 unused = keyring.addFromUri(`//${randomSeed}`);487 unused = privateKeyWrapper(`//${randomSeed}`);492 bal = (await api.query.system.account(unused.address)).data.free.toBigInt();488 bal = (await api.query.system.account(unused.address)).data.free.toBigInt();493 } while (bal !== 0n);489 } while (bal !== 0n);494 return unused;490 return unused;498 return (await api.rpc.unique.allowance(collectionId, normalizeAccountId(owner), normalizeAccountId(approved), tokenId)).toBigInt();494 return (await api.rpc.unique.allowance(collectionId, normalizeAccountId(owner), normalizeAccountId(approved), tokenId)).toBigInt();499}495}500496501export function findUnusedAddresses(api: ApiPromise, amount: number): Promise<IKeyringPair[]> {497export function findUnusedAddresses(api: ApiPromise, privateKeyWrapper: (account: string) => IKeyringPair, amount: number): Promise<IKeyringPair[]> {502 return Promise.all(new Array(amount).fill(null).map(() => findUnusedAddress(api, '_' + Date.now())));498 return Promise.all(new Array(amount).fill(null).map(() => findUnusedAddress(api, privateKeyWrapper, '_' + Date.now())));503}499}504500505export async function findNotExistingCollection(api: ApiPromise): Promise<number> {501export async function findNotExistingCollection(api: ApiPromise): Promise<number> {868 }864 }869 const transferFromTx = api.tx.unique.transferFrom(normalizeAccountId(accountFrom), to, collectionId, tokenId, value);865 const transferFromTx = api.tx.unique.transferFrom(normalizeAccountId(accountFrom), to, collectionId, tokenId, value);870 const events = await submitTransactionAsync(accountApproved, transferFromTx);866 const events = await submitTransactionAsync(accountApproved, transferFromTx);871 const result = getCreateItemResult(events);867 const result = getGenericResult(events);872 // tslint:disable-next-line:no-unused-expression868 // tslint:disable-next-line:no-unused-expression873 expect(result.success).to.be.true;869 expect(result.success).to.be.true;874 if (type === 'NFT') {870 if (type === 'NFT') {tests/src/xcmTransfer.test.tsdiffbeforeafterboth24import {getGenericResult} from './util/helpers';24import {getGenericResult} from './util/helpers';25import waitNewBlocks from './substrate/wait-new-blocks';25import waitNewBlocks from './substrate/wait-new-blocks';26import getBalance from './substrate/get-balance';26import getBalance from './substrate/get-balance';27import {alicesPublicKey} from './accounts';282729chai.use(chaiAsPromised);28chai.use(chaiAsPromised);30const expect = chai.expect;29const expect = chai.expect;144 let balanceBefore: bigint;143 let balanceBefore: bigint;145 144 146 await usingApi(async (api) => {145 await usingApi(async (api) => {147 [balanceBefore] = await getBalance(api, [alicesPublicKey]);146 [balanceBefore] = await getBalance(api, [alice.address]);148 });147 });149148150 await usingApi(async (api) => {149 await usingApi(async (api) => {181 await usingApi(async (api) => {180 await usingApi(async (api) => {182 // todo do something about instant sealing, where there might not be any new blocks181 // todo do something about instant sealing, where there might not be any new blocks183 await waitNewBlocks(api, 3);182 await waitNewBlocks(api, 3);184 const [balanceAfter] = await getBalance(api, [alicesPublicKey]);183 const [balanceAfter] = await getBalance(api, [alice.address]);185 expect(balanceAfter > balanceBefore).to.be.true;184 expect(balanceAfter > balanceBefore).to.be.true;186 });185 });187 });186 });tests/yarn.lockdiffbeforeafterboth146 js-tokens "^4.0.0"146 js-tokens "^4.0.0"147147148"@babel/parser@^7.16.7", "@babel/parser@^7.18.0":148"@babel/parser@^7.16.7", "@babel/parser@^7.18.0":149 version "7.18.3"149 version "7.18.4"150 resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.3.tgz#39e99c7b0c4c56cef4d1eed8de9f506411c2ebc2"150 resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.4.tgz#6774231779dd700e0af29f6ad8d479582d7ce5ef"151 integrity sha512-rL50YcEuHbbauAFAysNsJA4/f89fGTOBRNs9P81sniKnKAr4xULe5AecolcsKbi88xu0ByWYDj/S1AJ3FSFuSQ==151 integrity sha512-FDge0dFazETFcxGw/EXzOkN8uJp0PC7Qbm+Pe9T+av2zlBpOgunFHkQPPn+eRuClU73JF+98D531UgayY89tow==152152153"@babel/register@^7.17.7":153"@babel/register@^7.17.7":154 version "7.17.7"154 version "7.17.7"194 globals "^11.1.0"194 globals "^11.1.0"195195196"@babel/types@^7.16.7", "@babel/types@^7.17.0", "@babel/types@^7.18.0", "@babel/types@^7.18.2":196"@babel/types@^7.16.7", "@babel/types@^7.17.0", "@babel/types@^7.18.0", "@babel/types@^7.18.2":197 version "7.18.2"197 version "7.18.4"198 resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.2.tgz#191abfed79ebe6f4242f643a9a5cbaa36b10b091"198 resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.4.tgz#27eae9b9fd18e9dccc3f9d6ad051336f307be354"199 integrity sha512-0On6B8A4/+mFUto5WERt3EEuG1NznDirvwca1O8UwXQHVY8g3R7OzYgxXdOfMwLO08UrpUD/2+3Bclyq+/C94Q==199 integrity sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw==200 dependencies:200 dependencies:201 "@babel/helper-validator-identifier" "^7.16.7"201 "@babel/helper-validator-identifier" "^7.16.7"202 to-fast-properties "^2.0.0"202 to-fast-properties "^2.0.0"223 minimatch "^3.1.2"223 minimatch "^3.1.2"224 strip-json-comments "^3.1.1"224 strip-json-comments "^3.1.1"225225226"@ethereumjs/common@^2.5.0", "@ethereumjs/common@^2.6.3":226"@ethereumjs/common@^2.5.0", "@ethereumjs/common@^2.6.4":227 version "2.6.4"227 version "2.6.4"228 resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-2.6.4.tgz#1b3cdd3aa4ee3b0ca366756fc35e4a03022a01cc"228 resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-2.6.4.tgz#1b3cdd3aa4ee3b0ca366756fc35e4a03022a01cc"229 integrity sha512-RDJh/R/EAr+B7ZRg5LfJ0BIpf/1LydFgYdvZEuTraojCbVypO2sQ+QnpP5u2wJf9DASyooKqu8O4FJEWUV6NXw==229 integrity sha512-RDJh/R/EAr+B7ZRg5LfJ0BIpf/1LydFgYdvZEuTraojCbVypO2sQ+QnpP5u2wJf9DASyooKqu8O4FJEWUV6NXw==232 ethereumjs-util "^7.1.4"232 ethereumjs-util "^7.1.4"233233234"@ethereumjs/tx@^3.3.2":234"@ethereumjs/tx@^3.3.2":235 version "3.5.1"235 version "3.5.2"236 resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-3.5.1.tgz#8d941b83a602b4a89949c879615f7ea9a90e6671"236 resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-3.5.2.tgz#197b9b6299582ad84f9527ca961466fce2296c1c"237 integrity sha512-xzDrTiu4sqZXUcaBxJ4n4W5FrppwxLxZB4ZDGVLtxSQR4lVuOnFR6RcUHdg1mpUhAPVrmnzLJpxaeXnPxIyhWA==237 integrity sha512-gQDNJWKrSDGu2w7w0PzVXVBNMzb7wwdDOmOqczmhNjqFxFuIbhVJDwiGEnxFNC2/b8ifcZzY7MLcluizohRzNw==238 dependencies:238 dependencies:239 "@ethereumjs/common" "^2.6.3"239 "@ethereumjs/common" "^2.6.4"240 ethereumjs-util "^7.1.4"240 ethereumjs-util "^7.1.5"241241242"@ethersproject/abi@5.0.7":242"@ethersproject/abi@5.0.7":243 version "5.0.7"243 version "5.0.7"508 "@nodelib/fs.scandir" "2.1.5"508 "@nodelib/fs.scandir" "2.1.5"509 fastq "^1.6.0"509 fastq "^1.6.0"510510511"@polkadot/api-augment@8.6.2":511"@polkadot/api-augment@8.7.2-11":512 version "8.6.2"512 version "8.7.2-11"513 resolved "https://registry.yarnpkg.com/@polkadot/api-augment/-/api-augment-8.6.2.tgz#33f58f612583d9ddbe6ad6607765c947b063a5d0"513 resolved "https://registry.yarnpkg.com/@polkadot/api-augment/-/api-augment-8.7.2-11.tgz#7f174f830c181d82863eb41f48e24fd6bbde3065"514 integrity sha512-4qz/0ukMpYTO0QjPufV4bB0cMmCFHYsrDNT23KXwus2mSkn19nRN01Nhf8JqVAAqK1cMXfioQmL3Lmpfke6L/w==514 integrity sha512-yKsuxjez1ArwSEZJ+g8mausm38CgOtaWBG5ob5cmO9M2v45HBXy3Kmviqr8Dputtu23deT85p7m/8RFLlAnzSA==515 dependencies:515 dependencies:516 "@babel/runtime" "^7.18.3"516 "@babel/runtime" "^7.18.3"517 "@polkadot/api-base" "8.6.2"517 "@polkadot/api-base" "8.7.2-11"518 "@polkadot/rpc-augment" "8.6.2"518 "@polkadot/rpc-augment" "8.7.2-11"519 "@polkadot/types" "8.6.2"519 "@polkadot/types" "8.7.2-11"520 "@polkadot/types-augment" "8.6.2"520 "@polkadot/types-augment" "8.7.2-11"521 "@polkadot/types-codec" "8.6.2"521 "@polkadot/types-codec" "8.7.2-11"522 "@polkadot/util" "^9.3.1"522 "@polkadot/util" "^9.4.1"523523524"@polkadot/api-base@8.6.2":524"@polkadot/api-base@8.7.2-11":525 version "8.6.2"525 version "8.7.2-11"526 resolved "https://registry.yarnpkg.com/@polkadot/api-base/-/api-base-8.6.2.tgz#54ca8292662c896ef46ae3f33bf4efb053f36690"526 resolved "https://registry.yarnpkg.com/@polkadot/api-base/-/api-base-8.7.2-11.tgz#7e297a0ca283a58bc9d8d11c1edb099bc61da9f1"527 integrity sha512-x3AKw0BJZNYuVTOo4Nkv0wzjk2sK5GKmdN7TA7CmST2SZ+2CRiFFVXb4vXjZRp9wyJJWCuRFX+JhIXwlzWQVoA==527 integrity sha512-WQE5uvb7W7AKSfy4ekW2i6mJJzZYLMS/eNPNXYpURW/cRPt9NhT9lNz2Ae2d7gaWgWil+jNLecXTHTUzxobRbA==528 dependencies:528 dependencies:529 "@babel/runtime" "^7.18.3"529 "@babel/runtime" "^7.18.3"530 "@polkadot/rpc-core" "8.6.2"530 "@polkadot/rpc-core" "8.7.2-11"531 "@polkadot/types" "8.6.2"531 "@polkadot/types" "8.7.2-11"532 "@polkadot/util" "^9.3.1"532 "@polkadot/util" "^9.4.1"533 rxjs "^7.5.5"533 rxjs "^7.5.5"534534535"@polkadot/api-contract@8.6.2":535"@polkadot/api-contract@8.7.2-11":536 version "8.6.2"536 version "8.7.2-11"537 resolved "https://registry.yarnpkg.com/@polkadot/api-contract/-/api-contract-8.6.2.tgz#09811f7591916762fa7f1dee34de8fe4b7448187"537 resolved "https://registry.yarnpkg.com/@polkadot/api-contract/-/api-contract-8.7.2-11.tgz#9487394286e536a7b1edfb6296529722fa63a43a"538 integrity sha512-FWrH7x7qBN0KgsuyymaPrD5B20pKUr6CjmFaR1Ej86+ZnHbRML7q9TrWTFrD2P3+Irx7dy1ubDwVhjcysC3h2Q==538 integrity sha512-vOi4FX33ttkotJDzSum0nFUworWJ2+yfDejZkC33mM8zb+ne0Quggfz2nQqiKS2lgkj2z4YwJbsf/9paRQeS3w==539 dependencies:539 dependencies:540 "@babel/runtime" "^7.18.3"540 "@babel/runtime" "^7.18.3"541 "@polkadot/api" "8.6.2"541 "@polkadot/api" "8.7.2-11"542 "@polkadot/types" "8.6.2"542 "@polkadot/types" "8.7.2-11"543 "@polkadot/types-codec" "8.6.2"543 "@polkadot/types-codec" "8.7.2-11"544 "@polkadot/types-create" "8.6.2"544 "@polkadot/types-create" "8.7.2-11"545 "@polkadot/util" "^9.3.1"545 "@polkadot/util" "^9.4.1"546 "@polkadot/util-crypto" "^9.3.1"546 "@polkadot/util-crypto" "^9.4.1"547 rxjs "^7.5.5"547 rxjs "^7.5.5"548548549"@polkadot/api-derive@8.6.2":549"@polkadot/api-derive@8.7.2-11":550 version "8.6.2"550 version "8.7.2-11"551 resolved "https://registry.yarnpkg.com/@polkadot/api-derive/-/api-derive-8.6.2.tgz#14019905b2aad6839d57b679c9b7cd42b2faeea7"551 resolved "https://registry.yarnpkg.com/@polkadot/api-derive/-/api-derive-8.7.2-11.tgz#21e315d554a8cd31bb1f3b10077960e35391a311"552 integrity sha512-ts7DSIeNpH4OH18+mrjq3KObcfHOd6A7C3Ddo2NZv7WmVbUZ9PoJ41jUQZ51szbgILY748ewNlhVsfd/qdVnTg==552 integrity sha512-8fkYidDgNjJcWHtiRfJQaI4H386uGZh5Ie0t21KG4sSC5R+Lbnm0CJwIX4scJvQ/U+38gCyQW07b+Pxt9oDwvg==553 dependencies:553 dependencies:554 "@babel/runtime" "^7.18.3"554 "@babel/runtime" "^7.18.3"555 "@polkadot/api" "8.6.2"555 "@polkadot/api" "8.7.2-11"556 "@polkadot/api-augment" "8.6.2"556 "@polkadot/api-augment" "8.7.2-11"557 "@polkadot/api-base" "8.6.2"557 "@polkadot/api-base" "8.7.2-11"558 "@polkadot/rpc-core" "8.6.2"558 "@polkadot/rpc-core" "8.7.2-11"559 "@polkadot/types" "8.6.2"559 "@polkadot/types" "8.7.2-11"560 "@polkadot/types-codec" "8.6.2"560 "@polkadot/types-codec" "8.7.2-11"561 "@polkadot/util" "^9.3.1"561 "@polkadot/util" "^9.4.1"562 "@polkadot/util-crypto" "^9.3.1"562 "@polkadot/util-crypto" "^9.4.1"563 rxjs "^7.5.5"563 rxjs "^7.5.5"564564565"@polkadot/api@8.6.2":565"@polkadot/api@8.7.2-11":566 version "8.6.2"566 version "8.7.2-11"567 resolved "https://registry.yarnpkg.com/@polkadot/api/-/api-8.6.2.tgz#058048e69f55646074b23936dbeb654ec4bbf641"567 resolved "https://registry.yarnpkg.com/@polkadot/api/-/api-8.7.2-11.tgz#d76ad24f96fc9eba49825c11277105d12bf5e05c"568 integrity sha512-dmgz9msxQG/K2ol7X0jlcZR1cPtw2qA9OhJ7GxGDc1t0WQiPtU/VRgZg4hBV2qR3n3V4fmbojQwPjBELzfhL+Q==568 integrity sha512-eFQtZOJOVK5IbNSjvrk1JrOZJrtZRjaecMAhnQiglMPoIfQJiRbnXhUslGbXsgFoJsfWW6DAVY5aJi/PjuF9OQ==569 dependencies:569 dependencies:570 "@babel/runtime" "^7.18.3"570 "@babel/runtime" "^7.18.3"571 "@polkadot/api-augment" "8.6.2"571 "@polkadot/api-augment" "8.7.2-11"572 "@polkadot/api-base" "8.6.2"572 "@polkadot/api-base" "8.7.2-11"573 "@polkadot/api-derive" "8.6.2"573 "@polkadot/api-derive" "8.7.2-11"574 "@polkadot/keyring" "^9.3.1"574 "@polkadot/keyring" "^9.4.1"575 "@polkadot/rpc-augment" "8.6.2"575 "@polkadot/rpc-augment" "8.7.2-11"576 "@polkadot/rpc-core" "8.6.2"576 "@polkadot/rpc-core" "8.7.2-11"577 "@polkadot/rpc-provider" "8.6.2"577 "@polkadot/rpc-provider" "8.7.2-11"578 "@polkadot/types" "8.6.2"578 "@polkadot/types" "8.7.2-11"579 "@polkadot/types-augment" "8.6.2"579 "@polkadot/types-augment" "8.7.2-11"580 "@polkadot/types-codec" "8.6.2"580 "@polkadot/types-codec" "8.7.2-11"581 "@polkadot/types-create" "8.6.2"581 "@polkadot/types-create" "8.7.2-11"582 "@polkadot/types-known" "8.6.2"582 "@polkadot/types-known" "8.7.2-11"583 "@polkadot/util" "^9.3.1"583 "@polkadot/util" "^9.4.1"584 "@polkadot/util-crypto" "^9.3.1"584 "@polkadot/util-crypto" "^9.4.1"585 eventemitter3 "^4.0.7"585 eventemitter3 "^4.0.7"586 rxjs "^7.5.5"586 rxjs "^7.5.5"587587588"@polkadot/keyring@^9.3.1":588"@polkadot/keyring@^9.4.1":589 version "9.3.1"589 version "9.4.1"590 resolved "https://registry.yarnpkg.com/@polkadot/keyring/-/keyring-9.3.1.tgz#bc90c4ef4c7a46cc92df3e3651cf95ebc1b9c20d"590 resolved "https://registry.yarnpkg.com/@polkadot/keyring/-/keyring-9.4.1.tgz#4bc8d1c1962756841742abac0d7e4ef233d9c2a9"591 integrity sha512-eoBWRhCzvcVHfpxJlmbKpe8HYjHRc1nkqPR8bnIEb+N8DyN38O7zOHVmy14VOGba1p/+nShULSEVLdfoCD5l3Q==591 integrity sha512-op6Tj8E9GHeZYvEss38FRUrX+GlBj6qiwF4BlFrAvPqjPnRn8TT9NhRLroiCwvxeNg3uMtEF/5xB+vvdI0I6qw==592 dependencies:592 dependencies:593 "@babel/runtime" "^7.18.3"593 "@babel/runtime" "^7.18.3"594 "@polkadot/util" "9.3.1"594 "@polkadot/util" "9.4.1"595 "@polkadot/util-crypto" "9.3.1"595 "@polkadot/util-crypto" "9.4.1"596596597"@polkadot/networks@9.3.1", "@polkadot/networks@^9.3.1":597"@polkadot/networks@9.4.1", "@polkadot/networks@^9.4.1":598 version "9.3.1"598 version "9.4.1"599 resolved "https://registry.yarnpkg.com/@polkadot/networks/-/networks-9.3.1.tgz#1290a21ff86e0b8021b98454c4b61b7ef9bf55d8"599 resolved "https://registry.yarnpkg.com/@polkadot/networks/-/networks-9.4.1.tgz#acdf3d64421ce0e3d3ba68797fc29a28ee40c185"600 integrity sha512-7OUvO5hqXIeijlhTqhFy84lJzA7LRh6In2AbfOUHK6ES1np53Hcas+yEMC2EFNOdBYEsSjnfCjnp4Wd5t7LIHQ==600 integrity sha512-ibH8bZ2/XMXv0XEsP1fGOqNnm2mg1rHo5kHXSJ3QBcZJFh1+xkI4Ovl2xrFfZ+SYATA3Wsl5R6knqimk2EqyJQ==601 dependencies:601 dependencies:602 "@babel/runtime" "^7.18.3"602 "@babel/runtime" "^7.18.3"603 "@polkadot/util" "9.3.1"603 "@polkadot/util" "9.4.1"604 "@substrate/ss58-registry" "^1.20.0"604 "@substrate/ss58-registry" "^1.22.0"605605606"@polkadot/rpc-augment@8.6.2":606"@polkadot/rpc-augment@8.7.2-11":607 version "8.6.2"607 version "8.7.2-11"608 resolved "https://registry.yarnpkg.com/@polkadot/rpc-augment/-/rpc-augment-8.6.2.tgz#365c53a1789fb8f2b03e47d0a1660e28e28d03e5"608 resolved "https://registry.yarnpkg.com/@polkadot/rpc-augment/-/rpc-augment-8.7.2-11.tgz#b118303653fb6f80688c62600fde2ed489e1c974"609 integrity sha512-1iUFTpkegFK6xRYohI0xN/tR6tIttfwwlP4FxlqkXhdeqd2aJx+KUkhsefK2yANfsnRl1//VGPfAMyQuePZAzg==609 integrity sha512-/h50Kzz/UZwhsV+g7bwGWf0fkVvlWIQ/zaA7H9xtuE4VGvmZRE4Uu06011ToVWNyAwM5xQfXBx1gUznRhem+pg==610 dependencies:610 dependencies:611 "@babel/runtime" "^7.18.3"611 "@babel/runtime" "^7.18.3"612 "@polkadot/rpc-core" "8.6.2"612 "@polkadot/rpc-core" "8.7.2-11"613 "@polkadot/types" "8.6.2"613 "@polkadot/types" "8.7.2-11"614 "@polkadot/types-codec" "8.6.2"614 "@polkadot/types-codec" "8.7.2-11"615 "@polkadot/util" "^9.3.1"615 "@polkadot/util" "^9.4.1"616616617"@polkadot/rpc-core@8.6.2":617"@polkadot/rpc-core@8.7.2-11":618 version "8.6.2"618 version "8.7.2-11"619 resolved "https://registry.yarnpkg.com/@polkadot/rpc-core/-/rpc-core-8.6.2.tgz#6072ec27f01c8a6024517b99c8d3295d7d492a85"619 resolved "https://registry.yarnpkg.com/@polkadot/rpc-core/-/rpc-core-8.7.2-11.tgz#9c31a34bc2f70e4dab40f9ba08ca9b89c8f3e5c0"620 integrity sha512-AJjzjgnKA3BZgYb3+eqECfIV/mBKH3xO0yn4fhf9O3vgUzJZgEr7JgGMyH0jxnBIAUp84VKlloRDwtRSElCa9A==620 integrity sha512-DyHYgzBusMFfsDJ/2VBaVTNHRwZ2cf/woaeJA/ijJbxK2Ke/sg9UW6zr+3Ip8T62GnSNnJoSHMOaMdqvebkNVQ==621 dependencies:621 dependencies:622 "@babel/runtime" "^7.18.3"622 "@babel/runtime" "^7.18.3"623 "@polkadot/rpc-augment" "8.6.2"623 "@polkadot/rpc-augment" "8.7.2-11"624 "@polkadot/rpc-provider" "8.6.2"624 "@polkadot/rpc-provider" "8.7.2-11"625 "@polkadot/types" "8.6.2"625 "@polkadot/types" "8.7.2-11"626 "@polkadot/util" "^9.3.1"626 "@polkadot/util" "^9.4.1"627 rxjs "^7.5.5"627 rxjs "^7.5.5"628628629"@polkadot/rpc-provider@8.6.2":629"@polkadot/rpc-provider@8.7.2-11":630 version "8.6.2"630 version "8.7.2-11"631 resolved "https://registry.yarnpkg.com/@polkadot/rpc-provider/-/rpc-provider-8.6.2.tgz#266e7ea7a9e233f33bf3aac2f7e0a3da76f9e98a"631 resolved "https://registry.yarnpkg.com/@polkadot/rpc-provider/-/rpc-provider-8.7.2-11.tgz#1f4ef542aee83e0c4e1b2a126ed00ade7c818660"632 integrity sha512-hUu4Jk3aVJd3Rqag3KkrUoEJqZh+RoppVWYYBUbWltmVv7rz0JJSYs6r+O7vKpEUqJk3Xfiy6tcKU7ajDTRCLw==632 integrity sha512-LE5kKEMxL4mZ+dLbU8lOPG2GuPYliYtX1SnXv509zAgUjSCWW9fkdeMBF3tFCjSJJcUmle3mlxG8kYuAqNUScA==633 dependencies:633 dependencies:634 "@babel/runtime" "^7.18.3"634 "@babel/runtime" "^7.18.3"635 "@polkadot/keyring" "^9.3.1"635 "@polkadot/keyring" "^9.4.1"636 "@polkadot/types" "8.6.2"636 "@polkadot/types" "8.7.2-11"637 "@polkadot/types-support" "8.6.2"637 "@polkadot/types-support" "8.7.2-11"638 "@polkadot/util" "^9.3.1"638 "@polkadot/util" "^9.4.1"639 "@polkadot/util-crypto" "^9.3.1"639 "@polkadot/util-crypto" "^9.4.1"640 "@polkadot/x-fetch" "^9.3.1"640 "@polkadot/x-fetch" "^9.4.1"641 "@polkadot/x-global" "^9.3.1"641 "@polkadot/x-global" "^9.4.1"642 "@polkadot/x-ws" "^9.3.1"642 "@polkadot/x-ws" "^9.4.1"643 "@substrate/connect" "0.7.5"643 "@substrate/connect" "0.7.5"644 eventemitter3 "^4.0.7"644 eventemitter3 "^4.0.7"645 mock-socket "^9.1.4"645 mock-socket "^9.1.5"646 nock "^13.2.4"646 nock "^13.2.6"647647648"@polkadot/ts@0.4.22":648"@polkadot/ts@0.4.22":649 version "0.4.22"649 version "0.4.22"652 dependencies:652 dependencies:653 "@types/chrome" "^0.0.171"653 "@types/chrome" "^0.0.171"654654655"@polkadot/typegen@8.6.2":655"@polkadot/typegen@8.7.2-11":656 version "8.6.2"656 version "8.7.2-11"657 resolved "https://registry.yarnpkg.com/@polkadot/typegen/-/typegen-8.6.2.tgz#52024396c79eb5567a960324d992ce49323aace7"657 resolved "https://registry.yarnpkg.com/@polkadot/typegen/-/typegen-8.7.2-11.tgz#047c3c91f4b34f0188853bed606fd12f6a0fbf4d"658 integrity sha512-sQGbffUGoTtFQlGmEy0wBwWReRRh1PN7lQfZtJD/op9GMAVzSwqQmqIyCQkQC/nvafYgzKVFylzjJFHRRucECQ==658 integrity sha512-YZpyT8LJFm3akFurrxHpRWxZU50yKvrfdgyZpJh+JJOhSIIDtkx58JNj2+lv0QvhUFOUkd4IWap9bbCPmeLf6w==659 dependencies:659 dependencies:660 "@babel/core" "^7.18.2"660 "@babel/core" "^7.18.2"661 "@babel/register" "^7.17.7"661 "@babel/register" "^7.17.7"662 "@babel/runtime" "^7.18.3"662 "@babel/runtime" "^7.18.3"663 "@polkadot/api" "8.6.2"663 "@polkadot/api" "8.7.2-11"664 "@polkadot/api-augment" "8.6.2"664 "@polkadot/api-augment" "8.7.2-11"665 "@polkadot/rpc-augment" "8.6.2"665 "@polkadot/rpc-augment" "8.7.2-11"666 "@polkadot/rpc-provider" "8.6.2"666 "@polkadot/rpc-provider" "8.7.2-11"667 "@polkadot/types" "8.6.2"667 "@polkadot/types" "8.7.2-11"668 "@polkadot/types-augment" "8.6.2"668 "@polkadot/types-augment" "8.7.2-11"669 "@polkadot/types-codec" "8.6.2"669 "@polkadot/types-codec" "8.7.2-11"670 "@polkadot/types-create" "8.6.2"670 "@polkadot/types-create" "8.7.2-11"671 "@polkadot/types-support" "8.6.2"671 "@polkadot/types-support" "8.7.2-11"672 "@polkadot/util" "^9.3.1"672 "@polkadot/util" "^9.4.1"673 "@polkadot/x-ws" "^9.3.1"673 "@polkadot/x-ws" "^9.4.1"674 handlebars "^4.7.7"674 handlebars "^4.7.7"675 websocket "^1.0.34"675 websocket "^1.0.34"676 yargs "^17.5.1"676 yargs "^17.5.1"677677678"@polkadot/types-augment@8.6.2":678"@polkadot/types-augment@8.7.2-11":679 version "8.6.2"679 version "8.7.2-11"680 resolved "https://registry.yarnpkg.com/@polkadot/types-augment/-/types-augment-8.6.2.tgz#60392a09c842e32d429bcef08582cb6b5894889a"680 resolved "https://registry.yarnpkg.com/@polkadot/types-augment/-/types-augment-8.7.2-11.tgz#c63105c76f8d85f7e642f8e81e16c3ffc3b3e7c4"681 integrity sha512-pY0siJ+2Jba4Vp0z7iif02pvkFZksWvCfmO19OH3lnY176mFwCJGnqvg8V1HIKAwbYZ3g4N2OSoWhB8zyKF63w==681 integrity sha512-1meIbpS0Synfdz+Jo90jc/utxwbwl9XQiH5WoFCUYLlbtE/H/yQcIoeme5o6gr/q7BalFQMYYwGBfctGT/KGjA==682 dependencies:682 dependencies:683 "@babel/runtime" "^7.18.3"683 "@babel/runtime" "^7.18.3"684 "@polkadot/types" "8.6.2"684 "@polkadot/types" "8.7.2-11"685 "@polkadot/types-codec" "8.6.2"685 "@polkadot/types-codec" "8.7.2-11"686 "@polkadot/util" "^9.3.1"686 "@polkadot/util" "^9.4.1"687687688"@polkadot/types-codec@8.6.2":688"@polkadot/types-codec@8.7.2-11":689 version "8.6.2"689 version "8.7.2-11"690 resolved "https://registry.yarnpkg.com/@polkadot/types-codec/-/types-codec-8.6.2.tgz#1cbfe1c44b4c2a67a8e3cff20b561940a731c4b6"690 resolved "https://registry.yarnpkg.com/@polkadot/types-codec/-/types-codec-8.7.2-11.tgz#a852d3493062ee1052f7a837d07cce4146f2c67e"691 integrity sha512-A8be8y0Spu/lgKH0cif+vTXOTHzRkavrQNCH0oJ2uhdLpWUiwjLWFd6i7C/Nha1TxxECFTa0GzgM7l+uYVRRNQ==691 integrity sha512-ZvRBiVo5IwZ+vcbKIMv6l0kRG2bVpBmU+pCPdWV9zGtKpgumz1FTvxBmjXoNo6OJVX23fKNMF8qBD/DEiC9ZwA==692 dependencies:692 dependencies:693 "@babel/runtime" "^7.18.3"693 "@babel/runtime" "^7.18.3"694 "@polkadot/util" "^9.3.1"694 "@polkadot/util" "^9.4.1"695695696"@polkadot/types-create@8.6.2":696"@polkadot/types-create@8.7.2-11":697 version "8.6.2"697 version "8.7.2-11"698 resolved "https://registry.yarnpkg.com/@polkadot/types-create/-/types-create-8.6.2.tgz#92c8bb7aac8f22731b467ba80e5decaf00239d40"698 resolved "https://registry.yarnpkg.com/@polkadot/types-create/-/types-create-8.7.2-11.tgz#2489409155d55c941a322349d740e9f8f8325147"699 integrity sha512-4amHTHOXDmHVf3DJENoBpTJ9a+O7dyBkRdehrFOBf84qQAA9DfvkoGjiVehDd+Txce7WnOyC8Ugo2Th3jhY+6A==699 integrity sha512-489UaZP7JKfZ2Fn0oDQ32setAiV7vv9Q3Kg4a+j4m2TGEEXAVeiNE4Uvijmsw3ayLTtzO9hL0WtMpFWa8GlIMg==700 dependencies:700 dependencies:701 "@babel/runtime" "^7.18.3"701 "@babel/runtime" "^7.18.3"702 "@polkadot/types-codec" "8.6.2"702 "@polkadot/types-codec" "8.7.2-11"703 "@polkadot/util" "^9.3.1"703 "@polkadot/util" "^9.4.1"704704705"@polkadot/types-known@8.6.2":705"@polkadot/types-known@8.7.2-11":706 version "8.6.2"706 version "8.7.2-11"707 resolved "https://registry.yarnpkg.com/@polkadot/types-known/-/types-known-8.6.2.tgz#6172bf20719d659fc5e968226ece0de029b84ee1"707 resolved "https://registry.yarnpkg.com/@polkadot/types-known/-/types-known-8.7.2-11.tgz#89cb0cdea197ed3887b30948a560b0cd13b39c23"708 integrity sha512-R8AazycMaOE49+AfjHJ+w+L10RB6wdjprIu0H6UU3oxKWR4fSvYFaEfuscAU7cywzfLnWAbB3wXTJzf2hCbcXg==708 integrity sha512-ulPQCmwJTJ/MGJGVJZfjWEGq28HGl7D4sOrigbfLOlo6/KyFl2p5H4GUFeF/s+/lGfUQsxfu4Q6QgXDZAOkB1A==709 dependencies:709 dependencies:710 "@babel/runtime" "^7.18.3"710 "@babel/runtime" "^7.18.3"711 "@polkadot/networks" "^9.3.1"711 "@polkadot/networks" "^9.4.1"712 "@polkadot/types" "8.6.2"712 "@polkadot/types" "8.7.2-11"713 "@polkadot/types-codec" "8.6.2"713 "@polkadot/types-codec" "8.7.2-11"714 "@polkadot/types-create" "8.6.2"714 "@polkadot/types-create" "8.7.2-11"715 "@polkadot/util" "^9.3.1"715 "@polkadot/util" "^9.4.1"716716717"@polkadot/types-support@8.6.2":717"@polkadot/types-support@8.7.2-11":718 version "8.6.2"718 version "8.7.2-11"719 resolved "https://registry.yarnpkg.com/@polkadot/types-support/-/types-support-8.6.2.tgz#0f099eed3725c8904012fdf7432f82ada8ab567c"719 resolved "https://registry.yarnpkg.com/@polkadot/types-support/-/types-support-8.7.2-11.tgz#ed08331ba1faf7a803e35aafa0692eefd28baa90"720 integrity sha512-z54SOCtIeCoK6DmEKvT7+c3sJl/ek4XpA8EQHcJ5mWl0GrR8iv5pliuqltcJuBG54YQxxgUKg1JJEtnFfcWkRA==720 integrity sha512-oflUi0eahFMoS3Sxz6EKjZKNl7GMRnd91kClEV0FzR1wEha+3CL1BCXTGV3n8YoJtfztUUNInVHPQTvMW78WvQ==721 dependencies:721 dependencies:722 "@babel/runtime" "^7.18.3"722 "@babel/runtime" "^7.18.3"723 "@polkadot/util" "^9.3.1"723 "@polkadot/util" "^9.4.1"724724725"@polkadot/types@8.6.2":725"@polkadot/types@8.7.2-11":726 version "8.6.2"726 version "8.7.2-11"727 resolved "https://registry.yarnpkg.com/@polkadot/types/-/types-8.6.2.tgz#4a0aad232a21b2c7465d4825e52b0565f0cc3b1d"727 resolved "https://registry.yarnpkg.com/@polkadot/types/-/types-8.7.2-11.tgz#84b1dca2896fec4af23d4096fa810b59f44071ac"728 integrity sha512-T35bTk0HojZPJGiJw5t1GFZhg+LU1S1xkZ4EmhxlxjK31dVJVVzwgafdp/fMaSWUKmr32X9mvxVIErtUtUUQ+A==728 integrity sha512-PSreCXr/csWpMVqtByEj7Pk5j+JEqxOiipsP+PdtOJaRnWtBMFpMqs7Fj2uULVYqFJKKPyp+JofnRDRcH1YDYg==729 dependencies:729 dependencies:730 "@babel/runtime" "^7.18.3"730 "@babel/runtime" "^7.18.3"731 "@polkadot/keyring" "^9.3.1"731 "@polkadot/keyring" "^9.4.1"732 "@polkadot/types-augment" "8.6.2"732 "@polkadot/types-augment" "8.7.2-11"733 "@polkadot/types-codec" "8.6.2"733 "@polkadot/types-codec" "8.7.2-11"734 "@polkadot/types-create" "8.6.2"734 "@polkadot/types-create" "8.7.2-11"735 "@polkadot/util" "^9.3.1"735 "@polkadot/util" "^9.4.1"736 "@polkadot/util-crypto" "^9.3.1"736 "@polkadot/util-crypto" "^9.4.1"737 rxjs "^7.5.5"737 rxjs "^7.5.5"738738739"@polkadot/util-crypto@9.3.1", "@polkadot/util-crypto@^9.3.1":739"@polkadot/util-crypto@9.4.1", "@polkadot/util-crypto@^9.4.1":740 version "9.3.1"740 version "9.4.1"741 resolved "https://registry.yarnpkg.com/@polkadot/util-crypto/-/util-crypto-9.3.1.tgz#9595c7dc6744ab4cd78eade574a2ab1741fc4768"741 resolved "https://registry.yarnpkg.com/@polkadot/util-crypto/-/util-crypto-9.4.1.tgz#af50d9b3e3fcf9760ee8eb262b1cc61614c21d98"742 integrity sha512-4Vd/FDMLhw9ceUVbBeafjvroHqWN2y85oydhiSN8WCr57ezsaknNPagovEGpUcUAWcrnRDngsxHRWmUmghEF6A==742 integrity sha512-V6xMOjdd8Kt/QmXlcDYM4WJDAmKuH4vWSlIcMmkFHnwH/NtYVdYIDZswLQHKL8gjLijPfVTHpWaJqNFhGpZJEg==743 dependencies:743 dependencies:744 "@babel/runtime" "^7.18.3"744 "@babel/runtime" "^7.18.3"745 "@noble/hashes" "1.0.0"745 "@noble/hashes" "1.0.0"746 "@noble/secp256k1" "1.5.5"746 "@noble/secp256k1" "1.5.5"747 "@polkadot/networks" "9.3.1"747 "@polkadot/networks" "9.4.1"748 "@polkadot/util" "9.3.1"748 "@polkadot/util" "9.4.1"749 "@polkadot/wasm-crypto" "^6.1.1"749 "@polkadot/wasm-crypto" "^6.1.1"750 "@polkadot/x-bigint" "9.3.1"750 "@polkadot/x-bigint" "9.4.1"751 "@polkadot/x-randomvalues" "9.3.1"751 "@polkadot/x-randomvalues" "9.4.1"752 "@scure/base" "1.0.0"752 "@scure/base" "1.0.0"753 ed2curve "^0.3.0"753 ed2curve "^0.3.0"754 tweetnacl "^1.0.3"754 tweetnacl "^1.0.3"755755756"@polkadot/util@9.3.1", "@polkadot/util@^9.3.1":756"@polkadot/util@9.4.1", "@polkadot/util@^9.4.1":757 version "9.3.1"757 version "9.4.1"758 resolved "https://registry.yarnpkg.com/@polkadot/util/-/util-9.3.1.tgz#cae1bc0b8e68450a3f0c0a0c636f9f82e524549c"758 resolved "https://registry.yarnpkg.com/@polkadot/util/-/util-9.4.1.tgz#49446e88b1231b0716bf6b4eb4818145f08a1294"759 integrity sha512-WVsihsFMhM0eLylP5LybNh5opD3nzYBdPEIuHf5IiGbhk0pVQEWE3mqcR2fSvSDv3ArQG5KE5cq26JZDVunZlw==759 integrity sha512-z0HcnIe3zMWyK1s09wQIwc1M8gDKygSF9tDAbC8H9KDeIRZB2ldhwWEFx/1DJGOgFFrmRfkxeC6dcDpfzQhFow==760 dependencies:760 dependencies:761 "@babel/runtime" "^7.18.3"761 "@babel/runtime" "^7.18.3"762 "@polkadot/x-bigint" "9.3.1"762 "@polkadot/x-bigint" "9.4.1"763 "@polkadot/x-global" "9.3.1"763 "@polkadot/x-global" "9.4.1"764 "@polkadot/x-textdecoder" "9.3.1"764 "@polkadot/x-textdecoder" "9.4.1"765 "@polkadot/x-textencoder" "9.3.1"765 "@polkadot/x-textencoder" "9.4.1"766 "@types/bn.js" "^5.1.0"766 "@types/bn.js" "^5.1.0"767 bn.js "^5.2.1"767 bn.js "^5.2.1"768 ip-regex "^4.3.0"768 ip-regex "^4.3.0"818 dependencies:818 dependencies:819 "@babel/runtime" "^7.17.9"819 "@babel/runtime" "^7.17.9"820820821"@polkadot/x-bigint@9.3.1":821"@polkadot/x-bigint@9.4.1":822 version "9.3.1"822 version "9.4.1"823 resolved "https://registry.yarnpkg.com/@polkadot/x-bigint/-/x-bigint-9.3.1.tgz#d83b2c6cce1bb859954764d465c27316c0f9a2ca"823 resolved "https://registry.yarnpkg.com/@polkadot/x-bigint/-/x-bigint-9.4.1.tgz#0a7c6b5743a6fb81ab6a1c3a48a584e774c37910"824 integrity sha512-eBukzcqxLwAbCNZzfcLhgTtgjOlNVRnS8SETun1ChMzLG7Ytm65qx8wleIpeYQ/vDIT07pA1sDmw+4Bhg+5ALw==824 integrity sha512-KlbXboegENoyrpjj+eXfY13vsqrXgk4620zCAUhKNH622ogdvAepHbY/DpV6w0FLEC6MwN9zd5cRuDBEXVeWiw==825 dependencies:825 dependencies:826 "@babel/runtime" "^7.18.3"826 "@babel/runtime" "^7.18.3"827 "@polkadot/x-global" "9.3.1"827 "@polkadot/x-global" "9.4.1"828828829"@polkadot/x-fetch@^9.3.1":829"@polkadot/x-fetch@^9.4.1":830 version "9.3.1"830 version "9.4.1"831 resolved "https://registry.yarnpkg.com/@polkadot/x-fetch/-/x-fetch-9.3.1.tgz#9d6e878abd6f2309414beecded6b8aad70bb3109"831 resolved "https://registry.yarnpkg.com/@polkadot/x-fetch/-/x-fetch-9.4.1.tgz#92802d3880db826a90bf1be90174a9fc73fc044a"832 integrity sha512-ypWxDxJ0Lq2enRf1+XcHBNRNxm1UFcrYJbsrGZkaP+AOZdPQLWrFB/JigSXTXOS3KnuxWecqLwiFOHis4GicXg==832 integrity sha512-CZFPZKgy09TOF5pOFRVVhGrAaAPdSMyrUSKwdO2I8DzdIE1tmjnol50dlnZja5t8zTD0n1uIY1H4CEWwc5NF/g==833 dependencies:833 dependencies:834 "@babel/runtime" "^7.18.3"834 "@babel/runtime" "^7.18.3"835 "@polkadot/x-global" "9.3.1"835 "@polkadot/x-global" "9.4.1"836 "@types/node-fetch" "^2.6.1"836 "@types/node-fetch" "^2.6.1"837 node-fetch "^2.6.7"837 node-fetch "^2.6.7"838838839"@polkadot/x-global@9.3.1", "@polkadot/x-global@^9.3.1":839"@polkadot/x-global@9.4.1", "@polkadot/x-global@^9.4.1":840 version "9.3.1"840 version "9.4.1"841 resolved "https://registry.yarnpkg.com/@polkadot/x-global/-/x-global-9.3.1.tgz#0bae8c93178f5616a93714f4abd98cd5199ec2a7"841 resolved "https://registry.yarnpkg.com/@polkadot/x-global/-/x-global-9.4.1.tgz#3bd44862ea2b7e0fb2de766dfa4d56bb46d19e17"842 integrity sha512-D/6wtyaZNDMIJ73fEoZbeDyULs1rBZc/pfLlSczo9efthOheZTY6KUIvPPrZFGd0b817j5Kex3ABcx7uYgWOjw==842 integrity sha512-eN4oZeRdIKQeUPNN7OtH5XeYp349d8V9+gW6W0BmCfB2lTg8TDlG1Nj+Cyxpjl9DNF5CiKudTq72zr0dDSRbwA==843 dependencies:843 dependencies:844 "@babel/runtime" "^7.18.3"844 "@babel/runtime" "^7.18.3"845845846"@polkadot/x-randomvalues@9.3.1":846"@polkadot/x-randomvalues@9.4.1":847 version "9.3.1"847 version "9.4.1"848 resolved "https://registry.yarnpkg.com/@polkadot/x-randomvalues/-/x-randomvalues-9.3.1.tgz#cc2af3dbbd0cd81da0b9cc39d03d43ab24fca946"848 resolved "https://registry.yarnpkg.com/@polkadot/x-randomvalues/-/x-randomvalues-9.4.1.tgz#ab995b3a22aee6bffc18490e636e1a7409f36a15"849 integrity sha512-3X9aIKXweeZXAmwUsJIEwssHKVNxDbGH3A4IkqzUcxne7QyODjLSwAD84n6mDSye00gnqk6L0rb/IwF2Vf+PqA==849 integrity sha512-TLOQw3JNPgCrcq9WO2ipdeG8scsSreu3m9hwj3n7nX/QKlVzSf4G5bxJo5TW1dwcUdHwBuVox+3zgCmo+NPh+Q==850 dependencies:850 dependencies:851 "@babel/runtime" "^7.18.3"851 "@babel/runtime" "^7.18.3"852 "@polkadot/x-global" "9.3.1"852 "@polkadot/x-global" "9.4.1"853853854"@polkadot/x-textdecoder@9.3.1":854"@polkadot/x-textdecoder@9.4.1":855 version "9.3.1"855 version "9.4.1"856 resolved "https://registry.yarnpkg.com/@polkadot/x-textdecoder/-/x-textdecoder-9.3.1.tgz#e449fb2adadbbf4e3e0ff95da969e634829fe07e"856 resolved "https://registry.yarnpkg.com/@polkadot/x-textdecoder/-/x-textdecoder-9.4.1.tgz#1d891b82f4192d92dd373d14ea4b5654d0130484"857 integrity sha512-YJgcVUYvuGOkRcBVKTmE6ZXB7VpzMmhCy+DfHDijbnuRDywK0uM8zwXK7hCuPLwfZ8iLX/APpzM5ryNaleiIiA==857 integrity sha512-yLulcgVASFUBJqrvS6Ssy0ko9teAfbu1ajH0r3Jjnqkpmmz2DJ1CS7tAktVa7THd4GHPGeKAVfxl+BbV/LZl+w==858 dependencies:858 dependencies:859 "@babel/runtime" "^7.18.3"859 "@babel/runtime" "^7.18.3"860 "@polkadot/x-global" "9.3.1"860 "@polkadot/x-global" "9.4.1"861861862"@polkadot/x-textencoder@9.3.1":862"@polkadot/x-textencoder@9.4.1":863 version "9.3.1"863 version "9.4.1"864 resolved "https://registry.yarnpkg.com/@polkadot/x-textencoder/-/x-textencoder-9.3.1.tgz#537f014f9fd7c22238b336d159d2cbaa6003aba2"864 resolved "https://registry.yarnpkg.com/@polkadot/x-textencoder/-/x-textencoder-9.4.1.tgz#09c47727d7713884cf82fd773e478487fe39d479"865 integrity sha512-f0hnI5iV/JmwJGPzKAeJ4R9ojuFJWbIM9NIg+Q53Fg6PmJUpY2xQVh1BjzSwRy+lFy0ubfB7Fw9A8KBkDYxCSw==865 integrity sha512-/47wa31jBa43ULqMO60vzcJigTG+ZAGNcyT5r6hFLrQzRzc8nIBjIOD8YWtnKM92r9NvlNv2wJhdamqyU0mntg==866 dependencies:866 dependencies:867 "@babel/runtime" "^7.18.3"867 "@babel/runtime" "^7.18.3"868 "@polkadot/x-global" "9.3.1"868 "@polkadot/x-global" "9.4.1"869869870"@polkadot/x-ws@^9.3.1":870"@polkadot/x-ws@^9.4.1":871 version "9.3.1"871 version "9.4.1"872 resolved "https://registry.yarnpkg.com/@polkadot/x-ws/-/x-ws-9.3.1.tgz#c30194a2d421b919d310668af97ee650a03e43d2"872 resolved "https://registry.yarnpkg.com/@polkadot/x-ws/-/x-ws-9.4.1.tgz#c48f2ef3e80532f4b366b57b6661429b46a16155"873 integrity sha512-9WoahcxygKcA7RWOeijW5Kzw6QG7QDc0MPFmygiNMuOqVeEP54c4Yrw1DirZnmRbedhms/OieskPDX4JvxlFmg==873 integrity sha512-zQjVxXgHsBVn27u4bjY01cFO6XWxgv2b3MMOpNHTKTAs8SLEmFf0LcT7fBShimyyudyTeJld5pHApJ4qp1OXxA==874 dependencies:874 dependencies:875 "@babel/runtime" "^7.18.3"875 "@babel/runtime" "^7.18.3"876 "@polkadot/x-global" "9.3.1"876 "@polkadot/x-global" "9.4.1"877 "@types/websocket" "^1.0.5"877 "@types/websocket" "^1.0.5"878 websocket "^1.0.34"878 websocket "^1.0.34"879879910 pako "^2.0.4"910 pako "^2.0.4"911 websocket "^1.0.32"911 websocket "^1.0.32"912912913"@substrate/ss58-registry@^1.20.0":913"@substrate/ss58-registry@^1.22.0":914 version "1.20.0"914 version "1.22.0"915 resolved "https://registry.yarnpkg.com/@substrate/ss58-registry/-/ss58-registry-1.20.0.tgz#a12fd6884eab4167b123a4ccafe94efe4d0109aa"915 resolved "https://registry.yarnpkg.com/@substrate/ss58-registry/-/ss58-registry-1.22.0.tgz#d115bc5dcab8c0f5800e05e4ef265949042b13ec"916 integrity sha512-0YyH7iYbn3yuzKjpRP9gKB4O+Xg6Ciszokz3h5wrRZMz/474rhjpmR+SF1NRvVdNv+rNl3ua/o45D8CPq++TUg==916 integrity sha512-IKqrPY0B3AeIXEc5/JGgEhPZLy+SmVyQf+k0SIGcNSTqt1GLI3gQFEOFwSScJdem+iYZQUrn6YPPxC3TpdSC3A==917917918"@szmarczak/http-timer@^1.1.2":918"@szmarczak/http-timer@^1.1.2":919 version "1.1.2"919 version "1.1.2"1012 form-data "^3.0.0"1012 form-data "^3.0.0"101310131014"@types/node@*", "@types/node@^17.0.35":1014"@types/node@*", "@types/node@^17.0.35":1015 version "17.0.35"1015 version "17.0.41"1016 resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.35.tgz#635b7586086d51fb40de0a2ec9d1014a5283ba4a"1016 resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.41.tgz#1607b2fd3da014ae5d4d1b31bc792a39348dfb9b"1017 integrity sha512-vu1SrqBjbbZ3J6vwY17jBs8Sr/BKA+/a/WtjRG+whKg1iuLFOosq872EXS0eXWILdO36DHQQeku/ZcL6hz2fpg==1017 integrity sha512-xA6drNNeqb5YyV5fO3OAEsnXLfO7uF0whiOfPTz5AeDo8KeZFmODKnvwPymMNO8qE/an8pVY/O50tig2SQCrGw==101810181019"@types/node@^12.12.6":1019"@types/node@^12.12.6":1020 version "12.20.52"1020 version "12.20.55"1021 resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.52.tgz#2fd2dc6bfa185601b15457398d4ba1ef27f81251"1021 resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240"1022 integrity sha512-cfkwWw72849SNYp3Zx0IcIs25vABmFh73xicxhCkTcvtZQeIez15PpwQN8fY3RD7gv1Wrxlc9MEtfMORZDEsGw==1022 integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==102310231024"@types/pbkdf2@^3.0.0":1024"@types/pbkdf2@^3.0.0":1025 version "3.1.0"1025 version "3.1.0"1043 "@types/node" "*"1043 "@types/node" "*"104410441045"@typescript-eslint/eslint-plugin@^5.26.0":1045"@typescript-eslint/eslint-plugin@^5.26.0":1046 version "5.26.0"1046 version "5.27.1"1047 resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.26.0.tgz#c1f98ccba9d345e38992975d3ca56ed6260643c2"1047 resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.27.1.tgz#fdf59c905354139046b41b3ed95d1609913d0758"1048 integrity sha512-oGCmo0PqnRZZndr+KwvvAUvD3kNE4AfyoGCwOZpoCncSh4MVD06JTE8XQa2u9u+NX5CsyZMBTEc2C72zx38eYA==1048 integrity sha512-6dM5NKT57ZduNnJfpY81Phe9nc9wolnMCnknb1im6brWi1RYv84nbMS3olJa27B6+irUVV1X/Wb+Am0FjJdGFw==1049 dependencies:1049 dependencies:1050 "@typescript-eslint/scope-manager" "5.26.0"1050 "@typescript-eslint/scope-manager" "5.27.1"1051 "@typescript-eslint/type-utils" "5.26.0"1051 "@typescript-eslint/type-utils" "5.27.1"1052 "@typescript-eslint/utils" "5.26.0"1052 "@typescript-eslint/utils" "5.27.1"1053 debug "^4.3.4"1053 debug "^4.3.4"1054 functional-red-black-tree "^1.0.1"1054 functional-red-black-tree "^1.0.1"1055 ignore "^5.2.0"1055 ignore "^5.2.0"1058 tsutils "^3.21.0"1058 tsutils "^3.21.0"105910591060"@typescript-eslint/parser@^5.26.0":1060"@typescript-eslint/parser@^5.26.0":1061 version "5.26.0"1061 version "5.27.1"1062 resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.26.0.tgz#a61b14205fe2ab7533deb4d35e604add9a4ceee2"1062 resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.27.1.tgz#3a4dcaa67e45e0427b6ca7bb7165122c8b569639"1063 integrity sha512-n/IzU87ttzIdnAH5vQ4BBDnLPly7rC5VnjN3m0xBG82HK6rhRxnCb3w/GyWbNDghPd+NktJqB/wl6+YkzZ5T5Q==1063 integrity sha512-7Va2ZOkHi5NP+AZwb5ReLgNF6nWLGTeUJfxdkVUAPPSaAdbWNnFZzLZ4EGGmmiCTg+AwlbE1KyUYTBglosSLHQ==1064 dependencies:1064 dependencies:1065 "@typescript-eslint/scope-manager" "5.26.0"1065 "@typescript-eslint/scope-manager" "5.27.1"1066 "@typescript-eslint/types" "5.26.0"1066 "@typescript-eslint/types" "5.27.1"1067 "@typescript-eslint/typescript-estree" "5.26.0"1067 "@typescript-eslint/typescript-estree" "5.27.1"1068 debug "^4.3.4"1068 debug "^4.3.4"106910691070"@typescript-eslint/scope-manager@5.26.0":1070"@typescript-eslint/scope-manager@5.27.1":1071 version "5.26.0"1071 version "5.27.1"1072 resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.26.0.tgz#44209c7f649d1a120f0717e0e82da856e9871339"1072 resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.27.1.tgz#4d1504392d01fe5f76f4a5825991ec78b7b7894d"1073 integrity sha512-gVzTJUESuTwiju/7NiTb4c5oqod8xt5GhMbExKsCTp6adU3mya6AGJ4Pl9xC7x2DX9UYFsjImC0mA62BCY22Iw==1073 integrity sha512-fQEOSa/QroWE6fAEg+bJxtRZJTH8NTskggybogHt4H9Da8zd4cJji76gA5SBlR0MgtwF7rebxTbDKB49YUCpAg==1074 dependencies:1074 dependencies:1075 "@typescript-eslint/types" "5.26.0"1075 "@typescript-eslint/types" "5.27.1"1076 "@typescript-eslint/visitor-keys" "5.26.0"1076 "@typescript-eslint/visitor-keys" "5.27.1"107710771078"@typescript-eslint/type-utils@5.26.0":1078"@typescript-eslint/type-utils@5.27.1":1079 version "5.26.0"1079 version "5.27.1"1080 resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.26.0.tgz#937dee97702361744a3815c58991acf078230013"1080 resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.27.1.tgz#369f695199f74c1876e395ebea202582eb1d4166"1081 integrity sha512-7ccbUVWGLmcRDSA1+ADkDBl5fP87EJt0fnijsMFTVHXKGduYMgienC/i3QwoVhDADUAPoytgjbZbCOMj4TY55A==1081 integrity sha512-+UC1vVUWaDHRnC2cQrCJ4QtVjpjjCgjNFpg8b03nERmkHv9JV9X5M19D7UFMd+/G7T/sgFwX2pGmWK38rqyvXw==1082 dependencies:1082 dependencies:1083 "@typescript-eslint/utils" "5.26.0"1083 "@typescript-eslint/utils" "5.27.1"1084 debug "^4.3.4"1084 debug "^4.3.4"1085 tsutils "^3.21.0"1085 tsutils "^3.21.0"108610861087"@typescript-eslint/types@5.26.0":1087"@typescript-eslint/types@5.27.1":1088 version "5.26.0"1088 version "5.27.1"1089 resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.26.0.tgz#cb204bb154d3c103d9cc4d225f311b08219469f3"1089 resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.27.1.tgz#34e3e629501349d38be6ae97841298c03a6ffbf1"1090 integrity sha512-8794JZFE1RN4XaExLWLI2oSXsVImNkl79PzTOOWt9h0UHROwJedNOD2IJyfL0NbddFllcktGIO2aOu10avQQyA==1090 integrity sha512-LgogNVkBhCTZU/m8XgEYIWICD6m4dmEDbKXESCbqOXfKZxRKeqpiJXQIErv66sdopRKZPo5l32ymNqibYEH/xg==109110911092"@typescript-eslint/typescript-estree@5.26.0":1092"@typescript-eslint/typescript-estree@5.27.1":1093 version "5.26.0"1093 version "5.27.1"1094 resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.26.0.tgz#16cbceedb0011c2ed4f607255f3ee1e6e43b88c3"1094 resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.27.1.tgz#7621ee78607331821c16fffc21fc7a452d7bc808"1095 integrity sha512-EyGpw6eQDsfD6jIqmXP3rU5oHScZ51tL/cZgFbFBvWuCwrIptl+oueUZzSmLtxFuSOQ9vDcJIs+279gnJkfd1w==1095 integrity sha512-DnZvvq3TAJ5ke+hk0LklvxwYsnXpRdqUY5gaVS0D4raKtbznPz71UJGnPTHEFo0GDxqLOLdMkkmVZjSpET1hFw==1096 dependencies:1096 dependencies:1097 "@typescript-eslint/types" "5.26.0"1097 "@typescript-eslint/types" "5.27.1"1098 "@typescript-eslint/visitor-keys" "5.26.0"1098 "@typescript-eslint/visitor-keys" "5.27.1"1099 debug "^4.3.4"1099 debug "^4.3.4"1100 globby "^11.1.0"1100 globby "^11.1.0"1101 is-glob "^4.0.3"1101 is-glob "^4.0.3"1102 semver "^7.3.7"1102 semver "^7.3.7"1103 tsutils "^3.21.0"1103 tsutils "^3.21.0"110411041105"@typescript-eslint/utils@5.26.0":1105"@typescript-eslint/utils@5.27.1":1106 version "5.26.0"1106 version "5.27.1"1107 resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.26.0.tgz#896b8480eb124096e99c8b240460bb4298afcfb4"1107 resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.27.1.tgz#b4678b68a94bc3b85bf08f243812a6868ac5128f"1108 integrity sha512-PJFwcTq2Pt4AMOKfe3zQOdez6InIDOjUJJD3v3LyEtxHGVVRK3Vo7Dd923t/4M9hSH2q2CLvcTdxlLPjcIk3eg==1108 integrity sha512-mZ9WEn1ZLDaVrhRaYgzbkXBkTPghPFsup8zDbbsYTxC5OmqrFE7skkKS/sraVsLP3TcT3Ki5CSyEFBRkLH/H/w==1109 dependencies:1109 dependencies:1110 "@types/json-schema" "^7.0.9"1110 "@types/json-schema" "^7.0.9"1111 "@typescript-eslint/scope-manager" "5.26.0"1111 "@typescript-eslint/scope-manager" "5.27.1"1112 "@typescript-eslint/types" "5.26.0"1112 "@typescript-eslint/types" "5.27.1"1113 "@typescript-eslint/typescript-estree" "5.26.0"1113 "@typescript-eslint/typescript-estree" "5.27.1"1114 eslint-scope "^5.1.1"1114 eslint-scope "^5.1.1"1115 eslint-utils "^3.0.0"1115 eslint-utils "^3.0.0"111611161117"@typescript-eslint/visitor-keys@5.26.0":1117"@typescript-eslint/visitor-keys@5.27.1":1118 version "5.26.0"1118 version "5.27.1"1119 resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.26.0.tgz#7195f756e367f789c0e83035297c45b417b57f57"1119 resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.27.1.tgz#05a62666f2a89769dac2e6baa48f74e8472983af"1120 integrity sha512-wei+ffqHanYDOQgg/fS6Hcar6wAWv0CUPQ3TZzOWd2BLfgP539rb49bwua8WRAs7R6kOSLn82rfEu2ro6Llt8Q==1120 integrity sha512-xYs6ffo01nhdJgPieyk7HAOpjhTsx7r/oB9LWEhwAXgwn33tkr+W8DI2ChboqhZlC4q3TC6geDYPoiX8ROqyOQ==1121 dependencies:1121 dependencies:1122 "@typescript-eslint/types" "5.26.0"1122 "@typescript-eslint/types" "5.27.1"1123 eslint-visitor-keys "^3.3.0"1123 eslint-visitor-keys "^3.3.0"112411241125"@ungap/promise-all-settled@1.1.2":1125"@ungap/promise-all-settled@1.1.2":1428 safe-buffer "^5.2.0"1428 safe-buffer "^5.2.0"142914291430browserslist@^4.20.2:1430browserslist@^4.20.2:1431 version "4.20.3"1431 version "4.20.4"1432 resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.3.tgz#eb7572f49ec430e054f56d52ff0ebe9be915f8bf"1432 resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.4.tgz#98096c9042af689ee1e0271333dbc564b8ce4477"1433 integrity sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==1433 integrity sha512-ok1d+1WpnU24XYN7oC3QWgTyMhY/avPJ/r9T00xxvUOIparA/gc+UPUMaod3i+G6s+nI2nUb9xZ5k794uIwShw==1434 dependencies:1434 dependencies:1435 caniuse-lite "^1.0.30001332"1435 caniuse-lite "^1.0.30001349"1436 electron-to-chromium "^1.4.118"1436 electron-to-chromium "^1.4.147"1437 escalade "^3.1.1"1437 escalade "^3.1.1"1438 node-releases "^2.0.3"1438 node-releases "^2.0.5"1439 picocolors "^1.0.0"1439 picocolors "^1.0.0"144014401441bs58@^4.0.0:1441bs58@^4.0.0:1528 resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a"1528 resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a"1529 integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==1529 integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==153015301531caniuse-lite@^1.0.30001332:1531caniuse-lite@^1.0.30001349:1532 version "1.0.30001344"1532 version "1.0.30001352"1533 resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001344.tgz#8a1e7fdc4db9c2ec79a05e9fd68eb93a761888bb"1533 resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001352.tgz#cc6f5da3f983979ad1e2cdbae0505dccaa7c6a12"1534 integrity sha512-0ZFjnlCaXNOAYcV7i+TtdKBp0L/3XEU2MF/x6Du1lrh+SRX4IfzIVL4HNJg5pB2PmFb8rszIGyOvsZnqqRoc2g==1534 integrity sha512-GUgH8w6YergqPQDGWhJGt8GDRnY0L/iJVQcU3eJ46GYf52R8tk0Wxp0PymuFVZboJYXGiCqwozAYZNRjVj6IcA==153515351536caseless@~0.12.0:1536caseless@~0.12.0:1537 version "0.12.0"1537 version "0.12.0"1970duplexer3@^0.1.4:1970duplexer3@^0.1.4:1971 version "0.1.4"1971 version "0.1.4"1972 resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2"1972 resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2"1973 integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=1973 integrity sha512-CEj8FwwNA4cVH2uFCoHUrmojhYh1vmCdOaneKJXwkeY1i9jnlslVo9dx+hQ5Hl9GnH/Bwy/IjxAyOePyPKYnzA==197419741975ecc-jsbn@~0.1.1:1975ecc-jsbn@~0.1.1:1976 version "0.1.2"1976 version "0.1.2"1977 resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9"1977 resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9"1978 integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=1978 integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==1979 dependencies:1979 dependencies:1980 jsbn "~0.1.0"1980 jsbn "~0.1.0"1981 safer-buffer "^2.1.0"1981 safer-buffer "^2.1.0"1990ee-first@1.1.1:1990ee-first@1.1.1:1991 version "1.1.1"1991 version "1.1.1"1992 resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"1992 resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"1993 integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=1993 integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==199419941995electron-to-chromium@^1.4.118:1995electron-to-chromium@^1.4.147:1996 version "1.4.140"1996 version "1.4.150"1997 resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.140.tgz#1b5836b7244aff341a11c8efd63dfe003dee4a19"1997 resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.150.tgz#89f0e12505462d5df7e56c5b91aff7e1dfdd33ec"1998 integrity sha512-NLz5va823QfJBYOO/hLV4AfU4Crmkl/6Hl2pH3qdJcmi0ySZ3YTWHxOlDm3uJOFBEPy3pIhu8gKQo6prQTWKKA==1998 integrity sha512-MP3oBer0X7ZeS9GJ0H6lmkn561UxiwOIY9TTkdxVY7lI9G6GVCKfgJaHaDcakwdKxBXA4T3ybeswH/WBIN/KTA==199919992000elliptic@6.5.4, elliptic@^6.4.0, elliptic@^6.5.3, elliptic@^6.5.4:2000elliptic@6.5.4, elliptic@^6.4.0, elliptic@^6.5.3, elliptic@^6.5.4:2001 version "6.5.4"2001 version "6.5.4"2018encodeurl@~1.0.2:2018encodeurl@~1.0.2:2019 version "1.0.2"2019 version "1.0.2"2020 resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"2020 resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"2021 integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=2021 integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==202220222023end-of-stream@^1.1.0:2023end-of-stream@^1.1.0:2024 version "1.4.4"2024 version "1.4.4"2077es6-iterator@^2.0.3:2077es6-iterator@^2.0.3:2078 version "2.0.3"2078 version "2.0.3"2079 resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7"2079 resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7"2080 integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c=2080 integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==2081 dependencies:2081 dependencies:2082 d "1"2082 d "1"2083 es5-ext "^0.10.35"2083 es5-ext "^0.10.35"2099escape-html@~1.0.3:2099escape-html@~1.0.3:2100 version "1.0.3"2100 version "1.0.3"2101 resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"2101 resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"2102 integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=2102 integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==210321032104escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0:2104escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0:2105 version "4.0.0"2105 version "4.0.0"2109escape-string-regexp@^1.0.5:2109escape-string-regexp@^1.0.5:2110 version "1.0.5"2110 version "1.0.5"2111 resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"2111 resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"2112 integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=2112 integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==211321132114eslint-scope@^5.1.1:2114eslint-scope@^5.1.1:2115 version "5.1.1"2115 version "5.1.1"2145 integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==2145 integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==214621462147eslint@^8.16.0:2147eslint@^8.16.0:2148 version "8.16.0"2148 version "8.17.0"2149 resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.16.0.tgz#6d936e2d524599f2a86c708483b4c372c5d3bbae"2149 resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.17.0.tgz#1cfc4b6b6912f77d24b874ca1506b0fe09328c21"2150 integrity sha512-MBndsoXY/PeVTDJeWsYj7kLZ5hQpJOfMYLsF6LicLHQWbRDG19lK5jOix4DPl8yY4SUFcE3txy86OzFLWT+yoA==2150 integrity sha512-gq0m0BTJfci60Fz4nczYxNAlED+sMcihltndR8t9t1evnU/azx53x3t2UHXC/uRjcbvRw/XctpaNygSTcQD+Iw==2151 dependencies:2151 dependencies:2152 "@eslint/eslintrc" "^1.3.0"2152 "@eslint/eslintrc" "^1.3.0"2153 "@humanwhocodes/config-array" "^0.9.2"2153 "@humanwhocodes/config-array" "^0.9.2"2226etag@~1.8.1:2226etag@~1.8.1:2227 version "1.8.1"2227 version "1.8.1"2228 resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"2228 resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"2229 integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=2229 integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==223022302231eth-ens-namehash@2.0.8:2231eth-ens-namehash@2.0.8:2232 version "2.0.8"2232 version "2.0.8"2233 resolved "https://registry.yarnpkg.com/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz#229ac46eca86d52e0c991e7cb2aef83ff0f68bcf"2233 resolved "https://registry.yarnpkg.com/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz#229ac46eca86d52e0c991e7cb2aef83ff0f68bcf"2234 integrity sha1-IprEbsqG1S4MmR58sq74P/D2i88=2234 integrity sha512-VWEI1+KJfz4Km//dadyvBBoBeSQ0MHTXPvr8UIXiLW6IanxvAV+DmlZAijZwAyggqGUfwQBeHf7tc9wzc1piSw==2235 dependencies:2235 dependencies:2236 idna-uts46-hx "^2.3.1"2236 idna-uts46-hx "^2.3.1"2237 js-sha3 "^0.5.7"2237 js-sha3 "^0.5.7"2285 secp256k1 "^4.0.1"2285 secp256k1 "^4.0.1"2286 setimmediate "^1.0.5"2286 setimmediate "^1.0.5"228722872288ethereumjs-util@^7.0.10, ethereumjs-util@^7.1.0, ethereumjs-util@^7.1.4:2288ethereumjs-util@^7.0.10, ethereumjs-util@^7.1.0, ethereumjs-util@^7.1.4, ethereumjs-util@^7.1.5:2289 version "7.1.4"2289 version "7.1.5"2290 resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.4.tgz#a6885bcdd92045b06f596c7626c3e89ab3312458"2290 resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz#9ecf04861e4fbbeed7465ece5f23317ad1129181"2291 integrity sha512-p6KmuPCX4mZIqsQzXfmSx9Y0l2hqf+VkAiwSisW3UKUFdk8ZkAt+AYaor83z2nSi6CU2zSsXMlD80hAbNEGM0A==2291 integrity sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==2292 dependencies:2292 dependencies:2293 "@types/bn.js" "^5.1.0"2293 "@types/bn.js" "^5.1.0"2294 bn.js "^5.1.2"2294 bn.js "^5.1.2"2299ethjs-unit@0.1.6:2299ethjs-unit@0.1.6:2300 version "0.1.6"2300 version "0.1.6"2301 resolved "https://registry.yarnpkg.com/ethjs-unit/-/ethjs-unit-0.1.6.tgz#c665921e476e87bce2a9d588a6fe0405b2c41699"2301 resolved "https://registry.yarnpkg.com/ethjs-unit/-/ethjs-unit-0.1.6.tgz#c665921e476e87bce2a9d588a6fe0405b2c41699"2302 integrity sha1-xmWSHkduh7ziqdWIpv4EBbLEFpk=2302 integrity sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==2303 dependencies:2303 dependencies:2304 bn.js "4.11.6"2304 bn.js "4.11.6"2305 number-to-bn "1.7.0"2305 number-to-bn "1.7.0"2374extsprintf@1.3.0:2374extsprintf@1.3.0:2375 version "1.3.0"2375 version "1.3.0"2376 resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"2376 resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"2377 integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=2377 integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==237823782379extsprintf@^1.2.0:2379extsprintf@^1.2.0:2380 version "1.4.1"2380 version "1.4.1"2405fast-levenshtein@^2.0.6:2405fast-levenshtein@^2.0.6:2406 version "2.0.6"2406 version "2.0.6"2407 resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"2407 resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"2408 integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=2408 integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==240924092410fastq@^1.6.0:2410fastq@^1.6.0:2411 version "1.13.0"2411 version "1.13.0"2507forever-agent@~0.6.1:2507forever-agent@~0.6.1:2508 version "0.6.1"2508 version "0.6.1"2509 resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"2509 resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"2510 integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=2510 integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==251125112512form-data@^3.0.0:2512form-data@^3.0.0:2513 version "3.0.1"2513 version "3.0.1"2535fresh@0.5.2:2535fresh@0.5.2:2536 version "0.5.2"2536 version "0.5.2"2537 resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"2537 resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"2538 integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=2538 integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==253925392540fs-extra@^4.0.2:2540fs-extra@^4.0.2:2541 version "4.0.3"2541 version "4.0.3"2556fs.realpath@^1.0.0:2556fs.realpath@^1.0.0:2557 version "1.0.0"2557 version "1.0.0"2558 resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"2558 resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"2559 integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=2559 integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==256025602561fsevents@~2.3.2:2561fsevents@~2.3.2:2562 version "2.3.2"2562 version "2.3.2"2581functional-red-black-tree@^1.0.1:2581functional-red-black-tree@^1.0.1:2582 version "1.0.1"2582 version "1.0.1"2583 resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"2583 resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"2584 integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=2584 integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==258525852586functions-have-names@^1.2.2:2586functions-have-names@^1.2.2:2587 version "1.2.3"2587 version "1.2.3"2601get-func-name@^2.0.0:2601get-func-name@^2.0.0:2602 version "2.0.0"2602 version "2.0.0"2603 resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41"2603 resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41"2604 integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=2604 integrity sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==260526052606get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1:2606get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1:2607 version "1.1.1"2607 version "1.1.2"2608 resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6"2608 resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.2.tgz#336975123e05ad0b7ba41f152ee4aadbea6cf598"2609 integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==2609 integrity sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==2610 dependencies:2610 dependencies:2611 function-bind "^1.1.1"2611 function-bind "^1.1.1"2612 has "^1.0.3"2612 has "^1.0.3"2613 has-symbols "^1.0.1"2613 has-symbols "^1.0.3"261426142615get-stream@^3.0.0:2615get-stream@^3.0.0:2616 version "3.0.0"2616 version "3.0.0"2617 resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"2617 resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"2618 integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=2618 integrity sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==261926192620get-stream@^4.1.0:2620get-stream@^4.1.0:2621 version "4.1.0"2621 version "4.1.0"2642getpass@^0.1.1:2642getpass@^0.1.1:2643 version "0.1.7"2643 version "0.1.7"2644 resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"2644 resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"2645 integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=2645 integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==2646 dependencies:2646 dependencies:2647 assert-plus "^1.0.0"2647 assert-plus "^1.0.0"264826482773har-schema@^2.0.0:2773har-schema@^2.0.0:2774 version "2.0.0"2774 version "2.0.0"2775 resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"2775 resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"2776 integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=2776 integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==277727772778har-validator@~5.1.3:2778har-validator@~5.1.3:2779 version "5.1.5"2779 version "5.1.5"2791has-flag@^3.0.0:2791has-flag@^3.0.0:2792 version "3.0.0"2792 version "3.0.0"2793 resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"2793 resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"2794 integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=2794 integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==279527952796has-flag@^4.0.0:2796has-flag@^4.0.0:2797 version "4.0.0"2797 version "4.0.0"2861hmac-drbg@^1.0.1:2861hmac-drbg@^1.0.1:2862 version "1.0.1"2862 version "1.0.1"2863 resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"2863 resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"2864 integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=2864 integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==2865 dependencies:2865 dependencies:2866 hash.js "^1.0.3"2866 hash.js "^1.0.3"2867 minimalistic-assert "^1.0.0"2867 minimalistic-assert "^1.0.0"2886http-https@^1.0.0:2886http-https@^1.0.0:2887 version "1.0.0"2887 version "1.0.0"2888 resolved "https://registry.yarnpkg.com/http-https/-/http-https-1.0.0.tgz#2f908dd5f1db4068c058cd6e6d4ce392c913389b"2888 resolved "https://registry.yarnpkg.com/http-https/-/http-https-1.0.0.tgz#2f908dd5f1db4068c058cd6e6d4ce392c913389b"2889 integrity sha1-L5CN1fHbQGjAWM1ubUzjkskTOJs=2889 integrity sha512-o0PWwVCSp3O0wS6FvNr6xfBCHgt0m1tvPLFOCc2iFDKTRAXhB7m8klDf7ErowFH8POa6dVdGatKU5I1YYwzUyg==289028902891http-signature@~1.2.0:2891http-signature@~1.2.0:2892 version "1.2.0"2892 version "1.2.0"2893 resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1"2893 resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1"2894 integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=2894 integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==2895 dependencies:2895 dependencies:2896 assert-plus "^1.0.0"2896 assert-plus "^1.0.0"2897 jsprim "^1.2.2"2897 jsprim "^1.2.2"2932imurmurhash@^0.1.4:2932imurmurhash@^0.1.4:2933 version "0.1.4"2933 version "0.1.4"2934 resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"2934 resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"2935 integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=2935 integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==293629362937inflight@^1.0.4:2937inflight@^1.0.4:2938 version "1.0.6"2938 version "1.0.6"2939 resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"2939 resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"2940 integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=2940 integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==2941 dependencies:2941 dependencies:2942 once "^1.3.0"2942 once "^1.3.0"2943 wrappy "1"2943 wrappy "1"3011is-extglob@^2.1.1:3011is-extglob@^2.1.1:3012 version "2.1.1"3012 version "2.1.1"3013 resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"3013 resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"3014 integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=3014 integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==301530153016is-fullwidth-code-point@^3.0.0:3016is-fullwidth-code-point@^3.0.0:3017 version "3.0.0"3017 version "3.0.0"3040is-hex-prefixed@1.0.0:3040is-hex-prefixed@1.0.0:3041 version "1.0.0"3041 version "1.0.0"3042 resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554"3042 resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554"3043 integrity sha1-fY035q135dEnFIkTxXPggtd39VQ=3043 integrity sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==304430443045is-negative-zero@^2.0.2:3045is-negative-zero@^2.0.2:3046 version "2.0.2"3046 version "2.0.2"3067is-plain-obj@^1.1.0:3067is-plain-obj@^1.1.0:3068 version "1.1.0"3068 version "1.1.0"3069 resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"3069 resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"3070 integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4=3070 integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==307130713072is-plain-obj@^2.1.0:3072is-plain-obj@^2.1.0:3073 version "2.1.0"3073 version "2.1.0"3104is-stream@^1.0.0:3104is-stream@^1.0.0:3105 version "1.1.0"3105 version "1.1.0"3106 resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"3106 resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"3107 integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=3107 integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==310831083109is-string@^1.0.5, is-string@^1.0.7:3109is-string@^1.0.5, is-string@^1.0.7:3110 version "1.0.7"3110 version "1.0.7"3134is-typedarray@^1.0.0, is-typedarray@~1.0.0:3134is-typedarray@^1.0.0, is-typedarray@~1.0.0:3135 version "1.0.0"3135 version "1.0.0"3136 resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"3136 resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"3137 integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=3137 integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==313831383139is-unicode-supported@^0.1.0:3139is-unicode-supported@^0.1.0:3140 version "0.1.0"3140 version "0.1.0"3151isexe@^2.0.0:3151isexe@^2.0.0:3152 version "2.0.0"3152 version "2.0.0"3153 resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"3153 resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"3154 integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=3154 integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==315531553156isobject@^3.0.1:3156isobject@^3.0.1:3157 version "3.0.1"3157 version "3.0.1"3158 resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"3158 resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"3159 integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=3159 integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==316031603161isstream@~0.1.2:3161isstream@~0.1.2:3162 version "0.1.2"3162 version "0.1.2"3163 resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"3163 resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"3164 integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=3164 integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==316531653166isurl@^1.0.0-alpha5:3166isurl@^1.0.0-alpha5:3167 version "1.0.0"3167 version "1.0.0"3179js-sha3@^0.5.7:3179js-sha3@^0.5.7:3180 version "0.5.7"3180 version "0.5.7"3181 resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.5.7.tgz#0d4ffd8002d5333aabaf4a23eed2f6374c9f28e7"3181 resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.5.7.tgz#0d4ffd8002d5333aabaf4a23eed2f6374c9f28e7"3182 integrity sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc=3182 integrity sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g==318331833184js-tokens@^4.0.0:3184js-tokens@^4.0.0:3185 version "4.0.0"3185 version "4.0.0"3196jsbn@~0.1.0:3196jsbn@~0.1.0:3197 version "0.1.1"3197 version "0.1.1"3198 resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"3198 resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"3199 integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM=3199 integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==320032003201jsesc@^2.5.1:3201jsesc@^2.5.1:3202 version "2.5.2"3202 version "2.5.2"3206json-buffer@3.0.0:3206json-buffer@3.0.0:3207 version "3.0.0"3207 version "3.0.0"3208 resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898"3208 resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898"3209 integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=3209 integrity sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==321032103211json-schema-traverse@^0.4.1:3211json-schema-traverse@^0.4.1:3212 version "0.4.1"3212 version "0.4.1"3221json-stable-stringify-without-jsonify@^1.0.1:3221json-stable-stringify-without-jsonify@^1.0.1:3222 version "1.0.1"3222 version "1.0.1"3223 resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"3223 resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"3224 integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=3224 integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==322532253226json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1:3226json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1:3227 version "5.0.1"3227 version "5.0.1"3228 resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"3228 resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"3229 integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=3229 integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==323032303231json5@^2.2.1:3231json5@^2.2.1:3232 version "2.2.1"3232 version "2.2.1"3236jsonfile@^4.0.0:3236jsonfile@^4.0.0:3237 version "4.0.0"3237 version "4.0.0"3238 resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"3238 resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"3239 integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=3239 integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==3240 optionalDependencies:3240 optionalDependencies:3241 graceful-fs "^4.1.6"3241 graceful-fs "^4.1.6"324232423299 resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"3299 resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"3300 integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==3300 integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==330133013302lodash.set@^4.3.2:3302lodash@^4.17.21:3303 version "4.3.2"3303 version "4.17.21"3304 resolved "https://registry.yarnpkg.com/lodash.set/-/lodash.set-4.3.2.tgz#d8757b1da807dde24816b0d6a84bea1a76230b23"3304 resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"3305 integrity sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=3305 integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==330633063307log-symbols@4.1.0:3307log-symbols@4.1.0:3308 version "4.1.0"3308 version "4.1.0"3361media-typer@0.3.0:3361media-typer@0.3.0:3362 version "0.3.0"3362 version "0.3.0"3363 resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"3363 resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"3364 integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=3364 integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==336533653366memorystream@^0.3.1:3366memorystream@^0.3.1:3367 version "0.3.1"3367 version "0.3.1"3368 resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2"3368 resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2"3369 integrity sha1-htcJCzDORV1j+64S3aUaR93K+bI=3369 integrity sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==337033703371merge-descriptors@1.0.1:3371merge-descriptors@1.0.1:3372 version "1.0.1"3372 version "1.0.1"3373 resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"3373 resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"3374 integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=3374 integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==337533753376merge2@^1.3.0, merge2@^1.4.1:3376merge2@^1.3.0, merge2@^1.4.1:3377 version "1.4.1"3377 version "1.4.1"3381methods@~1.1.2:3381methods@~1.1.2:3382 version "1.1.2"3382 version "1.1.2"3383 resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"3383 resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"3384 integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=3384 integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==338533853386micromatch@^4.0.4:3386micromatch@^4.0.4:3387 version "4.0.5"3387 version "4.0.5"3429min-document@^2.19.0:3429min-document@^2.19.0:3430 version "2.19.0"3430 version "2.19.0"3431 resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685"3431 resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685"3432 integrity sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=3432 integrity sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==3433 dependencies:3433 dependencies:3434 dom-walk "^0.1.0"3434 dom-walk "^0.1.0"343534353441minimalistic-crypto-utils@^1.0.1:3441minimalistic-crypto-utils@^1.0.1:3442 version "1.0.1"3442 version "1.0.1"3443 resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"3443 resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"3444 integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=3444 integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==344534453446minimatch@5.0.1:3446minimatch@5.0.1:3447 version "5.0.1"3447 version "5.0.1"3480mkdirp-promise@^5.0.1:3480mkdirp-promise@^5.0.1:3481 version "5.0.1"3481 version "5.0.1"3482 resolved "https://registry.yarnpkg.com/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz#e9b8f68e552c68a9c1713b84883f7a1dd039b8a1"3482 resolved "https://registry.yarnpkg.com/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz#e9b8f68e552c68a9c1713b84883f7a1dd039b8a1"3483 integrity sha1-6bj2jlUsaKnBcTuEiD96HdA5uKE=3483 integrity sha512-Hepn5kb1lJPtVW84RFT40YG1OddBNTOVUZR2bzQUHc+Z03en8/3uX0+060JDhcEzyO08HmipsN9DcnFMxhIL9w==3484 dependencies:3484 dependencies:3485 mkdirp "*"3485 mkdirp "*"348634863529 resolved "https://registry.yarnpkg.com/mock-fs/-/mock-fs-4.14.0.tgz#ce5124d2c601421255985e6e94da80a7357b1b18"3529 resolved "https://registry.yarnpkg.com/mock-fs/-/mock-fs-4.14.0.tgz#ce5124d2c601421255985e6e94da80a7357b1b18"3530 integrity sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw==3530 integrity sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw==353135313532mock-socket@^9.1.4:3532mock-socket@^9.1.5:3533 version "9.1.4"3533 version "9.1.5"3534 resolved "https://registry.yarnpkg.com/mock-socket/-/mock-socket-9.1.4.tgz#9295cb9c95d3b2730a7bc067008f055635d8fc75"3534 resolved "https://registry.yarnpkg.com/mock-socket/-/mock-socket-9.1.5.tgz#2c4e44922ad556843b6dfe09d14ed8041fa2cdeb"3535 integrity sha512-zc7jF8FId8pD9ojxWLcXrv4c2nEFOb6o8giPb45yQ6BfQX1tWuUktHNFSiy+KBt0VhYtHNt5MFIzclt0LIynEA==3535 integrity sha512-3DeNIcsQixWHHKk6NdoBhWI4t1VMj5/HzfnI1rE/pLl5qKx7+gd4DNA07ehTaZ6MoUU053si6Hd+YtiM/tQZfg==353635363537ms@2.0.0:3537ms@2.0.0:3538 version "2.0.0"3538 version "2.0.0"3539 resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"3539 resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"3540 integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=3540 integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==354135413542ms@2.1.2:3542ms@2.1.2:3543 version "2.1.2"3543 version "2.1.2"3592nano-json-stream-parser@^0.1.2:3592nano-json-stream-parser@^0.1.2:3593 version "0.1.2"3593 version "0.1.2"3594 resolved "https://registry.yarnpkg.com/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz#0cc8f6d0e2b622b479c40d499c46d64b755c6f5f"3594 resolved "https://registry.yarnpkg.com/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz#0cc8f6d0e2b622b479c40d499c46d64b755c6f5f"3595 integrity sha1-DMj20OK2IrR5xA1JnEbWS3Vcb18=3595 integrity sha512-9MqxMH/BSJC7dnLsEMPyfN5Dvoo49IsPFYMcHw3Bcfc2kN0lpHRBSzlMSVx4HGyJ7s9B31CyBTVehWJoQ8Ctew==359635963597nanoid@3.3.3:3597nanoid@3.3.3:3598 version "3.3.3"3598 version "3.3.3"3602natural-compare@^1.4.0:3602natural-compare@^1.4.0:3603 version "1.4.0"3603 version "1.4.0"3604 resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"3604 resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"3605 integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=3605 integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==360636063607negotiator@0.6.3:3607negotiator@0.6.3:3608 version "0.6.3"3608 version "0.6.3"3619 resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb"3619 resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb"3620 integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==3620 integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==362136213622nock@^13.2.4:3622nock@^13.2.6:3623 version "13.2.4"3623 version "13.2.6"3624 resolved "https://registry.yarnpkg.com/nock/-/nock-13.2.4.tgz#43a309d93143ee5cdcca91358614e7bde56d20e1"3624 resolved "https://registry.yarnpkg.com/nock/-/nock-13.2.6.tgz#35e419cd9d385ffa67e59523d9699e41b29e1a03"3625 integrity sha512-8GPznwxcPNCH/h8B+XZcKjYPXnUV5clOKCjAqyjsiqA++MpNx9E9+t8YPp0MbThO+KauRo7aZJ1WuIZmOrT2Ug==3625 integrity sha512-GbyeSwSEP0FYouzETZ0l/XNm5tNcDNcXJKw3LCAb+mx8bZSwg1wEEvdL0FAyg5TkBJYiWSCtw6ag4XfmBy60FA==3626 dependencies:3626 dependencies:3627 debug "^4.1.0"3627 debug "^4.1.0"3628 json-stringify-safe "^5.0.1"3628 json-stringify-safe "^5.0.1"3629 lodash.set "^4.3.2"3629 lodash "^4.17.21"3630 propagate "^2.0.0"3630 propagate "^2.0.0"363136313632node-addon-api@^2.0.0:3632node-addon-api@^2.0.0:3646 resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.4.0.tgz#42e99687ce87ddeaf3a10b99dc06abc11021f3f4"3646 resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.4.0.tgz#42e99687ce87ddeaf3a10b99dc06abc11021f3f4"3647 integrity sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ==3647 integrity sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ==364836483649node-releases@^2.0.3:3649node-releases@^2.0.5:3650 version "2.0.5"3650 version "2.0.5"3651 resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.5.tgz#280ed5bc3eba0d96ce44897d8aee478bfb3d9666"3651 resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.5.tgz#280ed5bc3eba0d96ce44897d8aee478bfb3d9666"3652 integrity sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==3652 integrity sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==3664number-to-bn@1.7.0:3664number-to-bn@1.7.0:3665 version "1.7.0"3665 version "1.7.0"3666 resolved "https://registry.yarnpkg.com/number-to-bn/-/number-to-bn-1.7.0.tgz#bb3623592f7e5f9e0030b1977bd41a0c53fe1ea0"3666 resolved "https://registry.yarnpkg.com/number-to-bn/-/number-to-bn-1.7.0.tgz#bb3623592f7e5f9e0030b1977bd41a0c53fe1ea0"3667 integrity sha1-uzYjWS9+X54AMLGXe9QaDFP+HqA=3667 integrity sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==3668 dependencies:3668 dependencies:3669 bn.js "4.11.6"3669 bn.js "4.11.6"3670 strip-hex-prefix "1.0.0"3670 strip-hex-prefix "1.0.0"3677object-assign@^4, object-assign@^4.1.0, object-assign@^4.1.1:3677object-assign@^4, object-assign@^4.1.0, object-assign@^4.1.1:3678 version "4.1.1"3678 version "4.1.1"3679 resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"3679 resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"3680 integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=3680 integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==368136813682object-inspect@^1.12.0, object-inspect@^1.9.0:3682object-inspect@^1.12.0, object-inspect@^1.9.0:3683 version "1.12.2"3683 version "1.12.2"3702oboe@2.1.5:3702oboe@2.1.5:3703 version "2.1.5"3703 version "2.1.5"3704 resolved "https://registry.yarnpkg.com/oboe/-/oboe-2.1.5.tgz#5554284c543a2266d7a38f17e073821fbde393cd"3704 resolved "https://registry.yarnpkg.com/oboe/-/oboe-2.1.5.tgz#5554284c543a2266d7a38f17e073821fbde393cd"3705 integrity sha1-VVQoTFQ6ImbXo48X4HOCH73jk80=3705 integrity sha512-zRFWiF+FoicxEs3jNI/WYUrVEgA7DeET/InK0XQuudGHRg8iIob3cNPrJTKaz4004uaA9Pbe+Dwa8iluhjLZWA==3706 dependencies:3706 dependencies:3707 http-https "^1.0.0"3707 http-https "^1.0.0"370837083716once@^1.3.0, once@^1.3.1, once@^1.4.0:3716once@^1.3.0, once@^1.3.1, once@^1.4.0:3717 version "1.4.0"3717 version "1.4.0"3718 resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"3718 resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"3719 integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=3719 integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==3720 dependencies:3720 dependencies:3721 wrappy "1"3721 wrappy "1"372237223735os-tmpdir@~1.0.2:3735os-tmpdir@~1.0.2:3736 version "1.0.2"3736 version "1.0.2"3737 resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"3737 resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"3738 integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=3738 integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==373937393740p-cancelable@^0.3.0:3740p-cancelable@^0.3.0:3741 version "0.3.0"3741 version "0.3.0"3750p-finally@^1.0.0:3750p-finally@^1.0.0:3751 version "1.0.0"3751 version "1.0.0"3752 resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"3752 resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"3753 integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=3753 integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==375437543755p-limit@^2.0.0:3755p-limit@^2.0.0:3756 version "2.3.0"3756 version "2.3.0"3783p-timeout@^1.1.1:3783p-timeout@^1.1.1:3784 version "1.2.1"3784 version "1.2.1"3785 resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-1.2.1.tgz#5eb3b353b7fce99f101a1038880bb054ebbea386"3785 resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-1.2.1.tgz#5eb3b353b7fce99f101a1038880bb054ebbea386"3786 integrity sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y=3786 integrity sha512-gb0ryzr+K2qFqFv6qi3khoeqMZF/+ajxQipEF6NteZVnvz9tzdsfAVj3lYtn1gAXvH5lfLwfxEII799gt/mRIA==3787 dependencies:3787 dependencies:3788 p-finally "^1.0.0"3788 p-finally "^1.0.0"378937893828path-exists@^3.0.0:3828path-exists@^3.0.0:3829 version "3.0.0"3829 version "3.0.0"3830 resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"3830 resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"3831 integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=3831 integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==383238323833path-exists@^4.0.0:3833path-exists@^4.0.0:3834 version "4.0.0"3834 version "4.0.0"3838path-is-absolute@^1.0.0:3838path-is-absolute@^1.0.0:3839 version "1.0.1"3839 version "1.0.1"3840 resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"3840 resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"3841 integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=3841 integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==384238423843path-key@^3.1.0:3843path-key@^3.1.0:3844 version "3.1.1"3844 version "3.1.1"3848path-to-regexp@0.1.7:3848path-to-regexp@0.1.7:3849 version "0.1.7"3849 version "0.1.7"3850 resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"3850 resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"3851 integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=3851 integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==385238523853path-type@^4.0.0:3853path-type@^4.0.0:3854 version "4.0.0"3854 version "4.0.0"3874performance-now@^2.1.0:3874performance-now@^2.1.0:3875 version "2.1.0"3875 version "2.1.0"3876 resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"3876 resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"3877 integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=3877 integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==387838783879picocolors@^1.0.0:3879picocolors@^1.0.0:3880 version "1.0.0"3880 version "1.0.0"3911prepend-http@^1.0.1:3911prepend-http@^1.0.1:3912 version "1.0.4"3912 version "1.0.4"3913 resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc"3913 resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc"3914 integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=3914 integrity sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==391539153916prepend-http@^2.0.0:3916prepend-http@^2.0.0:3917 version "2.0.0"3917 version "2.0.0"3918 resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897"3918 resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897"3919 integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=3919 integrity sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==392039203921process@^0.11.10:3921process@^0.11.10:3922 version "0.11.10"3922 version "0.11.10"3923 resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"3923 resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"3924 integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI=3924 integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==392539253926propagate@^2.0.0:3926propagate@^2.0.0:3927 version "2.0.1"3927 version "2.0.1"3964punycode@2.1.0:3964punycode@2.1.0:3965 version "2.1.0"3965 version "2.1.0"3966 resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d"3966 resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d"3967 integrity sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=3967 integrity sha512-Yxz2kRwT90aPiWEMHVYnEf4+rhwF1tBmmZ4KepCP+Wkium9JxtWnUm1nqGwpiAHr/tnTSeHqr3wb++jgSkXjhA==396839683969punycode@^2.1.0, punycode@^2.1.1:3969punycode@^2.1.0, punycode@^2.1.1:3970 version "2.1.1"3970 version "2.1.1"4091require-directory@^2.1.1:4091require-directory@^2.1.1:4092 version "2.1.1"4092 version "2.1.1"4093 resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"4093 resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"4094 integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I=4094 integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==409540954096resolve-from@^4.0.0:4096resolve-from@^4.0.0:4097 version "4.0.0"4097 version "4.0.0"4101responselike@^1.0.2:4101responselike@^1.0.2:4102 version "1.0.2"4102 version "1.0.2"4103 resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7"4103 resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7"4104 integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=4104 integrity sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==4105 dependencies:4105 dependencies:4106 lowercase-keys "^1.0.0"4106 lowercase-keys "^1.0.0"410741074242setimmediate@^1.0.5:4242setimmediate@^1.0.5:4243 version "1.0.5"4243 version "1.0.5"4244 resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"4244 resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"4245 integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=4245 integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==424642464247setprototypeof@1.2.0:4247setprototypeof@1.2.0:4248 version "1.2.0"4248 version "1.2.0"4353strict-uri-encode@^1.0.0:4353strict-uri-encode@^1.0.0:4354 version "1.1.0"4354 version "1.1.0"4355 resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713"4355 resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713"4356 integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=4356 integrity sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==435743574358string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:4358string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:4359 version "4.2.3"4359 version "4.2.3"4399strip-hex-prefix@1.0.0:4399strip-hex-prefix@1.0.0:4400 version "1.0.0"4400 version "1.0.0"4401 resolved "https://registry.yarnpkg.com/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz#0c5f155fef1151373377de9dbb588da05500e36f"4401 resolved "https://registry.yarnpkg.com/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz#0c5f155fef1151373377de9dbb588da05500e36f"4402 integrity sha1-DF8VX+8RUTczd96du1iNoFUA428=4402 integrity sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==4403 dependencies:4403 dependencies:4404 is-hex-prefixed "1.0.0"4404 is-hex-prefixed "1.0.0"440544054512 integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=4512 integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=451345134514ts-node@^10.8.0:4514ts-node@^10.8.0:4515 version "10.8.0"4515 version "10.8.1"4516 resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.8.0.tgz#3ceb5ac3e67ae8025c1950626aafbdecb55d82ce"4516 resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.8.1.tgz#ea2bd3459011b52699d7e88daa55a45a1af4f066"4517 integrity sha512-/fNd5Qh+zTt8Vt1KbYZjRHCE9sI5i7nqfD/dzBBRDeVXZXS6kToW6R7tTU6Nd4XavFs0mAVCg29Q//ML7WsZYA==4517 integrity sha512-Wwsnao4DQoJsN034wePSg5nZiw4YKXf56mPIAeD6wVmiv+RytNSWqc2f3fKvcUoV+Yn2+yocD71VOfQHbmVX4g==4518 dependencies:4518 dependencies:4519 "@cspotcode/source-map-support" "^0.8.0"4519 "@cspotcode/source-map-support" "^0.8.0"4520 "@tsconfig/node10" "^1.0.7"4520 "@tsconfig/node10" "^1.0.7"4607 is-typedarray "^1.0.0"4607 is-typedarray "^1.0.0"460846084609typescript@^4.7.2:4609typescript@^4.7.2:4610 version "4.7.2"4610 version "4.7.3"4611 resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.2.tgz#1f9aa2ceb9af87cca227813b4310fff0b51593c4"4611 resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.3.tgz#8364b502d5257b540f9de4c40be84c98e23a129d"4612 integrity sha512-Mamb1iX2FDUpcTRzltPxgWMKy3fhg0TN378ylbktPGPK/99KbDtMQ4W1hwgsbPAsG3a0xKa1vmw4VKZQbkvz5A==4612 integrity sha512-WOkT3XYvrpXx4vMMqlD+8R8R37fZkjyLGlxavMc4iB8lrl8L0DeTcHbYgw/v0N/z9wAFsgBhcsF0ruoySS22mA==461346134614uglify-js@^3.1.4:4614uglify-js@^3.1.4:4615 version "3.15.5"4615 version "3.16.0"4616 resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.15.5.tgz#2b10f9e0bfb3f5c15a8e8404393b6361eaeb33b3"4616 resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.16.0.tgz#b778ba0831ca102c1d8ecbdec2d2bdfcc7353190"4617 integrity sha512-hNM5q5GbBRB5xB+PMqVRcgYe4c8jbyZ1pzZhS6jbq54/4F2gFK869ZheiE5A8/t+W5jtTNpWef/5Q9zk639FNQ==4617 integrity sha512-FEikl6bR30n0T3amyBh3LoiBdqHRy/f4H80+My34HOesOKyHfOsxAPAxOoqC0JUnC1amnO0IwkYC3sko51caSw==461846184619ultron@~1.1.0:4619ultron@~1.1.0:4620 version "1.1.1"4620 version "1.1.1"