Skip to main content

hyperstack_stacks/ore/
types.rs

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