1234567891011121314151617#![cfg_attr(not(feature = "std"), no_std)]1819use up_data_structs::{20 CollectionId, TokenId, RpcCollection, CollectionStats, CollectionLimits, Property,21 PropertyKeyPermission, TokenData, TokenChild,22};2324use sp_std::vec::Vec;25use codec::Decode;26use sp_runtime::{27 DispatchError,28 traits::{AtLeast32BitUnsigned, Member},29};3031type Result<T> = core::result::Result<T, DispatchError>;3233sp_api::decl_runtime_apis! {34 #[api_version(2)]35 36 pub trait UniqueApi<BlockNumber ,CrossAccountId, AccountId> where37 BlockNumber: Decode + Member + AtLeast32BitUnsigned,38 AccountId: Decode,39 CrossAccountId: pallet_evm::account::CrossAccountId<AccountId>,40 {41 #[changed_in(2)]42 fn token_owner(collection: CollectionId, token: TokenId) -> Result<CrossAccountId>;4344 45 fn account_tokens(collection: CollectionId, account: CrossAccountId) -> Result<Vec<TokenId>>;4647 48 fn collection_tokens(collection: CollectionId) -> Result<Vec<TokenId>>;4950 51 fn token_exists(collection: CollectionId, token: TokenId) -> Result<bool>;5253 54 fn token_owner(collection: CollectionId, token: TokenId) -> Result<Option<CrossAccountId>>;5556 57 fn topmost_token_owner(collection: CollectionId, token: TokenId) -> Result<Option<CrossAccountId>>;5859 60 fn token_children(collection: CollectionId, token: TokenId) -> Result<Vec<TokenChild>>;6162 63 fn collection_properties(collection: CollectionId, properties: Option<Vec<Vec<u8>>>) -> Result<Vec<Property>>;6465 66 fn token_properties(67 collection: CollectionId,68 token_id: TokenId,69 properties: Option<Vec<Vec<u8>>>70 ) -> Result<Vec<Property>>;7172 73 fn property_permissions(74 collection: CollectionId,75 properties: Option<Vec<Vec<u8>>>76 ) -> Result<Vec<PropertyKeyPermission>>;7778 79 fn token_data(80 collection: CollectionId,81 token_id: TokenId,82 keys: Option<Vec<Vec<u8>>>83 ) -> Result<TokenData<CrossAccountId>>;8485 86 fn total_supply(collection: CollectionId) -> Result<u32>;8788 89 fn account_balance(collection: CollectionId, account: CrossAccountId) -> Result<u32>;9091 92 fn balance(collection: CollectionId, account: CrossAccountId, token: TokenId) -> Result<u128>;9394 95 fn allowance(96 collection: CollectionId,97 sender: CrossAccountId,98 spender: CrossAccountId,99 token: TokenId,100 ) -> Result<u128>;101102 103 fn adminlist(collection: CollectionId) -> Result<Vec<CrossAccountId>>;104105 106 fn allowlist(collection: CollectionId) -> Result<Vec<CrossAccountId>>;107108 109 fn allowed(collection: CollectionId, user: CrossAccountId) -> Result<bool>;110111 112 fn last_token_id(collection: CollectionId) -> Result<TokenId>;113114 115 fn collection_by_id(collection: CollectionId) -> Result<Option<RpcCollection<AccountId>>>;116117 118 fn collection_stats() -> Result<CollectionStats>;119120 121 fn next_sponsored(collection: CollectionId, account: CrossAccountId, token: TokenId) -> Result<Option<u64>>;122123 124 fn effective_collection_limits(collection_id: CollectionId) -> Result<Option<CollectionLimits>>;125126 127 fn total_pieces(collection_id: CollectionId, token_id: TokenId) -> Result<Option<u128>>;128 fn token_owners(collection: CollectionId, token: TokenId) -> Result<Vec<CrossAccountId>>;129 fn total_staked(staker: CrossAccountId) -> Result<u128>;130 fn total_staked_per_block(staker: CrossAccountId) -> Result<Vec<(BlockNumber, u128)>>;131 fn total_staking_locked(staker: CrossAccountId) -> Result<u128>;132 }133}