use crate::*;
use serde::{Deserialize, Serialize};
#[derive(Clone, Serialize, Deserialize, Debug)]
pub struct Validator {
pub address: String,
pub owner: String,
pub stake: u64,
pub last_heartbeat: u64,
pub version_heartbeat: u64,
pub stake_status: String,
}
#[derive(Clone, Serialize, Deserialize, Debug)]
pub struct Stats {
pub active: Option<u64>,
pub staked: StakeStats,
pub unstaked: StakeStats,
pub cooldown: StakeStats,
}
#[derive(Clone, Serialize, Deserialize, Debug)]
pub struct StakeStats {
pub amount: Hnt,
pub count: u64,
}
pub fn all(client: &Client) -> Stream<Validator> {
client.fetch_stream("/validators", NO_QUERY)
}
pub async fn get(client: &Client, address: &str) -> Result<Validator> {
client
.fetch(&format!("/validators/{}", address), NO_QUERY)
.await
}
pub async fn stats(client: &Client) -> Result<Stats> {
client.fetch("/validators/stats", NO_QUERY).await
}