1use bytemuck::{Pod, Zeroable};
2
3use crate::utils::{impl_account_from_bytes, impl_to_bytes, Discriminator};
4
5use super::AccountDiscriminator;
6
7#[repr(C)]
9#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)]
10pub struct Config {
11 pub base_reward_rate: u64,
13
14 pub last_reset_at: i64,
16
17 pub min_difficulty: u64,
19
20 pub top_balance: u64,
22}
23
24impl Discriminator for Config {
25 fn discriminator() -> u8 {
26 AccountDiscriminator::Config.into()
27 }
28}
29
30#[repr(C)]
32#[derive(Clone, Copy, Debug, PartialEq, Pod, Zeroable)]
33pub struct WoodConfig {
34 pub base_reward_rate: u64,
36
37 pub last_reset_at: i64,
39
40 pub min_difficulty: u64,
42
43 pub top_balance: u64,
45
46 pub total_epoch_rewards: u64,
48}
49
50impl Discriminator for WoodConfig {
51 fn discriminator() -> u8 {
52 AccountDiscriminator::WoodConfig.into()
53 }
54}
55
56impl_to_bytes!(Config);
57impl_account_from_bytes!(Config);
58impl_to_bytes!(WoodConfig);
59impl_account_from_bytes!(WoodConfig);