#![allow(unused)]
fn main() {
struct StakingPool has key, store {
id: UID,
/// The epoch at which this pool became active.
/// The value is `None` if the pool is pre-active and `Some(<epoch_number>)` if active or inactive.
activation_epoch: Option<u64>,
/// The epoch at which this staking pool ceased to be active. `None` = {pre-active, active},
/// `Some(<epoch_number>)` if in-active, and it was de-activated at epoch `<epoch_number>`.
deactivation_epoch: Option<u64>,
/// The total number of SUI tokens in this pool, including the SUI in the rewards_pool, as well as in all the principal
/// in the `StakedSui` object, updated at epoch boundaries.
sui_balance: u64,
/// The epoch stake rewards will be added here at the end of each epoch.
rewards_pool: Balance<SUI>,
/// Total number of pool tokens issued by the pool.
pool_token_balance: u64,
/// Exchange rate history of previous epochs. Key is the epoch number.
/// The entries start from the `activation_epoch` of this pool and contains exchange rates at the beginning of each epoch,
/// i.e., right after the rewards for the previous epoch have been deposited into the pool.
exchange_rates: Table<u64, PoolTokenExchangeRate>,
/// Pending stake amount for this epoch, emptied at epoch boundaries.
pending_stake: u64,
/// Pending stake withdrawn during the current epoch, emptied at epoch boundaries.
/// This includes both the principal and rewards SUI withdrawn.
pending_total_sui_withdraw: u64,
/// Pending pool token withdrawn during the current epoch, emptied at epoch boundaries.
pending_pool_token_withdraw: u64,
/// Any extra fields that's not defined statically.
extra_fields: Bag,
}
}