1use std::{collections::HashMap, ops::Range};
4
5use serde::{Deserialize, Serialize};
6use serde_json::Value as JsonValue;
7use tsify_next::Tsify;
8
9#[derive(Debug, Tsify, Deserialize)]
11#[tsify(from_wasm_abi)]
12#[serde(untagged)]
13#[non_exhaustive]
14pub enum Body {
15 Json(JsonValue),
17}
18
19#[derive(Debug, Tsify, Deserialize)]
21#[tsify(from_wasm_abi)]
22pub enum Method {
23 GET,
25 POST,
27 PUT,
29 DELETE,
31}
32
33#[derive(Debug, Tsify, Deserialize)]
35#[tsify(from_wasm_abi)]
36pub struct HttpRequest {
37 pub uri: String,
39 pub method: Method,
41 pub headers: HashMap<String, Vec<u8>>,
43 pub body: Option<Body>,
45}
46
47#[derive(Debug, Tsify, Serialize)]
49#[tsify(into_wasm_abi)]
50pub struct HttpResponse {
51 pub status: u16,
53 pub headers: Vec<(String, Vec<u8>)>,
55}
56
57#[derive(Debug, Tsify, Serialize)]
59#[tsify(into_wasm_abi)]
60pub enum TlsVersion {
61 V1_2,
63 V1_3,
65}
66
67#[derive(Debug, Tsify, Serialize)]
69#[tsify(into_wasm_abi)]
70pub struct TranscriptLength {
71 pub sent: usize,
73 pub recv: usize,
75}
76
77#[derive(Debug, Tsify, Serialize)]
79#[tsify(into_wasm_abi)]
80pub struct ConnectionInfo {
81 pub time: u64,
83 pub version: TlsVersion,
85 pub transcript_length: TranscriptLength,
87}
88
89#[derive(Debug, Tsify, Serialize)]
91#[tsify(into_wasm_abi)]
92pub struct Transcript {
93 pub sent: Vec<u8>,
95 pub recv: Vec<u8>,
97}
98
99#[derive(Debug, Tsify, Serialize)]
101#[tsify(into_wasm_abi)]
102pub struct PartialTranscript {
103 pub sent: Vec<u8>,
105 pub sent_authed: Vec<Range<usize>>,
107 pub recv: Vec<u8>,
109 pub recv_authed: Vec<Range<usize>>,
111}
112
113#[derive(Debug, Clone, Copy, Tsify, Deserialize)]
115#[tsify(from_wasm_abi)]
116pub enum HashAlgorithm {
117 BLAKE3,
119 SHA256,
121 KECCAK256,
123}
124
125#[derive(Debug, Tsify, Deserialize)]
131#[tsify(from_wasm_abi)]
132pub struct CommitRange {
133 pub start: usize,
135 pub end: usize,
137 pub algorithm: HashAlgorithm,
139}
140
141#[derive(Debug, Tsify, Deserialize)]
143#[tsify(from_wasm_abi)]
144pub struct Commit {
145 pub sent: Vec<CommitRange>,
147 pub recv: Vec<CommitRange>,
149}
150
151#[derive(Debug, Tsify, Deserialize)]
153#[tsify(from_wasm_abi)]
154pub struct Reveal {
155 pub sent: Vec<Range<usize>>,
157 pub recv: Vec<Range<usize>>,
159 pub server_identity: bool,
161}
162
163#[derive(Debug, Tsify, Serialize)]
165#[tsify(into_wasm_abi)]
166pub struct VerifierOutput {
167 pub server_name: Option<String>,
169 pub connection_info: ConnectionInfo,
171 pub transcript: Option<PartialTranscript>,
173}
174
175#[derive(Debug, Clone, Copy, Tsify, Deserialize)]
177#[tsify(from_wasm_abi)]
178pub enum NetworkSetting {
179 Bandwidth,
181 Latency,
183}