use candid::CandidType;
use serde::{Deserialize, Serialize};
#[derive(
CandidType, Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize,
)]
pub enum PublicMetricFamily {
#[serde(rename = "application")]
Application,
#[serde(rename = "cycles")]
Cycles,
#[serde(rename = "operations")]
Operations,
#[serde(rename = "performance")]
Performance,
#[serde(rename = "shard_occupancy")]
ShardOccupancy,
}
#[derive(CandidType, Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize)]
pub enum PublicMetricKind {
Gauge,
Counter {
window_id: u64,
saturated: bool,
},
TimerCounter {
registration: TimerMetricRegistration,
saturated: bool,
},
}
#[derive(CandidType, Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize)]
pub struct TimerMetricRegistration {
pub canister_version: u64,
pub started_at_ns: u64,
pub sequence: u64,
}