Lock days must be 30, 90, 180, or 365.
fn stake(
env: soroban_sdk::Env,
staker: soroban_sdk::Address,
amount: i128,
lock_days: u64,
)
Unstake + claim reward after lock period expires.
fn unstake(env: soroban_sdk::Env, staker: soroban_sdk::Address) -> (i128, i128)
fn get_stake(
env: soroban_sdk::Env,
staker: soroban_sdk::Address,
) -> Option
fn initialize(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
cvt_token: soroban_sdk::Address,
)
fn total_staked(env: soroban_sdk::Env) -> i128
Estimated pending reward for a staker (not yet claimable if locked).
fn pending_reward(env: soroban_sdk::Env, staker: soroban_sdk::Address) -> i128
Emergency early-exit — forfeit all rewards, 10% penalty burned.
fn emergency_unstake(env: soroban_sdk::Env, staker: soroban_sdk::Address) -> i128