#[derive(Debug, thiserror::Error)]
pub enum ScreenshotFreeAPIError {
#[error("HTTP error: {0}")]
Http(#[from] reqwest::Error),
#[error("Authentication failed: {message}")]
Authentication { message: String },
#[error("Forbidden: {message}")]
Forbidden { message: String },
#[error("Not found: {message}")]
NotFound { message: String },
#[error("Validation error: {message}")]
Validation { message: String },
#[error("Rate limited, retry after {retry_after_seconds}s")]
RateLimit { retry_after_seconds: u64 },
#[error("Quota exceeded")]
QuotaExceeded,
#[error("Payment required: {message}")]
PaymentRequired { message: String },
#[error("Job failed: {reason}")]
JobFailed { job_id: String, reason: String },
#[error("Job timed out after {timeout_ms}ms")]
JobTimeout { timeout_ms: u64 },
#[error("Invalid webhook signature")]
InvalidSignature,
#[error("Unexpected status {status}: {message}")]
Unexpected { status: u16, message: String },
}
pub type Result<T> = std::result::Result<T, ScreenshotFreeAPIError>;