reclaim-rust-sdk 0.1.0

A Rust SDK for Reclaim Protocol
Documentation
use serde::{Deserialize, Serialize};
use std::collections::HashMap;
use super::interface::{ProviderClaimData, ProviderData};

#[derive(Debug, Serialize, Deserialize)]
pub struct SignedClaim {
    pub claim_data: ProviderClaimData,
    pub signatures: Vec<Vec<u8>>,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct ClaimInfo {
    pub context: String,
    pub provider: String,
    pub parameters: String,
}

#[derive(Debug, Serialize, Deserialize)]
#[serde(untagged)]
pub enum AnyClaimInfo {
    ClaimInfo(ClaimInfo),
    Identifier { identifier: String },
}

#[derive(Debug, Serialize, Deserialize)]
pub struct CompleteClaimData {
    pub owner: String,
    #[serde(rename = "timestampS")]
    pub timestamp_s: u64,
    pub epoch: u64,
    #[serde(flatten)]
    pub claim_info: AnyClaimInfo,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct SignedClaimNew {
    pub claim: CompleteClaimData,
    pub signatures: Vec<Vec<u8>>,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct CreateVerificationRequest {
    #[serde(rename = "providerIds")]
    pub provider_ids: Vec<String>,
    #[serde(rename = "applicationSecret", skip_serializing_if = "Option::is_none")]
    pub application_secret: Option<String>,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct InitSessionResponse {
    #[serde(rename = "sessionId")]
    pub session_id: String,
    pub provider: ProviderData,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct UpdateSessionResponse {
    pub success: bool,
    pub message: Option<String>,
}

#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum SessionStatus {
    SessionInit,
    SessionStarted,
    UserInitVerification,
    UserStartedVerification,
    ProofGenerationStarted,
    ProofGenerationSuccess,
    ProofGenerationFailed,
    ProofSubmitted,
    ProofSubmissionFailed,
    ProofManualVerificationSubmited,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct ProofRequestOptions {
    #[serde(skip_serializing_if = "Option::is_none")]
    pub log: Option<bool>,
    #[serde(rename = "acceptAiProviders", skip_serializing_if = "Option::is_none")]
    pub accept_ai_providers: Option<bool>,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct ProofPropertiesJson {
    #[serde(rename = "applicationId")]
    pub application_id: String,
    #[serde(rename = "providerId")]
    pub provider_id: String,
    #[serde(rename = "sessionId")]
    pub session_id: String,
    pub context: serde_json::Value,
    #[serde(rename = "requestedProof")]
    pub requested_proof: serde_json::Value,
    pub signature: String,
    #[serde(rename = "redirectUrl", skip_serializing_if = "Option::is_none")]
    pub redirect_url: Option<String>,
    #[serde(rename = "timeStamp")]
    pub timestamp: String,
    #[serde(rename = "appCallbackUrl", skip_serializing_if = "Option::is_none")]
    pub app_callback_url: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub options: Option<ProofRequestOptions>,
    #[serde(rename = "sdkVersion")]
    pub sdk_version: String,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct TemplateData {
    #[serde(rename = "sessionId")]
    pub session_id: String,
    #[serde(rename = "providerId")]
    pub provider_id: String,
    #[serde(rename = "applicationId")]
    pub application_id: String,
    pub signature: String,
    pub timestamp: String,
    #[serde(rename = "callbackUrl")]
    pub callback_url: String,
    pub context: String,
    pub parameters: HashMap<String, String>,
    #[serde(rename = "redirectUrl")]
    pub redirect_url: String,
    #[serde(rename = "acceptAiProviders")]
    pub accept_ai_providers: bool,
    #[serde(rename = "sdkVersion")]
    pub sdk_version: String,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct StatusUrlResponse {
    pub message: String,
    pub session: Option<SessionInfo>,
    #[serde(rename = "providerId")]
    pub provider_id: Option<String>,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct SessionInfo {
    pub id: String,
    #[serde(rename = "appId")]
    pub app_id: String,
    #[serde(rename = "httpProviderId")]
    pub http_provider_id: Vec<String>,
    #[serde(rename = "sessionId")]
    pub session_id: String,
    pub proofs: Option<Vec<serde_json::Value>>,
    #[serde(rename = "statusV2")]
    pub status_v2: String,
}