canic_core/spec/icrc/
icrc2.rs1use crate::cdk::types::Account;
2use candid::CandidType;
3use serde::{Deserialize, Serialize};
4
5#[derive(CandidType, Deserialize)]
10pub struct Allowance {
11 pub allowance: u64,
12 pub expires_at: Option<u64>,
13}
14
15#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
21pub struct AllowanceArgs {
22 pub account: Account,
23 pub spender: Account,
24}
25
26#[derive(CandidType, Serialize)]
32pub struct TransferFromArgs {
33 pub from: Account,
34 pub to: Account,
35 pub amount: u64,
36 pub memo: Option<Vec<u8>>,
37 pub created_at_time: Option<u64>,
38}
39
40#[derive(CandidType, Deserialize)]
45pub enum TransferFromResult {
46 #[serde(rename = "Ok")]
47 Ok(u64), #[serde(rename = "Err")]
49 Err(TransferFromError),
50}
51
52#[derive(CandidType, Debug, Deserialize)]
57pub enum TransferFromError {
58 BadFee { expected_fee: u64 },
59 BadBurn { min_burn_amount: u64 },
60 InsufficientFunds { balance: u64 },
61 InsufficientAllowance { allowance: u64 },
62 TooOld,
63 CreatedInFuture { ledger_time: u64 },
64 Duplicate { duplicate_of: u64 },
65 TemporarilyUnavailable,
66 GenericError { error_code: u64, message: String },
67}