use crate::ledger::types::icrc::{IcrcTransferFromResult, IcrcTransferResult};
use candid::Principal;
use ic_cdk::call::{Call, CallResult};
use icrc_ledger_types::icrc1::transfer::TransferArg;
use icrc_ledger_types::icrc2::transfer_from::TransferFromArgs;
pub async fn icrc_transfer_token(
ledger_id: Principal,
args: TransferArg,
) -> CallResult<IcrcTransferResult> {
Ok(Call::bounded_wait(ledger_id, "icrc1_transfer")
.with_arg(args)
.await?
.candid::<IcrcTransferResult>()?)
}
pub async fn icrc_transfer_token_from(
ledger_id: Principal,
args: TransferFromArgs,
) -> CallResult<IcrcTransferFromResult> {
Ok(Call::bounded_wait(ledger_id, "icrc2_transfer_from")
.with_arg(args)
.await?
.candid::<IcrcTransferFromResult>()?)
}