1use thiserror::Error;
4
5#[derive(Error, Debug)]
7pub enum SdkError {
8 #[error("Invalid input: {0}")]
10 InvalidInput(String),
11
12 #[error("Proof verification failed: {0}")]
14 VerificationFailed(String),
15
16 #[error("Invalid proof format: {0}")]
18 InvalidProof(String),
19
20 #[error("Invalid verification key: {0}")]
22 InvalidVerificationKey(String),
23
24 #[error("JWT validation failed: {0}")]
26 JwtError(String),
27
28 #[cfg(feature = "oidc")]
30 #[error("OIDC discovery failed: {0}")]
31 OidcError(String),
32
33 #[cfg(feature = "oidc")]
35 #[error("Network error: {0}")]
36 NetworkError(String),
37
38 #[error("Serialization error: {0}")]
40 SerializationError(String),
41}
42
43impl From<serde_json::Error> for SdkError {
44 fn from(e: serde_json::Error) -> Self {
45 SdkError::SerializationError(e.to_string())
46 }
47}
48
49impl From<hex::FromHexError> for SdkError {
50 fn from(e: hex::FromHexError) -> Self {
51 SdkError::InvalidInput(format!("Invalid hex: {}", e))
52 }
53}
54
55impl From<jsonwebtoken::errors::Error> for SdkError {
56 fn from(e: jsonwebtoken::errors::Error) -> Self {
57 SdkError::JwtError(e.to_string())
58 }
59}
60
61#[cfg(feature = "oidc")]
62impl From<reqwest::Error> for SdkError {
63 fn from(e: reqwest::Error) -> Self {
64 SdkError::NetworkError(e.to_string())
65 }
66}