1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
use crate::types::{ BurnRequest, BurnResponse, GetBalanceOfRequest, GetBalanceOfResponse, GetControllersResponse, GetInfoResponse, GetTotalSupplyResponse, TransferRequest, TransferResponse, UpdateControllerRequest, UpdateControllerResponse, UpdateInfoRequest, UpdateInfoResponse, }; use ic_cdk::api::call::CallResult; use ic_cdk::call; use ic_cdk::export::candid::Principal; pub struct CurrencyTokenClient { pub canister_id: Principal, } impl CurrencyTokenClient { pub fn new(canister_id: Principal) -> Self { CurrencyTokenClient { canister_id } } pub async fn mint(&self, request: TransferRequest) -> CallResult<(TransferResponse,)> { call(self.canister_id, "mint", (request,)).await } pub async fn transfer(&self, request: TransferRequest) -> CallResult<(TransferResponse,)> { call(self.canister_id, "transfer", (request,)).await } pub async fn burn(&self, request: BurnRequest) -> CallResult<(BurnResponse,)> { call(self.canister_id, "burn", (request,)).await } pub async fn get_balance_of( &self, request: GetBalanceOfRequest, ) -> CallResult<(GetBalanceOfResponse,)> { call(self.canister_id, "get_balance_of", (request,)).await } pub async fn get_total_supply(&self) -> CallResult<(GetTotalSupplyResponse,)> { call(self.canister_id, "get_total_supply", ()).await } pub async fn get_info(&self) -> CallResult<(GetInfoResponse,)> { call(self.canister_id, "get_info", ()).await } pub async fn update_info( &self, request: UpdateInfoRequest, ) -> CallResult<(UpdateInfoResponse,)> { call(self.canister_id, "update_info", (request,)).await } pub async fn get_controllers(&self) -> CallResult<(GetControllersResponse,)> { call(self.canister_id, "get_controllers", ()).await } pub async fn update_info_controller( &self, request: UpdateControllerRequest, ) -> CallResult<(UpdateControllerResponse,)> { call(self.canister_id, "update_info_controller", (request,)).await } pub async fn update_mint_controller( &self, request: UpdateControllerRequest, ) -> CallResult<(UpdateControllerResponse,)> { call(self.canister_id, "update_mint_controller", (request,)).await } pub async fn update_event_listeners_controller( &self, request: UpdateControllerRequest, ) -> CallResult<(UpdateControllerResponse,)> { call( self.canister_id, "update_event_listeners_controller", (request,), ) .await } }