1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize)]
5pub struct BlockHashesRequest {
6 #[serde(rename = "_block_hashes")]
7 pub block_hashes: Vec<String>,
8}
9
10#[derive(Debug, Clone, Serialize, Deserialize, Default)]
12pub struct BlockTxInfoRequest {
13 #[serde(rename = "_block_hashes")]
14 pub block_hashes: Vec<String>,
15 #[serde(rename = "_inputs", skip_serializing_if = "Option::is_none")]
16 pub inputs: Option<bool>,
17 #[serde(rename = "_metadata", skip_serializing_if = "Option::is_none")]
18 pub metadata: Option<bool>,
19 #[serde(rename = "_assets", skip_serializing_if = "Option::is_none")]
20 pub assets: Option<bool>,
21 #[serde(rename = "_withdrawals", skip_serializing_if = "Option::is_none")]
22 pub withdrawals: Option<bool>,
23 #[serde(rename = "_certs", skip_serializing_if = "Option::is_none")]
24 pub certs: Option<bool>,
25 #[serde(rename = "_scripts", skip_serializing_if = "Option::is_none")]
26 pub scripts: Option<bool>,
27 #[serde(rename = "_bytecode", skip_serializing_if = "Option::is_none")]
28 pub bytecode: Option<bool>,
29}
30
31#[derive(Debug, Clone, Serialize, Deserialize)]
33pub struct PaymentAddressesRequest {
34 #[serde(rename = "_addresses")]
35 pub addresses: Vec<String>,
36}
37
38#[derive(Debug, Clone, Serialize, Deserialize)]
40pub struct PaymentAddressesWithExtendedRequest {
41 #[serde(rename = "_addresses")]
42 pub addresses: Vec<String>,
43 #[serde(rename = "_extended", skip_serializing_if = "Option::is_none")]
44 pub extended: Option<bool>,
45}
46
47#[derive(Debug, Clone, Serialize, Deserialize)]
49pub struct AddressTransactionsRequest {
50 #[serde(rename = "_addresses")]
51 pub addresses: Vec<String>,
52 #[serde(
53 rename = "_after_block_height",
54 skip_serializing_if = "Option::is_none"
55 )]
56 pub after_block_height: Option<u64>,
57}
58
59#[derive(Debug, Clone, Serialize, Deserialize)]
61pub struct StakeAddressesWithEpochRequest {
62 #[serde(rename = "_stake_addresses")]
63 pub stake_addresses: Vec<String>,
64 #[serde(rename = "_epoch_no", skip_serializing_if = "Option::is_none")]
65 pub epoch_no: Option<u64>,
66}
67
68#[derive(Debug, Clone, Serialize, Deserialize)]
70pub struct StakeAddressesWithFirstOnlyAndEmptyRequest {
71 #[serde(rename = "_stake_addresses")]
72 pub stake_addresses: Vec<String>,
73 #[serde(rename = "_first_only", skip_serializing_if = "Option::is_none")]
74 pub first_only: Option<bool>,
75 #[serde(rename = "_empty", skip_serializing_if = "Option::is_none")]
76 pub empty: Option<bool>,
77}
78
79#[derive(Debug, Clone, Serialize, Deserialize)]
81pub struct StakeAddressesWithExtendedRequest {
82 #[serde(rename = "_stake_addresses")]
83 pub stake_addresses: Vec<String>,
84 #[serde(rename = "_extended", skip_serializing_if = "Option::is_none")]
85 pub extended: Option<bool>,
86}
87
88#[derive(Debug, Clone, Serialize, Deserialize)]
90pub struct StakeAddressesRequest {
91 #[serde(rename = "_stake_addresses")]
92 pub stake_addresses: Vec<String>,
93}
94
95#[derive(Debug, Clone, Serialize, Deserialize)]
97pub struct CredentialTransactionsRequest {
98 #[serde(rename = "_payment_credentials")]
99 pub payment_credentials: Vec<String>,
100 #[serde(
101 rename = "_after_block_height",
102 skip_serializing_if = "Option::is_none"
103 )]
104 pub after_block_height: Option<u64>,
105}
106
107#[derive(Debug, Clone, Serialize, Deserialize)]
109pub struct CredentialUtxosRequest {
110 #[serde(rename = "_payment_credentials")]
111 pub payment_credentials: Vec<String>,
112 #[serde(rename = "_extended", skip_serializing_if = "Option::is_none")]
113 pub extended: Option<bool>,
114}
115
116#[derive(Debug, Clone, Serialize, Deserialize)]
118pub struct TransactionIdsRequest {
119 #[serde(rename = "_tx_hashes")]
120 pub tx_hashes: Vec<String>,
121}
122
123#[derive(Debug, Clone, Serialize, Deserialize, Default)]
125pub struct TransactionInfoRequest {
126 #[serde(rename = "_tx_hashes")]
127 pub tx_hashes: Vec<String>,
128 #[serde(rename = "_inputs", skip_serializing_if = "Option::is_none")]
129 pub inputs: Option<bool>,
130 #[serde(rename = "_metadata", skip_serializing_if = "Option::is_none")]
131 pub metadata: Option<bool>,
132 #[serde(rename = "_assets", skip_serializing_if = "Option::is_none")]
133 pub assets: Option<bool>,
134 #[serde(rename = "_withdrawals", skip_serializing_if = "Option::is_none")]
135 pub withdrawals: Option<bool>,
136 #[serde(rename = "_certs", skip_serializing_if = "Option::is_none")]
137 pub certs: Option<bool>,
138 #[serde(rename = "_scripts", skip_serializing_if = "Option::is_none")]
139 pub scripts: Option<bool>,
140 #[serde(rename = "_bytecode", skip_serializing_if = "Option::is_none")]
141 pub bytecode: Option<bool>,
142 #[serde(rename = "_governance", skip_serializing_if = "Option::is_none")]
143 pub governance: Option<bool>,
144}
145
146#[derive(Debug, Clone, Serialize, Deserialize)]
148pub struct PoolIdsRequest {
149 #[serde(rename = "_pool_bech32_ids")]
150 pub pool_bech32_ids: Vec<String>,
151}
152
153#[derive(Debug, Clone, Serialize, Deserialize)]
155pub struct PoolIdsOptionalRequest {
156 #[serde(rename = "_pool_bech32_ids", skip_serializing_if = "Option::is_none")]
157 pub pool_bech32_ids: Option<Vec<String>>,
158}
159
160#[derive(Debug, Clone, Serialize, Deserialize)]
162pub struct ScriptHashesRequest {
163 #[serde(rename = "_script_hashes")]
164 pub script_hashes: Vec<String>,
165}
166
167#[derive(Debug, Clone, Serialize, Deserialize)]
169pub struct DatumHashesRequest {
170 #[serde(rename = "_datum_hashes")]
171 pub datum_hashes: Vec<String>,
172}
173
174#[derive(Debug, Clone, Serialize, Deserialize)]
176pub struct AssetListRequest {
177 #[serde(rename = "_asset_list")]
178 pub asset_list: Vec<Vec<String>>,
179}
180
181#[derive(Debug, Clone, Serialize, Deserialize)]
183pub struct AssetListWithExtendedRequest {
184 #[serde(rename = "_asset_list")]
185 pub asset_list: Vec<Vec<String>>,
186 #[serde(rename = "_extended", skip_serializing_if = "Option::is_none")]
187 pub extended: Option<bool>,
188}
189
190#[derive(Debug, Clone, Serialize, Deserialize)]
192pub struct DrepIdBulkRequest {
193 #[serde(rename = "_drep_ids")]
194 pub drep_ids: Vec<String>,
195}
196
197#[derive(Debug, Clone, Serialize, Deserialize)]
199pub struct UtxoRefsWithExtendedRequest {
200 #[serde(rename = "_utxo_refs")]
201 pub utxo_refs: Vec<String>,
202 #[serde(rename = "_extended", skip_serializing_if = "Option::is_none")]
203 pub extended: Option<bool>,
204}
205
206#[derive(Debug, Clone, Serialize, Deserialize)]
208pub struct OgmiosRequest {
209 pub jsonrpc: String,
210 pub method: String,
211 #[serde(skip_serializing_if = "Option::is_none")]
212 pub params: Option<serde_json::Value>,
213}
214
215impl BlockHashesRequest {
217 pub fn new(block_hashes: Vec<String>) -> Self {
218 Self { block_hashes }
219 }
220}
221
222impl BlockTxInfoRequest {
223 pub fn new(block_hashes: Vec<String>) -> Self {
224 Self {
225 block_hashes,
226 inputs: None,
227 metadata: None,
228 assets: None,
229 withdrawals: None,
230 certs: None,
231 scripts: None,
232 bytecode: None,
233 }
234 }
235}
236
237impl PaymentAddressesRequest {
238 pub fn new(addresses: Vec<String>) -> Self {
239 Self { addresses }
240 }
241}
242
243impl PaymentAddressesWithExtendedRequest {
244 pub fn new(addresses: Vec<String>, extended: Option<bool>) -> Self {
245 Self {
246 addresses,
247 extended,
248 }
249 }
250}
251
252impl StakeAddressesRequest {
253 pub fn new(stake_addresses: Vec<String>) -> Self {
254 Self { stake_addresses }
255 }
256}
257
258impl AddressTransactionsRequest {
259 pub fn new(addresses: Vec<String>, after_block_height: Option<u64>) -> Self {
260 Self {
261 addresses,
262 after_block_height,
263 }
264 }
265}
266
267impl StakeAddressesWithEpochRequest {
268 pub fn new(stake_addresses: Vec<String>, epoch_no: Option<u64>) -> Self {
269 Self {
270 stake_addresses,
271 epoch_no,
272 }
273 }
274}
275
276impl StakeAddressesWithFirstOnlyAndEmptyRequest {
277 pub fn new(
278 stake_addresses: Vec<String>,
279 first_only: Option<bool>,
280 empty: Option<bool>,
281 ) -> Self {
282 Self {
283 stake_addresses,
284 first_only,
285 empty,
286 }
287 }
288}
289
290impl StakeAddressesWithExtendedRequest {
291 pub fn new(stake_addresses: Vec<String>, extended: Option<bool>) -> Self {
292 Self {
293 stake_addresses,
294 extended,
295 }
296 }
297}
298
299impl CredentialTransactionsRequest {
300 pub fn new(payment_credentials: Vec<String>, after_block_height: Option<u64>) -> Self {
301 Self {
302 payment_credentials,
303 after_block_height,
304 }
305 }
306}
307
308impl CredentialUtxosRequest {
309 pub fn new(payment_credentials: Vec<String>, extended: Option<bool>) -> Self {
310 Self {
311 payment_credentials,
312 extended,
313 }
314 }
315}
316
317impl TransactionIdsRequest {
318 pub fn new(tx_hashes: Vec<String>) -> Self {
319 Self { tx_hashes }
320 }
321}
322
323impl TransactionInfoRequest {
324 pub fn new(tx_hashes: Vec<String>) -> Self {
325 Self {
326 tx_hashes,
327 inputs: None,
328 metadata: None,
329 assets: None,
330 withdrawals: None,
331 certs: None,
332 scripts: None,
333 bytecode: None,
334 governance: None,
335 }
336 }
337
338 pub fn with_options(
339 tx_hashes: Vec<String>,
340 inputs: Option<bool>,
341 metadata: Option<bool>,
342 assets: Option<bool>,
343 withdrawals: Option<bool>,
344 certs: Option<bool>,
345 scripts: Option<bool>,
346 bytecode: Option<bool>,
347 governance: Option<bool>,
348 ) -> Self {
349 Self {
350 tx_hashes,
351 inputs,
352 metadata,
353 assets,
354 withdrawals,
355 certs,
356 scripts,
357 bytecode,
358 governance,
359 }
360 }
361}
362
363impl PoolIdsRequest {
364 pub fn new(pool_bech32_ids: Vec<String>) -> Self {
365 Self { pool_bech32_ids }
366 }
367}
368
369impl PoolIdsOptionalRequest {
370 pub fn new(pool_bech32_ids: Option<Vec<String>>) -> Self {
371 Self { pool_bech32_ids }
372 }
373}
374
375impl ScriptHashesRequest {
376 pub fn new(script_hashes: Vec<String>) -> Self {
377 Self { script_hashes }
378 }
379}
380
381impl DatumHashesRequest {
382 pub fn new(datum_hashes: Vec<String>) -> Self {
383 Self { datum_hashes }
384 }
385}
386
387impl AssetListRequest {
388 pub fn new(asset_list: Vec<Vec<String>>) -> Self {
389 Self { asset_list }
390 }
391}
392
393impl AssetListWithExtendedRequest {
394 pub fn new(asset_list: Vec<Vec<String>>, extended: Option<bool>) -> Self {
395 Self {
396 asset_list,
397 extended,
398 }
399 }
400}
401
402impl DrepIdBulkRequest {
403 pub fn new(drep_ids: Vec<String>) -> Self {
404 Self { drep_ids }
405 }
406}
407
408impl UtxoRefsWithExtendedRequest {
409 pub fn new(utxo_refs: Vec<String>, extended: Option<bool>) -> Self {
410 Self {
411 utxo_refs,
412 extended,
413 }
414 }
415}
416
417impl OgmiosRequest {
418 pub fn new(method: String) -> Self {
419 Self {
420 jsonrpc: "2.0".to_string(),
421 method,
422 params: None,
423 }
424 }
425
426 pub fn with_params(method: String, params: serde_json::Value) -> Self {
427 Self {
428 jsonrpc: "2.0".to_string(),
429 method,
430 params: Some(params),
431 }
432 }
433}