1use serde::{Deserialize, Serialize};
7
8#[derive(Debug, Clone, Serialize, Deserialize)]
13#[serde(rename_all = "snake_case")]
14pub enum CoreQueryMsg {
15 Config {},
16 BurnStats {},
17 TotalMinted {},
18 Balance { address: String },
19}
20
21#[derive(Debug, Clone, Serialize, Deserialize)]
22#[serde(rename_all = "snake_case")]
23pub enum CoreExecuteMsg {
24 Transfer { recipient: String, amount: String },
25 Send { contract: String, amount: String, msg: String },
26}
27
28#[derive(Debug, Clone, Serialize, Deserialize)]
29pub struct BalanceResponse {
30 pub balance: String,
31}
32
33#[derive(Debug, Clone, Serialize, Deserialize)]
34pub struct TotalMintedResponse {
35 pub total_minted: String,
36}
37
38#[derive(Debug, Clone, Serialize, Deserialize)]
39pub struct BurnStatsResponse {
40 pub total_burned: String,
41}
42
43#[derive(Debug, Clone, Serialize, Deserialize)]
48#[serde(rename_all = "snake_case")]
49pub enum MineExecuteMsg {
50 SubmitProof {
51 hash: String,
52 nonce: u64,
53 miner_address: String,
54 challenge: String,
55 difficulty: u32,
56 timestamp: u64,
57 referrer: Option<String>,
58 },
59}
60
61#[derive(Debug, Clone, Serialize, Deserialize)]
62#[serde(rename_all = "snake_case")]
63pub enum MineQueryMsg {
64 Config {},
65 WindowStatus {},
66 Stats {},
67 MinerStats { address: String },
68 CalculateReward { difficulty_bits: u32 },
69 EmissionInfo {},
70}
71
72#[derive(Debug, Clone, Serialize, Deserialize)]
73pub struct MineConfigResponse {
74 pub max_proof_age: u64,
75 pub estimated_gas_cost_uboot: String,
76 pub core_contract: String,
77 pub stake_contract: String,
78 pub refer_contract: String,
79 pub token_contract: String,
80 pub admin: String,
81 pub paused: bool,
82 pub window_size: u32,
83 pub pid_interval: u64,
84 pub genesis_time: u64,
85 pub min_difficulty: u32,
86 pub alpha: u64,
87 pub beta: u64,
88 pub fee_bucket_duration: u64,
89 pub fee_num_buckets: u32,
90 pub warmup_base_rate: String,
91}
92
93#[derive(Debug, Clone, Serialize, Deserialize)]
94pub struct WindowStatusResponse {
95 pub proof_count: u64,
96 pub window_d_rate: String,
97 pub window_size: u32,
98 pub window_entries: u32,
99 pub base_rate: String,
100 pub alpha: String,
101 pub beta: String,
102}
103
104#[derive(Debug, Clone, Serialize, Deserialize)]
105pub struct MineEmissionInfoResponse {
106 pub alpha: u64,
107 pub beta: u64,
108 pub emission_rate: String,
109 pub gross_rate: String,
110 pub mining_rate: String,
111 pub staking_rate: String,
112 pub windowed_fees: String,
113}
114
115#[derive(Debug, Clone, Serialize, Deserialize)]
116pub struct MineStatsResponse {
117 pub total_proofs: u64,
118 pub total_rewards: String,
119 pub unique_miners: u64,
120 pub avg_difficulty: u32,
121}
122
123#[derive(Debug, Clone, Serialize, Deserialize)]
124pub struct MineMinerStatsResponse {
125 pub address: String,
126 pub proofs_submitted: u64,
127 pub total_rewards: String,
128 pub last_proof_time: u64,
129}
130
131#[derive(Debug, Clone, Serialize, Deserialize)]
132pub struct MineRewardResponse {
133 pub gross_reward: String,
134 pub estimated_gas_cost_uboot: String,
135 pub earns_reward: bool,
136}
137
138#[derive(Debug, Clone, Serialize, Deserialize)]
143#[serde(rename_all = "snake_case")]
144pub enum StakeQueryMsg {
145 Config {},
146 TotalStaked {},
147 StakeInfo { address: String },
148 StakingStats {},
149}
150
151#[derive(Debug, Clone, Serialize, Deserialize)]
152#[serde(rename_all = "snake_case")]
153pub enum StakeExecuteMsg {
154 Unstake { amount: String },
155 ClaimUnbonding {},
156 ClaimStakingRewards {},
157}
158
159#[derive(Debug, Clone, Serialize, Deserialize)]
160pub struct StakeInfoResponse {
161 pub address: String,
162 pub staked_amount: String,
163 pub pending_unbonding: String,
164 pub pending_unbonding_until: u64,
165 pub claimable_rewards: String,
166}
167
168#[derive(Debug, Clone, Serialize, Deserialize)]
173#[serde(rename_all = "snake_case")]
174pub enum ReferQueryMsg {
175 Config {},
176 ReferrerOf { miner: String },
177 ReferralInfo { address: String },
178 CommunityPoolBalance {},
179}
180
181#[derive(Debug, Clone, Serialize, Deserialize)]
182#[serde(rename_all = "snake_case")]
183pub enum ReferExecuteMsg {
184 ClaimRewards {},
185}
186
187#[derive(Debug, Clone, Serialize, Deserialize)]
188pub struct ReferralInfoResponse {
189 pub address: String,
190 pub referral_rewards: String,
191 pub referrals_count: u64,
192}