1use serde::{Deserialize, Serialize};
3
4use crate::interop::{BytesEncoding, BytesEnvelope};
5
6pub type JsonArgMap = serde_json::Map<String, serde_json::Value>;
7
8#[derive(Debug, Deserialize, Serialize, Clone)]
9pub struct TirEnvelope {
10 pub content: String,
11 pub encoding: BytesEncoding,
12 pub version: String,
13}
14
15#[derive(Debug, Clone, Serialize, Deserialize)]
16pub struct SubmitParams {
17 #[serde(rename = "tx")]
18 pub tx: BytesEnvelope,
19 #[serde(rename = "witnesses")]
20 pub witnesses: Vec<SubmitWitness>,
21}
22
23#[derive(Debug, Clone, Serialize, Deserialize)]
24pub struct TxEnvelope {
25 #[serde(rename = "hash")]
26 pub hash: String,
27 #[serde(rename = "tx")]
28 pub tx: String,
29}
30
31#[derive(Debug, Clone, Serialize, Deserialize)]
32pub struct SubmitResponse {
33 #[serde(rename = "hash")]
34 pub hash: String,
35}
36
37#[derive(Debug, Clone, Serialize, Deserialize)]
38pub struct SearchSpaceDiagnostic {
39 #[serde(rename = "by_address_count")]
40 pub by_address_count: Option<usize>,
41 #[serde(rename = "by_asset_class_count")]
42 pub by_asset_class_count: Option<usize>,
43 #[serde(rename = "by_ref_count")]
44 pub by_ref_count: Option<usize>,
45 #[serde(rename = "matched")]
46 pub matched: Vec<String>,
47}
48
49#[derive(Debug, Clone, Serialize, Deserialize)]
50pub struct InputQueryDiagnostic {
51 #[serde(rename = "address")]
52 pub address: Option<String>,
53 #[serde(rename = "collateral")]
54 pub collateral: bool,
55 #[serde(rename = "min_amount")]
56 pub min_amount: std::collections::HashMap<String, String>,
57 #[serde(rename = "refs")]
58 pub refs: Vec<String>,
59 #[serde(rename = "support_many")]
60 pub support_many: bool,
61}
62
63#[derive(Debug, Clone, Serialize, Deserialize)]
64pub struct ResolveParams {
65 #[serde(rename = "args")]
66 pub args: JsonArgMap,
67 #[serde(rename = "tir")]
68 pub tir: TirEnvelope,
69}
70
71#[derive(Debug, Clone, Serialize, Deserialize)]
72pub struct SubmitWitness {
73 #[serde(rename = "key")]
74 pub key: BytesEnvelope,
75 #[serde(rename = "signature")]
76 pub signature: BytesEnvelope,
77 #[serde(rename = "type")]
78 pub ty: String,
79}
80
81#[derive(Debug, Clone, Serialize, Deserialize)]
82pub struct UnsupportedTirDiagnostic {
83 #[serde(rename = "expected")]
84 pub expected: String,
85 #[serde(rename = "provided")]
86 pub provided: String,
87}
88
89#[derive(Debug, Clone, Serialize, Deserialize)]
90pub struct InputNotResolvedDiagnostic {
91 #[serde(rename = "name")]
92 pub name: String,
93 #[serde(rename = "query")]
94 pub query: InputQueryDiagnostic,
95 #[serde(rename = "search_space")]
96 pub search_space: SearchSpaceDiagnostic,
97}
98
99#[derive(Debug, Clone, Serialize, Deserialize)]
100pub struct MissingTxArgDiagnostic {
101 #[serde(rename = "key")]
102 pub key: String,
103 #[serde(rename = "type")]
104 pub ty: String,
105}
106
107#[derive(Debug, Clone, Serialize, Deserialize)]
108pub struct TxScriptFailureDiagnostic {
109 #[serde(rename = "logs")]
110 pub logs: Vec<String>,
111}