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::{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// Additional types from OpenRPC spec
117
118#[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}