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}