b3_utils 0.13.1

Utility functions for building on the Internet Computer
Documentation
use candid::CandidType;
use serde::Deserialize;
use std::fmt;

#[derive(CandidType, Clone, Deserialize, Debug, PartialEq)]
pub enum ICRCAccountError {
    InvalidFormat,
    BadChecksum,
    NotCanonical,
    HexDecode(String),
    Malformed(String),
    InvalidPrincipal(String),
    InvalidSubaccount(String),
}

impl fmt::Display for ICRCAccountError {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        match self {
            ICRCAccountError::BadChecksum => write!(f, "Bad checksum"),
            ICRCAccountError::NotCanonical => write!(f, "Not canonical"),
            ICRCAccountError::HexDecode(e) => write!(f, "Hex decode error: {}", e),
            ICRCAccountError::Malformed(e) => write!(f, "Malformed account: {}", e),
            ICRCAccountError::InvalidFormat => write!(f, "Invalid account format"),
            ICRCAccountError::InvalidPrincipal(e) => write!(f, "Invalid principal: {}", e),
            ICRCAccountError::InvalidSubaccount(e) => write!(f, "Invalid subaccount: {}", e),
        }
    }
}