bankai_types/api/
stats.rs1use crate::api::blocks::{EthereumConsensusSummaryDto, MmrRootsDto};
2use serde::{Deserialize, Serialize};
3use utoipa::ToSchema;
4
5#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
6pub struct BlockDetailStatsDto {
7 pub height: u64,
8 pub e2e_ms: Option<u64>,
9 pub updated_at: String,
10 pub ethereum: Option<EthereumConsensusSummaryDto>,
11 #[serde(skip_serializing_if = "Option::is_none")]
12 pub beacon_mmr: Option<ChainMmrInfoDto>,
13 #[serde(skip_serializing_if = "Option::is_none")]
14 pub execution_mmr: Option<ChainMmrInfoDto>,
15}
16
17#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
18pub struct ChainOverviewDto {
19 pub network_id: u64,
20 pub name: String,
21 pub total_headers: u64,
22 pub first_header: u64,
23 pub current_header: u64,
24 pub latest_justified_height: u64,
25 pub latest_finalized_height: u64,
26}
27
28#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
29pub struct LatestBlockOverviewDto {
30 pub height: u64,
31 pub e2e_ms: Option<u64>,
32 pub updated_at: String,
33 pub ethereum: Option<EthereumConsensusSummaryDto>,
34}
35
36#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
37pub struct OverviewStatsDto {
38 pub totals: TotalsDto,
39 pub chains: Vec<ChainOverviewDto>,
40 pub latest: PageDto<LatestBlockOverviewDto>,
41}
42
43#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
44pub struct TotalsDto {
45 pub total_blocks: u64,
46 pub total_proofs: u64,
47 #[serde(skip_serializing_if = "Option::is_none")]
48 pub avg_e2e_ms: Option<u64>,
49}
50
51#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
52#[schema(bound = "T: ToSchema")]
53pub struct PageDto<T> {
54 pub data: Vec<T>,
55 pub meta: PageMetaDto,
56}
57
58#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
59pub struct ChainMmrInfoDto {
60 pub keccak_root: String,
61 pub poseidon_root: String,
62 pub elements_count: u64,
63 pub leafs_count: u64,
64 pub keccak_peaks_count: u64,
65 pub poseidon_peaks_count: u64,
66 #[serde(skip_serializing_if = "Option::is_none")]
67 pub keccak_peaks: Option<Vec<String>>, #[serde(skip_serializing_if = "Option::is_none")]
69 pub poseidon_peaks: Option<Vec<String>>, }
71
72#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
73pub struct ChainSnapshotSummaryDto {
74 pub chain_id: u64,
75 pub start_height: u64,
76 pub end_height: u64,
77 pub justified_height: u64,
78 pub finalized_height: u64,
79 pub mmr_roots: MmrRootsDto,
80}
81
82#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
83pub struct PageMetaDto {
84 pub cursor: Option<String>,
85 pub has_more: bool,
86}