use std::time::Duration;
#[derive(Debug, thiserror::Error)]
pub enum LinkShieldAIError {
#[error("LinkShieldAI API key is required. Pass an API key or set LINKSHIELDAI_API_KEY.")]
Authentication,
#[error("LinkShieldAI API rate limit exceeded.")]
RateLimit { retry_after: Option<Duration> },
#[error("Could not connect to LinkShieldAI API: {0}")]
Connection(#[from] reqwest::Error),
#[error("{message}")]
Status {
status_code: u16,
message: String,
payload: Option<serde_json::Value>,
},
#[error("{message}")]
Response {
message: String,
payload: Option<serde_json::Value>,
},
#[error("{0}")]
InvalidInput(String),
#[error("Unable to write screenshot: {0}")]
Io(#[from] std::io::Error),
#[error("Invalid URL: {0}")]
Url(#[from] url::ParseError),
}
pub type Result<T> = std::result::Result<T, LinkShieldAIError>;