1use crate::model::*;
2use borsh::{BorshDeserialize, BorshSerialize};
3use kaspa_consensus_core::api::stats::BlockCount;
4use kaspa_core::debug;
5use kaspa_notify::subscription::{context::SubscriptionContext, single::UtxosChangedSubscription, Command};
6use kaspa_utils::hex::ToHex;
7use serde::{Deserialize, Serialize};
8use std::collections::HashMap;
9use std::{
10 fmt::{Display, Formatter},
11 sync::Arc,
12};
13use workflow_serializer::prelude::*;
14
15pub type RpcExtraData = Vec<u8>;
16
17#[derive(Debug, Serialize, Deserialize)]
22#[serde(rename_all = "camelCase")]
23pub struct SubmitBlockRequest {
24 pub block: RpcRawBlock,
25 #[serde(alias = "allowNonDAABlocks")]
26 pub allow_non_daa_blocks: bool,
27}
28impl SubmitBlockRequest {
29 pub fn new(block: RpcRawBlock, allow_non_daa_blocks: bool) -> Self {
30 Self { block, allow_non_daa_blocks }
31 }
32}
33
34impl Serializer for SubmitBlockRequest {
35 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
36 store!(u16, &1, writer)?;
37 serialize!(RpcRawBlock, &self.block, writer)?;
38 store!(bool, &self.allow_non_daa_blocks, writer)?;
39
40 Ok(())
41 }
42}
43
44impl Deserializer for SubmitBlockRequest {
45 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
46 let _version = load!(u16, reader)?;
47 let block = deserialize!(RpcRawBlock, reader)?;
48 let allow_non_daa_blocks = load!(bool, reader)?;
49
50 Ok(Self { block, allow_non_daa_blocks })
51 }
52}
53
54#[derive(Clone, Copy, Eq, PartialEq, Debug, Serialize, Deserialize, BorshSerialize, BorshDeserialize)]
55#[serde(rename_all = "camelCase")]
56#[borsh(use_discriminant = true)]
57pub enum SubmitBlockRejectReason {
58 BlockInvalid = 1,
59 IsInIBD = 2,
60 RouteIsFull = 3,
61}
62impl SubmitBlockRejectReason {
63 fn as_str(&self) -> &'static str {
64 match self {
66 SubmitBlockRejectReason::BlockInvalid => "block is invalid",
67 SubmitBlockRejectReason::IsInIBD => "node is not synced",
68 SubmitBlockRejectReason::RouteIsFull => "route is full",
69 }
70 }
71}
72impl Display for SubmitBlockRejectReason {
73 fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
74 f.write_str(self.as_str())
75 }
76}
77
78#[derive(Eq, PartialEq, Debug, Serialize, Deserialize, BorshSerialize, BorshDeserialize)]
79#[serde(rename_all = "lowercase")]
80#[serde(tag = "type", content = "reason")]
81#[borsh(use_discriminant = true)]
82pub enum SubmitBlockReport {
83 Success,
84 Reject(SubmitBlockRejectReason),
85}
86impl SubmitBlockReport {
87 pub fn is_success(&self) -> bool {
88 *self == SubmitBlockReport::Success
89 }
90}
91
92#[derive(Debug, Serialize, Deserialize)]
93#[serde(rename_all = "camelCase")]
94pub struct SubmitBlockResponse {
95 pub report: SubmitBlockReport,
96}
97
98impl Serializer for SubmitBlockResponse {
99 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
100 store!(u16, &1, writer)?;
101 store!(SubmitBlockReport, &self.report, writer)?;
102 Ok(())
103 }
104}
105
106impl Deserializer for SubmitBlockResponse {
107 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
108 let _version = load!(u16, reader)?;
109 let report = load!(SubmitBlockReport, reader)?;
110
111 Ok(Self { report })
112 }
113}
114
115#[derive(Debug, Serialize, Deserialize)]
120#[serde(rename_all = "camelCase")]
121pub struct GetBlockTemplateRequest {
122 pub pay_address: RpcAddress,
124 pub extra_data: RpcExtraData,
126}
127impl GetBlockTemplateRequest {
128 pub fn new(pay_address: RpcAddress, extra_data: RpcExtraData) -> Self {
129 Self { pay_address, extra_data }
130 }
131}
132
133impl Serializer for GetBlockTemplateRequest {
134 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
135 store!(u16, &1, writer)?;
136 store!(RpcAddress, &self.pay_address, writer)?;
137 store!(RpcExtraData, &self.extra_data, writer)?;
138
139 Ok(())
140 }
141}
142
143impl Deserializer for GetBlockTemplateRequest {
144 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
145 let _version = load!(u16, reader)?;
146 let pay_address = load!(RpcAddress, reader)?;
147 let extra_data = load!(RpcExtraData, reader)?;
148
149 Ok(Self { pay_address, extra_data })
150 }
151}
152
153#[derive(Debug, Serialize, Deserialize)]
154#[serde(rename_all = "camelCase")]
155pub struct GetBlockTemplateResponse {
156 pub block: RpcRawBlock,
157
158 pub is_synced: bool,
163}
164
165impl Serializer for GetBlockTemplateResponse {
166 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
167 store!(u16, &1, writer)?;
168 serialize!(RpcRawBlock, &self.block, writer)?;
169 store!(bool, &self.is_synced, writer)?;
170
171 Ok(())
172 }
173}
174
175impl Deserializer for GetBlockTemplateResponse {
176 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
177 let _version = load!(u16, reader)?;
178 let block = deserialize!(RpcRawBlock, reader)?;
179 let is_synced = load!(bool, reader)?;
180
181 Ok(Self { block, is_synced })
182 }
183}
184
185#[derive(Clone, Debug, Serialize, Deserialize)]
187#[serde(rename_all = "camelCase")]
188pub struct GetBlockRequest {
189 pub hash: RpcHash,
191
192 pub include_transactions: bool,
194}
195impl GetBlockRequest {
196 pub fn new(hash: RpcHash, include_transactions: bool) -> Self {
197 Self { hash, include_transactions }
198 }
199}
200
201impl Serializer for GetBlockRequest {
202 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
203 store!(u16, &1, writer)?;
204 store!(RpcHash, &self.hash, writer)?;
205 store!(bool, &self.include_transactions, writer)?;
206
207 Ok(())
208 }
209}
210
211impl Deserializer for GetBlockRequest {
212 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
213 let _version = load!(u16, reader)?;
214 let hash = load!(RpcHash, reader)?;
215 let include_transactions = load!(bool, reader)?;
216
217 Ok(Self { hash, include_transactions })
218 }
219}
220
221#[derive(Clone, Debug, Serialize, Deserialize)]
222#[serde(rename_all = "camelCase")]
223pub struct GetBlockResponse {
224 pub block: RpcBlock,
225}
226
227impl Serializer for GetBlockResponse {
228 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
229 store!(u16, &1, writer)?;
230 serialize!(RpcBlock, &self.block, writer)?;
231
232 Ok(())
233 }
234}
235
236impl Deserializer for GetBlockResponse {
237 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
238 let _version = load!(u16, reader)?;
239 let block = deserialize!(RpcBlock, reader)?;
240
241 Ok(Self { block })
242 }
243}
244
245#[derive(Clone, Debug, Serialize, Deserialize)]
247#[serde(rename_all = "camelCase")]
248pub struct GetInfoRequest {}
249
250impl Serializer for GetInfoRequest {
251 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
252 store!(u16, &1, writer)?;
253 Ok(())
254 }
255}
256
257impl Deserializer for GetInfoRequest {
258 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
259 let _version = load!(u16, reader)?;
260 Ok(Self {})
261 }
262}
263
264#[derive(Clone, Debug, Serialize, Deserialize)]
265#[serde(rename_all = "camelCase")]
266pub struct GetInfoResponse {
267 pub p2p_id: String,
268 pub mempool_size: u64,
269 pub server_version: String,
270 pub is_utxo_indexed: bool,
271 pub is_synced: bool,
272 pub has_notify_command: bool,
273 pub has_message_id: bool,
274}
275
276impl Serializer for GetInfoResponse {
277 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
278 store!(u16, &1, writer)?;
279 store!(String, &self.p2p_id, writer)?;
280 store!(u64, &self.mempool_size, writer)?;
281 store!(String, &self.server_version, writer)?;
282 store!(bool, &self.is_utxo_indexed, writer)?;
283 store!(bool, &self.is_synced, writer)?;
284 store!(bool, &self.has_notify_command, writer)?;
285 store!(bool, &self.has_message_id, writer)?;
286
287 Ok(())
288 }
289}
290
291impl Deserializer for GetInfoResponse {
292 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
293 let _version = load!(u16, reader)?;
294 let p2p_id = load!(String, reader)?;
295 let mempool_size = load!(u64, reader)?;
296 let server_version = load!(String, reader)?;
297 let is_utxo_indexed = load!(bool, reader)?;
298 let is_synced = load!(bool, reader)?;
299 let has_notify_command = load!(bool, reader)?;
300 let has_message_id = load!(bool, reader)?;
301
302 Ok(Self { p2p_id, mempool_size, server_version, is_utxo_indexed, is_synced, has_notify_command, has_message_id })
303 }
304}
305
306#[derive(Clone, Debug, Serialize, Deserialize)]
307#[serde(rename_all = "camelCase")]
308pub struct GetCurrentNetworkRequest {}
309
310impl Serializer for GetCurrentNetworkRequest {
311 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
312 store!(u16, &1, writer)?;
313 Ok(())
314 }
315}
316
317impl Deserializer for GetCurrentNetworkRequest {
318 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
319 let _version = load!(u16, reader)?;
320 Ok(Self {})
321 }
322}
323
324#[derive(Clone, Debug, Serialize, Deserialize)]
325#[serde(rename_all = "camelCase")]
326pub struct GetCurrentNetworkResponse {
327 pub network: RpcNetworkType,
328}
329
330impl GetCurrentNetworkResponse {
331 pub fn new(network: RpcNetworkType) -> Self {
332 Self { network }
333 }
334}
335
336impl Serializer for GetCurrentNetworkResponse {
337 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
338 store!(u16, &1, writer)?;
339 store!(RpcNetworkType, &self.network, writer)?;
340 Ok(())
341 }
342}
343
344impl Deserializer for GetCurrentNetworkResponse {
345 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
346 let _version = load!(u16, reader)?;
347 let network = load!(RpcNetworkType, reader)?;
348 Ok(Self { network })
349 }
350}
351
352#[derive(Clone, Debug, Serialize, Deserialize)]
353#[serde(rename_all = "camelCase")]
354pub struct GetPeerAddressesRequest {}
355
356impl Serializer for GetPeerAddressesRequest {
357 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
358 store!(u16, &1, writer)?;
359 Ok(())
360 }
361}
362
363impl Deserializer for GetPeerAddressesRequest {
364 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
365 let _version = load!(u16, reader)?;
366 Ok(Self {})
367 }
368}
369
370#[derive(Clone, Debug, Serialize, Deserialize)]
371#[serde(rename_all = "camelCase")]
372pub struct GetPeerAddressesResponse {
373 pub known_addresses: Vec<RpcPeerAddress>,
374 pub banned_addresses: Vec<RpcIpAddress>,
375}
376
377impl GetPeerAddressesResponse {
378 pub fn new(known_addresses: Vec<RpcPeerAddress>, banned_addresses: Vec<RpcIpAddress>) -> Self {
379 Self { known_addresses, banned_addresses }
380 }
381}
382
383impl Serializer for GetPeerAddressesResponse {
384 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
385 store!(u16, &1, writer)?;
386 store!(Vec<RpcPeerAddress>, &self.known_addresses, writer)?;
387 store!(Vec<RpcIpAddress>, &self.banned_addresses, writer)?;
388 Ok(())
389 }
390}
391
392impl Deserializer for GetPeerAddressesResponse {
393 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
394 let _version = load!(u16, reader)?;
395 let known_addresses = load!(Vec<RpcPeerAddress>, reader)?;
396 let banned_addresses = load!(Vec<RpcIpAddress>, reader)?;
397 Ok(Self { known_addresses, banned_addresses })
398 }
399}
400
401#[derive(Clone, Debug, Serialize, Deserialize)]
402#[serde(rename_all = "camelCase")]
403pub struct GetSinkRequest {}
404
405impl Serializer for GetSinkRequest {
406 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
407 store!(u16, &1, writer)?;
408 Ok(())
409 }
410}
411
412impl Deserializer for GetSinkRequest {
413 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
414 let _version = load!(u16, reader)?;
415 Ok(Self {})
416 }
417}
418
419#[derive(Clone, Debug, Serialize, Deserialize)]
420#[serde(rename_all = "camelCase")]
421pub struct GetSinkResponse {
422 pub sink: RpcHash,
423}
424
425impl GetSinkResponse {
426 pub fn new(selected_tip_hash: RpcHash) -> Self {
427 Self { sink: selected_tip_hash }
428 }
429}
430
431impl Serializer for GetSinkResponse {
432 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
433 store!(u16, &1, writer)?;
434 store!(RpcHash, &self.sink, writer)?;
435 Ok(())
436 }
437}
438
439impl Deserializer for GetSinkResponse {
440 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
441 let _version = load!(u16, reader)?;
442 let sink = load!(RpcHash, reader)?;
443 Ok(Self { sink })
444 }
445}
446
447#[derive(Clone, Debug, Serialize, Deserialize)]
448#[serde(rename_all = "camelCase")]
449pub struct GetMempoolEntryRequest {
450 pub transaction_id: RpcTransactionId,
451 pub include_orphan_pool: bool,
452 pub filter_transaction_pool: bool,
454}
455
456impl GetMempoolEntryRequest {
457 pub fn new(transaction_id: RpcTransactionId, include_orphan_pool: bool, filter_transaction_pool: bool) -> Self {
458 Self { transaction_id, include_orphan_pool, filter_transaction_pool }
459 }
460}
461
462impl Serializer for GetMempoolEntryRequest {
463 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
464 store!(u16, &1, writer)?;
465 store!(RpcTransactionId, &self.transaction_id, writer)?;
466 store!(bool, &self.include_orphan_pool, writer)?;
467 store!(bool, &self.filter_transaction_pool, writer)?;
468
469 Ok(())
470 }
471}
472
473impl Deserializer for GetMempoolEntryRequest {
474 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
475 let _version = load!(u16, reader)?;
476 let transaction_id = load!(RpcTransactionId, reader)?;
477 let include_orphan_pool = load!(bool, reader)?;
478 let filter_transaction_pool = load!(bool, reader)?;
479
480 Ok(Self { transaction_id, include_orphan_pool, filter_transaction_pool })
481 }
482}
483
484#[derive(Clone, Debug, Serialize, Deserialize)]
485#[serde(rename_all = "camelCase")]
486pub struct GetMempoolEntryResponse {
487 pub mempool_entry: RpcMempoolEntry,
488}
489
490impl GetMempoolEntryResponse {
491 pub fn new(mempool_entry: RpcMempoolEntry) -> Self {
492 Self { mempool_entry }
493 }
494}
495
496impl Serializer for GetMempoolEntryResponse {
497 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
498 store!(u16, &1, writer)?;
499 serialize!(RpcMempoolEntry, &self.mempool_entry, writer)?;
500 Ok(())
501 }
502}
503
504impl Deserializer for GetMempoolEntryResponse {
505 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
506 let _version = load!(u16, reader)?;
507 let mempool_entry = deserialize!(RpcMempoolEntry, reader)?;
508 Ok(Self { mempool_entry })
509 }
510}
511
512#[derive(Clone, Debug, Serialize, Deserialize)]
513#[serde(rename_all = "camelCase")]
514pub struct GetMempoolEntriesRequest {
515 pub include_orphan_pool: bool,
516 pub filter_transaction_pool: bool,
518}
519
520impl GetMempoolEntriesRequest {
521 pub fn new(include_orphan_pool: bool, filter_transaction_pool: bool) -> Self {
522 Self { include_orphan_pool, filter_transaction_pool }
523 }
524}
525
526impl Serializer for GetMempoolEntriesRequest {
527 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
528 store!(u16, &1, writer)?;
529 store!(bool, &self.include_orphan_pool, writer)?;
530 store!(bool, &self.filter_transaction_pool, writer)?;
531
532 Ok(())
533 }
534}
535
536impl Deserializer for GetMempoolEntriesRequest {
537 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
538 let _version = load!(u16, reader)?;
539 let include_orphan_pool = load!(bool, reader)?;
540 let filter_transaction_pool = load!(bool, reader)?;
541
542 Ok(Self { include_orphan_pool, filter_transaction_pool })
543 }
544}
545
546#[derive(Clone, Debug, Serialize, Deserialize)]
547#[serde(rename_all = "camelCase")]
548pub struct GetMempoolEntriesResponse {
549 pub mempool_entries: Vec<RpcMempoolEntry>,
550}
551
552impl GetMempoolEntriesResponse {
553 pub fn new(mempool_entries: Vec<RpcMempoolEntry>) -> Self {
554 Self { mempool_entries }
555 }
556}
557
558impl Serializer for GetMempoolEntriesResponse {
559 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
560 store!(u16, &1, writer)?;
561 serialize!(Vec<RpcMempoolEntry>, &self.mempool_entries, writer)?;
562 Ok(())
563 }
564}
565
566impl Deserializer for GetMempoolEntriesResponse {
567 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
568 let _version = load!(u16, reader)?;
569 let mempool_entries = deserialize!(Vec<RpcMempoolEntry>, reader)?;
570 Ok(Self { mempool_entries })
571 }
572}
573
574#[derive(Clone, Debug, Serialize, Deserialize)]
575#[serde(rename_all = "camelCase")]
576pub struct GetConnectedPeerInfoRequest {}
577
578impl Serializer for GetConnectedPeerInfoRequest {
579 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
580 store!(u16, &1, writer)?;
581 Ok(())
582 }
583}
584
585impl Deserializer for GetConnectedPeerInfoRequest {
586 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
587 let _version = load!(u16, reader)?;
588 Ok(Self {})
589 }
590}
591
592#[derive(Clone, Debug, Serialize, Deserialize)]
593#[serde(rename_all = "camelCase")]
594pub struct GetConnectedPeerInfoResponse {
595 pub peer_info: Vec<RpcPeerInfo>,
596}
597
598impl GetConnectedPeerInfoResponse {
599 pub fn new(peer_info: Vec<RpcPeerInfo>) -> Self {
600 Self { peer_info }
601 }
602}
603
604impl Serializer for GetConnectedPeerInfoResponse {
605 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
606 store!(u16, &1, writer)?;
607 store!(Vec<RpcPeerInfo>, &self.peer_info, writer)?;
608 Ok(())
609 }
610}
611
612impl Deserializer for GetConnectedPeerInfoResponse {
613 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
614 let _version = load!(u16, reader)?;
615 let peer_info = load!(Vec<RpcPeerInfo>, reader)?;
616 Ok(Self { peer_info })
617 }
618}
619
620#[derive(Clone, Debug, Serialize, Deserialize)]
621#[serde(rename_all = "camelCase")]
622pub struct AddPeerRequest {
623 pub peer_address: RpcContextualPeerAddress,
624 pub is_permanent: bool,
625}
626
627impl AddPeerRequest {
628 pub fn new(peer_address: RpcContextualPeerAddress, is_permanent: bool) -> Self {
629 Self { peer_address, is_permanent }
630 }
631}
632
633impl Serializer for AddPeerRequest {
634 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
635 store!(u16, &1, writer)?;
636 store!(RpcContextualPeerAddress, &self.peer_address, writer)?;
637 store!(bool, &self.is_permanent, writer)?;
638
639 Ok(())
640 }
641}
642
643impl Deserializer for AddPeerRequest {
644 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
645 let _version = load!(u16, reader)?;
646 let peer_address = load!(RpcContextualPeerAddress, reader)?;
647 let is_permanent = load!(bool, reader)?;
648
649 Ok(Self { peer_address, is_permanent })
650 }
651}
652
653#[derive(Clone, Debug, Serialize, Deserialize)]
654#[serde(rename_all = "camelCase")]
655pub struct AddPeerResponse {}
656
657impl Serializer for AddPeerResponse {
658 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
659 store!(u16, &1, writer)?;
660 Ok(())
661 }
662}
663
664impl Deserializer for AddPeerResponse {
665 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
666 let _version = load!(u16, reader)?;
667 Ok(Self {})
668 }
669}
670
671#[derive(Clone, Debug, Serialize, Deserialize)]
672#[serde(rename_all = "camelCase")]
673pub struct SubmitTransactionRequest {
674 pub transaction: RpcTransaction,
675 pub allow_orphan: bool,
676}
677
678impl SubmitTransactionRequest {
679 pub fn new(transaction: RpcTransaction, allow_orphan: bool) -> Self {
680 Self { transaction, allow_orphan }
681 }
682}
683
684impl Serializer for SubmitTransactionRequest {
685 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
686 store!(u16, &1, writer)?;
687 serialize!(RpcTransaction, &self.transaction, writer)?;
688 store!(bool, &self.allow_orphan, writer)?;
689
690 Ok(())
691 }
692}
693
694impl Deserializer for SubmitTransactionRequest {
695 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
696 let _version = load!(u16, reader)?;
697 let transaction = deserialize!(RpcTransaction, reader)?;
698 let allow_orphan = load!(bool, reader)?;
699
700 Ok(Self { transaction, allow_orphan })
701 }
702}
703
704#[derive(Clone, Debug, Serialize, Deserialize)]
705#[serde(rename_all = "camelCase")]
706pub struct SubmitTransactionResponse {
707 pub transaction_id: RpcTransactionId,
708}
709
710impl SubmitTransactionResponse {
711 pub fn new(transaction_id: RpcTransactionId) -> Self {
712 Self { transaction_id }
713 }
714}
715
716impl Serializer for SubmitTransactionResponse {
717 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
718 store!(u16, &1, writer)?;
719 store!(RpcTransactionId, &self.transaction_id, writer)?;
720
721 Ok(())
722 }
723}
724
725impl Deserializer for SubmitTransactionResponse {
726 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
727 let _version = load!(u16, reader)?;
728 let transaction_id = load!(RpcTransactionId, reader)?;
729
730 Ok(Self { transaction_id })
731 }
732}
733
734#[derive(Clone, Debug, Serialize, Deserialize)]
735#[serde(rename_all = "camelCase")]
736pub struct SubmitTransactionReplacementRequest {
737 pub transaction: RpcTransaction,
738}
739
740impl SubmitTransactionReplacementRequest {
741 pub fn new(transaction: RpcTransaction) -> Self {
742 Self { transaction }
743 }
744}
745
746impl Serializer for SubmitTransactionReplacementRequest {
747 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
748 store!(u16, &1, writer)?;
749 serialize!(RpcTransaction, &self.transaction, writer)?;
750
751 Ok(())
752 }
753}
754
755impl Deserializer for SubmitTransactionReplacementRequest {
756 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
757 let _version = load!(u16, reader)?;
758 let transaction = deserialize!(RpcTransaction, reader)?;
759
760 Ok(Self { transaction })
761 }
762}
763
764#[derive(Clone, Debug, Serialize, Deserialize)]
765#[serde(rename_all = "camelCase")]
766pub struct SubmitTransactionReplacementResponse {
767 pub transaction_id: RpcTransactionId,
768 pub replaced_transaction: RpcTransaction,
769}
770
771impl SubmitTransactionReplacementResponse {
772 pub fn new(transaction_id: RpcTransactionId, replaced_transaction: RpcTransaction) -> Self {
773 Self { transaction_id, replaced_transaction }
774 }
775}
776
777impl Serializer for SubmitTransactionReplacementResponse {
778 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
779 store!(u16, &1, writer)?;
780 store!(RpcTransactionId, &self.transaction_id, writer)?;
781 serialize!(RpcTransaction, &self.replaced_transaction, writer)?;
782
783 Ok(())
784 }
785}
786
787impl Deserializer for SubmitTransactionReplacementResponse {
788 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
789 let _version = load!(u16, reader)?;
790 let transaction_id = load!(RpcTransactionId, reader)?;
791 let replaced_transaction = deserialize!(RpcTransaction, reader)?;
792
793 Ok(Self { transaction_id, replaced_transaction })
794 }
795}
796
797#[derive(Clone, Debug, Serialize, Deserialize, BorshSerialize, BorshDeserialize)]
798#[serde(rename_all = "camelCase")]
799pub struct GetSubnetworkRequest {
800 pub subnetwork_id: RpcSubnetworkId,
801}
802
803impl GetSubnetworkRequest {
804 pub fn new(subnetwork_id: RpcSubnetworkId) -> Self {
805 Self { subnetwork_id }
806 }
807}
808
809impl Serializer for GetSubnetworkRequest {
810 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
811 store!(u16, &1, writer)?;
812 store!(RpcSubnetworkId, &self.subnetwork_id, writer)?;
813
814 Ok(())
815 }
816}
817
818impl Deserializer for GetSubnetworkRequest {
819 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
820 let _version = load!(u16, reader)?;
821 let subnetwork_id = load!(RpcSubnetworkId, reader)?;
822
823 Ok(Self { subnetwork_id })
824 }
825}
826
827#[derive(Clone, Debug, Serialize, Deserialize)]
828#[serde(rename_all = "camelCase")]
829pub struct GetSubnetworkResponse {
830 pub gas_limit: u64,
831}
832
833impl GetSubnetworkResponse {
834 pub fn new(gas_limit: u64) -> Self {
835 Self { gas_limit }
836 }
837}
838
839impl Serializer for GetSubnetworkResponse {
840 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
841 store!(u16, &1, writer)?;
842 store!(u64, &self.gas_limit, writer)?;
843
844 Ok(())
845 }
846}
847
848impl Deserializer for GetSubnetworkResponse {
849 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
850 let _version = load!(u16, reader)?;
851 let gas_limit = load!(u64, reader)?;
852
853 Ok(Self { gas_limit })
854 }
855}
856
857#[derive(Clone, Debug, Serialize, Deserialize)]
858#[serde(rename_all = "camelCase")]
859pub struct GetVirtualChainFromBlockRequest {
860 pub start_hash: RpcHash,
861 pub include_accepted_transaction_ids: bool,
862}
863
864impl GetVirtualChainFromBlockRequest {
865 pub fn new(start_hash: RpcHash, include_accepted_transaction_ids: bool) -> Self {
866 Self { start_hash, include_accepted_transaction_ids }
867 }
868}
869
870impl Serializer for GetVirtualChainFromBlockRequest {
871 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
872 store!(u16, &1, writer)?;
873 store!(RpcHash, &self.start_hash, writer)?;
874 store!(bool, &self.include_accepted_transaction_ids, writer)?;
875
876 Ok(())
877 }
878}
879
880impl Deserializer for GetVirtualChainFromBlockRequest {
881 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
882 let _version = load!(u16, reader)?;
883 let start_hash = load!(RpcHash, reader)?;
884 let include_accepted_transaction_ids = load!(bool, reader)?;
885
886 Ok(Self { start_hash, include_accepted_transaction_ids })
887 }
888}
889
890#[derive(Clone, Debug, Serialize, Deserialize)]
891#[serde(rename_all = "camelCase")]
892pub struct GetVirtualChainFromBlockResponse {
893 pub removed_chain_block_hashes: Vec<RpcHash>,
894 pub added_chain_block_hashes: Vec<RpcHash>,
895 pub accepted_transaction_ids: Vec<RpcAcceptedTransactionIds>,
896}
897
898impl GetVirtualChainFromBlockResponse {
899 pub fn new(
900 removed_chain_block_hashes: Vec<RpcHash>,
901 added_chain_block_hashes: Vec<RpcHash>,
902 accepted_transaction_ids: Vec<RpcAcceptedTransactionIds>,
903 ) -> Self {
904 Self { removed_chain_block_hashes, added_chain_block_hashes, accepted_transaction_ids }
905 }
906}
907
908impl Serializer for GetVirtualChainFromBlockResponse {
909 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
910 store!(u16, &1, writer)?;
911 store!(Vec<RpcHash>, &self.removed_chain_block_hashes, writer)?;
912 store!(Vec<RpcHash>, &self.added_chain_block_hashes, writer)?;
913 store!(Vec<RpcAcceptedTransactionIds>, &self.accepted_transaction_ids, writer)?;
914
915 Ok(())
916 }
917}
918
919impl Deserializer for GetVirtualChainFromBlockResponse {
920 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
921 let _version = load!(u16, reader)?;
922 let removed_chain_block_hashes = load!(Vec<RpcHash>, reader)?;
923 let added_chain_block_hashes = load!(Vec<RpcHash>, reader)?;
924 let accepted_transaction_ids = load!(Vec<RpcAcceptedTransactionIds>, reader)?;
925
926 Ok(Self { removed_chain_block_hashes, added_chain_block_hashes, accepted_transaction_ids })
927 }
928}
929
930#[derive(Clone, Debug, Serialize, Deserialize)]
931#[serde(rename_all = "camelCase")]
932pub struct GetBlocksRequest {
933 pub low_hash: Option<RpcHash>,
934 pub include_blocks: bool,
935 pub include_transactions: bool,
936}
937
938impl GetBlocksRequest {
939 pub fn new(low_hash: Option<RpcHash>, include_blocks: bool, include_transactions: bool) -> Self {
940 Self { low_hash, include_blocks, include_transactions }
941 }
942}
943
944impl Serializer for GetBlocksRequest {
945 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
946 store!(u16, &1, writer)?;
947 store!(Option<RpcHash>, &self.low_hash, writer)?;
948 store!(bool, &self.include_blocks, writer)?;
949 store!(bool, &self.include_transactions, writer)?;
950
951 Ok(())
952 }
953}
954
955impl Deserializer for GetBlocksRequest {
956 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
957 let _version = load!(u16, reader)?;
958 let low_hash = load!(Option<RpcHash>, reader)?;
959 let include_blocks = load!(bool, reader)?;
960 let include_transactions = load!(bool, reader)?;
961
962 Ok(Self { low_hash, include_blocks, include_transactions })
963 }
964}
965
966#[derive(Clone, Debug, Serialize, Deserialize)]
967#[serde(rename_all = "camelCase")]
968pub struct GetBlocksResponse {
969 pub block_hashes: Vec<RpcHash>,
970 pub blocks: Vec<RpcBlock>,
971}
972
973impl GetBlocksResponse {
974 pub fn new(block_hashes: Vec<RpcHash>, blocks: Vec<RpcBlock>) -> Self {
975 Self { block_hashes, blocks }
976 }
977}
978
979impl Serializer for GetBlocksResponse {
980 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
981 store!(u16, &1, writer)?;
982 store!(Vec<RpcHash>, &self.block_hashes, writer)?;
983 serialize!(Vec<RpcBlock>, &self.blocks, writer)?;
984
985 Ok(())
986 }
987}
988
989impl Deserializer for GetBlocksResponse {
990 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
991 let _version = load!(u16, reader)?;
992 let block_hashes = load!(Vec<RpcHash>, reader)?;
993 let blocks = deserialize!(Vec<RpcBlock>, reader)?;
994
995 Ok(Self { block_hashes, blocks })
996 }
997}
998
999#[derive(Clone, Debug, Serialize, Deserialize)]
1000#[serde(rename_all = "camelCase")]
1001pub struct GetBlockCountRequest {}
1002
1003impl Serializer for GetBlockCountRequest {
1004 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
1005 store!(u16, &1, writer)?;
1006 Ok(())
1007 }
1008}
1009
1010impl Deserializer for GetBlockCountRequest {
1011 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
1012 let _version = load!(u16, reader)?;
1013 Ok(Self {})
1014 }
1015}
1016
1017pub type GetBlockCountResponse = BlockCount;
1018
1019#[derive(Clone, Debug, Serialize, Deserialize)]
1020#[serde(rename_all = "camelCase")]
1021pub struct GetBlockDagInfoRequest {}
1022
1023impl Serializer for GetBlockDagInfoRequest {
1024 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
1025 store!(u16, &1, writer)?;
1026 Ok(())
1027 }
1028}
1029
1030impl Deserializer for GetBlockDagInfoRequest {
1031 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
1032 let _version = load!(u16, reader)?;
1033 Ok(Self {})
1034 }
1035}
1036
1037#[derive(Clone, Debug, Serialize, Deserialize)]
1038#[serde(rename_all = "camelCase")]
1039pub struct GetBlockDagInfoResponse {
1040 pub network: RpcNetworkId,
1041 pub block_count: u64,
1042 pub header_count: u64,
1043 pub tip_hashes: Vec<RpcHash>,
1044 pub difficulty: f64,
1045 pub past_median_time: u64, pub virtual_parent_hashes: Vec<RpcHash>,
1047 pub pruning_point_hash: RpcHash,
1048 pub virtual_daa_score: u64,
1049 pub sink: RpcHash,
1050}
1051
1052impl GetBlockDagInfoResponse {
1053 pub fn new(
1054 network: RpcNetworkId,
1055 block_count: u64,
1056 header_count: u64,
1057 tip_hashes: Vec<RpcHash>,
1058 difficulty: f64,
1059 past_median_time: u64,
1060 virtual_parent_hashes: Vec<RpcHash>,
1061 pruning_point_hash: RpcHash,
1062 virtual_daa_score: u64,
1063 sink: RpcHash,
1064 ) -> Self {
1065 Self {
1066 network,
1067 block_count,
1068 header_count,
1069 tip_hashes,
1070 difficulty,
1071 past_median_time,
1072 virtual_parent_hashes,
1073 pruning_point_hash,
1074 virtual_daa_score,
1075 sink,
1076 }
1077 }
1078}
1079
1080impl Serializer for GetBlockDagInfoResponse {
1081 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
1082 store!(u16, &1, writer)?;
1083 store!(RpcNetworkId, &self.network, writer)?;
1084 store!(u64, &self.block_count, writer)?;
1085 store!(u64, &self.header_count, writer)?;
1086 store!(Vec<RpcHash>, &self.tip_hashes, writer)?;
1087 store!(f64, &self.difficulty, writer)?;
1088 store!(u64, &self.past_median_time, writer)?;
1089 store!(Vec<RpcHash>, &self.virtual_parent_hashes, writer)?;
1090 store!(RpcHash, &self.pruning_point_hash, writer)?;
1091 store!(u64, &self.virtual_daa_score, writer)?;
1092 store!(RpcHash, &self.sink, writer)?;
1093
1094 Ok(())
1095 }
1096}
1097
1098impl Deserializer for GetBlockDagInfoResponse {
1099 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
1100 let _version = load!(u16, reader)?;
1101 let network = load!(RpcNetworkId, reader)?;
1102 let block_count = load!(u64, reader)?;
1103 let header_count = load!(u64, reader)?;
1104 let tip_hashes = load!(Vec<RpcHash>, reader)?;
1105 let difficulty = load!(f64, reader)?;
1106 let past_median_time = load!(u64, reader)?;
1107 let virtual_parent_hashes = load!(Vec<RpcHash>, reader)?;
1108 let pruning_point_hash = load!(RpcHash, reader)?;
1109 let virtual_daa_score = load!(u64, reader)?;
1110 let sink = load!(RpcHash, reader)?;
1111
1112 Ok(Self {
1113 network,
1114 block_count,
1115 header_count,
1116 tip_hashes,
1117 difficulty,
1118 past_median_time,
1119 virtual_parent_hashes,
1120 pruning_point_hash,
1121 virtual_daa_score,
1122 sink,
1123 })
1124 }
1125}
1126
1127#[derive(Clone, Debug, Serialize, Deserialize)]
1128#[serde(rename_all = "camelCase")]
1129pub struct ResolveFinalityConflictRequest {
1130 pub finality_block_hash: RpcHash,
1131}
1132
1133impl ResolveFinalityConflictRequest {
1134 pub fn new(finality_block_hash: RpcHash) -> Self {
1135 Self { finality_block_hash }
1136 }
1137}
1138
1139impl Serializer for ResolveFinalityConflictRequest {
1140 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
1141 store!(u16, &1, writer)?;
1142 store!(RpcHash, &self.finality_block_hash, writer)?;
1143
1144 Ok(())
1145 }
1146}
1147
1148impl Deserializer for ResolveFinalityConflictRequest {
1149 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
1150 let _version = load!(u16, reader)?;
1151 let finality_block_hash = load!(RpcHash, reader)?;
1152
1153 Ok(Self { finality_block_hash })
1154 }
1155}
1156
1157#[derive(Clone, Debug, Serialize, Deserialize)]
1158#[serde(rename_all = "camelCase")]
1159pub struct ResolveFinalityConflictResponse {}
1160
1161impl Serializer for ResolveFinalityConflictResponse {
1162 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
1163 store!(u16, &1, writer)?;
1164 Ok(())
1165 }
1166}
1167
1168impl Deserializer for ResolveFinalityConflictResponse {
1169 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
1170 let _version = load!(u16, reader)?;
1171 Ok(Self {})
1172 }
1173}
1174
1175#[derive(Clone, Debug, Serialize, Deserialize)]
1176#[serde(rename_all = "camelCase")]
1177pub struct ShutdownRequest {}
1178
1179impl Serializer for ShutdownRequest {
1180 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
1181 store!(u16, &1, writer)?;
1182 Ok(())
1183 }
1184}
1185
1186impl Deserializer for ShutdownRequest {
1187 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
1188 let _version = load!(u16, reader)?;
1189 Ok(Self {})
1190 }
1191}
1192
1193#[derive(Clone, Debug, Serialize, Deserialize)]
1194#[serde(rename_all = "camelCase")]
1195pub struct ShutdownResponse {}
1196
1197impl Serializer for ShutdownResponse {
1198 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
1199 store!(u16, &1, writer)?;
1200 Ok(())
1201 }
1202}
1203
1204impl Deserializer for ShutdownResponse {
1205 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
1206 let _version = load!(u16, reader)?;
1207 Ok(Self {})
1208 }
1209}
1210
1211#[derive(Clone, Debug, Serialize, Deserialize)]
1212#[serde(rename_all = "camelCase")]
1213pub struct GetHeadersRequest {
1214 pub start_hash: RpcHash,
1215 pub limit: u64,
1216 pub is_ascending: bool,
1217}
1218
1219impl GetHeadersRequest {
1220 pub fn new(start_hash: RpcHash, limit: u64, is_ascending: bool) -> Self {
1221 Self { start_hash, limit, is_ascending }
1222 }
1223}
1224
1225impl Serializer for GetHeadersRequest {
1226 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
1227 store!(u16, &1, writer)?;
1228 store!(RpcHash, &self.start_hash, writer)?;
1229 store!(u64, &self.limit, writer)?;
1230 store!(bool, &self.is_ascending, writer)?;
1231
1232 Ok(())
1233 }
1234}
1235
1236impl Deserializer for GetHeadersRequest {
1237 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
1238 let _version = load!(u16, reader)?;
1239 let start_hash = load!(RpcHash, reader)?;
1240 let limit = load!(u64, reader)?;
1241 let is_ascending = load!(bool, reader)?;
1242
1243 Ok(Self { start_hash, limit, is_ascending })
1244 }
1245}
1246
1247#[derive(Clone, Debug, Serialize, Deserialize)]
1248#[serde(rename_all = "camelCase")]
1249pub struct GetHeadersResponse {
1250 pub headers: Vec<RpcHeader>,
1251}
1252
1253impl GetHeadersResponse {
1254 pub fn new(headers: Vec<RpcHeader>) -> Self {
1255 Self { headers }
1256 }
1257}
1258
1259impl Serializer for GetHeadersResponse {
1260 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
1261 store!(u16, &1, writer)?;
1262 store!(Vec<RpcHeader>, &self.headers, writer)?;
1263
1264 Ok(())
1265 }
1266}
1267
1268impl Deserializer for GetHeadersResponse {
1269 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
1270 let _version = load!(u16, reader)?;
1271 let headers = load!(Vec<RpcHeader>, reader)?;
1272
1273 Ok(Self { headers })
1274 }
1275}
1276
1277#[derive(Clone, Debug, Serialize, Deserialize)]
1278#[serde(rename_all = "camelCase")]
1279pub struct GetBalanceByAddressRequest {
1280 pub address: RpcAddress,
1281}
1282
1283impl GetBalanceByAddressRequest {
1284 pub fn new(address: RpcAddress) -> Self {
1285 Self { address }
1286 }
1287}
1288
1289impl Serializer for GetBalanceByAddressRequest {
1290 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
1291 store!(u16, &1, writer)?;
1292 store!(RpcAddress, &self.address, writer)?;
1293
1294 Ok(())
1295 }
1296}
1297
1298impl Deserializer for GetBalanceByAddressRequest {
1299 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
1300 let _version = load!(u16, reader)?;
1301 let address = load!(RpcAddress, reader)?;
1302
1303 Ok(Self { address })
1304 }
1305}
1306
1307#[derive(Clone, Debug, Serialize, Deserialize)]
1308#[serde(rename_all = "camelCase")]
1309pub struct GetBalanceByAddressResponse {
1310 pub balance: u64,
1311}
1312
1313impl GetBalanceByAddressResponse {
1314 pub fn new(balance: u64) -> Self {
1315 Self { balance }
1316 }
1317}
1318
1319impl Serializer for GetBalanceByAddressResponse {
1320 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
1321 store!(u16, &1, writer)?;
1322 store!(u64, &self.balance, writer)?;
1323
1324 Ok(())
1325 }
1326}
1327
1328impl Deserializer for GetBalanceByAddressResponse {
1329 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
1330 let _version = load!(u16, reader)?;
1331 let balance = load!(u64, reader)?;
1332
1333 Ok(Self { balance })
1334 }
1335}
1336
1337#[derive(Clone, Debug, Serialize, Deserialize)]
1338#[serde(rename_all = "camelCase")]
1339pub struct GetBalancesByAddressesRequest {
1340 pub addresses: Vec<RpcAddress>,
1341}
1342
1343impl GetBalancesByAddressesRequest {
1344 pub fn new(addresses: Vec<RpcAddress>) -> Self {
1345 Self { addresses }
1346 }
1347}
1348
1349impl Serializer for GetBalancesByAddressesRequest {
1350 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
1351 store!(u16, &1, writer)?;
1352 store!(Vec<RpcAddress>, &self.addresses, writer)?;
1353
1354 Ok(())
1355 }
1356}
1357
1358impl Deserializer for GetBalancesByAddressesRequest {
1359 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
1360 let _version = load!(u16, reader)?;
1361 let addresses = load!(Vec<RpcAddress>, reader)?;
1362
1363 Ok(Self { addresses })
1364 }
1365}
1366
1367#[derive(Clone, Debug, Serialize, Deserialize)]
1368#[serde(rename_all = "camelCase")]
1369pub struct GetBalancesByAddressesResponse {
1370 pub entries: Vec<RpcBalancesByAddressesEntry>,
1371}
1372
1373impl GetBalancesByAddressesResponse {
1374 pub fn new(entries: Vec<RpcBalancesByAddressesEntry>) -> Self {
1375 Self { entries }
1376 }
1377}
1378
1379impl Serializer for GetBalancesByAddressesResponse {
1380 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
1381 store!(u16, &1, writer)?;
1382 serialize!(Vec<RpcBalancesByAddressesEntry>, &self.entries, writer)?;
1383
1384 Ok(())
1385 }
1386}
1387
1388impl Deserializer for GetBalancesByAddressesResponse {
1389 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
1390 let _version = load!(u16, reader)?;
1391 let entries = deserialize!(Vec<RpcBalancesByAddressesEntry>, reader)?;
1392
1393 Ok(Self { entries })
1394 }
1395}
1396
1397#[derive(Clone, Debug, Serialize, Deserialize)]
1398#[serde(rename_all = "camelCase")]
1399pub struct GetSinkBlueScoreRequest {}
1400
1401impl Serializer for GetSinkBlueScoreRequest {
1402 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
1403 store!(u16, &1, writer)?;
1404 Ok(())
1405 }
1406}
1407
1408impl Deserializer for GetSinkBlueScoreRequest {
1409 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
1410 let _version = load!(u16, reader)?;
1411 Ok(Self {})
1412 }
1413}
1414
1415#[derive(Clone, Debug, Serialize, Deserialize)]
1416#[serde(rename_all = "camelCase")]
1417pub struct GetSinkBlueScoreResponse {
1418 pub blue_score: u64,
1419}
1420
1421impl GetSinkBlueScoreResponse {
1422 pub fn new(blue_score: u64) -> Self {
1423 Self { blue_score }
1424 }
1425}
1426
1427impl Serializer for GetSinkBlueScoreResponse {
1428 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
1429 store!(u16, &1, writer)?;
1430 store!(u64, &self.blue_score, writer)?;
1431
1432 Ok(())
1433 }
1434}
1435
1436impl Deserializer for GetSinkBlueScoreResponse {
1437 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
1438 let _version = load!(u16, reader)?;
1439 let blue_score = load!(u64, reader)?;
1440
1441 Ok(Self { blue_score })
1442 }
1443}
1444
1445#[derive(Clone, Debug, Serialize, Deserialize)]
1446#[serde(rename_all = "camelCase")]
1447pub struct GetUtxosByAddressesRequest {
1448 pub addresses: Vec<RpcAddress>,
1449}
1450
1451impl GetUtxosByAddressesRequest {
1452 pub fn new(addresses: Vec<RpcAddress>) -> Self {
1453 Self { addresses }
1454 }
1455}
1456
1457impl Serializer for GetUtxosByAddressesRequest {
1458 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
1459 store!(u16, &1, writer)?;
1460 store!(Vec<RpcAddress>, &self.addresses, writer)?;
1461
1462 Ok(())
1463 }
1464}
1465
1466impl Deserializer for GetUtxosByAddressesRequest {
1467 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
1468 let _version = load!(u16, reader)?;
1469 let addresses = load!(Vec<RpcAddress>, reader)?;
1470
1471 Ok(Self { addresses })
1472 }
1473}
1474
1475#[derive(Clone, Debug, Serialize, Deserialize)]
1476#[serde(rename_all = "camelCase")]
1477pub struct GetUtxosByAddressesResponse {
1478 pub entries: Vec<RpcUtxosByAddressesEntry>,
1479}
1480
1481impl GetUtxosByAddressesResponse {
1482 pub fn new(entries: Vec<RpcUtxosByAddressesEntry>) -> Self {
1483 Self { entries }
1484 }
1485}
1486
1487impl Serializer for GetUtxosByAddressesResponse {
1488 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
1489 store!(u16, &1, writer)?;
1490 serialize!(Vec<RpcUtxosByAddressesEntry>, &self.entries, writer)?;
1491
1492 Ok(())
1493 }
1494}
1495
1496impl Deserializer for GetUtxosByAddressesResponse {
1497 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
1498 let _version = load!(u16, reader)?;
1499 let entries = deserialize!(Vec<RpcUtxosByAddressesEntry>, reader)?;
1500
1501 Ok(Self { entries })
1502 }
1503}
1504
1505#[derive(Clone, Debug, Serialize, Deserialize)]
1506#[serde(rename_all = "camelCase")]
1507pub struct BanRequest {
1508 pub ip: RpcIpAddress,
1509}
1510
1511impl BanRequest {
1512 pub fn new(ip: RpcIpAddress) -> Self {
1513 Self { ip }
1514 }
1515}
1516
1517impl Serializer for BanRequest {
1518 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
1519 store!(u16, &1, writer)?;
1520 store!(RpcIpAddress, &self.ip, writer)?;
1521
1522 Ok(())
1523 }
1524}
1525
1526impl Deserializer for BanRequest {
1527 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
1528 let _version = load!(u16, reader)?;
1529 let ip = load!(RpcIpAddress, reader)?;
1530
1531 Ok(Self { ip })
1532 }
1533}
1534
1535#[derive(Clone, Debug, Serialize, Deserialize)]
1536#[serde(rename_all = "camelCase")]
1537pub struct BanResponse {}
1538
1539impl Serializer for BanResponse {
1540 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
1541 store!(u16, &1, writer)?;
1542 Ok(())
1543 }
1544}
1545
1546impl Deserializer for BanResponse {
1547 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
1548 let _version = load!(u16, reader)?;
1549 Ok(Self {})
1550 }
1551}
1552
1553#[derive(Clone, Debug, Serialize, Deserialize)]
1554#[serde(rename_all = "camelCase")]
1555pub struct UnbanRequest {
1556 pub ip: RpcIpAddress,
1557}
1558
1559impl UnbanRequest {
1560 pub fn new(ip: RpcIpAddress) -> Self {
1561 Self { ip }
1562 }
1563}
1564
1565impl Serializer for UnbanRequest {
1566 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
1567 store!(u16, &1, writer)?;
1568 store!(RpcIpAddress, &self.ip, writer)?;
1569
1570 Ok(())
1571 }
1572}
1573
1574impl Deserializer for UnbanRequest {
1575 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
1576 let _version = load!(u16, reader)?;
1577 let ip = load!(RpcIpAddress, reader)?;
1578
1579 Ok(Self { ip })
1580 }
1581}
1582
1583#[derive(Clone, Debug, Serialize, Deserialize)]
1584#[serde(rename_all = "camelCase")]
1585pub struct UnbanResponse {}
1586
1587impl Serializer for UnbanResponse {
1588 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
1589 store!(u16, &1, writer)?;
1590 Ok(())
1591 }
1592}
1593
1594impl Deserializer for UnbanResponse {
1595 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
1596 let _version = load!(u16, reader)?;
1597 Ok(Self {})
1598 }
1599}
1600
1601#[derive(Clone, Debug, Serialize, Deserialize)]
1602#[serde(rename_all = "camelCase")]
1603pub struct EstimateNetworkHashesPerSecondRequest {
1604 pub window_size: u32,
1605 pub start_hash: Option<RpcHash>,
1606}
1607
1608impl EstimateNetworkHashesPerSecondRequest {
1609 pub fn new(window_size: u32, start_hash: Option<RpcHash>) -> Self {
1610 Self { window_size, start_hash }
1611 }
1612}
1613
1614impl Serializer for EstimateNetworkHashesPerSecondRequest {
1615 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
1616 store!(u16, &1, writer)?;
1617 store!(u32, &self.window_size, writer)?;
1618 store!(Option<RpcHash>, &self.start_hash, writer)?;
1619
1620 Ok(())
1621 }
1622}
1623
1624impl Deserializer for EstimateNetworkHashesPerSecondRequest {
1625 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
1626 let _version = load!(u16, reader)?;
1627 let window_size = load!(u32, reader)?;
1628 let start_hash = load!(Option<RpcHash>, reader)?;
1629
1630 Ok(Self { window_size, start_hash })
1631 }
1632}
1633
1634#[derive(Clone, Debug, Serialize, Deserialize)]
1635#[serde(rename_all = "camelCase")]
1636pub struct EstimateNetworkHashesPerSecondResponse {
1637 pub network_hashes_per_second: u64,
1638}
1639
1640impl EstimateNetworkHashesPerSecondResponse {
1641 pub fn new(network_hashes_per_second: u64) -> Self {
1642 Self { network_hashes_per_second }
1643 }
1644}
1645
1646impl Serializer for EstimateNetworkHashesPerSecondResponse {
1647 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
1648 store!(u16, &1, writer)?;
1649 store!(u64, &self.network_hashes_per_second, writer)?;
1650
1651 Ok(())
1652 }
1653}
1654
1655impl Deserializer for EstimateNetworkHashesPerSecondResponse {
1656 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
1657 let _version = load!(u16, reader)?;
1658 let network_hashes_per_second = load!(u64, reader)?;
1659
1660 Ok(Self { network_hashes_per_second })
1661 }
1662}
1663
1664#[derive(Clone, Debug, Serialize, Deserialize)]
1665#[serde(rename_all = "camelCase")]
1666pub struct GetMempoolEntriesByAddressesRequest {
1667 pub addresses: Vec<RpcAddress>,
1668 pub include_orphan_pool: bool,
1669 pub filter_transaction_pool: bool,
1671}
1672
1673impl GetMempoolEntriesByAddressesRequest {
1674 pub fn new(addresses: Vec<RpcAddress>, include_orphan_pool: bool, filter_transaction_pool: bool) -> Self {
1675 Self { addresses, include_orphan_pool, filter_transaction_pool }
1676 }
1677}
1678
1679impl Serializer for GetMempoolEntriesByAddressesRequest {
1680 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
1681 store!(u16, &1, writer)?;
1682 store!(Vec<RpcAddress>, &self.addresses, writer)?;
1683 store!(bool, &self.include_orphan_pool, writer)?;
1684 store!(bool, &self.filter_transaction_pool, writer)?;
1685
1686 Ok(())
1687 }
1688}
1689
1690impl Deserializer for GetMempoolEntriesByAddressesRequest {
1691 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
1692 let _version = load!(u16, reader)?;
1693 let addresses = load!(Vec<RpcAddress>, reader)?;
1694 let include_orphan_pool = load!(bool, reader)?;
1695 let filter_transaction_pool = load!(bool, reader)?;
1696
1697 Ok(Self { addresses, include_orphan_pool, filter_transaction_pool })
1698 }
1699}
1700
1701#[derive(Clone, Debug, Serialize, Deserialize)]
1702#[serde(rename_all = "camelCase")]
1703pub struct GetMempoolEntriesByAddressesResponse {
1704 pub entries: Vec<RpcMempoolEntryByAddress>,
1705}
1706
1707impl GetMempoolEntriesByAddressesResponse {
1708 pub fn new(entries: Vec<RpcMempoolEntryByAddress>) -> Self {
1709 Self { entries }
1710 }
1711}
1712
1713impl Serializer for GetMempoolEntriesByAddressesResponse {
1714 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
1715 store!(u16, &1, writer)?;
1716 serialize!(Vec<RpcMempoolEntryByAddress>, &self.entries, writer)?;
1717
1718 Ok(())
1719 }
1720}
1721
1722impl Deserializer for GetMempoolEntriesByAddressesResponse {
1723 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
1724 let _version = load!(u16, reader)?;
1725 let entries = deserialize!(Vec<RpcMempoolEntryByAddress>, reader)?;
1726
1727 Ok(Self { entries })
1728 }
1729}
1730
1731#[derive(Clone, Debug, Serialize, Deserialize)]
1732#[serde(rename_all = "camelCase")]
1733pub struct GetCoinSupplyRequest {}
1734
1735impl Serializer for GetCoinSupplyRequest {
1736 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
1737 store!(u16, &1, writer)?;
1738 Ok(())
1739 }
1740}
1741
1742impl Deserializer for GetCoinSupplyRequest {
1743 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
1744 let _version = load!(u16, reader)?;
1745 Ok(Self {})
1746 }
1747}
1748
1749#[derive(Clone, Debug, Serialize, Deserialize)]
1750#[serde(rename_all = "camelCase")]
1751pub struct GetCoinSupplyResponse {
1752 pub max_sompi: u64,
1753 pub circulating_sompi: u64,
1754}
1755
1756impl GetCoinSupplyResponse {
1757 pub fn new(max_sompi: u64, circulating_sompi: u64) -> Self {
1758 Self { max_sompi, circulating_sompi }
1759 }
1760}
1761
1762impl Serializer for GetCoinSupplyResponse {
1763 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
1764 store!(u16, &1, writer)?;
1765 store!(u64, &self.max_sompi, writer)?;
1766 store!(u64, &self.circulating_sompi, writer)?;
1767
1768 Ok(())
1769 }
1770}
1771
1772impl Deserializer for GetCoinSupplyResponse {
1773 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
1774 let _version = load!(u16, reader)?;
1775 let max_sompi = load!(u64, reader)?;
1776 let circulating_sompi = load!(u64, reader)?;
1777
1778 Ok(Self { max_sompi, circulating_sompi })
1779 }
1780}
1781
1782#[derive(Clone, Debug, Serialize, Deserialize)]
1783#[serde(rename_all = "camelCase")]
1784pub struct PingRequest {}
1785
1786impl Serializer for PingRequest {
1787 fn serialize<W: std::io::Write>(&self, _writer: &mut W) -> std::io::Result<()> {
1788 Ok(())
1789 }
1790}
1791
1792impl Deserializer for PingRequest {
1793 fn deserialize<R: std::io::Read>(_reader: &mut R) -> std::io::Result<Self> {
1794 Ok(Self {})
1795 }
1796}
1797
1798#[derive(Clone, Debug, Serialize, Deserialize)]
1799#[serde(rename_all = "camelCase")]
1800pub struct PingResponse {}
1801
1802impl Serializer for PingResponse {
1803 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
1804 store!(u8, &1, writer)?;
1805 Ok(())
1806 }
1807}
1808
1809impl Deserializer for PingResponse {
1810 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
1811 let _version = load!(u8, reader)?;
1812 Ok(Self {})
1813 }
1814}
1815
1816#[derive(Clone, Debug, Serialize, Deserialize, BorshSerialize, BorshDeserialize)]
1817#[serde(rename_all = "camelCase")]
1818pub struct ConnectionsProfileData {
1819 pub cpu_usage: f32,
1820 pub memory_usage: u64,
1821}
1822
1823#[derive(Clone, Debug, Serialize, Deserialize)]
1824#[serde(rename_all = "camelCase")]
1825pub struct GetConnectionsRequest {
1826 pub include_profile_data: bool,
1827}
1828
1829impl Serializer for GetConnectionsRequest {
1830 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
1831 store!(u8, &1, writer)?;
1832 store!(bool, &self.include_profile_data, writer)?;
1833 Ok(())
1834 }
1835}
1836
1837impl Deserializer for GetConnectionsRequest {
1838 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
1839 let _version = load!(u8, reader)?;
1840 let include_profile_data = load!(bool, reader)?;
1841 Ok(Self { include_profile_data })
1842 }
1843}
1844
1845#[derive(Clone, Debug, Serialize, Deserialize)]
1846#[serde(rename_all = "camelCase")]
1847pub struct GetConnectionsResponse {
1848 pub clients: u32,
1849 pub peers: u16,
1850 pub profile_data: Option<ConnectionsProfileData>,
1851}
1852
1853impl Serializer for GetConnectionsResponse {
1854 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
1855 store!(u16, &1, writer)?;
1856 store!(u32, &self.clients, writer)?;
1857 store!(u16, &self.peers, writer)?;
1858 store!(Option<ConnectionsProfileData>, &self.profile_data, writer)?;
1859 Ok(())
1860 }
1861}
1862
1863impl Deserializer for GetConnectionsResponse {
1864 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
1865 let _version = load!(u16, reader)?;
1866 let clients = load!(u32, reader)?;
1867 let peers = load!(u16, reader)?;
1868 let extra = load!(Option<ConnectionsProfileData>, reader)?;
1869 Ok(Self { clients, peers, profile_data: extra })
1870 }
1871}
1872
1873#[derive(Clone, Debug, Serialize, Deserialize)]
1874#[serde(rename_all = "camelCase")]
1875pub struct GetSystemInfoRequest {}
1876
1877impl Serializer for GetSystemInfoRequest {
1878 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
1879 store!(u16, &1, writer)?;
1880
1881 Ok(())
1882 }
1883}
1884
1885impl Deserializer for GetSystemInfoRequest {
1886 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
1887 let _version = load!(u16, reader)?;
1888
1889 Ok(Self {})
1890 }
1891}
1892
1893#[derive(Clone, Serialize, Deserialize)]
1894#[serde(rename_all = "camelCase")]
1895pub struct GetSystemInfoResponse {
1896 pub version: String,
1897 pub system_id: Option<Vec<u8>>,
1898 pub git_hash: Option<Vec<u8>>,
1899 pub cpu_physical_cores: u16,
1900 pub total_memory: u64,
1901 pub fd_limit: u32,
1902 pub proxy_socket_limit_per_cpu_core: Option<u32>,
1903}
1904
1905impl std::fmt::Debug for GetSystemInfoResponse {
1906 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
1907 f.debug_struct("GetSystemInfoResponse")
1908 .field("version", &self.version)
1909 .field("system_id", &self.system_id.as_ref().map(|id| id.to_hex()))
1910 .field("git_hash", &self.git_hash.as_ref().map(|hash| hash.to_hex()))
1911 .field("cpu_physical_cores", &self.cpu_physical_cores)
1912 .field("total_memory", &self.total_memory)
1913 .field("fd_limit", &self.fd_limit)
1914 .field("proxy_socket_limit_per_cpu_core", &self.proxy_socket_limit_per_cpu_core)
1915 .finish()
1916 }
1917}
1918
1919impl Serializer for GetSystemInfoResponse {
1920 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
1921 store!(u16, &2, writer)?;
1922 store!(String, &self.version, writer)?;
1923 store!(Option<Vec<u8>>, &self.system_id, writer)?;
1924 store!(Option<Vec<u8>>, &self.git_hash, writer)?;
1925 store!(u16, &self.cpu_physical_cores, writer)?;
1926 store!(u64, &self.total_memory, writer)?;
1927 store!(u32, &self.fd_limit, writer)?;
1928 store!(Option<u32>, &self.proxy_socket_limit_per_cpu_core, writer)?;
1929
1930 Ok(())
1931 }
1932}
1933
1934impl Deserializer for GetSystemInfoResponse {
1935 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
1936 let payload_version = load!(u16, reader)?;
1937 let version = load!(String, reader)?;
1938 let system_id = load!(Option<Vec<u8>>, reader)?;
1939 let git_hash = load!(Option<Vec<u8>>, reader)?;
1940 let cpu_physical_cores = load!(u16, reader)?;
1941 let total_memory = load!(u64, reader)?;
1942 let fd_limit = load!(u32, reader)?;
1943
1944 let proxy_socket_limit_per_cpu_core = if payload_version > 1 { load!(Option<u32>, reader)? } else { None };
1945
1946 Ok(Self { version, system_id, git_hash, cpu_physical_cores, total_memory, fd_limit, proxy_socket_limit_per_cpu_core })
1947 }
1948}
1949
1950#[derive(Clone, Debug, Serialize, Deserialize)]
1951#[serde(rename_all = "camelCase")]
1952pub struct GetMetricsRequest {
1953 pub process_metrics: bool,
1954 pub connection_metrics: bool,
1955 pub bandwidth_metrics: bool,
1956 pub consensus_metrics: bool,
1957 pub storage_metrics: bool,
1958 pub custom_metrics: bool,
1959}
1960
1961impl Serializer for GetMetricsRequest {
1962 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
1963 store!(u16, &1, writer)?;
1964 store!(bool, &self.process_metrics, writer)?;
1965 store!(bool, &self.connection_metrics, writer)?;
1966 store!(bool, &self.bandwidth_metrics, writer)?;
1967 store!(bool, &self.consensus_metrics, writer)?;
1968 store!(bool, &self.storage_metrics, writer)?;
1969 store!(bool, &self.custom_metrics, writer)?;
1970
1971 Ok(())
1972 }
1973}
1974
1975impl Deserializer for GetMetricsRequest {
1976 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
1977 let _version = load!(u16, reader)?;
1978 let process_metrics = load!(bool, reader)?;
1979 let connection_metrics = load!(bool, reader)?;
1980 let bandwidth_metrics = load!(bool, reader)?;
1981 let consensus_metrics = load!(bool, reader)?;
1982 let storage_metrics = load!(bool, reader)?;
1983 let custom_metrics = load!(bool, reader)?;
1984
1985 Ok(Self { process_metrics, connection_metrics, bandwidth_metrics, consensus_metrics, storage_metrics, custom_metrics })
1986 }
1987}
1988
1989#[derive(Default, Clone, Debug, Serialize, Deserialize)]
1990#[serde(rename_all = "camelCase")]
1991pub struct ProcessMetrics {
1992 pub resident_set_size: u64,
1993 pub virtual_memory_size: u64,
1994 pub core_num: u32,
1995 pub cpu_usage: f32,
1996 pub fd_num: u32,
1997 pub disk_io_read_bytes: u64,
1998 pub disk_io_write_bytes: u64,
1999 pub disk_io_read_per_sec: f32,
2000 pub disk_io_write_per_sec: f32,
2001}
2002
2003impl Serializer for ProcessMetrics {
2004 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
2005 store!(u16, &1, writer)?;
2006 store!(u64, &self.resident_set_size, writer)?;
2007 store!(u64, &self.virtual_memory_size, writer)?;
2008 store!(u32, &self.core_num, writer)?;
2009 store!(f32, &self.cpu_usage, writer)?;
2010 store!(u32, &self.fd_num, writer)?;
2011 store!(u64, &self.disk_io_read_bytes, writer)?;
2012 store!(u64, &self.disk_io_write_bytes, writer)?;
2013 store!(f32, &self.disk_io_read_per_sec, writer)?;
2014 store!(f32, &self.disk_io_write_per_sec, writer)?;
2015
2016 Ok(())
2017 }
2018}
2019
2020impl Deserializer for ProcessMetrics {
2021 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
2022 let _version = load!(u16, reader)?;
2023 let resident_set_size = load!(u64, reader)?;
2024 let virtual_memory_size = load!(u64, reader)?;
2025 let core_num = load!(u32, reader)?;
2026 let cpu_usage = load!(f32, reader)?;
2027 let fd_num = load!(u32, reader)?;
2028 let disk_io_read_bytes = load!(u64, reader)?;
2029 let disk_io_write_bytes = load!(u64, reader)?;
2030 let disk_io_read_per_sec = load!(f32, reader)?;
2031 let disk_io_write_per_sec = load!(f32, reader)?;
2032
2033 Ok(Self {
2034 resident_set_size,
2035 virtual_memory_size,
2036 core_num,
2037 cpu_usage,
2038 fd_num,
2039 disk_io_read_bytes,
2040 disk_io_write_bytes,
2041 disk_io_read_per_sec,
2042 disk_io_write_per_sec,
2043 })
2044 }
2045}
2046
2047#[derive(Default, Clone, Debug, Serialize, Deserialize)]
2048#[serde(rename_all = "camelCase")]
2049pub struct ConnectionMetrics {
2050 pub borsh_live_connections: u32,
2051 pub borsh_connection_attempts: u64,
2052 pub borsh_handshake_failures: u64,
2053 pub json_live_connections: u32,
2054 pub json_connection_attempts: u64,
2055 pub json_handshake_failures: u64,
2056
2057 pub active_peers: u32,
2058}
2059
2060impl Serializer for ConnectionMetrics {
2061 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
2062 store!(u16, &1, writer)?;
2063 store!(u32, &self.borsh_live_connections, writer)?;
2064 store!(u64, &self.borsh_connection_attempts, writer)?;
2065 store!(u64, &self.borsh_handshake_failures, writer)?;
2066 store!(u32, &self.json_live_connections, writer)?;
2067 store!(u64, &self.json_connection_attempts, writer)?;
2068 store!(u64, &self.json_handshake_failures, writer)?;
2069 store!(u32, &self.active_peers, writer)?;
2070
2071 Ok(())
2072 }
2073}
2074
2075impl Deserializer for ConnectionMetrics {
2076 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
2077 let _version = load!(u16, reader)?;
2078 let borsh_live_connections = load!(u32, reader)?;
2079 let borsh_connection_attempts = load!(u64, reader)?;
2080 let borsh_handshake_failures = load!(u64, reader)?;
2081 let json_live_connections = load!(u32, reader)?;
2082 let json_connection_attempts = load!(u64, reader)?;
2083 let json_handshake_failures = load!(u64, reader)?;
2084 let active_peers = load!(u32, reader)?;
2085
2086 Ok(Self {
2087 borsh_live_connections,
2088 borsh_connection_attempts,
2089 borsh_handshake_failures,
2090 json_live_connections,
2091 json_connection_attempts,
2092 json_handshake_failures,
2093 active_peers,
2094 })
2095 }
2096}
2097
2098#[derive(Default, Clone, Debug, Serialize, Deserialize)]
2099#[serde(rename_all = "camelCase")]
2100pub struct BandwidthMetrics {
2101 pub borsh_bytes_tx: u64,
2102 pub borsh_bytes_rx: u64,
2103 pub json_bytes_tx: u64,
2104 pub json_bytes_rx: u64,
2105 pub p2p_bytes_tx: u64,
2106 pub p2p_bytes_rx: u64,
2107 pub grpc_bytes_tx: u64,
2108 pub grpc_bytes_rx: u64,
2109}
2110
2111impl Serializer for BandwidthMetrics {
2112 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
2113 store!(u16, &1, writer)?;
2114 store!(u64, &self.borsh_bytes_tx, writer)?;
2115 store!(u64, &self.borsh_bytes_rx, writer)?;
2116 store!(u64, &self.json_bytes_tx, writer)?;
2117 store!(u64, &self.json_bytes_rx, writer)?;
2118 store!(u64, &self.p2p_bytes_tx, writer)?;
2119 store!(u64, &self.p2p_bytes_rx, writer)?;
2120 store!(u64, &self.grpc_bytes_tx, writer)?;
2121 store!(u64, &self.grpc_bytes_rx, writer)?;
2122
2123 Ok(())
2124 }
2125}
2126
2127impl Deserializer for BandwidthMetrics {
2128 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
2129 let _version = load!(u16, reader)?;
2130 let borsh_bytes_tx = load!(u64, reader)?;
2131 let borsh_bytes_rx = load!(u64, reader)?;
2132 let json_bytes_tx = load!(u64, reader)?;
2133 let json_bytes_rx = load!(u64, reader)?;
2134 let p2p_bytes_tx = load!(u64, reader)?;
2135 let p2p_bytes_rx = load!(u64, reader)?;
2136 let grpc_bytes_tx = load!(u64, reader)?;
2137 let grpc_bytes_rx = load!(u64, reader)?;
2138
2139 Ok(Self {
2140 borsh_bytes_tx,
2141 borsh_bytes_rx,
2142 json_bytes_tx,
2143 json_bytes_rx,
2144 p2p_bytes_tx,
2145 p2p_bytes_rx,
2146 grpc_bytes_tx,
2147 grpc_bytes_rx,
2148 })
2149 }
2150}
2151
2152#[derive(Default, Clone, Debug, Serialize, Deserialize)]
2153#[serde(rename_all = "camelCase")]
2154pub struct ConsensusMetrics {
2155 pub node_blocks_submitted_count: u64,
2156 pub node_headers_processed_count: u64,
2157 pub node_dependencies_processed_count: u64,
2158 pub node_bodies_processed_count: u64,
2159 pub node_transactions_processed_count: u64,
2160 pub node_chain_blocks_processed_count: u64,
2161 pub node_mass_processed_count: u64,
2162
2163 pub node_database_blocks_count: u64,
2164 pub node_database_headers_count: u64,
2165
2166 pub network_mempool_size: u64,
2167 pub network_tip_hashes_count: u32,
2168 pub network_difficulty: f64,
2169 pub network_past_median_time: u64,
2170 pub network_virtual_parent_hashes_count: u32,
2171 pub network_virtual_daa_score: u64,
2172}
2173
2174impl Serializer for ConsensusMetrics {
2175 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
2176 store!(u16, &1, writer)?;
2177 store!(u64, &self.node_blocks_submitted_count, writer)?;
2178 store!(u64, &self.node_headers_processed_count, writer)?;
2179 store!(u64, &self.node_dependencies_processed_count, writer)?;
2180 store!(u64, &self.node_bodies_processed_count, writer)?;
2181 store!(u64, &self.node_transactions_processed_count, writer)?;
2182 store!(u64, &self.node_chain_blocks_processed_count, writer)?;
2183 store!(u64, &self.node_mass_processed_count, writer)?;
2184 store!(u64, &self.node_database_blocks_count, writer)?;
2185 store!(u64, &self.node_database_headers_count, writer)?;
2186 store!(u64, &self.network_mempool_size, writer)?;
2187 store!(u32, &self.network_tip_hashes_count, writer)?;
2188 store!(f64, &self.network_difficulty, writer)?;
2189 store!(u64, &self.network_past_median_time, writer)?;
2190 store!(u32, &self.network_virtual_parent_hashes_count, writer)?;
2191 store!(u64, &self.network_virtual_daa_score, writer)?;
2192
2193 Ok(())
2194 }
2195}
2196
2197impl Deserializer for ConsensusMetrics {
2198 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
2199 let _version = load!(u16, reader)?;
2200 let node_blocks_submitted_count = load!(u64, reader)?;
2201 let node_headers_processed_count = load!(u64, reader)?;
2202 let node_dependencies_processed_count = load!(u64, reader)?;
2203 let node_bodies_processed_count = load!(u64, reader)?;
2204 let node_transactions_processed_count = load!(u64, reader)?;
2205 let node_chain_blocks_processed_count = load!(u64, reader)?;
2206 let node_mass_processed_count = load!(u64, reader)?;
2207 let node_database_blocks_count = load!(u64, reader)?;
2208 let node_database_headers_count = load!(u64, reader)?;
2209 let network_mempool_size = load!(u64, reader)?;
2210 let network_tip_hashes_count = load!(u32, reader)?;
2211 let network_difficulty = load!(f64, reader)?;
2212 let network_past_median_time = load!(u64, reader)?;
2213 let network_virtual_parent_hashes_count = load!(u32, reader)?;
2214 let network_virtual_daa_score = load!(u64, reader)?;
2215
2216 Ok(Self {
2217 node_blocks_submitted_count,
2218 node_headers_processed_count,
2219 node_dependencies_processed_count,
2220 node_bodies_processed_count,
2221 node_transactions_processed_count,
2222 node_chain_blocks_processed_count,
2223 node_mass_processed_count,
2224 node_database_blocks_count,
2225 node_database_headers_count,
2226 network_mempool_size,
2227 network_tip_hashes_count,
2228 network_difficulty,
2229 network_past_median_time,
2230 network_virtual_parent_hashes_count,
2231 network_virtual_daa_score,
2232 })
2233 }
2234}
2235
2236#[derive(Default, Clone, Debug, Serialize, Deserialize)]
2237#[serde(rename_all = "camelCase")]
2238pub struct StorageMetrics {
2239 pub storage_size_bytes: u64,
2240}
2241
2242impl Serializer for StorageMetrics {
2243 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
2244 store!(u16, &1, writer)?;
2245 store!(u64, &self.storage_size_bytes, writer)?;
2246
2247 Ok(())
2248 }
2249}
2250
2251impl Deserializer for StorageMetrics {
2252 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
2253 let _version = load!(u16, reader)?;
2254 let storage_size_bytes = load!(u64, reader)?;
2255
2256 Ok(Self { storage_size_bytes })
2257 }
2258}
2259
2260#[derive(Clone, Debug, Serialize, Deserialize)]
2262pub enum CustomMetricValue {
2263 Placeholder,
2264}
2265
2266impl Serializer for CustomMetricValue {
2267 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
2268 store!(u16, &1, writer)?;
2269
2270 Ok(())
2271 }
2272}
2273
2274impl Deserializer for CustomMetricValue {
2275 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
2276 let _version = load!(u16, reader)?;
2277
2278 Ok(CustomMetricValue::Placeholder)
2279 }
2280}
2281
2282#[derive(Clone, Debug, Serialize, Deserialize)]
2283#[serde(rename_all = "camelCase")]
2284pub struct GetMetricsResponse {
2285 pub server_time: u64,
2286 pub process_metrics: Option<ProcessMetrics>,
2287 pub connection_metrics: Option<ConnectionMetrics>,
2288 pub bandwidth_metrics: Option<BandwidthMetrics>,
2289 pub consensus_metrics: Option<ConsensusMetrics>,
2290 pub storage_metrics: Option<StorageMetrics>,
2291 pub custom_metrics: Option<HashMap<String, CustomMetricValue>>,
2293}
2294
2295impl GetMetricsResponse {
2296 pub fn new(
2297 server_time: u64,
2298 process_metrics: Option<ProcessMetrics>,
2299 connection_metrics: Option<ConnectionMetrics>,
2300 bandwidth_metrics: Option<BandwidthMetrics>,
2301 consensus_metrics: Option<ConsensusMetrics>,
2302 storage_metrics: Option<StorageMetrics>,
2303 custom_metrics: Option<HashMap<String, CustomMetricValue>>,
2304 ) -> Self {
2305 Self {
2306 process_metrics,
2307 connection_metrics,
2308 bandwidth_metrics,
2309 consensus_metrics,
2310 storage_metrics,
2311 server_time,
2312 custom_metrics,
2313 }
2314 }
2315}
2316
2317impl Serializer for GetMetricsResponse {
2318 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
2319 store!(u16, &1, writer)?;
2320 store!(u64, &self.server_time, writer)?;
2321 serialize!(Option<ProcessMetrics>, &self.process_metrics, writer)?;
2322 serialize!(Option<ConnectionMetrics>, &self.connection_metrics, writer)?;
2323 serialize!(Option<BandwidthMetrics>, &self.bandwidth_metrics, writer)?;
2324 serialize!(Option<ConsensusMetrics>, &self.consensus_metrics, writer)?;
2325 serialize!(Option<StorageMetrics>, &self.storage_metrics, writer)?;
2326 serialize!(Option<HashMap<String, CustomMetricValue>>, &self.custom_metrics, writer)?;
2327
2328 Ok(())
2329 }
2330}
2331
2332impl Deserializer for GetMetricsResponse {
2333 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
2334 let _version = load!(u16, reader)?;
2335 let server_time = load!(u64, reader)?;
2336 let process_metrics = deserialize!(Option<ProcessMetrics>, reader)?;
2337 let connection_metrics = deserialize!(Option<ConnectionMetrics>, reader)?;
2338 let bandwidth_metrics = deserialize!(Option<BandwidthMetrics>, reader)?;
2339 let consensus_metrics = deserialize!(Option<ConsensusMetrics>, reader)?;
2340 let storage_metrics = deserialize!(Option<StorageMetrics>, reader)?;
2341 let custom_metrics = deserialize!(Option<HashMap<String, CustomMetricValue>>, reader)?;
2342
2343 Ok(Self {
2344 server_time,
2345 process_metrics,
2346 connection_metrics,
2347 bandwidth_metrics,
2348 consensus_metrics,
2349 storage_metrics,
2350 custom_metrics,
2351 })
2352 }
2353}
2354
2355#[derive(Clone, Debug, Serialize, Deserialize, BorshSerialize, BorshDeserialize)]
2356#[serde(rename_all = "camelCase")]
2357#[borsh(use_discriminant = true)]
2358pub enum RpcCaps {
2359 Full = 0,
2360 Blocks,
2361 UtxoIndex,
2362 Mempool,
2363 Metrics,
2364 Visualizer,
2365 Mining,
2366}
2367
2368#[derive(Clone, Debug, Serialize, Deserialize)]
2369#[serde(rename_all = "camelCase")]
2370pub struct GetServerInfoRequest {}
2371
2372impl Serializer for GetServerInfoRequest {
2373 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
2374 store!(u16, &1, writer)?;
2375 Ok(())
2376 }
2377}
2378
2379impl Deserializer for GetServerInfoRequest {
2380 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
2381 let _version = load!(u16, reader)?;
2382 Ok(Self {})
2383 }
2384}
2385
2386#[derive(Clone, Debug, Serialize, Deserialize)]
2387#[serde(rename_all = "camelCase")]
2388pub struct GetServerInfoResponse {
2389 pub rpc_api_version: u16,
2390 pub rpc_api_revision: u16,
2391 pub server_version: String,
2392 pub network_id: RpcNetworkId,
2393 pub has_utxo_index: bool,
2394 pub is_synced: bool,
2395 pub virtual_daa_score: u64,
2396}
2397
2398impl Serializer for GetServerInfoResponse {
2399 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
2400 store!(u16, &1, writer)?;
2401
2402 store!(u16, &self.rpc_api_version, writer)?;
2403 store!(u16, &self.rpc_api_revision, writer)?;
2404
2405 store!(String, &self.server_version, writer)?;
2406 store!(RpcNetworkId, &self.network_id, writer)?;
2407 store!(bool, &self.has_utxo_index, writer)?;
2408 store!(bool, &self.is_synced, writer)?;
2409 store!(u64, &self.virtual_daa_score, writer)?;
2410
2411 Ok(())
2412 }
2413}
2414
2415impl Deserializer for GetServerInfoResponse {
2416 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
2417 let _version = load!(u16, reader)?;
2418
2419 let rpc_api_version = load!(u16, reader)?;
2420 let rpc_api_revision = load!(u16, reader)?;
2421
2422 let server_version = load!(String, reader)?;
2423 let network_id = load!(RpcNetworkId, reader)?;
2424 let has_utxo_index = load!(bool, reader)?;
2425 let is_synced = load!(bool, reader)?;
2426 let virtual_daa_score = load!(u64, reader)?;
2427
2428 Ok(Self { rpc_api_version, rpc_api_revision, server_version, network_id, has_utxo_index, is_synced, virtual_daa_score })
2429 }
2430}
2431
2432#[derive(Clone, Debug, Serialize, Deserialize)]
2433#[serde(rename_all = "camelCase")]
2434pub struct GetSyncStatusRequest {}
2435
2436impl Serializer for GetSyncStatusRequest {
2437 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
2438 store!(u16, &1, writer)?;
2439 Ok(())
2440 }
2441}
2442
2443impl Deserializer for GetSyncStatusRequest {
2444 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
2445 let _version = load!(u16, reader)?;
2446 Ok(Self {})
2447 }
2448}
2449
2450#[derive(Clone, Debug, Serialize, Deserialize)]
2451#[serde(rename_all = "camelCase")]
2452pub struct GetSyncStatusResponse {
2453 pub is_synced: bool,
2454}
2455
2456impl Serializer for GetSyncStatusResponse {
2457 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
2458 store!(u16, &1, writer)?;
2459 store!(bool, &self.is_synced, writer)?;
2460 Ok(())
2461 }
2462}
2463
2464impl Deserializer for GetSyncStatusResponse {
2465 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
2466 let _version = load!(u16, reader)?;
2467 let is_synced = load!(bool, reader)?;
2468 Ok(Self { is_synced })
2469 }
2470}
2471
2472#[derive(Clone, Debug, Serialize, Deserialize)]
2473#[serde(rename_all = "camelCase")]
2474pub struct GetDaaScoreTimestampEstimateRequest {
2475 pub daa_scores: Vec<u64>,
2476}
2477
2478impl GetDaaScoreTimestampEstimateRequest {
2479 pub fn new(daa_scores: Vec<u64>) -> Self {
2480 Self { daa_scores }
2481 }
2482}
2483
2484impl Serializer for GetDaaScoreTimestampEstimateRequest {
2485 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
2486 store!(u16, &1, writer)?;
2487 store!(Vec<u64>, &self.daa_scores, writer)?;
2488 Ok(())
2489 }
2490}
2491
2492impl Deserializer for GetDaaScoreTimestampEstimateRequest {
2493 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
2494 let _version = load!(u16, reader)?;
2495 let daa_scores = load!(Vec<u64>, reader)?;
2496 Ok(Self { daa_scores })
2497 }
2498}
2499
2500#[derive(Clone, Debug, Serialize, Deserialize)]
2501#[serde(rename_all = "camelCase")]
2502pub struct GetDaaScoreTimestampEstimateResponse {
2503 pub timestamps: Vec<u64>,
2504}
2505
2506impl GetDaaScoreTimestampEstimateResponse {
2507 pub fn new(timestamps: Vec<u64>) -> Self {
2508 Self { timestamps }
2509 }
2510}
2511
2512impl Serializer for GetDaaScoreTimestampEstimateResponse {
2513 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
2514 store!(u16, &1, writer)?;
2515 store!(Vec<u64>, &self.timestamps, writer)?;
2516 Ok(())
2517 }
2518}
2519
2520impl Deserializer for GetDaaScoreTimestampEstimateResponse {
2521 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
2522 let _version = load!(u16, reader)?;
2523 let timestamps = load!(Vec<u64>, reader)?;
2524 Ok(Self { timestamps })
2525 }
2526}
2527
2528#[derive(Clone, Debug, Serialize, Deserialize)]
2532#[serde(rename_all = "camelCase")]
2533pub struct GetFeeEstimateRequest {}
2534
2535impl Serializer for GetFeeEstimateRequest {
2536 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
2537 store!(u16, &1, writer)?;
2538 Ok(())
2539 }
2540}
2541
2542impl Deserializer for GetFeeEstimateRequest {
2543 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
2544 let _version = load!(u16, reader)?;
2545 Ok(Self {})
2546 }
2547}
2548
2549#[derive(Clone, Debug, Serialize, Deserialize)]
2550#[serde(rename_all = "camelCase")]
2551pub struct GetFeeEstimateResponse {
2552 pub estimate: RpcFeeEstimate,
2553}
2554
2555impl Serializer for GetFeeEstimateResponse {
2556 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
2557 store!(u16, &1, writer)?;
2558 serialize!(RpcFeeEstimate, &self.estimate, writer)?;
2559 Ok(())
2560 }
2561}
2562
2563impl Deserializer for GetFeeEstimateResponse {
2564 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
2565 let _version = load!(u16, reader)?;
2566 let estimate = deserialize!(RpcFeeEstimate, reader)?;
2567 Ok(Self { estimate })
2568 }
2569}
2570
2571#[derive(Clone, Debug, Serialize, Deserialize)]
2572#[serde(rename_all = "camelCase")]
2573pub struct GetFeeEstimateExperimentalRequest {
2574 pub verbose: bool,
2575}
2576
2577impl Serializer for GetFeeEstimateExperimentalRequest {
2578 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
2579 store!(u16, &1, writer)?;
2580 store!(bool, &self.verbose, writer)?;
2581 Ok(())
2582 }
2583}
2584
2585impl Deserializer for GetFeeEstimateExperimentalRequest {
2586 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
2587 let _version = load!(u16, reader)?;
2588 let verbose = load!(bool, reader)?;
2589 Ok(Self { verbose })
2590 }
2591}
2592
2593#[derive(Clone, Debug, Serialize, Deserialize)]
2594#[serde(rename_all = "camelCase")]
2595pub struct GetFeeEstimateExperimentalResponse {
2596 pub estimate: RpcFeeEstimate,
2598
2599 pub verbose: Option<RpcFeeEstimateVerboseExperimentalData>,
2601}
2602
2603impl Serializer for GetFeeEstimateExperimentalResponse {
2604 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
2605 store!(u16, &1, writer)?;
2606 serialize!(RpcFeeEstimate, &self.estimate, writer)?;
2607 serialize!(Option<RpcFeeEstimateVerboseExperimentalData>, &self.verbose, writer)?;
2608 Ok(())
2609 }
2610}
2611
2612impl Deserializer for GetFeeEstimateExperimentalResponse {
2613 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
2614 let _version = load!(u16, reader)?;
2615 let estimate = deserialize!(RpcFeeEstimate, reader)?;
2616 let verbose = deserialize!(Option<RpcFeeEstimateVerboseExperimentalData>, reader)?;
2617 Ok(Self { estimate, verbose })
2618 }
2619}
2620
2621#[derive(Clone, Debug, Serialize, Deserialize)]
2622#[serde(rename_all = "camelCase")]
2623pub struct GetCurrentBlockColorRequest {
2624 pub hash: RpcHash,
2625}
2626
2627impl Serializer for GetCurrentBlockColorRequest {
2628 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
2629 store!(u16, &1, writer)?;
2630 store!(RpcHash, &self.hash, writer)?;
2631
2632 Ok(())
2633 }
2634}
2635
2636impl Deserializer for GetCurrentBlockColorRequest {
2637 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
2638 let _version = load!(u16, reader)?;
2639 let hash = load!(RpcHash, reader)?;
2640
2641 Ok(Self { hash })
2642 }
2643}
2644
2645#[derive(Clone, Debug, Serialize, Deserialize)]
2646#[serde(rename_all = "camelCase")]
2647pub struct GetCurrentBlockColorResponse {
2648 pub blue: bool,
2649}
2650
2651impl Serializer for GetCurrentBlockColorResponse {
2652 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
2653 store!(u16, &1, writer)?;
2654 store!(bool, &self.blue, writer)?;
2655
2656 Ok(())
2657 }
2658}
2659
2660impl Deserializer for GetCurrentBlockColorResponse {
2661 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
2662 let _version = load!(u16, reader)?;
2663 let blue = load!(bool, reader)?;
2664
2665 Ok(Self { blue })
2666 }
2667}
2668
2669#[derive(Clone, Debug, Serialize, Deserialize)]
2680#[serde(rename_all = "camelCase")]
2681pub struct NotifyBlockAddedRequest {
2682 pub command: Command,
2683}
2684impl NotifyBlockAddedRequest {
2685 pub fn new(command: Command) -> Self {
2686 Self { command }
2687 }
2688}
2689
2690impl Serializer for NotifyBlockAddedRequest {
2691 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
2692 store!(u16, &1, writer)?;
2693 store!(Command, &self.command, writer)?;
2694 Ok(())
2695 }
2696}
2697
2698impl Deserializer for NotifyBlockAddedRequest {
2699 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
2700 let _version = load!(u16, reader)?;
2701 let command = load!(Command, reader)?;
2702 Ok(Self { command })
2703 }
2704}
2705
2706#[derive(Clone, Debug, Serialize, Deserialize)]
2707#[serde(rename_all = "camelCase")]
2708pub struct NotifyBlockAddedResponse {}
2709
2710impl Serializer for NotifyBlockAddedResponse {
2711 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
2712 store!(u16, &1, writer)?;
2713 Ok(())
2714 }
2715}
2716
2717impl Deserializer for NotifyBlockAddedResponse {
2718 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
2719 let _version = load!(u16, reader)?;
2720 Ok(Self {})
2721 }
2722}
2723
2724#[derive(Clone, Debug, Serialize, Deserialize)]
2729#[serde(rename_all = "camelCase")]
2730pub struct BlockAddedNotification {
2731 pub block: Arc<RpcBlock>,
2732}
2733
2734impl Serializer for BlockAddedNotification {
2735 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
2736 store!(u16, &1, writer)?;
2737 serialize!(RpcBlock, &self.block, writer)?;
2738 Ok(())
2739 }
2740}
2741
2742impl Deserializer for BlockAddedNotification {
2743 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
2744 let _version = load!(u16, reader)?;
2745 let block = deserialize!(RpcBlock, reader)?;
2746 Ok(Self { block: block.into() })
2747 }
2748}
2749
2750#[derive(Clone, Debug, Serialize, Deserialize)]
2758#[serde(rename_all = "camelCase")]
2759pub struct NotifyVirtualChainChangedRequest {
2760 pub include_accepted_transaction_ids: bool,
2761 pub command: Command,
2762}
2763
2764impl NotifyVirtualChainChangedRequest {
2765 pub fn new(include_accepted_transaction_ids: bool, command: Command) -> Self {
2766 Self { include_accepted_transaction_ids, command }
2767 }
2768}
2769
2770impl Serializer for NotifyVirtualChainChangedRequest {
2771 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
2772 store!(u16, &1, writer)?;
2773 store!(bool, &self.include_accepted_transaction_ids, writer)?;
2774 store!(Command, &self.command, writer)?;
2775 Ok(())
2776 }
2777}
2778
2779impl Deserializer for NotifyVirtualChainChangedRequest {
2780 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
2781 let _version = load!(u16, reader)?;
2782 let include_accepted_transaction_ids = load!(bool, reader)?;
2783 let command = load!(Command, reader)?;
2784 Ok(Self { include_accepted_transaction_ids, command })
2785 }
2786}
2787
2788#[derive(Clone, Debug, Serialize, Deserialize)]
2789#[serde(rename_all = "camelCase")]
2790pub struct NotifyVirtualChainChangedResponse {}
2791
2792impl Serializer for NotifyVirtualChainChangedResponse {
2793 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
2794 store!(u16, &1, writer)?;
2795 Ok(())
2796 }
2797}
2798
2799impl Deserializer for NotifyVirtualChainChangedResponse {
2800 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
2801 let _version = load!(u16, reader)?;
2802 Ok(Self {})
2803 }
2804}
2805
2806#[derive(Clone, Debug, Serialize, Deserialize)]
2811#[serde(rename_all = "camelCase")]
2812pub struct VirtualChainChangedNotification {
2813 pub removed_chain_block_hashes: Arc<Vec<RpcHash>>,
2814 pub added_chain_block_hashes: Arc<Vec<RpcHash>>,
2815 pub accepted_transaction_ids: Arc<Vec<RpcAcceptedTransactionIds>>,
2816}
2817
2818impl Serializer for VirtualChainChangedNotification {
2819 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
2820 store!(u16, &1, writer)?;
2821 store!(Vec<RpcHash>, &self.removed_chain_block_hashes, writer)?;
2822 store!(Vec<RpcHash>, &self.added_chain_block_hashes, writer)?;
2823 store!(Vec<RpcAcceptedTransactionIds>, &self.accepted_transaction_ids, writer)?;
2824 Ok(())
2825 }
2826}
2827
2828impl Deserializer for VirtualChainChangedNotification {
2829 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
2830 let _version = load!(u16, reader)?;
2831 let removed_chain_block_hashes = load!(Vec<RpcHash>, reader)?;
2832 let added_chain_block_hashes = load!(Vec<RpcHash>, reader)?;
2833 let accepted_transaction_ids = load!(Vec<RpcAcceptedTransactionIds>, reader)?;
2834 Ok(Self {
2835 removed_chain_block_hashes: removed_chain_block_hashes.into(),
2836 added_chain_block_hashes: added_chain_block_hashes.into(),
2837 accepted_transaction_ids: accepted_transaction_ids.into(),
2838 })
2839 }
2840}
2841
2842#[derive(Clone, Debug, Serialize, Deserialize)]
2846#[serde(rename_all = "camelCase")]
2847pub struct NotifyFinalityConflictRequest {
2848 pub command: Command,
2849}
2850
2851impl NotifyFinalityConflictRequest {
2852 pub fn new(command: Command) -> Self {
2853 Self { command }
2854 }
2855}
2856
2857impl Serializer for NotifyFinalityConflictRequest {
2858 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
2859 store!(u16, &1, writer)?;
2860 store!(Command, &self.command, writer)?;
2861 Ok(())
2862 }
2863}
2864
2865impl Deserializer for NotifyFinalityConflictRequest {
2866 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
2867 let _version = load!(u16, reader)?;
2868 let command = load!(Command, reader)?;
2869 Ok(Self { command })
2870 }
2871}
2872
2873#[derive(Clone, Debug, Serialize, Deserialize)]
2874#[serde(rename_all = "camelCase")]
2875pub struct NotifyFinalityConflictResponse {}
2876
2877impl Serializer for NotifyFinalityConflictResponse {
2878 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
2879 store!(u16, &1, writer)?;
2880 Ok(())
2881 }
2882}
2883
2884impl Deserializer for NotifyFinalityConflictResponse {
2885 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
2886 let _version = load!(u16, reader)?;
2887 Ok(Self {})
2888 }
2889}
2890
2891#[derive(Clone, Debug, Serialize, Deserialize)]
2892#[serde(rename_all = "camelCase")]
2893pub struct FinalityConflictNotification {
2894 pub violating_block_hash: RpcHash,
2895}
2896
2897impl Serializer for FinalityConflictNotification {
2898 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
2899 store!(u16, &1, writer)?;
2900 store!(RpcHash, &self.violating_block_hash, writer)?;
2901 Ok(())
2902 }
2903}
2904
2905impl Deserializer for FinalityConflictNotification {
2906 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
2907 let _version = load!(u16, reader)?;
2908 let violating_block_hash = load!(RpcHash, reader)?;
2909 Ok(Self { violating_block_hash })
2910 }
2911}
2912
2913#[derive(Clone, Debug, Serialize, Deserialize)]
2917#[serde(rename_all = "camelCase")]
2918pub struct NotifyFinalityConflictResolvedRequest {
2919 pub command: Command,
2920}
2921
2922impl NotifyFinalityConflictResolvedRequest {
2923 pub fn new(command: Command) -> Self {
2924 Self { command }
2925 }
2926}
2927
2928impl Serializer for NotifyFinalityConflictResolvedRequest {
2929 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
2930 store!(u16, &1, writer)?;
2931 store!(Command, &self.command, writer)?;
2932 Ok(())
2933 }
2934}
2935
2936impl Deserializer for NotifyFinalityConflictResolvedRequest {
2937 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
2938 let _version = load!(u16, reader)?;
2939 let command = load!(Command, reader)?;
2940 Ok(Self { command })
2941 }
2942}
2943
2944#[derive(Clone, Debug, Serialize, Deserialize)]
2945#[serde(rename_all = "camelCase")]
2946pub struct NotifyFinalityConflictResolvedResponse {}
2947
2948impl Serializer for NotifyFinalityConflictResolvedResponse {
2949 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
2950 store!(u16, &1, writer)?;
2951 Ok(())
2952 }
2953}
2954
2955impl Deserializer for NotifyFinalityConflictResolvedResponse {
2956 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
2957 let _version = load!(u16, reader)?;
2958 Ok(Self {})
2959 }
2960}
2961
2962#[derive(Clone, Debug, Serialize, Deserialize)]
2963#[serde(rename_all = "camelCase")]
2964pub struct FinalityConflictResolvedNotification {
2965 pub finality_block_hash: RpcHash,
2966}
2967
2968impl Serializer for FinalityConflictResolvedNotification {
2969 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
2970 store!(u16, &1, writer)?;
2971 store!(RpcHash, &self.finality_block_hash, writer)?;
2972 Ok(())
2973 }
2974}
2975
2976impl Deserializer for FinalityConflictResolvedNotification {
2977 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
2978 let _version = load!(u16, reader)?;
2979 let finality_block_hash = load!(RpcHash, reader)?;
2980 Ok(Self { finality_block_hash })
2981 }
2982}
2983
2984#[derive(Clone, Debug, Serialize, Deserialize)]
2997#[serde(rename_all = "camelCase")]
2998pub struct NotifyUtxosChangedRequest {
2999 pub addresses: Vec<RpcAddress>,
3000 pub command: Command,
3001}
3002
3003impl NotifyUtxosChangedRequest {
3004 pub fn new(addresses: Vec<RpcAddress>, command: Command) -> Self {
3005 Self { addresses, command }
3006 }
3007}
3008
3009impl Serializer for NotifyUtxosChangedRequest {
3010 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
3011 store!(u16, &1, writer)?;
3012 store!(Vec<RpcAddress>, &self.addresses, writer)?;
3013 store!(Command, &self.command, writer)?;
3014 Ok(())
3015 }
3016}
3017
3018impl Deserializer for NotifyUtxosChangedRequest {
3019 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
3020 let _version = load!(u16, reader)?;
3021 let addresses = load!(Vec<RpcAddress>, reader)?;
3022 let command = load!(Command, reader)?;
3023 Ok(Self { addresses, command })
3024 }
3025}
3026
3027#[derive(Clone, Debug, Serialize, Deserialize)]
3028#[serde(rename_all = "camelCase")]
3029pub struct NotifyUtxosChangedResponse {}
3030
3031impl Serializer for NotifyUtxosChangedResponse {
3032 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
3033 store!(u16, &1, writer)?;
3034 Ok(())
3035 }
3036}
3037
3038impl Deserializer for NotifyUtxosChangedResponse {
3039 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
3040 let _version = load!(u16, reader)?;
3041 Ok(Self {})
3042 }
3043}
3044
3045#[derive(Clone, Debug, Default, Serialize, Deserialize)]
3049#[serde(rename_all = "camelCase")]
3050pub struct UtxosChangedNotification {
3051 pub added: Arc<Vec<RpcUtxosByAddressesEntry>>,
3052 pub removed: Arc<Vec<RpcUtxosByAddressesEntry>>,
3053}
3054
3055impl UtxosChangedNotification {
3056 pub(crate) fn apply_utxos_changed_subscription(
3057 &self,
3058 subscription: &UtxosChangedSubscription,
3059 context: &SubscriptionContext,
3060 ) -> Option<Self> {
3061 if subscription.to_all() {
3062 Some(self.clone())
3063 } else {
3064 let added = Self::filter_utxos(&self.added, subscription, context);
3065 let removed = Self::filter_utxos(&self.removed, subscription, context);
3066 if added.is_empty() && removed.is_empty() {
3067 None
3068 } else {
3069 debug!("CRPC, Creating UtxosChanged notifications with {} added and {} removed utxos", added.len(), removed.len());
3070 Some(Self { added: Arc::new(added), removed: Arc::new(removed) })
3071 }
3072 }
3073 }
3074
3075 fn filter_utxos(
3076 utxo_set: &[RpcUtxosByAddressesEntry],
3077 subscription: &UtxosChangedSubscription,
3078 context: &SubscriptionContext,
3079 ) -> Vec<RpcUtxosByAddressesEntry> {
3080 let subscription_data = subscription.data();
3081 utxo_set.iter().filter(|x| subscription_data.contains(&x.utxo_entry.script_public_key, context)).cloned().collect()
3082 }
3083}
3084
3085impl Serializer for UtxosChangedNotification {
3086 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
3087 store!(u16, &1, writer)?;
3088 serialize!(Vec<RpcUtxosByAddressesEntry>, &self.added, writer)?;
3089 serialize!(Vec<RpcUtxosByAddressesEntry>, &self.removed, writer)?;
3090 Ok(())
3091 }
3092}
3093
3094impl Deserializer for UtxosChangedNotification {
3095 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
3096 let _version = load!(u16, reader)?;
3097 let added = deserialize!(Vec<RpcUtxosByAddressesEntry>, reader)?;
3098 let removed = deserialize!(Vec<RpcUtxosByAddressesEntry>, reader)?;
3099 Ok(Self { added: added.into(), removed: removed.into() })
3100 }
3101}
3102
3103#[derive(Clone, Debug, Serialize, Deserialize)]
3111#[serde(rename_all = "camelCase")]
3112pub struct NotifySinkBlueScoreChangedRequest {
3113 pub command: Command,
3114}
3115
3116impl NotifySinkBlueScoreChangedRequest {
3117 pub fn new(command: Command) -> Self {
3118 Self { command }
3119 }
3120}
3121
3122impl Serializer for NotifySinkBlueScoreChangedRequest {
3123 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
3124 store!(u16, &1, writer)?;
3125 store!(Command, &self.command, writer)?;
3126 Ok(())
3127 }
3128}
3129
3130impl Deserializer for NotifySinkBlueScoreChangedRequest {
3131 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
3132 let _version = load!(u16, reader)?;
3133 let command = load!(Command, reader)?;
3134 Ok(Self { command })
3135 }
3136}
3137
3138#[derive(Clone, Debug, Serialize, Deserialize)]
3139#[serde(rename_all = "camelCase")]
3140pub struct NotifySinkBlueScoreChangedResponse {}
3141
3142impl Serializer for NotifySinkBlueScoreChangedResponse {
3143 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
3144 store!(u16, &1, writer)?;
3145 Ok(())
3146 }
3147}
3148
3149impl Deserializer for NotifySinkBlueScoreChangedResponse {
3150 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
3151 let _version = load!(u16, reader)?;
3152 Ok(Self {})
3153 }
3154}
3155
3156#[derive(Clone, Debug, Serialize, Deserialize)]
3161#[serde(rename_all = "camelCase")]
3162pub struct SinkBlueScoreChangedNotification {
3163 pub sink_blue_score: u64,
3164}
3165
3166impl Serializer for SinkBlueScoreChangedNotification {
3167 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
3168 store!(u16, &1, writer)?;
3169 store!(u64, &self.sink_blue_score, writer)?;
3170 Ok(())
3171 }
3172}
3173
3174impl Deserializer for SinkBlueScoreChangedNotification {
3175 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
3176 let _version = load!(u16, reader)?;
3177 let sink_blue_score = load!(u64, reader)?;
3178 Ok(Self { sink_blue_score })
3179 }
3180}
3181
3182#[derive(Clone, Debug, Serialize, Deserialize)]
3190#[serde(rename_all = "camelCase")]
3191pub struct NotifyVirtualDaaScoreChangedRequest {
3192 pub command: Command,
3193}
3194
3195impl NotifyVirtualDaaScoreChangedRequest {
3196 pub fn new(command: Command) -> Self {
3197 Self { command }
3198 }
3199}
3200
3201impl Serializer for NotifyVirtualDaaScoreChangedRequest {
3202 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
3203 store!(u16, &1, writer)?;
3204 store!(Command, &self.command, writer)?;
3205 Ok(())
3206 }
3207}
3208
3209impl Deserializer for NotifyVirtualDaaScoreChangedRequest {
3210 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
3211 let _version = load!(u16, reader)?;
3212 let command = load!(Command, reader)?;
3213 Ok(Self { command })
3214 }
3215}
3216
3217#[derive(Clone, Debug, Serialize, Deserialize)]
3218#[serde(rename_all = "camelCase")]
3219pub struct NotifyVirtualDaaScoreChangedResponse {}
3220
3221impl Serializer for NotifyVirtualDaaScoreChangedResponse {
3222 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
3223 store!(u16, &1, writer)?;
3224 Ok(())
3225 }
3226}
3227
3228impl Deserializer for NotifyVirtualDaaScoreChangedResponse {
3229 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
3230 let _version = load!(u16, reader)?;
3231 Ok(Self {})
3232 }
3233}
3234
3235#[derive(Clone, Debug, Serialize, Deserialize)]
3240#[serde(rename_all = "camelCase")]
3241pub struct VirtualDaaScoreChangedNotification {
3242 pub virtual_daa_score: u64,
3243}
3244
3245impl Serializer for VirtualDaaScoreChangedNotification {
3246 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
3247 store!(u16, &1, writer)?;
3248 store!(u64, &self.virtual_daa_score, writer)?;
3249 Ok(())
3250 }
3251}
3252
3253impl Deserializer for VirtualDaaScoreChangedNotification {
3254 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
3255 let _version = load!(u16, reader)?;
3256 let virtual_daa_score = load!(u64, reader)?;
3257 Ok(Self { virtual_daa_score })
3258 }
3259}
3260
3261#[derive(Clone, Debug, Serialize, Deserialize)]
3265#[serde(rename_all = "camelCase")]
3266pub struct NotifyPruningPointUtxoSetOverrideRequest {
3267 pub command: Command,
3268}
3269
3270impl NotifyPruningPointUtxoSetOverrideRequest {
3271 pub fn new(command: Command) -> Self {
3272 Self { command }
3273 }
3274}
3275
3276impl Serializer for NotifyPruningPointUtxoSetOverrideRequest {
3277 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
3278 store!(u16, &1, writer)?;
3279 store!(Command, &self.command, writer)?;
3280 Ok(())
3281 }
3282}
3283
3284impl Deserializer for NotifyPruningPointUtxoSetOverrideRequest {
3285 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
3286 let _version = load!(u16, reader)?;
3287 let command = load!(Command, reader)?;
3288 Ok(Self { command })
3289 }
3290}
3291
3292#[derive(Clone, Debug, Serialize, Deserialize)]
3293#[serde(rename_all = "camelCase")]
3294pub struct NotifyPruningPointUtxoSetOverrideResponse {}
3295
3296impl Serializer for NotifyPruningPointUtxoSetOverrideResponse {
3297 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
3298 store!(u16, &1, writer)?;
3299 Ok(())
3300 }
3301}
3302
3303impl Deserializer for NotifyPruningPointUtxoSetOverrideResponse {
3304 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
3305 let _version = load!(u16, reader)?;
3306 Ok(Self {})
3307 }
3308}
3309
3310#[derive(Clone, Debug, Serialize, Deserialize)]
3311#[serde(rename_all = "camelCase")]
3312pub struct PruningPointUtxoSetOverrideNotification {}
3313
3314impl Serializer for PruningPointUtxoSetOverrideNotification {
3315 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
3316 store!(u16, &1, writer)?;
3317 Ok(())
3318 }
3319}
3320
3321impl Deserializer for PruningPointUtxoSetOverrideNotification {
3322 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
3323 let _version = load!(u16, reader)?;
3324 Ok(Self {})
3325 }
3326}
3327
3328#[derive(Clone, Debug, Serialize, Deserialize)]
3335#[serde(rename_all = "camelCase")]
3336pub struct NotifyNewBlockTemplateRequest {
3337 pub command: Command,
3338}
3339impl NotifyNewBlockTemplateRequest {
3340 pub fn new(command: Command) -> Self {
3341 Self { command }
3342 }
3343}
3344
3345impl Serializer for NotifyNewBlockTemplateRequest {
3346 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
3347 store!(u16, &1, writer)?;
3348 store!(Command, &self.command, writer)?;
3349 Ok(())
3350 }
3351}
3352
3353impl Deserializer for NotifyNewBlockTemplateRequest {
3354 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
3355 let _version = load!(u16, reader)?;
3356 let command = load!(Command, reader)?;
3357 Ok(Self { command })
3358 }
3359}
3360
3361#[derive(Clone, Debug, Serialize, Deserialize)]
3362#[serde(rename_all = "camelCase")]
3363pub struct NotifyNewBlockTemplateResponse {}
3364
3365impl Serializer for NotifyNewBlockTemplateResponse {
3366 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
3367 store!(u16, &1, writer)?;
3368 Ok(())
3369 }
3370}
3371
3372impl Deserializer for NotifyNewBlockTemplateResponse {
3373 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
3374 let _version = load!(u16, reader)?;
3375 Ok(Self {})
3376 }
3377}
3378
3379#[derive(Clone, Debug, Serialize, Deserialize)]
3384#[serde(rename_all = "camelCase")]
3385pub struct NewBlockTemplateNotification {}
3386
3387impl Serializer for NewBlockTemplateNotification {
3388 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
3389 store!(u16, &1, writer)?;
3390 Ok(())
3391 }
3392}
3393
3394impl Deserializer for NewBlockTemplateNotification {
3395 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
3396 let _version = load!(u16, reader)?;
3397 Ok(Self {})
3398 }
3399}
3400
3401#[derive(Clone, Debug, Serialize, Deserialize)]
3405#[serde(rename_all = "camelCase")]
3406pub struct SubscribeResponse {
3407 id: u64,
3408}
3409
3410impl SubscribeResponse {
3411 pub fn new(id: u64) -> Self {
3412 Self { id }
3413 }
3414}
3415
3416impl Serializer for SubscribeResponse {
3417 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
3418 store!(u16, &1, writer)?;
3419 store!(u64, &self.id, writer)?;
3420 Ok(())
3421 }
3422}
3423
3424impl Deserializer for SubscribeResponse {
3425 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
3426 let _version = load!(u16, reader)?;
3427 let id = load!(u64, reader)?;
3428 Ok(Self { id })
3429 }
3430}
3431
3432#[derive(Clone, Debug, Serialize, Deserialize)]
3436#[serde(rename_all = "camelCase")]
3437pub struct UnsubscribeResponse {}
3438
3439impl Serializer for UnsubscribeResponse {
3440 fn serialize<W: std::io::Write>(&self, writer: &mut W) -> std::io::Result<()> {
3441 store!(u16, &1, writer)
3442 }
3443}
3444
3445impl Deserializer for UnsubscribeResponse {
3446 fn deserialize<R: std::io::Read>(reader: &mut R) -> std::io::Result<Self> {
3447 let _version = load!(u16, reader);
3448 Ok(Self {})
3449 }
3450}