koios_sdk/models/
requests.rs

1use serde::{Deserialize, Serialize};
2
3/// Request body for block hashes
4#[derive(Debug, Clone, Serialize, Deserialize)]
5pub struct BlockHashesRequest {
6    #[serde(rename = "_block_hashes")]
7    pub block_hashes: Vec<String>,
8}
9
10/// Request body for detailed block transaction information
11#[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/// Request body for payment addresses
32#[derive(Debug, Clone, Serialize, Deserialize)]
33pub struct PaymentAddressesRequest {
34    #[serde(rename = "_addresses")]
35    pub addresses: Vec<String>,
36}
37
38/// Request body for payment addresses with extended flag
39#[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/// Request body for address transactions
48#[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/// Request body for stake addresses with epoch number
60#[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/// Request body for stake addresses with first only and empty flags
69#[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/// Request body for stake addresses with extended flag
80#[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/// Request body for stake addresses
89#[derive(Debug, Clone, Serialize, Deserialize)]
90pub struct StakeAddressesRequest {
91    #[serde(rename = "_stake_addresses")]
92    pub stake_addresses: Vec<String>,
93}
94
95/// Request body for credential transactions
96#[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/// Request body for credential UTXOs
108#[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/// Request body for transaction IDs
117#[derive(Debug, Clone, Serialize, Deserialize)]
118pub struct TransactionIdsRequest {
119    #[serde(rename = "_tx_hashes")]
120    pub tx_hashes: Vec<String>,
121}
122
123/// Request body for transaction information
124#[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/// Request body for pool IDs
147#[derive(Debug, Clone, Serialize, Deserialize)]
148pub struct PoolIdsRequest {
149    #[serde(rename = "_pool_bech32_ids")]
150    pub pool_bech32_ids: Vec<String>,
151}
152
153/// Request body for optional pool IDs
154#[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/// Request body for script hashes
161#[derive(Debug, Clone, Serialize, Deserialize)]
162pub struct ScriptHashesRequest {
163    #[serde(rename = "_script_hashes")]
164    pub script_hashes: Vec<String>,
165}
166
167/// Request body for datum hashes
168#[derive(Debug, Clone, Serialize, Deserialize)]
169pub struct DatumHashesRequest {
170    #[serde(rename = "_datum_hashes")]
171    pub datum_hashes: Vec<String>,
172}
173
174/// Request body for asset list
175#[derive(Debug, Clone, Serialize, Deserialize)]
176pub struct AssetListRequest {
177    #[serde(rename = "_asset_list")]
178    pub asset_list: Vec<Vec<String>>,
179}
180
181/// Request body for asset list with extended flag
182#[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/// Request body for DRep ID bulk
191#[derive(Debug, Clone, Serialize, Deserialize)]
192pub struct DrepIdBulkRequest {
193    #[serde(rename = "_drep_ids")]
194    pub drep_ids: Vec<String>,
195}
196
197/// Request body for UTXO references with extended flag
198#[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/// Request body for Ogmios requests
207#[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
215// Implementation blocks for constructors
216impl 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}