use crate::NodeId;
use im::OrdMap;
use serde::{Deserialize, Serialize};
use std::time::Duration;
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct NodeInfoResponse {
pub connected_nodes: usize,
pub uptime: Duration,
pub version: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub swarm_state: Option<SwarmState>,
}
#[derive(Default, Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SwarmState {
pub peers_status: OrdMap<NodeId, PeerStatus>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum PeerStatus {
LowLatency,
HighLatency,
PartiallyWorking,
NotWorking,
}