use super::requests::{IcCanisterFilters, IcDailyStatsQuery, IcMetricQuery};
use serde::Serialize;
#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
pub struct IcCanisterUpgrade {
pub executed_timestamp_seconds: u64,
pub module_hash: String,
pub proposal_id: u64,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
pub struct IcDashboardReportProvenance {
pub schema_version: u32,
pub network: String,
pub authority: String,
pub source_endpoint: String,
pub fetched_at: String,
pub fetched_by: String,
pub certified: bool,
pub point_in_time_guaranteed: bool,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
pub struct IcMetricObservation {
pub timestamp_unix_secs: u64,
pub value: String,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
pub struct IcMetricSeries {
pub name: String,
pub observations: Vec<IcMetricObservation>,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
pub struct IcMetricReport {
#[serde(flatten)]
pub provenance: IcDashboardReportProvenance,
#[serde(flatten)]
pub query: IcMetricQuery,
pub returned_series_count: usize,
pub returned_observation_count: usize,
pub series: Vec<IcMetricSeries>,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
pub struct IcDailyStatsRow {
pub day: String,
pub timestamp_unix_secs: u64,
pub average_query_transactions_per_second: String,
pub average_update_transactions_per_second: String,
pub average_transactions_per_second: String,
pub max_query_transactions_per_second: String,
pub max_update_transactions_per_second: String,
pub max_total_transactions_per_second: String,
pub blocks_per_second_average: String,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
pub struct IcDailyStatsReport {
#[serde(flatten)]
pub provenance: IcDashboardReportProvenance,
#[serde(flatten)]
pub query: IcDailyStatsQuery,
pub returned_day_count: usize,
pub rows: Vec<IcDailyStatsRow>,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
pub struct IcBoundaryNodeDataCenterRow {
pub dc_id: String,
pub name: String,
pub owner: String,
pub region: String,
pub latitude: String,
pub longitude: String,
pub total_nodes: String,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
pub struct IcBoundaryNodeDataCentersReport {
#[serde(flatten)]
pub provenance: IcDashboardReportProvenance,
pub data_center_count: usize,
pub total_node_count: u64,
pub rows: Vec<IcBoundaryNodeDataCenterRow>,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
pub struct IcCanisterReport {
#[serde(flatten)]
pub provenance: IcDashboardReportProvenance,
pub canister_id: String,
pub dashboard_id: u64,
pub canister_type: Option<String>,
pub name: String,
pub subnet_id: String,
pub controllers: Vec<String>,
pub language: String,
pub module_hash: String,
pub dashboard_updated_at: String,
pub upgrade_count: Option<usize>,
pub upgrades: Option<Vec<IcCanisterUpgrade>>,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
pub struct IcCanisterCountReport {
#[serde(flatten)]
pub provenance: IcDashboardReportProvenance,
pub filters: IcCanisterFilters,
pub total: u64,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
pub struct IcCanisterPageController {
pub principal_id: String,
pub raw_metadata: Option<String>,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
pub struct IcCanisterPageRow {
pub canister_id: String,
pub dashboard_id: u64,
pub canister_type: Option<String>,
pub name: String,
pub subnet_id: String,
pub controllers: Vec<IcCanisterPageController>,
pub language: String,
pub module_hash: String,
pub dashboard_updated_at: String,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
pub struct IcCanisterPageReport {
#[serde(flatten)]
pub provenance: IcDashboardReportProvenance,
pub filters: IcCanisterFilters,
pub requested_limit: u16,
pub returned_count: usize,
pub after: Option<String>,
pub before: Option<String>,
pub previous_cursor: Option<String>,
pub next_cursor: Option<String>,
pub rows: Vec<IcCanisterPageRow>,
}