Skip to main content

provable_proof/
types.rs

1use provable_sdk::{
2    GetRecordResponse, ProveSingleHashResponse, VerifyLevelCheck, VerifyResultDetails,
3};
4use serde::{Deserialize, Serialize};
5
6#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq, Eq)]
7pub struct KayrosTimestampResponse {
8    pub success: bool,
9    #[serde(default)]
10    pub response: Option<ProveSingleHashResponse>,
11    #[serde(default)]
12    pub data: Option<GetRecordResponse>,
13    #[serde(default)]
14    pub message: Option<String>,
15    #[serde(default)]
16    pub error: Option<String>,
17}
18
19#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq, Eq)]
20pub struct KayrosTimestamp {
21    pub service: String,
22    pub response: KayrosTimestampResponse,
23}
24
25#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq, Eq)]
26#[serde(rename_all = "camelCase")]
27pub struct KayrosData {
28    #[serde(default)]
29    pub hash: Option<String>,
30    #[serde(default)]
31    pub hash_algorithm: Option<String>,
32    #[serde(default)]
33    pub timestamp: Option<KayrosTimestamp>,
34}
35
36pub type KayrosMetadata = KayrosData;
37pub type ProofDataFormat = String;
38pub type ProvableEmailProofData = String;
39
40#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
41pub struct KayrosProof {
42    pub data: String,
43    #[serde(default)]
44    pub data_format: Option<ProofDataFormat>,
45    pub kayros: KayrosData,
46}
47
48#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
49pub struct ProvableFormProofData {
50    #[serde(default)]
51    pub id: Option<String>,
52    #[serde(default)]
53    pub page_url: Option<String>,
54    #[serde(default)]
55    pub form: Option<serde_json::Value>,
56    #[serde(default)]
57    pub network: Option<serde_json::Value>,
58    #[serde(flatten)]
59    pub extra: serde_json::Map<String, serde_json::Value>,
60}
61
62#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
63pub struct ProvableWebProofSource<T> {
64    pub value: T,
65    pub hash: String,
66}
67
68pub type ProvableWebProofData = serde_json::Value;
69
70#[derive(Debug, Clone, Default, PartialEq, Eq)]
71pub struct EnvelopeVerifyOverrides {
72    pub data_type: Option<String>,
73    pub data_item: Option<String>,
74    pub kayros_hash: Option<String>,
75    pub api_key: Option<String>,
76}
77
78#[derive(Debug, Clone, Default, PartialEq, Eq)]
79pub struct EnvelopeVerifyWithInclusionOverrides {
80    pub overrides: EnvelopeVerifyOverrides,
81    pub trusted_root_hash: Option<String>,
82    pub trusted_level: Option<usize>,
83    pub trusted_position: Option<i64>,
84    pub verify_batch_existence: bool,
85    pub level_checks: Vec<VerifyLevelCheck>,
86    pub levels_hash_type: Option<String>,
87}
88
89#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq, Eq)]
90#[serde(rename_all = "camelCase")]
91pub struct EnvelopeVerifyDetails {
92    #[serde(flatten)]
93    pub verify: VerifyResultDetails,
94    #[serde(default)]
95    pub computed_data_item: Option<String>,
96    #[serde(default)]
97    pub envelope_data_item: Option<String>,
98    #[serde(default)]
99    pub envelope_data_item_match: Option<bool>,
100    #[serde(default)]
101    pub envelope_data_type: Option<String>,
102    #[serde(default)]
103    pub envelope_kayros_hash: Option<String>,
104}
105
106#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq, Eq)]
107pub struct EnvelopeVerifyResult {
108    pub valid: bool,
109    #[serde(default)]
110    pub error: Option<String>,
111    #[serde(default)]
112    pub details: Option<EnvelopeVerifyDetails>,
113}
114
115#[derive(Debug, Clone, Default, PartialEq, Eq)]
116pub struct EnvelopeVerifyInput {
117    pub request: provable_sdk::VerifyRequest,
118    pub details: EnvelopeVerifyDetails,
119}