Pause deposits and distributions. Withdraw + claim are NEVER pausable.
fn pause(env: soroban_sdk::Env, admin: soroban_sdk::Address)
fn deposit(env: soroban_sdk::Env, user: soroban_sdk::Address, amount: i128)
Resume deposits and distributions.
fn unpause(env: soroban_sdk::Env, admin: soroban_sdk::Address)
Upgrade contract WASM
fn upgrade(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
new_wasm_hash: soroban_sdk::BytesN<32>,
)
Withdraw a specific position after its lock expires. Auto-claims that position's accrued rewards on exit.
fn withdraw(env: soroban_sdk::Env, user: soroban_sdk::Address, pos_id: u32)
Get whether the vault is paused.
fn is_paused(env: soroban_sdk::Env) -> bool
Transfer admin
fn set_admin(
env: soroban_sdk::Env,
current_admin: soroban_sdk::Address,
new_admin: soroban_sdk::Address,
)
Extend contract instance TTL.
fn extend_ttl(env: soroban_sdk::Env)
Get a user's V1-style deposit info (backward compat for frontend transition).
fn get_deposit(env: soroban_sdk::Env, user: soroban_sdk::Address) -> UserInfo
Get a specific position.
fn get_position(
env: soroban_sdk::Env,
user: soroban_sdk::Address,
pos_id: u32,
) -> Position
Protocol 22+ constructor — flat args for Admin Bridge compatibility.
fn __constructor(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
aqua_token: soroban_sdk::Address,
reward_0: soroban_sdk::Address,
reward_1: soroban_sdk::Address,
reward_2: soroban_sdk::Address,
reward_3: soroban_sdk::Address,
lock_duration_secs: u64,
)
Claim accumulated rewards from positions whose lock term has expired. Positions still locked accrue rewards but cannot claim.
fn claim_rewards(env: soroban_sdk::Env, user: soroban_sdk::Address)
Get all active positions for a user.
fn get_positions(
env: soroban_sdk::Env,
user: soroban_sdk::Address,
) -> soroban_sdk::Vec<(u32, Position)>
Public: extend all position TTLs for a user.
fn extend_user_ttl(env: soroban_sdk::Env, user: soroban_sdk::Address)
Get the earliest lock expiry across all positions. Frontend uses this to show "🔒 CLAIM UNLOCKS May 13, 2027".
fn get_next_unlock(env: soroban_sdk::Env, user: soroban_sdk::Address) -> u64
Add a new reward token (admin only). Idempotent.
fn add_reward_token(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
token: soroban_sdk::Address,
)
Get vault config.
fn get_vault_config(env: soroban_sdk::Env) -> VaultConfig
Deposit reward tokens and update the global rewardPerToken.
fn distribute_revenue(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
reward_token: soroban_sdk::Address,
amount: i128,
)
Get pending rewards across ALL positions (locked + unlocked).
fn get_pending_rewards(
env: soroban_sdk::Env,
user: soroban_sdk::Address,
) -> soroban_sdk::Vec<(soroban_sdk::Address, i128)>
Get total AQUA deposited in the vault.
fn get_total_deposited(env: soroban_sdk::Env) -> i128