// Copyright 2022 - Nym Technologies SA // SPDX-License-Identifier: Apache-2.0 use serde::{Deserialize, Serialize}; #[derive(Clone, Copy, Debug, Serialize, Deserialize, PartialEq, Eq)] #[cfg_attr(feature = "ts-rs", derive(ts_rs::TS))] #[serde(rename_all = "snake_case")] pub enum MixnodeStatus { Active, // in both the active set and the rewarded set Standby, // only in the rewarded set Inactive, // in neither the rewarded set nor the active set, but is bonded NotFound, // doesn't even exist in the bonded set } impl MixnodeStatus { pub fn is_active(&self) -> bool { *self == MixnodeStatus::Active } } #[derive(Clone, Debug, Serialize, Deserialize)] #[cfg_attr(feature = "ts-rs", derive(ts_rs::TS))] pub struct CoreNodeStatusResponse { pub identity: String, pub count: i32, } #[derive(Clone, Copy, Debug, Serialize, Deserialize)] #[cfg_attr(feature = "ts-rs", derive(ts_rs::TS))] pub struct MixnodeStatusResponse { pub status: MixnodeStatus, } #[derive(Clone, Copy, Debug, Serialize, Deserialize)] #[cfg_attr(feature = "ts-rs", derive(ts_rs::TS))] pub struct RewardEstimationResponse { pub estimated_total_node_reward: u64, pub estimated_operator_reward: u64, pub estimated_delegators_reward: u64, pub current_epoch_start: i64, pub current_epoch_end: i64, pub current_epoch_uptime: u8, pub as_at: i64, } #[derive(Clone, Copy, Debug, Serialize, Deserialize)] #[cfg_attr(feature = "ts-rs", derive(ts_rs::TS))] pub struct StakeSaturationResponse { pub saturation: f32, pub as_at: i64, }