defuse_nep245/
core.rs

1use near_sdk::{AccountId, PromiseOrValue, ext_contract, json_types::U128};
2
3use super::{Token, TokenId, resolver::MultiTokenResolver};
4
5#[ext_contract(ext_mt_core)]
6pub trait MultiTokenCore: MultiTokenResolver {
7    fn mt_transfer(
8        &mut self,
9        receiver_id: AccountId,
10        token_id: TokenId,
11        amount: U128,
12        approval: Option<(AccountId, u64)>,
13        memo: Option<String>,
14    );
15
16    fn mt_batch_transfer(
17        &mut self,
18        receiver_id: AccountId,
19        token_ids: Vec<TokenId>,
20        amounts: Vec<U128>,
21        approvals: Option<Vec<Option<(AccountId, u64)>>>,
22        memo: Option<String>,
23    );
24
25    fn mt_transfer_call(
26        &mut self,
27        receiver_id: AccountId,
28        token_id: TokenId,
29        amount: U128,
30        approval: Option<(AccountId, u64)>,
31        memo: Option<String>,
32        msg: String,
33    ) -> PromiseOrValue<Vec<U128>>;
34
35    fn mt_batch_transfer_call(
36        &mut self,
37        receiver_id: AccountId,
38        token_ids: Vec<TokenId>,
39        amounts: Vec<U128>,
40        approvals: Option<Vec<Option<(AccountId, u64)>>>,
41        memo: Option<String>,
42        msg: String,
43    ) -> PromiseOrValue<Vec<U128>>;
44
45    fn mt_token(&self, token_ids: Vec<TokenId>) -> Vec<Option<Token>>;
46
47    fn mt_balance_of(&self, account_id: AccountId, token_id: TokenId) -> U128;
48
49    fn mt_batch_balance_of(&self, account_id: AccountId, token_ids: Vec<TokenId>) -> Vec<U128>;
50
51    fn mt_supply(&self, token_id: TokenId) -> Option<U128>;
52
53    fn mt_batch_supply(&self, token_ids: Vec<TokenId>) -> Vec<Option<U128>>;
54}