Contract 68fa8f09c7b16b08d043f7e4fb1edffb47fe0aaffcb37c3cbc8b86d1be4fd515

← Back to Index 📥 Download WASM

Meta

rssdkver 22.0.9#3890521426d71bb4d892b21f5a283a1e836cfa38
rsver 1.92.0

Instances

  • CAPHIGGFAYHLZ535ZMMQDXITXXEQASWI2AQ5FSXAVPXSJB57A3S4HNWN

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>

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

Query current epoch Merkle root for a pool.

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

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) ▶