use thiserror::Error;
pub type Result<T> = std::result::Result<T, Error>;
#[derive(Debug, Error)]
pub enum Error {
#[error("HTTP request failed: {0}")]
Http(#[from] reqwest::Error),
#[error("API error: {message} (code: {code})")]
Api {
code: i32,
message: String,
},
#[error("Invalid API response: {0}")]
InvalidResponse(String),
#[error("Failed to parse endpoint: {0}")]
InvalidEndpoint(String),
#[error("Failed to parse IP address: {0}")]
InvalidAddress(String),
#[error("Invalid base64 key: {0}")]
InvalidKey(String),
#[error("TLS configuration error: {0}")]
Tls(String),
#[error("DNS resolution failed: {0}")]
DnsResolution(String),
#[error("Teams enrollment failed: {0}")]
TeamsEnrollment(String),
}