1use serde::{Deserialize, Serialize};
3
4use crate::interop::{BytesEnvelope, TirEnvelope};
5
6pub type EnvMap = serde_json::Map<String, serde_json::Value>;
7pub type JsonArgMap = serde_json::Map<String, serde_json::Value>;
8
9#[derive(Debug, Clone, Serialize, Deserialize)]
10pub struct SubmitParams {
11 #[serde(rename = "tx")]
12 pub tx: BytesEnvelope,
13 #[serde(rename = "witnesses")]
14 pub witnesses: Vec<TxWitness>,
15}
16
17#[derive(Debug, Clone, Serialize, Deserialize)]
18pub struct TxEnvelope {
19 #[serde(rename = "hash")]
20 pub hash: String,
21 #[serde(rename = "tx")]
22 pub tx: String,
23}
24
25#[derive(Debug, Clone, Serialize, Deserialize)]
26pub struct SubmitResponse {
27 #[serde(rename = "hash")]
28 pub hash: String,
29}
30
31#[derive(Debug, Clone, Serialize, Deserialize)]
32pub struct InputQueryDiagnostic {
33 #[serde(rename = "address")]
34 pub address: Option<String>,
35 #[serde(rename = "collateral")]
36 pub collateral: bool,
37 #[serde(rename = "min_amount")]
38 pub min_amount: std::collections::HashMap<String, String>,
39 #[serde(rename = "refs")]
40 pub refs: Vec<String>,
41 #[serde(rename = "support_many")]
42 pub support_many: bool,
43}
44
45#[derive(Debug, Clone, Serialize, Deserialize)]
46pub struct ResolveParams {
47 #[serde(rename = "args")]
48 pub args: JsonArgMap,
49 #[serde(rename = "tir")]
50 pub tir: TirEnvelope,
51 #[serde(rename = "env", skip_serializing_if = "Option::is_none")]
52 pub env: Option<EnvMap>,
53}
54
55#[derive(Debug, Clone, Serialize, Deserialize)]
56pub struct TxSignature {
57 #[serde(rename = "key")]
58 pub key: BytesEnvelope,
59 #[serde(rename = "signature")]
60 pub signature: BytesEnvelope,
61 #[serde(rename = "type")]
62 pub ty: String,
63}
64
65#[derive(Debug, Clone, Serialize, Deserialize)]
66#[serde(untagged)]
67pub enum TxWitness {
68 Signature(TxSignature),
69 RawWitness(BytesEnvelope),
70}
71
72#[derive(Debug, Clone, Serialize, Deserialize)]
73pub struct UnsupportedTirDiagnostic {
74 #[serde(rename = "expected")]
75 pub expected: String,
76 #[serde(rename = "provided")]
77 pub provided: String,
78}
79
80#[derive(Debug, Clone, Serialize, Deserialize)]
81pub struct SearchSpaceDiagnostic {
82 #[serde(rename = "by_address_count")]
83 pub by_address_count: Option<usize>,
84 #[serde(rename = "by_asset_class_count")]
85 pub by_asset_class_count: Option<usize>,
86 #[serde(rename = "by_ref_count")]
87 pub by_ref_count: Option<usize>,
88 #[serde(rename = "matched")]
89 pub matched: Vec<String>,
90}
91
92#[derive(Debug, Clone, Serialize, Deserialize)]
93pub struct InputNotResolvedDiagnostic {
94 #[serde(rename = "name")]
95 pub name: String,
96 #[serde(rename = "query")]
97 pub query: InputQueryDiagnostic,
98 #[serde(rename = "search_space")]
99 pub search_space: SearchSpaceDiagnostic,
100}
101
102#[derive(Debug, Clone, Serialize, Deserialize)]
103pub struct MissingTxArgDiagnostic {
104 #[serde(rename = "key")]
105 pub key: String,
106 #[serde(rename = "type")]
107 pub ty: String,
108}
109
110#[derive(Debug, Clone, Serialize, Deserialize)]
111pub struct TxScriptFailureDiagnostic {
112 #[serde(rename = "logs")]
113 pub logs: Vec<String>,
114}
115
116#[derive(Debug, Clone, Serialize, Deserialize)]
119pub struct ChainPoint {
120 #[serde(rename = "slot")]
121 pub slot: u64,
122 #[serde(rename = "blockHash")]
123 pub block_hash: String,
124}
125
126#[derive(Debug, Clone, Serialize, Deserialize)]
127pub struct TxStatus {
128 #[serde(rename = "stage")]
129 pub stage: String,
130 #[serde(rename = "confirmations")]
131 pub confirmations: u64,
132 #[serde(rename = "nonConfirmations")]
133 pub non_confirmations: u64,
134 #[serde(rename = "confirmedAt", skip_serializing_if = "Option::is_none")]
135 pub confirmed_at: Option<ChainPoint>,
136}
137
138#[derive(Debug, Clone, Serialize, Deserialize)]
139pub struct CheckStatusResponse {
140 #[serde(rename = "statuses")]
141 pub statuses: std::collections::HashMap<String, TxStatus>,
142}
143
144#[derive(Debug, Clone, Serialize, Deserialize)]
145pub struct TxLog {
146 #[serde(rename = "hash")]
147 pub hash: String,
148 #[serde(rename = "stage")]
149 pub stage: String,
150 #[serde(rename = "payload", skip_serializing_if = "Option::is_none")]
151 pub payload: Option<String>,
152 #[serde(rename = "confirmations")]
153 pub confirmations: u64,
154 #[serde(rename = "nonConfirmations")]
155 pub non_confirmations: u64,
156 #[serde(rename = "confirmedAt", skip_serializing_if = "Option::is_none")]
157 pub confirmed_at: Option<ChainPoint>,
158}
159
160#[derive(Debug, Clone, Serialize, Deserialize)]
161pub struct DumpLogsResponse {
162 #[serde(rename = "entries")]
163 pub entries: Vec<TxLog>,
164 #[serde(rename = "nextCursor", skip_serializing_if = "Option::is_none")]
165 pub next_cursor: Option<u64>,
166}
167
168#[derive(Debug, Clone, Serialize, Deserialize)]
169pub struct PendingTx {
170 #[serde(rename = "hash")]
171 pub hash: String,
172 #[serde(rename = "payload", skip_serializing_if = "Option::is_none")]
173 pub payload: Option<String>,
174}
175
176#[derive(Debug, Clone, Serialize, Deserialize)]
177pub struct PeekPendingResponse {
178 #[serde(rename = "entries")]
179 pub entries: Vec<PendingTx>,
180}
181
182#[derive(Debug, Clone, Serialize, Deserialize)]
183pub struct InflightTx {
184 #[serde(rename = "hash")]
185 pub hash: String,
186 #[serde(rename = "stage")]
187 pub stage: String,
188 #[serde(rename = "confirmations")]
189 pub confirmations: u64,
190 #[serde(rename = "nonConfirmations")]
191 pub non_confirmations: u64,
192 #[serde(rename = "confirmedAt", skip_serializing_if = "Option::is_none")]
193 pub confirmed_at: Option<ChainPoint>,
194 #[serde(rename = "payload", skip_serializing_if = "Option::is_none")]
195 pub payload: Option<String>,
196}
197
198#[derive(Debug, Clone, Serialize, Deserialize)]
199pub struct PeekInflightResponse {
200 #[serde(rename = "entries")]
201 pub entries: Vec<InflightTx>,
202}