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