Skip to main content

icrc_nft_types/
errors.rs

1use candid::CandidType;
2use serde::{Deserialize, Serialize};
3
4#[derive(CandidType, Deserialize, Clone, Debug)]
5pub enum TransferError {
6    NonExistingTokenId,
7    InvalidRecipient,
8    Unauthorized,
9    TooOld,
10    CreatedInFuture { ledger_time: u64 },
11    Duplicate { duplicate_of: u128 },
12    GenericError { error_code: u128, message: String },
13    GenericBatchError { error_code: u128, message: String },
14}
15
16#[derive(CandidType, Clone)]
17pub enum BurnError {
18    Unauthorized,
19    NonExistingTokenId,
20    GenericError { error_code: u128, message: String },
21    GenericBatchError { error_code: u128, message: String },
22}
23
24#[derive(CandidType, Clone)]
25pub enum MintError {
26    SupplyCapReached,
27    Unauthorized,
28    TokenIdAlreadyExist,
29    TokenIdMinimumLimit,
30    GenericError { error_code: u128, message: String },
31    GenericBatchError { error_code: u128, message: String },
32}
33
34#[derive(CandidType, Debug, PartialEq, Deserialize)]
35pub enum InsertTransactionError {
36    SyncPending,
37    NotSetArchiveCanister,
38    RemoteError,
39    Unexpected(String),
40    CantWrite,
41    InvalidId,
42}
43
44// ICRC37 Error
45
46#[derive(CandidType, Debug, PartialEq, Deserialize, Clone)]
47pub enum ApproveTokenError {
48    TooOld,
49    InvalidSpender,
50    CreatedInFuture { ledger_time: u64 },
51    NonExistingTokenId,
52    Unauthorized,
53    GenericError { error_code: u128, message: String },
54    Duplicate { duplicate_of: u128 },
55    GenericBatchError { error_code: u128, message: String },
56}
57
58#[derive(CandidType, Debug, PartialEq, Deserialize, Clone)]
59pub enum ApproveCollectionError {
60    InvalidSpender,
61    TooOld,
62    CreatedInFuture { ledger_time: u64 },
63    GenericError { error_code: u128, message: String },
64    Duplicate { duplicate_of: u128 },
65    GenericBatchError { error_code: u128, message: String },
66}
67
68#[derive(CandidType, Debug, PartialEq, Deserialize, Clone)]
69pub enum RevokeTokenApprovalError {
70    TooOld,
71    CreatedInFuture { ledger_time: u64 },
72    NonExistingTokenId,
73    Unauthorized,
74    ApprovalDoesNotExist,
75    GenericError { error_code: u128, message: String },
76    Duplicate { duplicate_of: u128 },
77    GenericBatchError { error_code: u128, message: String },
78}
79
80#[derive(CandidType, Debug, PartialEq, Deserialize, Clone)]
81pub enum RevokeCollectionApprovalError {
82    TooOld,
83    CreatedInFuture { ledger_time: u64 },
84    Unauthorized,
85    ApprovalDoesNotExist,
86    GenericError { error_code: u128, message: String },
87    Duplicate { duplicate_of: u128 },
88    GenericBatchError { error_code: u128, message: String },
89}
90
91#[derive(CandidType, Deserialize, Serialize, Clone, Debug)]
92pub enum TransferFromError {
93    NonExistingTokenId,
94    InvalidRecipient,
95    Unauthorized,
96    TooOld,
97    CreatedInFuture { ledger_time: u64 },
98    Duplicate { duplicate_of: u128 },
99    GenericError { error_code: u128, message: String },
100    GenericBatchError { error_code: u128, message: String },
101}