use serde::{Deserialize, Serialize};
#[repr(u8)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum NetworkState {
Low = 0,
Normal = 1,
High = 2,
Extreme = 3,
}
impl TryFrom<u8> for NetworkState {
type Error = u8;
fn try_from(value: u8) -> Result<Self, Self::Error> {
match value {
0 => Ok(Self::Low),
1 => Ok(Self::Normal),
2 => Ok(Self::High),
3 => Ok(Self::Extreme),
other => Err(other),
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub struct PriorityFees {
pub slot: u64,
pub timestamp_ms: u64,
pub recommended: u64,
pub state: NetworkState,
pub is_stale: bool,
pub swap_p50: u64,
pub swap_p75: u64,
pub swap_p90: u64,
pub swap_p99: u64,
pub swap_samples: u32,
pub landing_p50_fee: u64,
pub landing_p75_fee: u64,
pub landing_p90_fee: u64,
pub landing_p99_fee: u64,
pub top_10_fee: u64,
pub top_25_fee: u64,
pub spike_detected: bool,
pub spike_fee: u64,
}