1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize, Default)]
4pub struct OreRoundId {
5 #[serde(default)]
6 pub round_id: Option<u64>,
7 #[serde(default)]
8 pub round_address: Option<String>,
9}
10
11#[derive(Debug, Clone, Serialize, Deserialize, Default)]
12pub struct OreRoundState {
13 #[serde(default)]
14 pub expires_at: Option<Option<i64>>,
15 #[serde(default)]
16 pub estimated_expires_at_unix: Option<Option<i64>>,
17 #[serde(default)]
18 pub motherlode: Option<Option<f64>>,
19 #[serde(default)]
20 pub total_deployed: Option<Option<f64>>,
21 #[serde(default)]
22 pub total_vaulted: Option<Option<f64>>,
23 #[serde(default)]
24 pub total_winnings: Option<Option<f64>>,
25 #[serde(default)]
26 pub total_miners: Option<Option<u64>>,
27 #[serde(default)]
28 pub deployed_per_square: Option<Option<Vec<serde_json::Value>>>,
29 #[serde(default)]
30 pub deployed_per_square_ui: Option<Option<Vec<serde_json::Value>>>,
31 #[serde(default)]
32 pub count_per_square: Option<Option<Vec<serde_json::Value>>>,
33}
34
35#[derive(Debug, Clone, Serialize, Deserialize, Default)]
36pub struct OreRoundResults {
37 #[serde(default)]
38 pub top_miner: Option<Option<String>>,
39 #[serde(default)]
40 pub top_miner_reward: Option<Option<f64>>,
41 #[serde(default)]
42 pub rent_payer: Option<Option<String>>,
43 #[serde(default)]
44 pub slot_hash: Option<Option<String>>,
45 #[serde(default)]
46 pub rng: Option<Option<u64>>,
47 #[serde(default)]
48 pub winning_square: Option<Option<u64>>,
49 #[serde(default)]
50 pub did_hit_motherlode: Option<Option<bool>>,
51}
52
53#[derive(Debug, Clone, Serialize, Deserialize, Default)]
54pub struct OreRoundMetrics {
55 #[serde(default)]
56 pub deploy_count: Option<Option<u64>>,
57 #[serde(default)]
58 pub checkpoint_count: Option<Option<u64>>,
59}
60
61#[derive(Debug, Clone, Serialize, Deserialize, Default)]
62pub struct OreRoundTreasury {
63 #[serde(default)]
64 pub motherlode: Option<Option<f64>>,
65}
66
67#[derive(Debug, Clone, Serialize, Deserialize, Default)]
68pub struct OreRoundEntropy {
69 #[serde(default)]
70 pub entropy_value: Option<Option<String>>,
71 #[serde(default)]
72 pub entropy_seed: Option<Option<String>>,
73 #[serde(default)]
74 pub entropy_slot_hash: Option<Option<String>>,
75 #[serde(default)]
76 pub entropy_start_at: Option<Option<i64>>,
77 #[serde(default)]
78 pub entropy_end_at: Option<Option<i64>>,
79 #[serde(default)]
80 pub entropy_samples: Option<Option<u64>>,
81 #[serde(default)]
82 pub entropy_var_address: Option<Option<String>>,
83 #[serde(default)]
84 pub resolved_seed: Option<Option<Vec<serde_json::Value>>>,
85}
86
87#[derive(Debug, Clone, Serialize, Deserialize, Default)]
88pub struct OreRound {
89 #[serde(default)]
90 pub id: OreRoundId,
91 #[serde(default)]
92 pub state: OreRoundState,
93 #[serde(default)]
94 pub results: OreRoundResults,
95 #[serde(default)]
96 pub metrics: OreRoundMetrics,
97 #[serde(default)]
98 pub treasury: OreRoundTreasury,
99 #[serde(default)]
100 pub entropy: OreRoundEntropy,
101 #[serde(default)]
102 pub ore_metadata: Option<Option<serde_json::Value>>,
103}
104
105#[derive(Debug, Clone, Serialize, Deserialize, Default)]
106pub struct OreTreasuryId {
107 #[serde(default)]
108 pub address: Option<String>,
109}
110
111#[derive(Debug, Clone, Serialize, Deserialize, Default)]
112pub struct OreTreasuryState {
113 #[serde(default)]
114 pub balance: Option<Option<u64>>,
115 #[serde(default)]
116 pub motherlode: Option<Option<f64>>,
117 #[serde(default)]
118 pub total_refined: Option<Option<f64>>,
119 #[serde(default)]
120 pub total_staked: Option<Option<f64>>,
121 #[serde(default)]
122 pub total_unclaimed: Option<Option<f64>>,
123}
124
125#[derive(Debug, Clone, Serialize, Deserialize, Default)]
126pub struct OreTreasury {
127 #[serde(default)]
128 pub id: OreTreasuryId,
129 #[serde(default)]
130 pub state: OreTreasuryState,
131 #[serde(default)]
132 pub treasury_snapshot: Option<Option<serde_json::Value>>,
133}
134
135
136
137#[derive(Debug, Clone, Serialize, Deserialize, Default)]
138pub struct Treasury {
139 #[serde(default)]
140 pub balance: Option<u64>,
141 #[serde(default)]
142 pub buffer_a: Option<u64>,
143 #[serde(default)]
144 pub motherlode: Option<u64>,
145 #[serde(default)]
146 pub miner_rewards_factor: Option<serde_json::Value>,
147 #[serde(default)]
148 pub stake_rewards_factor: Option<serde_json::Value>,
149 #[serde(default)]
150 pub buffer_b: Option<u64>,
151 #[serde(default)]
152 pub total_refined: Option<u64>,
153 #[serde(default)]
154 pub total_staked: Option<u64>,
155 #[serde(default)]
156 pub total_unclaimed: Option<u64>,
157}
158
159#[derive(Debug, Clone, Serialize, Deserialize, Default)]
160pub struct OreMinerId {
161 #[serde(default)]
162 pub authority: Option<String>,
163 #[serde(default)]
164 pub miner_address: Option<String>,
165 #[serde(default)]
166 pub automation_address: Option<Option<String>>,
167}
168
169#[derive(Debug, Clone, Serialize, Deserialize, Default)]
170pub struct OreMinerRewards {
171 #[serde(default)]
172 pub rewards_sol: Option<Option<u64>>,
173 #[serde(default)]
174 pub rewards_ore: Option<Option<u64>>,
175 #[serde(default)]
176 pub refined_ore: Option<Option<u64>>,
177 #[serde(default)]
178 pub lifetime_rewards_sol: Option<Option<u64>>,
179 #[serde(default)]
180 pub lifetime_rewards_ore: Option<Option<u64>>,
181 #[serde(default)]
182 pub lifetime_deployed: Option<Option<u64>>,
183}
184
185#[derive(Debug, Clone, Serialize, Deserialize, Default)]
186pub struct OreMinerState {
187 #[serde(default)]
188 pub round_id: Option<Option<u64>>,
189 #[serde(default)]
190 pub checkpoint_id: Option<Option<u64>>,
191 #[serde(default)]
192 pub checkpoint_fee: Option<Option<u64>>,
193 #[serde(default)]
194 pub last_claim_ore_at: Option<Option<i64>>,
195 #[serde(default)]
196 pub last_claim_sol_at: Option<Option<i64>>,
197}
198
199#[derive(Debug, Clone, Serialize, Deserialize, Default)]
200pub struct OreMinerAutomation {
201 #[serde(default)]
202 pub amount: Option<Option<u64>>,
203 #[serde(default)]
204 pub balance: Option<Option<u64>>,
205 #[serde(default)]
206 pub executor: Option<Option<String>>,
207 #[serde(default)]
208 pub fee: Option<Option<u64>>,
209 #[serde(default)]
210 pub strategy: Option<Option<u64>>,
211 #[serde(default)]
212 pub mask: Option<Option<u64>>,
213 #[serde(default)]
214 pub reload: Option<Option<u64>>,
215}
216
217#[derive(Debug, Clone, Serialize, Deserialize, Default)]
218pub struct OreMiner {
219 #[serde(default)]
220 pub id: OreMinerId,
221 #[serde(default)]
222 pub rewards: OreMinerRewards,
223 #[serde(default)]
224 pub state: OreMinerState,
225 #[serde(default)]
226 pub automation: OreMinerAutomation,
227 #[serde(default)]
228 pub miner_snapshot: Option<Option<serde_json::Value>>,
229 #[serde(default)]
230 pub automation_snapshot: Option<Option<serde_json::Value>>,
231}
232
233
234
235#[derive(Debug, Clone, Serialize, Deserialize, Default)]
236pub struct Miner {
237 #[serde(default)]
238 pub authority: Option<String>,
239 #[serde(default)]
240 pub deployed: Option<Vec<u64>>,
241 #[serde(default)]
242 pub cumulative: Option<Vec<u64>>,
243 #[serde(default)]
244 pub checkpoint_fee: Option<u64>,
245 #[serde(default)]
246 pub checkpoint_id: Option<u64>,
247 #[serde(default)]
248 pub last_claim_ore_at: Option<i64>,
249 #[serde(default)]
250 pub last_claim_sol_at: Option<i64>,
251 #[serde(default)]
252 pub rewards_factor: Option<serde_json::Value>,
253 #[serde(default)]
254 pub rewards_sol: Option<u64>,
255 #[serde(default)]
256 pub rewards_ore: Option<u64>,
257 #[serde(default)]
258 pub refined_ore: Option<u64>,
259 #[serde(default)]
260 pub round_id: Option<u64>,
261 #[serde(default)]
262 pub lifetime_rewards_sol: Option<u64>,
263 #[serde(default)]
264 pub lifetime_rewards_ore: Option<u64>,
265 #[serde(default)]
266 pub lifetime_deployed: Option<u64>,
267}
268
269#[derive(Debug, Clone, Serialize, Deserialize, Default)]
270pub struct Automation {
271 #[serde(default)]
272 pub amount: Option<u64>,
273 #[serde(default)]
274 pub authority: Option<String>,
275 #[serde(default)]
276 pub balance: Option<u64>,
277 #[serde(default)]
278 pub executor: Option<String>,
279 #[serde(default)]
280 pub fee: Option<u64>,
281 #[serde(default)]
282 pub strategy: Option<u64>,
283 #[serde(default)]
284 pub mask: Option<u64>,
285 #[serde(default)]
286 pub reload: Option<u64>,
287}
288
289
290#[derive(Debug, Clone, Serialize, Deserialize)]
291pub struct EventWrapper<T> {
292 #[serde(default)]
293 pub timestamp: i64,
294 pub data: T,
295 #[serde(default)]
296 pub slot: Option<f64>,
297 #[serde(default)]
298 pub signature: Option<String>,
299}
300
301impl<T: Default> Default for EventWrapper<T> {
302 fn default() -> Self {
303 Self {
304 timestamp: 0,
305 data: T::default(),
306 slot: None,
307 signature: None,
308 }
309 }
310}