canic_cdk/spec/standards/icrc/
icrc2.rs1use crate::spec::prelude::*;
2
3#[derive(CandidType, Deserialize)]
8pub struct Allowance {
9 pub allowance: u64,
10 pub expires_at: Option<u64>,
11}
12
13#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
19pub struct AllowanceArgs {
20 pub account: Account,
21 pub spender: Account,
22}
23
24#[derive(CandidType, Serialize)]
30pub struct TransferFromArgs {
31 pub from: Account,
32 pub to: Account,
33 pub amount: u64,
34 pub memo: Option<Vec<u8>>,
35 pub created_at_time: Option<u64>,
36}
37
38#[derive(CandidType, Deserialize)]
43pub enum TransferFromResult {
44 #[serde(rename = "Ok")]
45 Ok(u64), #[serde(rename = "Err")]
47 Err(TransferFromError),
48}
49
50#[derive(CandidType, Debug, Deserialize)]
55pub enum TransferFromError {
56 BadFee { expected_fee: u64 },
57 BadBurn { min_burn_amount: u64 },
58 InsufficientFunds { balance: u64 },
59 InsufficientAllowance { allowance: u64 },
60 TooOld,
61 CreatedInFuture { ledger_time: u64 },
62 Duplicate { duplicate_of: u64 },
63 TemporarilyUnavailable,
64 GenericError { error_code: u64, message: String },
65}