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, #[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
139impl 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}