#[derive(Debug, thiserror::Error)]
pub enum NabError {
#[error("invalid URL: {0}")]
InvalidUrl(String),
#[error("SSRF blocked: {0}")]
SsrfBlocked(String),
#[error("provider error: {0}")]
ProviderError(String),
#[error("conversion error: {0}")]
ConversionError(String),
#[error("auth error: {0}")]
AuthError(String),
#[error("login error: {0}")]
LoginError(String),
#[error("session error: {0}")]
SessionError(String),
#[error("network error: {0}")]
NetworkError(String),
#[error("budget exceeded: limit={limit}, actual={actual}")]
BudgetExceeded {
limit: usize,
actual: usize,
},
#[error(transparent)]
Other(#[from] anyhow::Error),
}