use thiserror::Error;
#[derive(Debug, Error)]
pub enum MempoolError {
#[error("HTTP error: {0}")]
HttpError(#[from] reqwest::Error),
#[error("API error ({status}): {message}")]
ApiError {
status: u16,
message: String,
},
#[error("Parse error: {0}")]
ParseError(String),
#[error("Request timeout")]
Timeout,
#[error("Rate limited - too many requests")]
RateLimited,
#[error("Invalid address: {0}")]
InvalidAddress(String),
#[error("Invalid txid: {0}")]
InvalidTxid(String),
#[error("Transaction not found: {0}")]
TxNotFound(String),
#[error("Address not found: {0}")]
AddressNotFound(String),
#[error("WebSocket error: {0}")]
WebSocketError(String),
#[error("WebSocket connection closed")]
WebSocketClosed,
#[error("Lightning API error: {0}")]
LightningError(String),
#[error("Mining API error: {0}")]
MiningError(String),
}
pub type Result<T> = std::result::Result<T, MempoolError>;