Skip to main content

tx3_resolver/trp/
spec.rs

1// Generated by cargo xtask gen --lang rust
2use 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    // Aliases for backward compatibility
12    #[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
41#[derive(Debug, Clone, Serialize, Deserialize)]
42pub struct InputQueryDiagnostic {
43    #[serde(rename = "address")]
44    pub address: Option<String>,
45    #[serde(rename = "collateral")]
46    pub collateral: bool,
47    #[serde(rename = "min_amount")]
48    pub min_amount: std::collections::HashMap<String, String>,
49    #[serde(rename = "refs")]
50    pub refs: Vec<String>,
51    #[serde(rename = "support_many")]
52    pub support_many: bool,
53}
54
55#[derive(Debug, Clone, Serialize, Deserialize)]
56pub struct ResolveParams {
57    #[serde(rename = "args")]
58    pub args: JsonArgMap,
59    #[serde(rename = "tir")]
60    pub tir: TirEnvelope,
61    #[serde(rename = "env", skip_serializing_if = "Option::is_none")]
62    pub env: Option<EnvMap>,
63}
64
65#[derive(Debug, Clone, Serialize, Deserialize)]
66pub struct TxSignature {
67    #[serde(rename = "key")]
68    pub key: BytesEnvelope,
69    #[serde(rename = "signature")]
70    pub signature: BytesEnvelope,
71    #[serde(rename = "type")]
72    pub ty: String,
73}
74
75#[derive(Debug, Clone, Serialize, Deserialize)]
76#[serde(untagged)]
77pub enum TxWitness {
78    Signature(TxSignature),
79    RawWitness(BytesEnvelope),
80}
81
82#[derive(Debug, Clone, Serialize, Deserialize)]
83pub struct UnsupportedTirDiagnostic {
84    #[serde(rename = "expected")]
85    pub expected: String,
86    #[serde(rename = "provided")]
87    pub provided: String,
88}
89
90#[derive(Debug, Clone, Serialize, Deserialize)]
91pub struct SearchSpaceDiagnostic {
92    #[serde(rename = "by_address_count")]
93    pub by_address_count: Option<usize>,
94    #[serde(rename = "by_asset_class_count")]
95    pub by_asset_class_count: Option<usize>,
96    #[serde(rename = "by_ref_count")]
97    pub by_ref_count: Option<usize>,
98    #[serde(rename = "matched")]
99    pub matched: Vec<String>,
100}
101
102#[derive(Debug, Clone, Serialize, Deserialize)]
103pub struct InputNotResolvedDiagnostic {
104    #[serde(rename = "name")]
105    pub name: String,
106    #[serde(rename = "query")]
107    pub query: InputQueryDiagnostic,
108    #[serde(rename = "search_space")]
109    pub search_space: SearchSpaceDiagnostic,
110}
111
112#[derive(Debug, Clone, Serialize, Deserialize)]
113pub struct MissingTxArgDiagnostic {
114    #[serde(rename = "key")]
115    pub key: String,
116    #[serde(rename = "type")]
117    pub ty: String,
118}
119
120#[derive(Debug, Clone, Serialize, Deserialize)]
121pub struct TxScriptFailureDiagnostic {
122    #[serde(rename = "logs")]
123    pub logs: Vec<String>,
124}
125
126// Additional types from OpenRPC spec
127
128#[derive(Debug, Clone, Serialize, Deserialize)]
129pub struct ChainPoint {
130    #[serde(rename = "slot")]
131    pub slot: u64,
132    #[serde(rename = "blockHash")]
133    pub block_hash: String,
134}
135
136#[derive(Debug, Clone, Serialize, Deserialize)]
137pub struct TxStatus {
138    #[serde(rename = "stage")]
139    pub stage: String,
140    #[serde(rename = "confirmations")]
141    pub confirmations: u64,
142    #[serde(rename = "nonConfirmations")]
143    pub non_confirmations: u64,
144    #[serde(rename = "confirmedAt", skip_serializing_if = "Option::is_none")]
145    pub confirmed_at: Option<ChainPoint>,
146}
147
148#[derive(Debug, Clone, Serialize, Deserialize)]
149pub struct CheckStatusResponse {
150    #[serde(rename = "statuses")]
151    pub statuses: std::collections::HashMap<String, TxStatus>,
152}
153
154#[derive(Debug, Clone, Serialize, Deserialize)]
155pub struct TxLog {
156    #[serde(rename = "hash")]
157    pub hash: String,
158    #[serde(rename = "stage")]
159    pub stage: String,
160    #[serde(rename = "payload", skip_serializing_if = "Option::is_none")]
161    pub payload: Option<String>,
162    #[serde(rename = "confirmations")]
163    pub confirmations: u64,
164    #[serde(rename = "nonConfirmations")]
165    pub non_confirmations: u64,
166    #[serde(rename = "confirmedAt", skip_serializing_if = "Option::is_none")]
167    pub confirmed_at: Option<ChainPoint>,
168}
169
170#[derive(Debug, Clone, Serialize, Deserialize)]
171pub struct DumpLogsResponse {
172    #[serde(rename = "entries")]
173    pub entries: Vec<TxLog>,
174    #[serde(rename = "nextCursor", skip_serializing_if = "Option::is_none")]
175    pub next_cursor: Option<u64>,
176}
177
178#[derive(Debug, Clone, Serialize, Deserialize)]
179pub struct PendingTx {
180    #[serde(rename = "hash")]
181    pub hash: String,
182    #[serde(rename = "payload", skip_serializing_if = "Option::is_none")]
183    pub payload: Option<String>,
184}
185
186#[derive(Debug, Clone, Serialize, Deserialize)]
187pub struct PeekPendingResponse {
188    #[serde(rename = "entries")]
189    pub entries: Vec<PendingTx>,
190}
191
192#[derive(Debug, Clone, Serialize, Deserialize)]
193pub struct InflightTx {
194    #[serde(rename = "hash")]
195    pub hash: String,
196    #[serde(rename = "stage")]
197    pub stage: String,
198    #[serde(rename = "confirmations")]
199    pub confirmations: u64,
200    #[serde(rename = "nonConfirmations")]
201    pub non_confirmations: u64,
202    #[serde(rename = "confirmedAt", skip_serializing_if = "Option::is_none")]
203    pub confirmed_at: Option<ChainPoint>,
204    #[serde(rename = "payload", skip_serializing_if = "Option::is_none")]
205    pub payload: Option<String>,
206}
207
208#[derive(Debug, Clone, Serialize, Deserialize)]
209pub struct PeekInflightResponse {
210    #[serde(rename = "entries")]
211    pub entries: Vec<InflightTx>,
212}