wall_echain/
types.rs

1use serde::{Deserialize, Serialize};
2use serde_json::Value;
3
4#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
5pub struct JsonRpcRequest {
6    /// Method
7    pub method: String,
8    /// Params
9    pub params: Value,
10    /// Id
11    pub id: String,
12    /// JsonRpc
13    pub jsonrpc: String,
14}
15
16#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
17#[serde(untagged)]
18pub enum JsonResult {
19    /// String
20    String(String),
21    /// JsonResult
22    JsonRpcResult(JsonRpcResult),
23}
24
25#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
26#[serde(untagged)]
27pub enum TransactionResult {
28    /// String
29    String(String),
30    /// Transaction
31    Transaction(Transaction),
32}
33
34
35#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
36#[serde(untagged)]
37pub enum ResultJson {
38    /// JsonResult
39    JsonResult(JsonResult),
40    /// LogsFilter
41    LogsFilter(Vec<LogsFilter>)
42}
43
44
45#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
46pub struct JsonRpc {
47    /// JSON RPC Version
48    #[serde(rename = "jsonrpc")]
49    pub json_rpc: String,
50    /// Chain Id
51    pub id: String,
52    /// Json RPC Results
53    pub result: Option<ResultJson>,
54    /// Json RPC Result Error
55    pub error: Option<String>,
56}
57
58#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
59pub struct JsonRpcResult {
60    /// base fee per gas
61    #[serde(rename = "baseFeePerGas")]
62    pub base_fee_per_gas: Option<String>,
63    /// difficulty
64    pub difficulty: Option<String>,
65    /// extra Data
66    #[serde(rename = "extraData")]
67    pub extra_data: Option<String>,
68    /// gas Limit
69    #[serde(rename = "gasLimit")]
70    pub gas_limit: Option<String>,
71    /// gas Used
72    #[serde(rename = "gasUsed")]
73    pub gas_used: Option<String>,
74    /// hash
75    pub hash: Option<String>,
76    /// logs Bloom
77    #[serde(rename = "logsBloom")]
78    pub logs_bloom: Option<String>,
79    /// miner
80    pub miner: Option<String>,
81    /// mix hash
82    #[serde(rename = "mixHash")]
83    pub mix_hash: Option<String>,
84    /// nonce
85    pub nonce: Option<String>,
86    /// number
87    pub number: Option<String>,
88    /// parent Hash
89    #[serde(rename = "parentHash")]
90    pub parent_hash: Option<String>,
91    /// receipts Root
92    #[serde(rename = "receiptsRoot")]
93    pub receipts_root: Option<String>,
94    /// sha3Uncles
95    #[serde(rename = "sha3Uncles")]
96    pub sha3_uncles: Option<String>,
97    /// size
98    pub size: Option<String>,
99    /// stateRoot
100    #[serde(rename = "stateRoot")]
101    pub state_root: Option<String>,
102    /// timestamp
103    pub timestamp: Option<String>,
104    /// totalDifficulty
105    #[serde(rename = "totalDifficulty")]
106    pub total_difficulty: Option<String>,
107    /// transactions
108    pub transactions: Option<Vec<TransactionResult>>,
109    /// transactionsRoot
110    #[serde(rename = "transactionsRoot")]
111    pub transactions_root: Option<String>,
112    /// uncles
113    pub uncles: Option<Vec<String>>,
114    /// blockHash
115    #[serde(rename = "blockHash")]
116    pub block_hash: Option<String>,
117    /// blockNumber
118    #[serde(rename = "blockNumber")]
119    pub block_number: Option<String>,
120    /// contractAddress
121    #[serde(rename = "contractAddress")]
122    pub contract_address: Option<String>,
123    /// cumulativeGasUsed
124    #[serde(rename = "cumulativeGasUsed")]
125    pub cumulative_gas_used: Option<String>,
126    /// effectiveGasPrice
127    #[serde(rename = "effectiveGasPrice")]
128    pub effective_gas_price: Option<String>,
129    /// from
130    pub from: Option<String>,
131    /// logs
132    pub logs: Option<Vec<TransactionReceiptLogs>>,
133    /// status
134    pub status: Option<String>,
135    /// to
136    pub to: Option<String>,
137    /// transactionHash
138    #[serde(rename = "transactionHash")]
139    pub transaction_hash: Option<String>,
140    /// transactionIndex
141    #[serde(rename = "transactionIndex")]
142    pub transaction_index: Option<String>,
143    /// type
144    pub r#type: Option<String>,
145}
146
147#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
148pub struct Transaction {
149    /// Block Hash
150    #[serde(rename = "blockHash")]
151    pub block_hash: Option<String>,
152    /// Block Number
153    #[serde(rename = "blockNumber")]
154    pub block_number: Option<String>,
155    /// from
156    pub from: Option<String>,
157    /// gas
158    pub gas: Option<String>,
159    /// gas Price
160    #[serde(rename = "gasPrice")]
161    pub gas_price: Option<String>,
162    /// max fee per gas
163    #[serde(rename = "maxFeePerGas")]
164    pub max_fee_per_gas: Option<String>,
165    ///max Priority Fee Per Gas
166    #[serde(rename = "maxPriorityFeePerGas")]
167    pub max_priority_fee_per_gas: Option<String>,
168    /// hash
169    pub hash: Option<String>,
170    /// input
171    pub input: Option<String>,
172    /// nonce
173    pub nonce: Option<String>,
174    /// to
175    pub to: Option<String>,
176    /// transactionIndex
177    #[serde(rename = "transactionIndex")]
178    pub transaction_index: Option<String>,
179    /// value
180    pub value: Option<String>,
181    /// type
182    pub r#type: Option<String>,
183    /// accessList
184    #[serde(rename = "accessList")]
185    pub access_list: Option<Vec<AccessList>>,
186    /// chainId
187    #[serde(rename = "chainId")]
188    pub chain_id: Option<String>,
189    /// v
190    pub v: Option<String>,
191    /// r
192    pub r: Option<String>,
193    /// s
194    pub s: Option<String>,
195}
196
197#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
198pub struct TransactionReceiptLogs {
199    /// address
200    pub address: Option<String>,
201    /// topics
202    pub topics: Option<Vec<String>>,
203    /// data
204    pub data: Option<String>,
205    /// blockNumber
206    #[serde(rename = "blockNumber")]
207    pub block_number: Option<String>,
208    /// transactionHash
209    #[serde(rename = "transactionHash")]
210    pub transaction_hash: Option<String>,
211    /// transactionIndex
212    #[serde(rename = "transactionIndex")]
213    pub transaction_index: Option<String>,
214    /// blockHash
215    #[serde(rename = "blockHash")]
216    pub block_hash: Option<String>,
217    /// logIndex
218    #[serde(rename = "logIndex")]
219    pub log_index: Option<String>,
220    /// removed
221    pub removed: Option<bool>,
222}
223
224#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
225pub struct AccessList {
226    /// Address
227    pub address: String,
228    /// storage Keys
229    #[serde(rename = "storageKeys")]
230    pub storage_keys: Vec<String>,
231}
232
233#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
234pub struct LogsFilter {
235    /// Address
236    pub address: Option<String>,
237    /// Topics
238    pub topics: Option<Vec<String>>,
239    /// Data
240    pub data: Option<String>,
241    /// Block Number
242    #[serde(rename="blockNumber")]
243    pub block_number: Option<String>,
244    /// transactionHash
245    #[serde(rename="transactionHash")]
246    pub transaction_hash: Option<String>,
247    /// transactionIndex
248    #[serde(rename="transactionIndex")]
249    pub transaction_index: Option<String>,
250    /// blockHash
251    #[serde(rename="blockHash")]
252    pub block_hash: Option<String>,
253    /// logIndex
254    #[serde(rename="logIndex")]
255    pub log_index: Option<String>,
256    /// Removed
257    pub removed: Option<bool>
258}