Contract 23af1f06c7935313d3e20627e28d4714fc699971f3b5ef1d1cb84599d5a16ec9

← Back to Index 📥 Download WASM

Meta

rssdkver 22.0.11#34f7f53ae31e0fd02aab436a9872e79fa671ca02
rsver 1.94.0

Instances

  • CALAEFXRQCI4KQH7QSUAEB6ABIR62VWSJXOT3PSN4ZUQ5UKOPEIGKG5V
  • CCIGLZONH33PMXUHPA6NJKCN4VKKFCE3624DFXYF2HF6LQ3ORTR7UAUE
  • CCWSFO2Z2MPRE4UDDOVJ536BP2KKZRQTGGPQB3JJWW2NJAJFF3KCXBQL
  • CDSV6OL2STTCBL435NQ5NAVMYFUIODEIXWHDUJ5MRDZL7ATYJUFIOBW7

Interface

fn deposit(
    env: soroban_sdk::Env,
    from: soroban_sdk::Address,
    lp_token: soroban_sdk::Address,
    amount: i128,
) -> i128
fn harvest(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    lp_token: soroban_sdk::Address,
    reward_amount: i128,
)
fn version(env: soroban_sdk::Env) -> u32
fn get_mode(env: soroban_sdk::Env) -> VaultMode
fn withdraw(
    env: soroban_sdk::Env,
    from: soroban_sdk::Address,
    lp_token: soroban_sdk::Address,
    df_token_amount: i128,
) -> i128
fn get_keeper(env: soroban_sdk::Env) -> soroban_sdk::Address
fn initialize(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    keeper: soroban_sdk::Address,
    mode: VaultMode,
)
fn get_balance(env: soroban_sdk::Env, user: soroban_sdk::Address) -> (i128, i128)

Get the RAW$ AMM contract address.

fn get_amm_address(env: soroban_sdk::Env) -> soroban_sdk::Address

Set the RAW$ AMM contract address. Admin-only, immutable after first set.

fn set_amm_address(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    amm: soroban_sdk::Address,
)
fn get_total_supply(env: soroban_sdk::Env) -> i128

Safe Mode deposit: routes single-token deposit into RAW$ AMM via C2C.

Atomic flow:

  1. Pull token_in from caller
  2. Query AMM for token_a and token_b addresses
  3. Split 50/50: swap half for token_pair via AMM exchange()
  4. Add liquidity to AMM with both sides balanced via add_liquidity()
  5. Mint dfTokens proportional to LP shares received
  6. Update vault positions map

If any step fails, the entire transaction reverts — user keeps their tokens.

fn deposit_safe_mode(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    token_in: soroban_sdk::Address,
    amount_in: i128,
    min_shares: i128,
) -> i128
fn get_soroswap_router(env: soroban_sdk::Env) -> soroban_sdk::Address

Set the Soroswap router address. Admin-only, immutable after first set.

fn set_soroswap_router(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    router: soroban_sdk::Address,
)

Single-asset deposit into a Soroswap LP pool.

Atomic flow:

  1. Pull token_in from caller
  2. Split 50/50: swap half for token_pair via Soroswap router
  3. Add liquidity to target pool via Soroswap router
  4. Mint dfTokens proportional to LP tokens received
  5. Update positions map

If any step fails, the entire transaction reverts — user keeps their tokens.

fn deposit_single_asset(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    token_in: soroban_sdk::Address,
    amount_in: i128,
    target_pool: soroban_sdk::Address,
    min_lp_out: i128,
) -> i128

Imports

WebAssembly Text (WAT) ▶