use thiserror::Error;
#[derive(Error, Debug)]
pub enum SdkError {
#[error("Invalid input: {0}")]
InvalidInput(String),
#[error("Proof verification failed: {0}")]
VerificationFailed(String),
#[error("Invalid proof format: {0}")]
InvalidProof(String),
#[error("Invalid verification key: {0}")]
InvalidVerificationKey(String),
#[error("JWT validation failed: {0}")]
JwtError(String),
#[cfg(feature = "oidc")]
#[error("OIDC discovery failed: {0}")]
OidcError(String),
#[cfg(feature = "oidc")]
#[error("Network error: {0}")]
NetworkError(String),
#[error("Serialization error: {0}")]
SerializationError(String),
}
impl From<serde_json::Error> for SdkError {
fn from(e: serde_json::Error) -> Self {
SdkError::SerializationError(e.to_string())
}
}
impl From<hex::FromHexError> for SdkError {
fn from(e: hex::FromHexError) -> Self {
SdkError::InvalidInput(format!("Invalid hex: {}", e))
}
}
impl From<jsonwebtoken::errors::Error> for SdkError {
fn from(e: jsonwebtoken::errors::Error) -> Self {
SdkError::JwtError(e.to_string())
}
}
#[cfg(feature = "oidc")]
impl From<reqwest::Error> for SdkError {
fn from(e: reqwest::Error) -> Self {
SdkError::NetworkError(e.to_string())
}
}