1#![cfg_attr(not(feature = "std"), no_std)]23use up_data_structs::{CollectionId, TokenId, Collection, CollectionStats};4use sp_std::vec::Vec;5use sp_core::H160;6use codec::Decode;7use sp_runtime::DispatchError;89type Result<T> = core::result::Result<T, DispatchError>;1011sp_api::decl_runtime_apis! {12 #[api_version(2)]13 pub trait UniqueApi<CrossAccountId, AccountId> where14 AccountId: Decode,15 CrossAccountId: pallet_common::account::CrossAccountId<AccountId>,16 {17 #[changed_in(2)]18 fn token_owner(collection: CollectionId, token: TokenId) -> Result<CrossAccountId>;1920 fn account_tokens(collection: CollectionId, account: CrossAccountId) -> Result<Vec<TokenId>>;21 fn token_exists(collection: CollectionId, token: TokenId) -> Result<bool>;2223 fn token_owner(collection: CollectionId, token: TokenId) -> Result<Option<CrossAccountId>>;24 fn const_metadata(collection: CollectionId, token: TokenId) -> Result<Vec<u8>>;25 fn variable_metadata(collection: CollectionId, token: TokenId) -> Result<Vec<u8>>;2627 fn collection_tokens(collection: CollectionId) -> Result<u32>;28 fn account_balance(collection: CollectionId, account: CrossAccountId) -> Result<u32>;29 fn balance(collection: CollectionId, account: CrossAccountId, token: TokenId) -> Result<u128>;30 fn allowance(31 collection: CollectionId,32 sender: CrossAccountId,33 spender: CrossAccountId,34 token: TokenId,35 ) -> Result<u128>;3637 38 fn eth_contract_code(account: H160) -> Option<Vec<u8>>;3940 fn adminlist(collection: CollectionId) -> Result<Vec<CrossAccountId>>;41 fn allowlist(collection: CollectionId) -> Result<Vec<CrossAccountId>>;42 fn allowed(collection: CollectionId, user: CrossAccountId) -> Result<bool>;43 fn last_token_id(collection: CollectionId) -> Result<TokenId>;44 fn collection_by_id(collection: CollectionId) -> Result<Option<Collection<AccountId>>>;45 fn collection_stats() -> Result<CollectionStats>;46 }47}