Register an asset. Pricing comes from the per-asset oracle (if set via
set_asset_oracle) or the global primary/fallback oracles.
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).
AssetHandlerError::AssetNotRegistered]AssetHandlerError::NoPrimaryOracle] — primary not configured and no per-asset oracleAssetHandlerError::PriceNotAvailable] — all oracles failed or returned 0fn 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.
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.
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.
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,
)