#[derive(Debug, thiserror::Error, PartialEq, Eq)]
pub enum OidcError {
#[error("invalid OIDC configuration: {0}")]
Configuration(String),
#[error("OIDC discovery failed: {0}")]
Discovery(String),
#[error("invalid token: {0}")]
InvalidToken(String),
#[error("provider unreachable: {0}")]
ProviderUnreachable(String),
#[error("OIDC state mismatch")]
StateMismatch,
#[error("PKCE verifier is required for public clients")]
MissingPkce,
#[error("OIDC nonce mismatch")]
NonceMismatch,
#[error("unsupported OIDC signing algorithm: {0}")]
UnsupportedAlgorithm(String),
#[error("missing required OIDC claim: {0}")]
MissingClaim(String),
}