difftreelog
remove warnings
in: master
8 files changed
pallets/balances-adapter/src/common.rsdiffbeforeafterboth121213pub struct CommonWeights<T: Config>(PhantomData<T>);13pub struct CommonWeights<T: Config>(PhantomData<T>);14impl<T: Config> CommonWeightInfo<T::CrossAccountId> for CommonWeights<T> {14impl<T: Config> CommonWeightInfo<T::CrossAccountId> for CommonWeights<T> {15 fn create_multiple_items(amount: &[up_data_structs::CreateItemData]) -> Weight {15 fn create_multiple_items(_amount: &[up_data_structs::CreateItemData]) -> Weight {16 Weight::default()16 Weight::default()17 }17 }181819 fn create_multiple_items_ex(19 fn create_multiple_items_ex(20 cost: &up_data_structs::CreateItemExData<T::CrossAccountId>,20 _cost: &up_data_structs::CreateItemExData<T::CrossAccountId>,21 ) -> Weight {21 ) -> Weight {22 Weight::default()22 Weight::default()23 }23 }26 Weight::default()26 Weight::default()27 }27 }282829 fn set_collection_properties(amount: u32) -> Weight {29 fn set_collection_properties(_amount: u32) -> Weight {30 Weight::default()30 Weight::default()31 }31 }323233 fn delete_collection_properties(amount: u32) -> Weight {33 fn delete_collection_properties(_amount: u32) -> Weight {34 Weight::default()34 Weight::default()35 }35 }363637 fn set_token_properties(amount: u32) -> Weight {37 fn set_token_properties(_amount: u32) -> Weight {38 Weight::default()38 Weight::default()39 }39 }404041 fn delete_token_properties(amount: u32) -> Weight {41 fn delete_token_properties(_amount: u32) -> Weight {42 Weight::default()42 Weight::default()43 }43 }444445 fn set_token_property_permissions(amount: u32) -> Weight {45 fn set_token_property_permissions(_amount: u32) -> Weight {46 Weight::default()46 Weight::default()47 }47 }484870 Weight::default()70 Weight::default()71 }71 }727273 fn burn_recursively_breadth_raw(amount: u32) -> Weight {73 fn burn_recursively_breadth_raw(_amount: u32) -> Weight {74 Weight::default()74 Weight::default()75 }75 }767692impl<T: Config> CommonCollectionOperations<T> for NativeFungibleHandle<T> {92impl<T: Config> CommonCollectionOperations<T> for NativeFungibleHandle<T> {93 fn create_item(93 fn create_item(94 &self,94 &self,95 sender: <T>::CrossAccountId,95 _sender: <T>::CrossAccountId,96 to: <T>::CrossAccountId,96 _to: <T>::CrossAccountId,97 data: up_data_structs::CreateItemData,97 _data: up_data_structs::CreateItemData,98 nesting_budget: &dyn up_data_structs::budget::Budget,98 _nesting_budget: &dyn up_data_structs::budget::Budget,99 ) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {99 ) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {100 fail!(<pallet_common::Error<T>>::UnsupportedOperation);100 fail!(<pallet_common::Error<T>>::UnsupportedOperation);101 }101 }102102103 fn create_multiple_items(103 fn create_multiple_items(104 &self,104 &self,105 sender: <T>::CrossAccountId,105 _sender: <T>::CrossAccountId,106 to: <T>::CrossAccountId,106 _to: <T>::CrossAccountId,107 data: Vec<up_data_structs::CreateItemData>,107 _data: Vec<up_data_structs::CreateItemData>,108 nesting_budget: &dyn up_data_structs::budget::Budget,108 _nesting_budget: &dyn up_data_structs::budget::Budget,109 ) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {109 ) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {110 fail!(<pallet_common::Error<T>>::UnsupportedOperation);110 fail!(<pallet_common::Error<T>>::UnsupportedOperation);111 }111 }112112113 fn create_multiple_items_ex(113 fn create_multiple_items_ex(114 &self,114 &self,115 sender: <T>::CrossAccountId,115 _sender: <T>::CrossAccountId,116 data: up_data_structs::CreateItemExData<<T>::CrossAccountId>,116 _data: up_data_structs::CreateItemExData<<T>::CrossAccountId>,117 nesting_budget: &dyn up_data_structs::budget::Budget,117 _nesting_budget: &dyn up_data_structs::budget::Budget,118 ) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {118 ) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {119 fail!(<pallet_common::Error<T>>::UnsupportedOperation);119 fail!(<pallet_common::Error<T>>::UnsupportedOperation);120 }120 }121121122 fn burn_item(122 fn burn_item(123 &self,123 &self,124 sender: <T>::CrossAccountId,124 _sender: <T>::CrossAccountId,125 token: TokenId,125 _token: TokenId,126 amount: u128,126 _amount: u128,127 ) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {127 ) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {128 fail!(<pallet_common::Error<T>>::UnsupportedOperation);128 fail!(<pallet_common::Error<T>>::UnsupportedOperation);129 }129 }130130131 fn burn_item_recursively(131 fn burn_item_recursively(132 &self,132 &self,133 sender: <T>::CrossAccountId,133 _sender: <T>::CrossAccountId,134 token: TokenId,134 _token: TokenId,135 self_budget: &dyn up_data_structs::budget::Budget,135 _self_budget: &dyn up_data_structs::budget::Budget,136 breadth_budget: &dyn up_data_structs::budget::Budget,136 _breadth_budget: &dyn up_data_structs::budget::Budget,137 ) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {137 ) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {138 fail!(<pallet_common::Error<T>>::UnsupportedOperation);138 fail!(<pallet_common::Error<T>>::UnsupportedOperation);139 }139 }140140141 fn set_collection_properties(141 fn set_collection_properties(142 &self,142 &self,143 sender: <T>::CrossAccountId,143 _sender: <T>::CrossAccountId,144 properties: Vec<up_data_structs::Property>,144 _properties: Vec<up_data_structs::Property>,145 ) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {145 ) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {146 fail!(<pallet_common::Error<T>>::UnsupportedOperation);146 fail!(<pallet_common::Error<T>>::UnsupportedOperation);147 }147 }148148149 fn delete_collection_properties(149 fn delete_collection_properties(150 &self,150 &self,151 sender: &<T>::CrossAccountId,151 _sender: &<T>::CrossAccountId,152 property_keys: Vec<up_data_structs::PropertyKey>,152 _property_keys: Vec<up_data_structs::PropertyKey>,153 ) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {153 ) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {154 fail!(<pallet_common::Error<T>>::UnsupportedOperation);154 fail!(<pallet_common::Error<T>>::UnsupportedOperation);155 }155 }156156157 fn set_token_properties(157 fn set_token_properties(158 &self,158 &self,159 sender: <T>::CrossAccountId,159 _sender: <T>::CrossAccountId,160 token_id: TokenId,160 _token_id: TokenId,161 properties: Vec<up_data_structs::Property>,161 _properties: Vec<up_data_structs::Property>,162 budget: &dyn up_data_structs::budget::Budget,162 _budget: &dyn up_data_structs::budget::Budget,163 ) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {163 ) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {164 fail!(<pallet_common::Error<T>>::UnsupportedOperation);164 fail!(<pallet_common::Error<T>>::UnsupportedOperation);165 }165 }166166167 fn delete_token_properties(167 fn delete_token_properties(168 &self,168 &self,169 sender: <T>::CrossAccountId,169 _sender: <T>::CrossAccountId,170 token_id: TokenId,170 _token_id: TokenId,171 property_keys: Vec<up_data_structs::PropertyKey>,171 _property_keys: Vec<up_data_structs::PropertyKey>,172 budget: &dyn up_data_structs::budget::Budget,172 _budget: &dyn up_data_structs::budget::Budget,173 ) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {173 ) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {174 fail!(<pallet_common::Error<T>>::UnsupportedOperation);174 fail!(<pallet_common::Error<T>>::UnsupportedOperation);175 }175 }176176177 fn set_token_property_permissions(177 fn set_token_property_permissions(178 &self,178 &self,179 sender: &<T>::CrossAccountId,179 _sender: &<T>::CrossAccountId,180 property_permissions: Vec<up_data_structs::PropertyKeyPermission>,180 _property_permissions: Vec<up_data_structs::PropertyKeyPermission>,181 ) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {181 ) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {182 fail!(<pallet_common::Error<T>>::UnsupportedOperation);182 fail!(<pallet_common::Error<T>>::UnsupportedOperation);183 }183 }186 &self,186 &self,187 sender: <T>::CrossAccountId,187 sender: <T>::CrossAccountId,188 to: <T>::CrossAccountId,188 to: <T>::CrossAccountId,189 token: TokenId,189 _token: TokenId,190 amount: u128,190 amount: u128,191 budget: &dyn up_data_structs::budget::Budget,191 _budget: &dyn up_data_structs::budget::Budget,192 ) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {192 ) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {193 with_weight(193 with_weight(194 <T as Config>::Currency::transfer(194 <T as Config>::Currency::transfer(203203204 fn approve(204 fn approve(205 &self,205 &self,206 sender: <T>::CrossAccountId,206 _sender: <T>::CrossAccountId,207 spender: <T>::CrossAccountId,207 _spender: <T>::CrossAccountId,208 token: TokenId,208 _token: TokenId,209 amount: u128,209 _amount: u128,210 ) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {210 ) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {211 fail!(<pallet_common::Error<T>>::UnsupportedOperation);211 fail!(<pallet_common::Error<T>>::UnsupportedOperation);212 }212 }213213214 fn approve_from(214 fn approve_from(215 &self,215 &self,216 sender: <T>::CrossAccountId,216 _sender: <T>::CrossAccountId,217 from: <T>::CrossAccountId,217 _from: <T>::CrossAccountId,218 to: <T>::CrossAccountId,218 _to: <T>::CrossAccountId,219 token: TokenId,219 _token: TokenId,220 amount: u128,220 _amount: u128,221 ) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {221 ) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {222 fail!(<pallet_common::Error<T>>::UnsupportedOperation);222 fail!(<pallet_common::Error<T>>::UnsupportedOperation);223 }223 }227 sender: <T>::CrossAccountId,227 sender: <T>::CrossAccountId,228 from: <T>::CrossAccountId,228 from: <T>::CrossAccountId,229 to: <T>::CrossAccountId,229 to: <T>::CrossAccountId,230 token: TokenId,230 _token: TokenId,231 amount: u128,231 amount: u128,232 budget: &dyn up_data_structs::budget::Budget,232 _budget: &dyn up_data_structs::budget::Budget,233 ) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {233 ) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {234 if sender != from {234 if sender != from {235 fail!(<pallet_common::Error<T>>::NoPermission);235 fail!(<pallet_common::Error<T>>::NoPermission);247247248 fn burn_from(248 fn burn_from(249 &self,249 &self,250 sender: <T>::CrossAccountId,250 _sender: <T>::CrossAccountId,251 from: <T>::CrossAccountId,251 _from: <T>::CrossAccountId,252 token: TokenId,252 _token: TokenId,253 amount: u128,253 _amount: u128,254 budget: &dyn up_data_structs::budget::Budget,254 _budget: &dyn up_data_structs::budget::Budget,255 ) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {255 ) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {256 fail!(<pallet_common::Error<T>>::UnsupportedOperation);256 fail!(<pallet_common::Error<T>>::UnsupportedOperation);257 }257 }258258259 fn check_nesting(259 fn check_nesting(260 &self,260 &self,261 sender: <T>::CrossAccountId,261 _sender: <T>::CrossAccountId,262 from: (up_data_structs::CollectionId, TokenId),262 _from: (up_data_structs::CollectionId, TokenId),263 under: TokenId,263 _under: TokenId,264 budget: &dyn up_data_structs::budget::Budget,264 _budget: &dyn up_data_structs::budget::Budget,265 ) -> frame_support::sp_runtime::DispatchResult {265 ) -> frame_support::sp_runtime::DispatchResult {266 fail!(<pallet_common::Error<T>>::UnsupportedOperation);266 fail!(<pallet_common::Error<T>>::UnsupportedOperation);267 }267 }268268269 fn nest(&self, under: TokenId, to_nest: (up_data_structs::CollectionId, TokenId)) {}269 fn nest(&self, _under: TokenId, _to_nest: (up_data_structs::CollectionId, TokenId)) {}270270271 fn unnest(&self, under: TokenId, to_nest: (up_data_structs::CollectionId, TokenId)) {}271 fn unnest(&self, _under: TokenId, _to_nest: (up_data_structs::CollectionId, TokenId)) {}272272273 fn account_tokens(&self, account: <T>::CrossAccountId) -> Vec<TokenId> {273 fn account_tokens(&self, account: <T>::CrossAccountId) -> Vec<TokenId> {274 let balance = <T as Config>::Currency::total_balance(account.as_sub());274 let balance = <T as Config>::Currency::total_balance(account.as_sub());293293294 fn token_owner(294 fn token_owner(295 &self,295 &self,296 token: TokenId,296 _token: TokenId,297 ) -> Result<<T>::CrossAccountId, up_data_structs::TokenOwnerError> {297 ) -> Result<<T>::CrossAccountId, up_data_structs::TokenOwnerError> {298 Err(up_data_structs::TokenOwnerError::MultipleOwners)298 Err(up_data_structs::TokenOwnerError::MultipleOwners)299 }299 }300300301 fn token_owners(&self, token: TokenId) -> Vec<<T>::CrossAccountId> {301 fn token_owners(&self, _token: TokenId) -> Vec<<T>::CrossAccountId> {302 vec![]302 vec![]303 }303 }304304305 fn token_property(305 fn token_property(306 &self,306 &self,307 token_id: TokenId,307 _token_id: TokenId,308 key: &up_data_structs::PropertyKey,308 _key: &up_data_structs::PropertyKey,309 ) -> Option<up_data_structs::PropertyValue> {309 ) -> Option<up_data_structs::PropertyValue> {310 None310 None311 }311 }312312313 fn token_properties(313 fn token_properties(314 &self,314 &self,315 token: TokenId,315 _token: TokenId,316 keys: Option<Vec<up_data_structs::PropertyKey>>,316 _keys: Option<Vec<up_data_structs::PropertyKey>>,317 ) -> Vec<up_data_structs::Property> {317 ) -> Vec<up_data_structs::Property> {318 vec![]318 vec![]319 }319 }344344345 fn allowance(345 fn allowance(346 &self,346 &self,347 sender: <T>::CrossAccountId,347 _sender: <T>::CrossAccountId,348 spender: <T>::CrossAccountId,348 _spender: <T>::CrossAccountId,349 token: TokenId,349 _token: TokenId,350 ) -> u128 {350 ) -> u128 {351 0351 0352 }352 }357357358 fn set_allowance_for_all(358 fn set_allowance_for_all(359 &self,359 &self,360 owner: <T>::CrossAccountId,360 _owner: <T>::CrossAccountId,361 operator: <T>::CrossAccountId,361 _operator: <T>::CrossAccountId,362 approve: bool,362 _approve: bool,363 ) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {363 ) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {364 fail!(<pallet_common::Error<T>>::UnsupportedOperation);364 fail!(<pallet_common::Error<T>>::UnsupportedOperation);365 }365 }366366367 fn allowance_for_all(&self, owner: <T>::CrossAccountId, operator: <T>::CrossAccountId) -> bool {367 fn allowance_for_all(368 &self,369 _owner: <T>::CrossAccountId,370 _operator: <T>::CrossAccountId,371 ) -> bool {368 false372 false369 }373 }370374371 fn repair_item(375 fn repair_item(372 &self,376 &self,373 token: TokenId,377 _token: TokenId,374 ) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {378 ) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {375 fail!(<pallet_common::Error<T>>::UnsupportedOperation);379 fail!(<pallet_common::Error<T>>::UnsupportedOperation);376 }380 }pallets/balances-adapter/src/erc.rsdiffbeforeafterboth9use pallet_evm_coder_substrate::{9use pallet_evm_coder_substrate::{10 call, dispatch_to_evm,10 call, dispatch_to_evm,11 execution::{PreDispatch, Result},11 execution::{PreDispatch, Result},12 frontier_contract, WithRecorder, SubstrateRecorder,12 frontier_contract,13};13};14use sp_core::{U256, Get};14use sp_core::{U256, Get};15use sp_std::vec::Vec;15use sp_std::vec::Vec;28 to: Address,28 to: Address,29 value: U256,29 value: U256,30 },30 },31 Approval {32 #[indexed]33 owner: Address,34 #[indexed]35 spender: Address,36 value: U256,37 },38}31}393240#[solidity_interface(name = ERC20, events(ERC20Events), enum(derive(PreDispatch)), enum_attr(weight), expect_selector = 0x942e8b22)]33#[solidity_interface(name = ERC20, events(ERC20Events), enum(derive(PreDispatch)), enum_attr(weight), expect_selector = 0x942e8b22)]pallets/balances-adapter/src/lib.rsdiffbeforeafterboth1// #![doc = include_str!("../README.md")]1// #![doc = include_str!("../README.md")]2#![cfg_attr(not(feature = "std"), no_std)]2#![cfg_attr(not(feature = "std"), no_std)]3#![warn(missing_docs)]435extern crate alloc;4extern crate alloc;6use frame_support::sp_runtime::DispatchResult;5use frame_support::sp_runtime::DispatchResult;7pub use pallet::*;6pub use pallet::*;8use pallet_common::CollectionHandle;9use pallet_evm_coder_substrate::{WithRecorder, SubstrateRecorder};7use pallet_evm_coder_substrate::{WithRecorder, SubstrateRecorder};10811pub mod common;9pub mod common;12pub mod erc;10pub mod erc;131114pub(crate) type SelfWeightOf<T> = <T as Config>::WeightInfo;12pub(crate) type SelfWeightOf<T> = <T as Config>::WeightInfo;151314/// Handle for native fungible collection16pub struct NativeFungibleHandle<T: Config>(SubstrateRecorder<T>);15pub struct NativeFungibleHandle<T: Config>(SubstrateRecorder<T>);17impl<T: Config> NativeFungibleHandle<T> {16impl<T: Config> NativeFungibleHandle<T> {17 /// Creates a handle18 pub fn new() -> NativeFungibleHandle<T> {18 pub fn new() -> NativeFungibleHandle<T> {19 Self(SubstrateRecorder::new(u64::MAX))19 Self(SubstrateRecorder::new(u64::MAX))20 }20 }212122 /// Check if the collection is internal22 pub fn check_is_internal(&self) -> DispatchResult {23 pub fn check_is_internal(&self) -> DispatchResult {23 Ok(())24 Ok(())24 }25 }35#[frame_support::pallet]36#[frame_support::pallet]36pub mod pallet {37pub mod pallet {37 use alloc::string::String;38 use alloc::string::String;38 use frame_support::{traits::Get, sp_runtime::DispatchResult};39 use frame_support::{traits::Get};39 use pallet_balances::WeightInfo;40 use pallet_balances::WeightInfo;40 use sp_core::U256;41 use sp_core::U256;414242 #[pallet::config]43 #[pallet::config]43 pub trait Config:44 pub trait Config:44 frame_system::Config + pallet_evm_coder_substrate::Config + pallet_common::Config45 frame_system::Config + pallet_evm_coder_substrate::Config + pallet_common::Config45 {46 {47 /// Currency from `pallet_balances`46 type Currency: frame_support::traits::Currency<48 type Currency: frame_support::traits::Currency<47 Self::AccountId,49 Self::AccountId,48 Balance = Self::CurrencyBalance,50 Balance = Self::CurrencyBalance,49 >;51 >;52 /// Balance type of chain50 type CurrencyBalance: Into<U256> + TryFrom<U256> + PartialEq<u128> + From<u128> + Into<u128>;53 type CurrencyBalance: Into<U256> + TryFrom<U256> + PartialEq<u128> + From<u128> + Into<u128>;515455 /// Decimals of balance52 type Decimals: Get<u8>;56 type Decimals: Get<u8>;57 /// Collection name53 type Name: Get<String>;58 type Name: Get<String>;59 /// Collection symbol54 type Symbol: Get<String>;60 type Symbol: Get<String>;556162 /// Weight information56 type WeightInfo: WeightInfo;63 type WeightInfo: WeightInfo;57 }64 }58 #[pallet::pallet]65 #[pallet::pallet]59 pub struct Pallet<T>(_);66 pub struct Pallet<T>(_);6061 // #[pallet::call]62 impl<T: Config> Pallet<T> {63 pub fn dummy() -> DispatchResult {64 Ok(())65 }66 }67}67}6868pallets/common/src/dispatch.rsdiffbeforeafterboth11use sp_runtime::DispatchError;11use sp_runtime::DispatchError;12use up_data_structs::{CollectionId, CreateCollectionData, CollectionFlags};12use up_data_structs::{CollectionId, CreateCollectionData, CollectionFlags};131314use crate::{pallet::Config, CommonCollectionOperations, CollectionHandle};14use crate::{pallet::Config, CommonCollectionOperations};151516// TODO: move to benchmarking16// TODO: move to benchmarking17/// Price of [`dispatch_tx`] call with noop `call` argument17/// Price of [`dispatch_tx`] call with noop `call` argument666667/// Interface for working with different collections through the dispatcher.67/// Interface for working with different collections through the dispatcher.68pub trait CollectionDispatch<T: Config> {68pub trait CollectionDispatch<T: Config> {69 /// Check if the collection is internal.69 fn check_is_internal(&self) -> DispatchResult;70 fn check_is_internal(&self) -> DispatchResult;707171 /// Create a collection. The collection will be created according to the value of [`data.mode`](CreateCollectionData::mode).72 /// Create a collection. The collection will be created according to the value of [`data.mode`](CreateCollectionData::mode).pallets/common/src/erc.rsdiffbeforeafterboth80impl CommonEvmHandler for () {80impl CommonEvmHandler for () {81 const CODE: &'static [u8] = &[];81 const CODE: &'static [u8] = &[];828283 fn call(self, handle: &mut impl PrecompileHandle) -> Option<PrecompileResult> {83 fn call(self, _handle: &mut impl PrecompileHandle) -> Option<PrecompileResult> {84 None84 None85 }85 }86}86}pallets/common/src/lib.rsdiffbeforeafterboth462 }462 }463463464 const STORAGE_VERSION: StorageVersion = StorageVersion::new(1);464 const STORAGE_VERSION: StorageVersion = StorageVersion::new(1);465 /// Collection id for native fungible collction.465 pub const NATIVE_FINGIBLE_COLLECTION_ID: CollectionId = CollectionId(0);466 pub const NATIVE_FINGIBLE_COLLECTION_ID: CollectionId = CollectionId(0);466467467 #[pallet::pallet]468 #[pallet::pallet]pallets/structure/src/lib.rsdiffbeforeafterboth60use frame_support::dispatch::{DispatchError, DispatchResult, DispatchResultWithPostInfo};60use frame_support::dispatch::{DispatchError, DispatchResult, DispatchResultWithPostInfo};61use frame_support::fail;61use frame_support::fail;62pub use pallet::*;62pub use pallet::*;63use pallet_common::{dispatch::CollectionDispatch, CollectionHandle};63use pallet_common::{dispatch::CollectionDispatch};64use up_data_structs::{64use up_data_structs::{65 CollectionId, TokenId, mapping::TokenAddressMapping, budget::Budget, TokenOwnerError,65 CollectionId, TokenId, mapping::TokenAddressMapping, budget::Budget, TokenOwnerError,66};66};runtime/common/dispatch.rsdiffbeforeafterboth25};25};26pub use pallet_common::dispatch::CollectionDispatch;26pub use pallet_common::dispatch::CollectionDispatch;27use pallet_fungible::{Pallet as PalletFungible, FungibleHandle};27use pallet_fungible::{Pallet as PalletFungible, FungibleHandle};28use pallet_balances_adapter::{Pallet as PalletNativeFungible, NativeFungibleHandle};28use pallet_balances_adapter::{NativeFungibleHandle};29use pallet_nonfungible::{Pallet as PalletNonfungible, NonfungibleHandle};29use pallet_nonfungible::{Pallet as PalletNonfungible, NonfungibleHandle};30use pallet_refungible::{30use pallet_refungible::{31 Pallet as PalletRefungible, RefungibleHandle, erc_token::RefungibleTokenHandle,31 Pallet as PalletRefungible, RefungibleHandle, erc_token::RefungibleTokenHandle,