git.delta.rocks / unique-network / refs/commits / 12dc7ebeba3c

difftreelog

source

pallets/balances-adapter/src/common.rs9.4 KiBsourcehistory
1use alloc::{vec, vec::Vec};2use core::marker::PhantomData;3use crate::{Config, NativeFungibleHandle};4use frame_support::{5	fail,6	traits::{Currency, ExistenceRequirement},7	weights::Weight,8};9use pallet_balances::{weights::SubstrateWeight as BalancesWeight, WeightInfo};10use pallet_common::{erc::CrossAccountId, CommonCollectionOperations, CommonWeightInfo, with_weight};11use up_data_structs::TokenId;1213pub struct CommonWeights<T: Config>(PhantomData<T>);14impl<T: Config> CommonWeightInfo<T::CrossAccountId> for CommonWeights<T> {15	fn create_multiple_items(_amount: &[up_data_structs::CreateItemData]) -> Weight {16		Weight::default()17	}1819	fn create_multiple_items_ex(20		_cost: &up_data_structs::CreateItemExData<T::CrossAccountId>,21	) -> Weight {22		Weight::default()23	}2425	fn burn_item() -> Weight {26		Weight::default()27	}2829	fn set_collection_properties(_amount: u32) -> Weight {30		Weight::default()31	}3233	fn delete_collection_properties(_amount: u32) -> Weight {34		Weight::default()35	}3637	fn set_token_properties(_amount: u32) -> Weight {38		Weight::default()39	}4041	fn delete_token_properties(_amount: u32) -> Weight {42		Weight::default()43	}4445	fn set_token_property_permissions(_amount: u32) -> Weight {46		Weight::default()47	}4849	fn transfer() -> Weight {50		<BalancesWeight<T> as WeightInfo>::transfer()51	}5253	fn approve() -> Weight {54		Weight::default()55	}5657	fn approve_from() -> Weight {58		Weight::default()59	}6061	fn transfer_from() -> Weight {62		<BalancesWeight<T> as WeightInfo>::transfer()63	}6465	fn burn_from() -> Weight {66		Weight::default()67	}6869	fn burn_recursively_self_raw() -> Weight {70		Weight::default()71	}7273	fn burn_recursively_breadth_raw(_amount: u32) -> Weight {74		Weight::default()75	}7677	fn token_owner() -> Weight {78		Weight::default()79	}8081	fn set_allowance_for_all() -> Weight {82		Weight::default()83	}8485	fn force_repair_item() -> Weight {86		Weight::default()87	}88}8990/// Implementation of `CommonCollectionOperations` for `FungibleHandle`. It wraps FungibleHandle Pallete91/// methods and adds weight info.92impl<T: Config> CommonCollectionOperations<T> for NativeFungibleHandle<T> {93	fn create_item(94		&self,95		_sender: <T>::CrossAccountId,96		_to: <T>::CrossAccountId,97		_data: up_data_structs::CreateItemData,98		_nesting_budget: &dyn up_data_structs::budget::Budget,99	) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {100		fail!(<pallet_common::Error<T>>::UnsupportedOperation);101	}102103	fn create_multiple_items(104		&self,105		_sender: <T>::CrossAccountId,106		_to: <T>::CrossAccountId,107		_data: Vec<up_data_structs::CreateItemData>,108		_nesting_budget: &dyn up_data_structs::budget::Budget,109	) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {110		fail!(<pallet_common::Error<T>>::UnsupportedOperation);111	}112113	fn create_multiple_items_ex(114		&self,115		_sender: <T>::CrossAccountId,116		_data: up_data_structs::CreateItemExData<<T>::CrossAccountId>,117		_nesting_budget: &dyn up_data_structs::budget::Budget,118	) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {119		fail!(<pallet_common::Error<T>>::UnsupportedOperation);120	}121122	fn burn_item(123		&self,124		_sender: <T>::CrossAccountId,125		_token: TokenId,126		_amount: u128,127	) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {128		fail!(<pallet_common::Error<T>>::UnsupportedOperation);129	}130131	fn burn_item_recursively(132		&self,133		_sender: <T>::CrossAccountId,134		_token: TokenId,135		_self_budget: &dyn up_data_structs::budget::Budget,136		_breadth_budget: &dyn up_data_structs::budget::Budget,137	) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {138		fail!(<pallet_common::Error<T>>::UnsupportedOperation);139	}140141	fn set_collection_properties(142		&self,143		_sender: <T>::CrossAccountId,144		_properties: Vec<up_data_structs::Property>,145	) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {146		fail!(<pallet_common::Error<T>>::UnsupportedOperation);147	}148149	fn delete_collection_properties(150		&self,151		_sender: &<T>::CrossAccountId,152		_property_keys: Vec<up_data_structs::PropertyKey>,153	) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {154		fail!(<pallet_common::Error<T>>::UnsupportedOperation);155	}156157	fn set_token_properties(158		&self,159		_sender: <T>::CrossAccountId,160		_token_id: TokenId,161		_properties: Vec<up_data_structs::Property>,162		_budget: &dyn up_data_structs::budget::Budget,163	) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {164		fail!(<pallet_common::Error<T>>::UnsupportedOperation);165	}166167	fn delete_token_properties(168		&self,169		_sender: <T>::CrossAccountId,170		_token_id: TokenId,171		_property_keys: Vec<up_data_structs::PropertyKey>,172		_budget: &dyn up_data_structs::budget::Budget,173	) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {174		fail!(<pallet_common::Error<T>>::UnsupportedOperation);175	}176177	fn set_token_property_permissions(178		&self,179		_sender: &<T>::CrossAccountId,180		_property_permissions: Vec<up_data_structs::PropertyKeyPermission>,181	) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {182		fail!(<pallet_common::Error<T>>::UnsupportedOperation);183	}184185	fn transfer(186		&self,187		sender: <T>::CrossAccountId,188		to: <T>::CrossAccountId,189		_token: TokenId,190		amount: u128,191		_budget: &dyn up_data_structs::budget::Budget,192	) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {193		with_weight(194			<T as Config>::Currency::transfer(195				sender.as_sub(),196				to.as_sub(),197				amount.into(),198				ExistenceRequirement::KeepAlive,199			),200			Default::default(),201		)202	}203204	fn approve(205		&self,206		_sender: <T>::CrossAccountId,207		_spender: <T>::CrossAccountId,208		_token: TokenId,209		_amount: u128,210	) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {211		fail!(<pallet_common::Error<T>>::UnsupportedOperation);212	}213214	fn approve_from(215		&self,216		_sender: <T>::CrossAccountId,217		_from: <T>::CrossAccountId,218		_to: <T>::CrossAccountId,219		_token: TokenId,220		_amount: u128,221	) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {222		fail!(<pallet_common::Error<T>>::UnsupportedOperation);223	}224225	fn transfer_from(226		&self,227		sender: <T>::CrossAccountId,228		from: <T>::CrossAccountId,229		to: <T>::CrossAccountId,230		_token: TokenId,231		amount: u128,232		_budget: &dyn up_data_structs::budget::Budget,233	) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {234		if sender != from {235			fail!(<pallet_common::Error<T>>::NoPermission);236		}237		with_weight(238			<T as Config>::Currency::transfer(239				from.as_sub(),240				to.as_sub(),241				amount.into(),242				ExistenceRequirement::KeepAlive,243			),244			Default::default(),245		)246	}247248	fn burn_from(249		&self,250		_sender: <T>::CrossAccountId,251		_from: <T>::CrossAccountId,252		_token: TokenId,253		_amount: u128,254		_budget: &dyn up_data_structs::budget::Budget,255	) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {256		fail!(<pallet_common::Error<T>>::UnsupportedOperation);257	}258259	fn check_nesting(260		&self,261		_sender: <T>::CrossAccountId,262		_from: (up_data_structs::CollectionId, TokenId),263		_under: TokenId,264		_budget: &dyn up_data_structs::budget::Budget,265	) -> frame_support::sp_runtime::DispatchResult {266		fail!(<pallet_common::Error<T>>::UnsupportedOperation);267	}268269	fn nest(&self, _under: TokenId, _to_nest: (up_data_structs::CollectionId, TokenId)) {}270271	fn unnest(&self, _under: TokenId, _to_nest: (up_data_structs::CollectionId, TokenId)) {}272273	fn account_tokens(&self, account: <T>::CrossAccountId) -> Vec<TokenId> {274		let balance = <T as Config>::Currency::total_balance(account.as_sub());275		if balance != 0 {276			vec![TokenId::default()]277		} else {278			vec![]279		}280	}281282	fn collection_tokens(&self) -> Vec<TokenId> {283		vec![TokenId::default()]284	}285286	fn token_exists(&self, token: TokenId) -> bool {287		token == TokenId::default()288	}289290	fn last_token_id(&self) -> TokenId {291		TokenId::default()292	}293294	fn token_owner(295		&self,296		_token: TokenId,297	) -> Result<<T>::CrossAccountId, up_data_structs::TokenOwnerError> {298		Err(up_data_structs::TokenOwnerError::MultipleOwners)299	}300301	fn token_owners(&self, _token: TokenId) -> Vec<<T>::CrossAccountId> {302		vec![]303	}304305	fn token_property(306		&self,307		_token_id: TokenId,308		_key: &up_data_structs::PropertyKey,309	) -> Option<up_data_structs::PropertyValue> {310		None311	}312313	fn token_properties(314		&self,315		_token: TokenId,316		_keys: Option<Vec<up_data_structs::PropertyKey>>,317	) -> Vec<up_data_structs::Property> {318		vec![]319	}320321	fn total_supply(&self) -> u32 {322		1323	}324325	fn account_balance(&self, account: <T>::CrossAccountId) -> u32 {326		let balance: u128 = <T as Config>::Currency::free_balance(account.as_sub()).into();327		(balance != 0).into()328	}329330	fn balance(&self, account: <T>::CrossAccountId, token: TokenId) -> u128 {331		if token != TokenId::default() {332			return 0;333		}334		<T as Config>::Currency::free_balance(account.as_sub()).into()335	}336337	fn total_pieces(&self, token: TokenId) -> Option<u128> {338		if token != TokenId::default() {339			return None;340		}341		let total = <T as Config>::Currency::total_issuance();342		Some(total.into())343	}344345	fn allowance(346		&self,347		_sender: <T>::CrossAccountId,348		_spender: <T>::CrossAccountId,349		_token: TokenId,350	) -> u128 {351		0352	}353354	fn refungible_extensions(&self) -> Option<&dyn pallet_common::RefungibleExtensions<T>> {355		None356	}357358	fn set_allowance_for_all(359		&self,360		_owner: <T>::CrossAccountId,361		_operator: <T>::CrossAccountId,362		_approve: bool,363	) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {364		fail!(<pallet_common::Error<T>>::UnsupportedOperation);365	}366367	fn allowance_for_all(368		&self,369		_owner: <T>::CrossAccountId,370		_operator: <T>::CrossAccountId,371	) -> bool {372		false373	}374375	fn repair_item(376		&self,377		_token: TokenId,378	) -> frame_support::pallet_prelude::DispatchResultWithPostInfo {379		fail!(<pallet_common::Error<T>>::UnsupportedOperation);380	}381}