Contract 97cfe76e69c0f45159e8229a7f2e0d1c289cfefee05a01df92a81d2e7b39bcde

← Back to Index 📥 Download WASM

Meta

home_domain thelumenaire.com
rssdkver 22.0.9#3890521426d71bb4d892b21f5a283a1e836cfa38
rsver 1.96.0
source_repo lumenbro/LPdispurse

Instances

  • CBDA7H3XLKL4ECSI54IPRGMYZLZFEIBR5FTEHI6DAH3UVHB53LMGBVAE

Interface

Transfer LMNR into the contract for reward distribution.

fn fund(
    env: soroban_sdk::Env,
    funder: soroban_sdk::Address,
    amount: i128,
) -> Result<(), ContractError>

Claim accumulated LMNR rewards. Returns amount claimed.

fn claim(
    env: soroban_sdk::Env,
    user: soroban_sdk::Address,
    pool_index: u32,
) -> Result

Prove LP position via Merkle proof and start earning rewards.

fn stake(
    env: soroban_sdk::Env,
    user: soroban_sdk::Address,
    pool_index: u32,
    lp_balance: i128,
    proof: soroban_sdk::Vec>,
) -> Result<(), ContractError>

Stop earning rewards. Pending rewards are preserved for later claiming.

fn unstake(
    env: soroban_sdk::Env,
    user: soroban_sdk::Address,
    pool_index: u32,
) -> Result<(), ContractError>

Admin-only: upgrade contract WASM to a new version.

fn upgrade(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    new_wasm_hash: soroban_sdk::BytesN<32>,
) -> Result<(), ContractError>

Register a new SDEX liquidity pool for staking.

fn add_pool(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    pool_id: soroban_sdk::BytesN<32>,
) -> Result

Admin-only: withdraw LMNR from the contract.

fn withdraw(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    amount: i128,
) -> Result<(), ContractError>

Transfer admin role to a new address.

fn set_admin(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    new_admin: soroban_sdk::Address,
) -> Result<(), ContractError>

One-time initialization.

fn initialize(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    lmnr_token: soroban_sdk::Address,
    reward_rate_per_sec: i128,
) -> Result<(), ContractError>

Pool hash at a given index.

fn get_pool_id(env: soroban_sdk::Env, pool_index: u32) -> soroban_sdk::BytesN<32>

Deactivate a pool. Settles rewards first, then resets total_staked. Users can still claim pending rewards after removal.

fn remove_pool(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    pool_index: u32,
) -> Result<(), ContractError>

Admin-only: reconcile a staker's balance without requiring a Merkle proof. Used by the cron to auto-adjust stakers who changed their LP holdings.

fn update_stake(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    user: soroban_sdk::Address,
    pool_index: u32,
    new_amount: i128,
) -> Result<(), ContractError>

Number of registered pools.

fn get_pool_count(env: soroban_sdk::Env) -> u32

Query pool accumulator state.

fn get_pool_state(env: soroban_sdk::Env, pool_index: u32) -> PoolState

Query unclaimed rewards for a user in a pool.

fn pending_reward(
    env: soroban_sdk::Env,
    user: soroban_sdk::Address,
    pool_index: u32,
) -> i128

Contract's LMNR balance available for rewards.

fn reward_balance(env: soroban_sdk::Env) -> i128

Admin-only: swap the reward token (LMNR SAC) to a new address. Used for the LMNR → xLMNR migration. Admin should withdraw existing reward balance and notify stakers to claim pending rewards before calling this — pending rewards denominated in the old token become unclaimable once the pointer changes.

fn set_lmnr_token(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    new_token: soroban_sdk::Address,
) -> Result<(), ContractError>

Query current epoch Merkle root for a pool.

fn get_merkle_root(env: soroban_sdk::Env, pool_index: u32) -> MerkleRootData

Global reward rate in LMNR stroops per second.

fn get_reward_rate(env: soroban_sdk::Env) -> i128

Query stake details for a user.

fn get_staker_info(
    env: soroban_sdk::Env,
    user: soroban_sdk::Address,
    pool_index: u32,
) -> StakerInfo

Post a new Merkle root for a pool's LP snapshots. Post a new Merkle root for the pool. Stakes carry over automatically.

fn set_merkle_root(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    pool_index: u32,
    root: soroban_sdk::BytesN<32>,
    snapshot_ledger: u32,
) -> Result<(), ContractError>

Update the global reward rate (LMNR stroops per second). Updates all active pools' accumulators before changing rate.

fn set_reward_rate(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    new_rate: i128,
) -> Result<(), ContractError>

Imports

WebAssembly Text (WAT) ▶