#[doc(hidden)]
pub const STR_002_MODULE_PRESENT: () = ();
use chia_protocol::Bytes32;
use serde::{Deserialize, Serialize};
use crate::error::EpochError;
use crate::types::epoch_info::EpochInfo;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct EpochSummary {
pub epoch: u64,
pub blocks: u32,
pub transactions: u64,
pub fees: u64,
pub finalized: bool,
pub checkpoint_hash: Option<Bytes32>,
pub collateral_registry_root: Bytes32,
pub cid_state_root: Bytes32,
pub node_registry_root: Bytes32,
pub namespace_epoch_root: Bytes32,
pub dfsp_issuance_total: u64,
pub active_cid_count: u32,
pub active_node_count: u32,
}
impl EpochSummary {
pub fn to_bytes(&self) -> Vec<u8> {
bincode::serialize(self).expect("EpochSummary serialization should never fail")
}
pub fn from_bytes(bytes: &[u8]) -> Result<Self, EpochError> {
bincode::deserialize(bytes).map_err(|e| EpochError::InvalidData(e.to_string()))
}
}
impl From<EpochInfo> for EpochSummary {
fn from(info: EpochInfo) -> Self {
let finalized = info.checkpoint.is_some();
let checkpoint_hash = info.checkpoint.map(|c| c.hash());
Self {
epoch: info.epoch,
blocks: info.blocks_produced,
transactions: info.total_transactions,
fees: info.total_fees,
finalized,
checkpoint_hash,
collateral_registry_root: info.collateral_registry_root,
cid_state_root: info.cid_state_root,
node_registry_root: info.node_registry_root,
namespace_epoch_root: info.namespace_epoch_root,
dfsp_issuance_total: info.dfsp_issuance_total,
active_cid_count: info.active_cid_count,
active_node_count: info.active_node_count,
}
}
}