use near_sdk::{AccountId, PromiseOrValue, ext_contract, json_types::U128}; use super::{Token, TokenId, resolver::MultiTokenResolver}; #[ext_contract(ext_mt_core)] pub trait MultiTokenCore: MultiTokenResolver { fn mt_transfer( &mut self, receiver_id: AccountId, token_id: TokenId, amount: U128, approval: Option<(AccountId, u64)>, memo: Option, ); fn mt_batch_transfer( &mut self, receiver_id: AccountId, token_ids: Vec, amounts: Vec, approvals: Option>>, memo: Option, ); fn mt_transfer_call( &mut self, receiver_id: AccountId, token_id: TokenId, amount: U128, approval: Option<(AccountId, u64)>, memo: Option, msg: String, ) -> PromiseOrValue>; fn mt_batch_transfer_call( &mut self, receiver_id: AccountId, token_ids: Vec, amounts: Vec, approvals: Option>>, memo: Option, msg: String, ) -> PromiseOrValue>; fn mt_token(&self, token_ids: Vec) -> Vec>; fn mt_balance_of(&self, account_id: AccountId, token_id: TokenId) -> U128; fn mt_batch_balance_of(&self, account_id: AccountId, token_ids: Vec) -> Vec; fn mt_supply(&self, token_id: TokenId) -> Option; fn mt_batch_supply(&self, token_ids: Vec) -> Vec>; }