Contract ac959a66798d0fe78f18b16db81e90b0866fa5459ee99006d177c790c9695578

← Back to Index 📥 Download WASM

Meta

cliver 26.0.0#60f7458e7ecffddf2f2d91dc6d0d2db4fab03ecc
rssdkver 22.0.11#34f7f53ae31e0fd02aab436a9872e79fa671ca02
rsver 1.94.1

Instances

  • CAOP3N7S3BDA53AELYJA7NH3QDMLS6BFUMGNKWG2XE2ESYKBR5XUSDM5
  • CB6PYGX7E4NDHUAFLIFFNKIYIKV2CDDQ5DJ52W2XWFVF6DJDNCRAIPGK
  • CC2JU77BSNEVRCLQSLG547V7MY7JF5PT4X4XLHO2SOGWN6H6HD6IIK3S

Interface

Register an asset. Pricing comes from the per-asset oracle (if set via set_asset_oracle) or the global primary/fallback oracles.

Errors

  • [AssetHandlerError::NotAdmin]
  • [AssetHandlerError::AssetAlreadyRegistered]
fn add_asset(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    asset: soroban_sdk::Address,
)
fn get_admin(env: soroban_sdk::Env) -> soroban_sdk::Address

Return the PRICE_PRECISION-scaled price of asset.

Resolution: per-asset oracle → primary (Reflector) → fallback (DIA).

Errors

  • [AssetHandlerError::AssetNotRegistered]
  • [AssetHandlerError::NoPrimaryOracle] — primary not configured and no per-asset oracle
  • [AssetHandlerError::PriceNotAvailable] — all oracles failed or returned 0
fn get_price(env: soroban_sdk::Env, asset: soroban_sdk::Address) -> i128

Batch price lookup — returns a Map<asset, price> for every requested asset.

Each asset goes through the same three-tier resolution as get_price. Panics if any asset is unregistered or has no available price.

fn get_prices(
    env: soroban_sdk::Env,
    assets: soroban_sdk::Vec,
) -> soroban_sdk::Map
fn accept_admin(env: soroban_sdk::Env, caller: soroban_sdk::Address)

Remove an asset from the registry. Also clears its per-asset oracle if set.

Errors

  • [AssetHandlerError::NotAdmin]
  • [AssetHandlerError::AssetNotRegistered]
fn remove_asset(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    asset: soroban_sdk::Address,
)
fn is_registered(env: soroban_sdk::Env, asset: soroban_sdk::Address) -> bool
fn __constructor(env: soroban_sdk::Env, admin: soroban_sdk::Address)
fn get_all_assets(env: soroban_sdk::Env) -> soroban_sdk::Vec

Return the per-asset oracle address, or None if not set.

fn get_asset_oracle(
    env: soroban_sdk::Env,
    asset: soroban_sdk::Address,
) -> Option

Assign a dedicated oracle to asset.

The oracle contract must implement get_price(asset: Address) -> i128. Use this for assets not covered by the global oracles or that need a specialised price feed.

Errors

  • [AssetHandlerError::NotAdmin]
  • [AssetHandlerError::AssetNotRegistered]
fn set_asset_oracle(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    asset: soroban_sdk::Address,
    oracle: soroban_sdk::Address,
)
fn set_pending_admin(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    new_admin: soroban_sdk::Address,
)
fn get_primary_oracle(env: soroban_sdk::Env) -> Option

Set the primary global oracle (e.g. a Reflector adapter). Must implement get_price(asset: Address) -> i128.

fn set_primary_oracle(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    oracle: soroban_sdk::Address,
)
fn get_fallback_oracle(env: soroban_sdk::Env) -> Option

Remove the per-asset oracle for asset so it falls back to global oracles.

Errors

  • [AssetHandlerError::NotAdmin]
fn remove_asset_oracle(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    asset: soroban_sdk::Address,
)

Set the fallback global oracle (e.g. a DIA adapter). Used when the primary oracle reverts or returns 0.

fn set_fallback_oracle(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    oracle: soroban_sdk::Address,
)

Imports

WebAssembly Text (WAT) ▶