#[derive(Debug, thiserror::Error)]
pub enum DelegatedError {
#[error("HTTP transport error: {0}")]
Transport(String),
#[error("token endpoint returned {status}: {body}")]
TokenEndpoint {
status: u16,
body: String,
},
#[error("malformed token response: {0}")]
MalformedResponse(String),
#[error("OAuth state mismatch; possible CSRF")]
StateMismatch,
#[error("PKCE code verifier missing or malformed")]
PkceVerifier,
#[error("credential store error: {0}")]
Store(String),
#[error("no delegated credential for this (tenant, user, provider)")]
NotConnected,
#[error("refresh token rejected by IdP; user must re-authorize")]
RefreshRejected,
}