Skip to main content

hyperstack_stacks/ore/
types.rs

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}