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>;