use cosmwasm_schema::{cw_serde, QueryResponses};
use cosmwasm_std::Uint128;
#[cw_serde]
pub struct InstantiateMsg {
/// litium-core contract address
pub core_contract: String,
/// litium-mine contract address
pub mine_contract: String,
/// Default community pool destination address
pub community_pool_addr: Option<String>,
/// Admin address (defaults to sender)
pub admin: Option<String>,
}
#[cw_serde]
pub enum ExecuteMsg {
/// Bind a referrer for a miner. Only litium-mine can call.
BindReferrer {
miner: String,
referrer: String,
},
/// Accrue referral reward for a miner's referrer. Only litium-mine can call.
/// If miner has no referrer, accrues to community pool.
AccrueReward {
miner: String,
amount: Uint128,
},
/// Claim accumulated referral rewards. Called by referrer directly.
ClaimRewards {},
/// Claim community pool balance. Admin only.
ClaimCommunityPool {
to: String,
},
/// Update config. Admin only.
UpdateConfig {
core_contract: Option<String>,
mine_contract: Option<String>,
community_pool_addr: Option<String>,
admin: Option<String>,
},
/// Testing helper: mutate critical runtime state in-place (admin only).
ApplyTestingOverrides {
overrides: TestingOverrides,
},
/// Full state reset for daily testing (admin only).
/// Zeroes referral stats, community pool, and clears all referrer bindings.
ResetState {},
Pause {},
Unpause {},
}
#[cw_serde]
pub struct TestingOverrides {
pub paused: Option<bool>,
pub community_pool_addr: Option<String>,
pub community_pool_balance: Option<Uint128>,
pub total_accrued_rewards: Option<Uint128>,
pub total_claimed_rewards: Option<Uint128>,
}
#[cw_serde]
#[derive(QueryResponses)]
pub enum QueryMsg {
#[returns(ConfigResponse)]
Config {},
#[returns(ReferrerOfResponse)]
ReferrerOf { miner: String },
#[returns(ReferralInfoResponse)]
ReferralInfo { address: String },
#[returns(CommunityPoolBalanceResponse)]
CommunityPoolBalance {},
#[returns(TotalPendingRewardsResponse)]
TotalPendingRewards {},
}
#[cw_serde]
pub struct ConfigResponse {
pub core_contract: String,
pub mine_contract: String,
pub community_pool_addr: Option<String>,
pub admin: String,
pub paused: bool,
}
#[cw_serde]
pub struct ReferrerOfResponse {
pub miner: String,
pub referrer: Option<String>,
}
#[cw_serde]
pub struct ReferralInfoResponse {
pub address: String,
pub referral_rewards: Uint128,
pub referrals_count: u64,
}
#[cw_serde]
pub struct CommunityPoolBalanceResponse {
pub balance: Uint128,
}
#[cw_serde]
pub struct TotalPendingRewardsResponse {
pub total_pending_rewards: Uint128,
}
cw-cyber/contracts/litium-refer/src/msg.rs
ฯ 0.0%
use ;
use Uint128;