use serde::Serialize;
#[derive(Clone, Copy, Debug, Eq, PartialEq, Serialize)]
#[serde(rename_all = "snake_case")]
pub(super) enum MetricsKind {
Core,
Placement,
Platform,
Runtime,
Security,
Storage,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
pub(super) struct MetricsReport {
pub(super) deployment: String,
pub(super) network: String,
pub(super) kind: MetricsKind,
pub(super) canisters: Vec<MetricsCanisterReport>,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
pub(super) struct MetricsCanisterReport {
pub(super) role: String,
pub(super) canister_id: String,
pub(super) status: String,
pub(super) entries: Vec<MetricEntry>,
pub(super) error: Option<String>,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
pub(super) struct MetricEntry {
pub(super) labels: Vec<String>,
pub(super) principal: Option<String>,
pub(super) value: MetricValue,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
#[serde(rename_all = "snake_case", tag = "type")]
pub(super) enum MetricValue {
Count { count: u64 },
CountAndU64 { count: u64, value_u64: u64 },
U128 { value: u128 },
}