koios_sdk/models/
epoch.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize)]
4pub struct EpochInfo {
5    pub epoch_no: u64,
6    pub out_sum: String,
7    pub fees: String,
8    pub tx_count: u64,
9    pub blk_count: u64,
10    pub start_time: u64,
11    pub end_time: u64,
12    pub first_block_time: u64,
13    pub last_block_time: u64,
14    #[serde(skip_serializing_if = "Option::is_none")]
15    pub active_stake: Option<String>,
16    #[serde(skip_serializing_if = "Option::is_none")]
17    pub total_rewards: Option<String>,
18    #[serde(skip_serializing_if = "Option::is_none")]
19    pub avg_blk_reward: Option<String>,
20}
21
22#[derive(Debug, Clone, Serialize, Deserialize)]
23pub struct EpochParams {
24    pub epoch_no: u64,
25    #[serde(skip_serializing_if = "Option::is_none")]
26    pub min_fee_a: Option<u64>,
27    #[serde(skip_serializing_if = "Option::is_none")]
28    pub min_fee_b: Option<u64>,
29    #[serde(skip_serializing_if = "Option::is_none")]
30    pub max_block_size: Option<u64>,
31    #[serde(skip_serializing_if = "Option::is_none")]
32    pub max_tx_size: Option<u64>,
33    #[serde(skip_serializing_if = "Option::is_none")]
34    pub max_bh_size: Option<u64>,
35    #[serde(skip_serializing_if = "Option::is_none")]
36    pub key_deposit: Option<String>,
37    #[serde(skip_serializing_if = "Option::is_none")]
38    pub pool_deposit: Option<String>,
39    #[serde(skip_serializing_if = "Option::is_none")]
40    pub max_epoch: Option<u64>,
41    #[serde(skip_serializing_if = "Option::is_none")]
42    pub optimal_pool_count: Option<u64>,
43    #[serde(skip_serializing_if = "Option::is_none")]
44    pub influence: Option<f64>,
45    #[serde(skip_serializing_if = "Option::is_none")]
46    pub monetary_expand_rate: Option<f64>,
47    #[serde(skip_serializing_if = "Option::is_none")]
48    pub treasury_growth_rate: Option<f64>,
49    #[serde(skip_serializing_if = "Option::is_none")]
50    pub decentralisation: Option<f64>,
51    #[serde(skip_serializing_if = "Option::is_none")]
52    pub extra_entropy: Option<String>,
53    #[serde(skip_serializing_if = "Option::is_none")]
54    pub protocol_major: Option<u64>,
55    #[serde(skip_serializing_if = "Option::is_none")]
56    pub protocol_minor: Option<u64>,
57    #[serde(skip_serializing_if = "Option::is_none")]
58    pub min_utxo_value: Option<String>,
59    #[serde(skip_serializing_if = "Option::is_none")]
60    pub min_pool_cost: Option<String>,
61    #[serde(skip_serializing_if = "Option::is_none")]
62    pub nonce: Option<String>,
63    pub block_hash: String, // Changed from Option<String>
64    #[serde(skip_serializing_if = "Option::is_none")]
65    pub cost_models: Option<serde_json::Value>,
66    #[serde(skip_serializing_if = "Option::is_none")]
67    pub price_mem: Option<f64>,
68    #[serde(skip_serializing_if = "Option::is_none")]
69    pub price_step: Option<f64>,
70    #[serde(skip_serializing_if = "Option::is_none")]
71    pub max_tx_ex_mem: Option<u64>,
72    #[serde(skip_serializing_if = "Option::is_none")]
73    pub max_tx_ex_steps: Option<u64>,
74    #[serde(skip_serializing_if = "Option::is_none")]
75    pub max_block_ex_mem: Option<u64>,
76    #[serde(skip_serializing_if = "Option::is_none")]
77    pub max_block_ex_steps: Option<u64>,
78    #[serde(skip_serializing_if = "Option::is_none")]
79    pub max_val_size: Option<u64>,
80    #[serde(skip_serializing_if = "Option::is_none")]
81    pub collateral_percent: Option<u64>,
82    #[serde(skip_serializing_if = "Option::is_none")]
83    pub max_collateral_inputs: Option<u64>,
84    #[serde(skip_serializing_if = "Option::is_none")]
85    pub coins_per_utxo_size: Option<String>,
86    #[serde(skip_serializing_if = "Option::is_none")]
87    pub pvt_motion_no_confidence: Option<f64>,
88    #[serde(skip_serializing_if = "Option::is_none")]
89    pub pvt_committee_normal: Option<f64>,
90    #[serde(skip_serializing_if = "Option::is_none")]
91    pub pvt_committee_no_confidence: Option<f64>,
92    #[serde(skip_serializing_if = "Option::is_none")]
93    pub pvt_hard_fork_initiation: Option<f64>,
94    #[serde(skip_serializing_if = "Option::is_none")]
95    pub dvt_motion_no_confidence: Option<f64>,
96    #[serde(skip_serializing_if = "Option::is_none")]
97    pub dvt_committee_normal: Option<f64>,
98    #[serde(skip_serializing_if = "Option::is_none")]
99    pub dvt_committee_no_confidence: Option<f64>,
100    #[serde(skip_serializing_if = "Option::is_none")]
101    pub dvt_update_to_constitution: Option<f64>,
102    #[serde(skip_serializing_if = "Option::is_none")]
103    pub dvt_hard_fork_initiation: Option<f64>,
104    #[serde(skip_serializing_if = "Option::is_none")]
105    pub dvt_p_p_network_group: Option<f64>,
106    #[serde(skip_serializing_if = "Option::is_none")]
107    pub dvt_p_p_economic_group: Option<f64>,
108    #[serde(skip_serializing_if = "Option::is_none")]
109    pub dvt_p_p_technical_group: Option<f64>,
110    #[serde(skip_serializing_if = "Option::is_none")]
111    pub dvt_p_p_gov_group: Option<f64>,
112    #[serde(skip_serializing_if = "Option::is_none")]
113    pub dvt_treasury_withdrawal: Option<f64>,
114    #[serde(skip_serializing_if = "Option::is_none")]
115    pub committee_min_size: Option<u64>,
116    #[serde(skip_serializing_if = "Option::is_none")]
117    pub committee_max_term_length: Option<u64>,
118    #[serde(skip_serializing_if = "Option::is_none")]
119    pub gov_action_lifetime: Option<u64>,
120    #[serde(skip_serializing_if = "Option::is_none")]
121    pub gov_action_deposit: Option<String>,
122    #[serde(skip_serializing_if = "Option::is_none")]
123    pub drep_deposit: Option<String>,
124    #[serde(skip_serializing_if = "Option::is_none")]
125    pub drep_activity: Option<u64>,
126    #[serde(skip_serializing_if = "Option::is_none")]
127    pub pvtpp_security_group: Option<f64>,
128    #[serde(skip_serializing_if = "Option::is_none")]
129    pub min_fee_ref_script_cost_per_byte: Option<u64>,
130}
131
132#[derive(Debug, Clone, Serialize, Copy, Deserialize)]
133pub struct EpochBlockProtocol {
134    pub proto_major: u64,
135    pub proto_minor: u64,
136    pub blocks: u64,
137}
138
139// Implementation blocks for constructors and helper methods
140impl EpochInfo {
141    pub fn new(
142        epoch_no: u64,
143        out_sum: String,
144        fees: String,
145        tx_count: u64,
146        blk_count: u64,
147        start_time: u64,
148        end_time: u64,
149        first_block_time: u64,
150        last_block_time: u64,
151    ) -> Self {
152        Self {
153            epoch_no,
154            out_sum,
155            fees,
156            tx_count,
157            blk_count,
158            start_time,
159            end_time,
160            first_block_time,
161            last_block_time,
162            active_stake: None,
163            total_rewards: None,
164            avg_blk_reward: None,
165        }
166    }
167}