use thiserror::Error;
pub type Result<T> = std::result::Result<T, NexusError>;
#[derive(Debug, Error)]
pub enum NexusError {
#[error("HTTP error: {0}")]
Http(#[from] reqwest::Error),
#[error("JSON error: {0}")]
Json(#[from] serde_json::Error),
#[error("Invalid URL: {0}")]
Url(#[from] url::ParseError),
#[error("API error: {message} (status: {status})")]
Api {
message: String,
status: u16,
},
#[error("Authentication failed: {0}")]
Authentication(String),
#[error("Invalid configuration: {0}")]
Configuration(String),
#[error("Connection error: {0}")]
Connection(String),
#[error("Network error: {0}")]
Network(String),
#[error("Request timeout")]
Timeout,
#[error("Invalid response format: {0}")]
InvalidResponse(String),
#[error("Validation error: {0}")]
Validation(String),
}