use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct EpochInfo {
pub epoch_no: u64,
pub out_sum: String,
pub fees: String,
pub tx_count: u64,
pub blk_count: u64,
pub start_time: u64,
pub end_time: u64,
pub first_block_time: u64,
pub last_block_time: u64,
#[serde(skip_serializing_if = "Option::is_none")]
pub active_stake: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub total_rewards: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub avg_blk_reward: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct EpochParams {
pub epoch_no: u64,
#[serde(skip_serializing_if = "Option::is_none")]
pub min_fee_a: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub min_fee_b: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_block_size: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_tx_size: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_bh_size: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub key_deposit: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub pool_deposit: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_epoch: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub optimal_pool_count: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub influence: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub monetary_expand_rate: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub treasury_growth_rate: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub decentralisation: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub extra_entropy: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub protocol_major: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub protocol_minor: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub min_utxo_value: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub min_pool_cost: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub nonce: Option<String>,
pub block_hash: String, #[serde(skip_serializing_if = "Option::is_none")]
pub cost_models: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub price_mem: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub price_step: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_tx_ex_mem: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_tx_ex_steps: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_block_ex_mem: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_block_ex_steps: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_val_size: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub collateral_percent: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_collateral_inputs: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub coins_per_utxo_size: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub pvt_motion_no_confidence: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub pvt_committee_normal: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub pvt_committee_no_confidence: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub pvt_hard_fork_initiation: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub dvt_motion_no_confidence: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub dvt_committee_normal: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub dvt_committee_no_confidence: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub dvt_update_to_constitution: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub dvt_hard_fork_initiation: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub dvt_p_p_network_group: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub dvt_p_p_economic_group: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub dvt_p_p_technical_group: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub dvt_p_p_gov_group: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub dvt_treasury_withdrawal: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub committee_min_size: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub committee_max_term_length: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub gov_action_lifetime: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub gov_action_deposit: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub drep_deposit: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub drep_activity: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub pvtpp_security_group: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub min_fee_ref_script_cost_per_byte: Option<u64>,
}
#[derive(Debug, Clone, Serialize, Copy, Deserialize)]
pub struct EpochBlockProtocol {
pub proto_major: u64,
pub proto_minor: u64,
pub blocks: u64,
}
impl EpochInfo {
pub fn new(
epoch_no: u64,
out_sum: String,
fees: String,
tx_count: u64,
blk_count: u64,
start_time: u64,
end_time: u64,
first_block_time: u64,
last_block_time: u64,
) -> Self {
Self {
epoch_no,
out_sum,
fees,
tx_count,
blk_count,
start_time,
end_time,
first_block_time,
last_block_time,
active_stake: None,
total_rewards: None,
avg_blk_reward: None,
}
}
}