1234567891011121314151617#![cfg_attr(not(feature = "std"), no_std)]1819extern crate alloc;2021use parity_scale_codec::Decode;22use sp_runtime::DispatchError;23use sp_std::vec::Vec;24use up_data_structs::{25 CollectionId, CollectionLimits, CollectionStats, Property, PropertyKeyPermission,26 RpcCollection, TokenChild, TokenData, TokenId,27};2829type Result<T> = core::result::Result<T, DispatchError>;3031sp_api::decl_runtime_apis! {32 #[api_version(3)]33 34 pub trait UniqueApi<CrossAccountId, AccountId> where35 AccountId: Decode,36 CrossAccountId: pallet_evm::account::CrossAccountId<AccountId>,37 {38 39 fn account_tokens(collection: CollectionId, account: CrossAccountId) -> Result<Vec<TokenId>>;4041 42 fn collection_tokens(collection: CollectionId) -> Result<Vec<TokenId>>;4344 45 fn token_exists(collection: CollectionId, token: TokenId) -> Result<bool>;4647 48 fn token_owner(collection: CollectionId, token: TokenId) -> Result<Option<CrossAccountId>>;4950 51 fn topmost_token_owner(collection: CollectionId, token: TokenId) -> Result<Option<CrossAccountId>>;5253 54 fn token_children(collection: CollectionId, token: TokenId) -> Result<Vec<TokenChild>>;5556 57 fn collection_properties(collection: CollectionId, properties: Option<Vec<Vec<u8>>>) -> Result<Vec<Property>>;5859 60 fn token_properties(61 collection: CollectionId,62 token_id: TokenId,63 properties: Option<Vec<Vec<u8>>>64 ) -> Result<Vec<Property>>;6566 67 fn property_permissions(68 collection: CollectionId,69 properties: Option<Vec<Vec<u8>>>70 ) -> Result<Vec<PropertyKeyPermission>>;7172 73 fn token_data(74 collection: CollectionId,75 token_id: TokenId,76 keys: Option<Vec<Vec<u8>>>77 ) -> Result<TokenData<CrossAccountId>>;7879 #[changed_in(3)]80 fn token_data(81 collection: CollectionId,82 token_id: TokenId,83 keys: Option<Vec<Vec<u8>>>84 ) -> Result<up_data_structs::TokenDataVersion1<CrossAccountId>>;8586 87 fn total_supply(collection: CollectionId) -> Result<u32>;8889 90 fn account_balance(collection: CollectionId, account: CrossAccountId) -> Result<u32>;9192 93 fn balance(collection: CollectionId, account: CrossAccountId, token: TokenId) -> Result<u128>;9495 96 fn allowance(97 collection: CollectionId,98 sender: CrossAccountId,99 spender: CrossAccountId,100 token: TokenId,101 ) -> Result<u128>;102103 104 fn adminlist(collection: CollectionId) -> Result<Vec<CrossAccountId>>;105106 107 fn allowlist(collection: CollectionId) -> Result<Vec<CrossAccountId>>;108109 110 fn allowed(collection: CollectionId, user: CrossAccountId) -> Result<bool>;111112 113 fn last_token_id(collection: CollectionId) -> Result<TokenId>;114115 116 fn collection_by_id(collection: CollectionId) -> Result<Option<RpcCollection<AccountId>>>;117118 #[changed_in(3)]119 fn collection_by_id(collection: CollectionId) -> Result<Option<up_data_structs::RawEncoded>>;120121 122 fn collection_stats() -> Result<CollectionStats>;123124 125 fn next_sponsored(collection: CollectionId, account: CrossAccountId, token: TokenId) -> Result<Option<u64>>;126127 128 fn effective_collection_limits(collection_id: CollectionId) -> Result<Option<CollectionLimits>>;129130 131 fn total_pieces(collection_id: CollectionId, token_id: TokenId) -> Result<Option<u128>>;132133 fn token_owners(collection: CollectionId, token: TokenId) -> Result<Vec<CrossAccountId>>;134135 136 fn allowance_for_all(collection: CollectionId, owner: CrossAccountId, operator: CrossAccountId) -> Result<bool>;137 }138}