Contract 834fa4e38447f18908c206f35faa25f132d7a676a14a57689493065c5d4ed5c1

← Back to Index 📥 Download WASM

Meta

cliver 27.0.0#5a7c5fe76530bf4248477ac812fc757146b98cc4
rssdkver 26.1.0#175aa41306f383057a8cdfc84b68d931664fc34e
rsver 1.97.1

Instances

  • CAX7MOULCRKSXBMZRJFQBXBPM7RR7OHQCDXQW5XBSQQH4CE4J5QYGAX2
  • CB4TAOLSHFU2XVMXW55AM73U5KJL7F5ZQH6OAY3YKN5SKGWMLLXXKQ4C

Interface

fn admin(env: soroban_sdk::Env) -> soroban_sdk::Address
fn owner(env: soroban_sdk::Env) -> soroban_sdk::Address

Pause invest/rebalance (withdraw stays open). Auth: admin.

fn pause(env: soroban_sdk::Env)

Pull asset, deposit across allocations by weight, record positions. Auth: owner. T1: USDC-only, every swap == None.

fn invest(
    env: soroban_sdk::Env,
    asset: soroban_sdk::Address,
    total: i128,
    allocations: soroban_sdk::Vec,
) -> Result<(), soroban_sdk::Error>

Emergency: pull a vault's funds to the Owner if its protocol bricks redeem. Auth: admin. No fee; callable even when Paused.

fn rescue(
    env: soroban_sdk::Env,
    vault: soroban_sdk::Address,
) -> Result<(), soroban_sdk::Error>

Lift the pause. Auth: admin.

fn unpause(env: soroban_sdk::Env)

Replace the contract Wasm. Auth: admin (checked BEFORE the swap).

fn upgrade(env: soroban_sdk::Env, new_wasm_hash: soroban_sdk::BytesN<32>)

Withdraw amount (underlying; i128::MAX = whole position) from one vault back to the owner. Auth: owner. Allowed even when Paused. Both WithdrawOut variants are handled live (see withdraw.rs::deliver); a cross-asset Normalize reverts AdapterError while the Router is unset (dormant), not by shape.

fn withdraw(
    env: soroban_sdk::Env,
    vault: soroban_sdk::Address,
    amount: i128,
    out: WithdrawOut,
) -> Result<(), soroban_sdk::Error>
fn is_paused(env: soroban_sdk::Env) -> bool

Ledger state + raw shares_held per open vault. Display value is computed off-chain (no on-chain value read).

fn positions(env: soroban_sdk::Env) -> soroban_sdk::Vec

Accept a proposed admin rotation (step 2 of 2). Auth: the nominee.

fn accept_admin(env: soroban_sdk::Env) -> Result<(), soroban_sdk::Error>

Withdraw every position in full + drain caller-named idle assets. Skips a vault whose redeem reverts (exit-liveness). Auth: owner.

fn withdraw_all(
    env: soroban_sdk::Env,
    out: WithdrawOut,
    extra_idle: soroban_sdk::Vec,
) -> Result<(), soroban_sdk::Error>

Deploy-time init (Protocol-22 __constructor, atomic with deploy). Writes Owner/Admin/Registry + AutoRebalance=false/Paused=false; Nonce/ RebalanceOn/ActiveDeltaBps follow the read-default rule.

fn __constructor(
    env: soroban_sdk::Env,
    owner: soroban_sdk::Address,
    admin: soroban_sdk::Address,
    registry: soroban_sdk::Address,
)
fn auto_rebalance(env: soroban_sdk::Env) -> bool

Drop the bookkeeping row for a vault holding ZERO shares. Auth: owner. Refuses (PositionNotEmpty) while any share remains, and propagates a trapping balance read rather than treating it as empty.

fn close_position(
    env: soroban_sdk::Env,
    vault: soroban_sdk::Address,
) -> Result<(), soroban_sdk::Error>

Convert idle asset_in → asset_out via the whitelisted router (measured output ≥ amount_out_min). Auth: owner or keeper. Nonce-guarded.

fn rebalance_swap(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    nonce: u64,
    asset_in: soroban_sdk::Address,
    asset_out: soroban_sdk::Address,
    amount_in: i128,
    swap: SwapLeg,
) -> Result<(), soroban_sdk::Error>

Propose an admin rotation (step 1 of 2). Auth: current admin. Takes effect only once the nominee calls accept_admin.

fn transfer_admin(env: soroban_sdk::Env, new_admin: soroban_sdk::Address)

Emit a RebalanceNoOp receipt (target breached, no feasible move). Auth: owner or keeper. No state change; consumes no nonce.

fn note_no_rebalance(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    reason: soroban_sdk::Symbol,
    observed_bps: u32,
    target_bps: u32,
) -> Result<(), soroban_sdk::Error>

Deposit idle asset into a whitelisted active vault (debt-free). Auth: owner or keeper. Nonce-guarded.

fn rebalance_deposit(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    nonce: u64,
    vault: soroban_sdk::Address,
    asset: soroban_sdk::Address,
    amount: i128,
) -> Result<(), soroban_sdk::Error>

Redeem from a vault → fee → keep proceeds idle. Auth: owner or Registry keeper (gated by AutoRebalance + keeper_enabled). Nonce-guarded.

fn rebalance_withdraw(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    nonce: u64,
    vault: soroban_sdk::Address,
    amount: i128,
) -> Result<(), soroban_sdk::Error>

Opt in to keeper-driven rebalance (settle OFF→ON, snapshot the surcharge). Auth: owner. Idempotent.

fn enable_auto_rebalance(env: soroban_sdk::Env)

Opt out (settle ON→OFF) — the owner's instant kill-switch. Auth: owner.

fn disable_auto_rebalance(env: soroban_sdk::Env)

Imports

WebAssembly Text (WAT) ▶