use cosmwasm_schema::cw_serde;
use cosmwasm_std::{Addr, Uint128, Uint256};
use cw_storage_plus::{Item, Map};

#[cw_serde]
pub struct StakeConfig {
    /// litium-core CW-20 contract (for mint requests on claim + token transfers)
    pub core_contract: Addr,
    /// litium-mine contract (authorized to accrue rewards)
    pub mine_contract: Addr,
    /// litium-core CW-20 contract address (same as core_contract, used as token_contract)
    pub token_contract: Addr,
    /// Unbonding period in seconds (default: 21 days)
    pub unbonding_period_seconds: u64,
    /// Admin address
    pub admin: Addr,
    /// Whether contract is paused
    pub paused: bool,
}

/// A single unbonding batch with its own maturity time.
#[cw_serde]
pub struct UnbondingBatch {
    pub amount: Uint128,
    pub unlock_at: u64,
}

/// Staker accounting entry
#[cw_serde]
pub struct StakerInfo {
    pub staked_amount: Uint128,
    /// Unbonding batches, each with independent maturity.
    pub unbonding_batches: Vec<UnbondingBatch>,
    pub claimable_rewards: Uint128,
    pub reward_index_snapshot: Uint256,
}

pub const CONFIG: Item<StakeConfig> = Item::new("config");
pub const STAKING_RESERVE: Item<Uint128> = Item::new("staking_reserve");
pub const STAKING_TOTAL_STAKED: Item<Uint128> = Item::new("staking_total_staked");
pub const STAKING_REWARD_INDEX: Item<Uint256> = Item::new("staking_reward_index");
pub const TOTAL_ACCRUED_REWARDS: Item<Uint128> = Item::new("total_accrued_rewards");
pub const TOTAL_CLAIMED_REWARDS: Item<Uint128> = Item::new("total_claimed_rewards");
pub const STAKERS: Map<&Addr, StakerInfo> = Map::new("stakers");

Dimensions

cw-cyber/contracts/cw-cyber-gift/src/state.rs
cw-cyber/contracts/cw-cyber-subgraph/src/state.rs
cw-cyber/contracts/cybernet/src/state.rs
cw-cyber/contracts/hub-libs/src/state.rs
cw-cyber/contracts/litium-wrap/src/state.rs
cw-cyber/contracts/litium-refer/src/state.rs
cw-cyber/contracts/graph-filter/src/state.rs
cw-cyber/contracts/hub-networks/src/state.rs
cw-cyber/contracts/hub-skills/src/state.rs
cw-cyber/contracts/hub-protocols/src/state.rs
cw-cyber/contracts/hub-tokens/src/state.rs
cw-cyber/contracts/std-test/src/state.rs
cw-cyber/contracts/hub-channels/src/state.rs
cw-cyber/contracts/cw-cyber-passport/src/state.rs
cw-cyber/contracts/litium-core/src/state.rs
cw-cyber/packages/hub-base/src/state.rs
cw-cyber/contracts/litium-mine/src/state.rs

Local Graph