use serde::{Deserialize, Serialize};
#[derive(Debug, thiserror::Error)]
pub enum AuthError {
#[error("Provider error: {0}")]
Provider(String),
#[error("Invalid credentials")]
InvalidCredentials,
#[error("Invalid code")]
InvalidCode,
#[error("Network error")]
Network,
#[error("Session error: {0}")]
Session(String),
#[error("Token error: {0}")]
Token(String),
#[error("CSRF state mismatch")]
CsrfMismatch,
#[error("Discovery error: {0}")]
Discovery(String),
#[error("Missing component: {0}")]
ComponentMissing(String),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct OAuthErrorResponse {
pub error: String,
pub error_description: Option<String>,
}