canic_core/interface/ck/
mod.rs1use crate::{
5 Error, env,
6 interface::{icrc::icrc2::icrc2_allowance, prelude::*},
7};
8
9#[derive(Clone, Copy, Debug)]
15pub enum CkToken {
16 CkBtc,
17 CkEth,
18
19 CkLink,
21 CkOct,
22 CkPepe,
23 CkUsdc,
24 CkUsdt,
25}
26
27impl CkToken {
28 #[must_use]
29 pub fn ledger_canister(&self) -> Principal {
30 match &self {
31 Self::CkBtc => *env::ck::CKBTC_LEDGER_CANISTER,
32 Self::CkEth => *env::ck::CKETH_LEDGER_CANISTER,
33
34 Self::CkLink => *env::ck::CKLINK_LEDGER_CANISTER,
35 Self::CkOct => *env::ck::CKOCT_LEDGER_CANISTER,
36 Self::CkPepe => *env::ck::CKPEPE_LEDGER_CANISTER,
37 Self::CkUsdc => *env::ck::CKUSDC_LEDGER_CANISTER,
38 Self::CkUsdt => *env::ck::CKUSDT_LEDGER_CANISTER,
39 }
40 }
41}
42
43pub async fn ck_icrc2_allowance(
48 token: CkToken,
49 account: impl Into<Account>,
50 spender: impl Into<Account>,
51) -> Result<Nat, Error> {
52 icrc2_allowance(token.ledger_canister(), account, spender).await
53}