ecash_client/
error.rs

1use thiserror::Error;
2
3#[derive(Debug, Error)]
4pub enum ClientError {
5    #[error("HTTP request failed: {0}")]
6    Http(#[from] reqwest::Error),
7    
8    #[error("eCash core error: {0}")]
9    Core(#[from] ecash_core::EcashError),
10    
11    #[error("Storage error: {0}")]
12    Storage(#[from] rusqlite::Error),
13    
14    #[error("Serialization error: {0}")]
15    Serialization(#[from] serde_json::Error),
16    
17    #[error("Insufficient balance: required {required}, available {available}")]
18    InsufficientBalance { required: u64, available: u64 },
19    
20    #[error("No tokens available")]
21    NoTokensAvailable,
22    
23    #[error("Invalid server response: {0}")]
24    InvalidResponse(String),
25    
26    #[error("API error: {0}")]
27    ApiError(String),
28    
29    #[error("Invalid denomination: {0}")]
30    InvalidDenomination(u64),
31    
32    #[error("QR code error: {0}")]
33    QrCode(String),
34}
35
36pub type Result<T> = std::result::Result<T, ClientError>;