miden_client/rpc/domain/
status.rs1use alloc::string::String;
2use core::convert::TryInto;
3
4use miden_protocol::Word;
5
6use crate::rpc::{RpcError, generated as proto};
7
8pub struct RpcStatusInfo {
10 pub version: String,
11 pub genesis_commitment: Option<Word>,
12 pub store: Option<StoreStatusInfo>,
13 pub block_producer: Option<BlockProducerStatusInfo>,
14}
15
16pub struct StoreStatusInfo {
18 pub version: String,
19 pub status: String,
20 pub chain_tip: u32,
21}
22
23pub struct BlockProducerStatusInfo {
25 pub version: String,
26 pub status: String,
27 pub chain_tip: u32,
28 pub mempool_stats: Option<MempoolStatsInfo>,
29}
30
31pub struct MempoolStatsInfo {
33 pub unbatched_transactions: u64,
34 pub proposed_batches: u64,
35 pub proven_batches: u64,
36}
37
38impl TryFrom<proto::rpc::RpcStatus> for RpcStatusInfo {
39 type Error = RpcError;
40
41 fn try_from(value: proto::rpc::RpcStatus) -> Result<Self, Self::Error> {
42 let genesis_commitment = value.genesis_commitment.map(TryInto::try_into).transpose()?;
43 Ok(Self {
44 version: value.version,
45 genesis_commitment,
46 store: value.store.map(Into::into),
47 block_producer: value.block_producer.map(Into::into),
48 })
49 }
50}
51
52impl From<proto::rpc::StoreStatus> for StoreStatusInfo {
53 fn from(value: proto::rpc::StoreStatus) -> Self {
54 Self {
55 version: value.version,
56 status: value.status,
57 chain_tip: value.chain_tip,
58 }
59 }
60}
61
62impl From<proto::rpc::BlockProducerStatus> for BlockProducerStatusInfo {
63 fn from(value: proto::rpc::BlockProducerStatus) -> Self {
64 Self {
65 version: value.version,
66 status: value.status,
67 chain_tip: value.chain_tip,
68 mempool_stats: value.mempool_stats.map(Into::into),
69 }
70 }
71}
72
73impl From<proto::rpc::MempoolStats> for MempoolStatsInfo {
74 fn from(value: proto::rpc::MempoolStats) -> Self {
75 Self {
76 unbatched_transactions: value.unbatched_transactions,
77 proposed_batches: value.proposed_batches,
78 proven_batches: value.proven_batches,
79 }
80 }
81}