fn admin(env: soroban_sdk::Env) -> soroban_sdk::Address
fn pause(env: soroban_sdk::Env)
Deposit XLM and receive sXLM tokens.
fn deposit(env: soroban_sdk::Env, user: soroban_sdk::Address, xlm_amount: i128)
fn unpause(env: soroban_sdk::Env)
Upgrade the contract WASM. Only callable by admin.
fn upgrade(env: soroban_sdk::Env, new_wasm_hash: soroban_sdk::BytesN<32>)
fn is_paused(env: soroban_sdk::Env) -> bool
fn set_admin(env: soroban_sdk::Env, new_admin: soroban_sdk::Address)
Initialize the staking contract.
fn initialize(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
sxlm_token: soroban_sdk::Address,
native_token: soroban_sdk::Address,
cooldown_period: u32,
)
Add staking rewards — admin sends real XLM into the contract. Splits: 10% → TreasuryBalance, 90% → TotalXlmStaked (raises exchange rate). Admin must have approved this amount. XLM is transferred from admin → contract.
fn add_rewards(env: soroban_sdk::Env, amount: i128)
fn set_treasury(env: soroban_sdk::Env, treasury: soroban_sdk::Address)
fn add_liquidity(env: soroban_sdk::Env, amount: i128)
Bump instance TTL — can be called by anyone to keep the contract alive.
fn bump_instance(env: soroban_sdk::Env)
Withdraw accumulated protocol fees to the treasury address.
fn withdraw_fees(env: soroban_sdk::Env)
fn apply_slashing(env: soroban_sdk::Env, slash_amount: i128)
fn get_validators(env: soroban_sdk::Env) -> soroban_sdk::Vec
fn get_withdrawal(env: soroban_sdk::Env, withdrawal_id: u64) -> WithdrawalRequest
Claim a delayed withdrawal after cooldown has expired.
fn claim_withdrawal(
env: soroban_sdk::Env,
user: soroban_sdk::Address,
withdrawal_id: u64,
)
fn liquidity_buffer(env: soroban_sdk::Env) -> i128
fn protocol_fee_bps(env: soroban_sdk::Env) -> i128
fn recalibrate_rate(env: soroban_sdk::Env) -> i128
fn total_xlm_staked(env: soroban_sdk::Env) -> i128
fn treasury_balance(env: soroban_sdk::Env) -> i128
fn get_exchange_rate(env: soroban_sdk::Env) -> i128
fn total_sxlm_supply(env: soroban_sdk::Env) -> i128
fn update_validators(
env: soroban_sdk::Env,
validators: soroban_sdk::Vec,
)
Request withdrawal: burns sXLM and returns XLM.
fn request_withdrawal(
env: soroban_sdk::Env,
user: soroban_sdk::Address,
sxlm_amount: i128,
)
fn get_cooldown_period(env: soroban_sdk::Env) -> u32
fn set_cooldown_period(env: soroban_sdk::Env, new_cooldown: u32)