Contract 37b29dbc6407328183c23fa6f795bcbb72e63dd88847b5e0217f1e7a194104f9

← Back to Index 📥 Download WASM

Meta

rssdkver 23.4.1#e671b396f8bacf1370925f722df158b31c0baae5
rsver 1.91.0-nightly

Instances

  • CBWQPNCJHKFMZTKIUSMV3FSOTOZA2ICMCTPOS62PEZY6IZKGIDZ2TQO3
  • CBYN4JIALLNULBPHMMCWHJDFOJUEOLC6ZIUWSMBO7VEQMSSDG77LZ7L5

Interface

fn initialize(
    env: soroban_sdk::Env,
    pool_admin: soroban_sdk::Address,
    kinetic_router: soroban_sdk::Address,
    price_oracle: soroban_sdk::Address,
) -> Result<(), KineticRouterError>
fn init_reserve(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    underlying_asset: soroban_sdk::Address,
    a_token_impl: soroban_sdk::Address,
    variable_debt_impl: soroban_sdk::Address,
    interest_rate_strategy: soroban_sdk::Address,
    treasury: soroban_sdk::Address,
    params: InitReserveParams,
) -> Result<(), KineticRouterError>

Store the aToken WASM hash for factory deployments. Must be called by admin before deploying reserves via factory.

fn set_a_token_wasm_hash(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    hash: soroban_sdk::BytesN<32>,
) -> Result<(), KineticRouterError>

Store the debt token WASM hash for factory deployments. Must be called by admin before deploying reserves via factory.

fn set_debt_token_wasm_hash(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    hash: soroban_sdk::BytesN<32>,
) -> Result<(), KineticRouterError>

Deploy and initialize aToken and debt token contracts, then register the reserve. Returns (aToken_address, debt_token_address).

fn deploy_and_init_reserve(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    underlying_asset: soroban_sdk::Address,
    interest_rate_strategy: soroban_sdk::Address,
    treasury: soroban_sdk::Address,
    a_token_name: soroban_sdk::String,
    a_token_symbol: soroban_sdk::String,
    debt_token_name: soroban_sdk::String,
    debt_token_symbol: soroban_sdk::String,
    params: InitReserveParams,
) -> Result<(soroban_sdk::Address, soroban_sdk::Address), KineticRouterError>
fn configure_reserve_as_collateral(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    asset: soroban_sdk::Address,
    ltv: u32,
    liquidation_threshold: u32,
    liquidation_bonus: u32,
) -> Result<(), KineticRouterError>
fn enable_borrowing_on_reserve(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    asset: soroban_sdk::Address,
    stable_rate_enabled: bool,
) -> Result<(), KineticRouterError>
fn set_reserve_active(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    asset: soroban_sdk::Address,
    active: bool,
) -> Result<(), KineticRouterError>
fn set_reserve_freeze(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    asset: soroban_sdk::Address,
    freeze: bool,
) -> Result<(), KineticRouterError>
fn set_reserve_pause(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    asset: soroban_sdk::Address,
    paused: bool,
) -> Result<(), KineticRouterError>
fn set_reserve_factor(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    asset: soroban_sdk::Address,
    reserve_factor: u32,
) -> Result<(), KineticRouterError>
fn set_reserve_interest_rate(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    asset: soroban_sdk::Address,
    rate_strategy: soroban_sdk::Address,
) -> Result<(), KineticRouterError>
fn set_supply_cap(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    asset: soroban_sdk::Address,
    supply_cap: u128,
) -> Result<(), KineticRouterError>
fn set_borrow_cap(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    asset: soroban_sdk::Address,
    borrow_cap: u128,
) -> Result<(), KineticRouterError>
fn set_debt_ceiling(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    asset: soroban_sdk::Address,
    debt_ceiling: u128,
) -> Result<(), KineticRouterError>
fn set_reserve_flashloaning(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    asset: soroban_sdk::Address,
    enabled: bool,
) -> Result<(), KineticRouterError>
fn update_atoken(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    asset: soroban_sdk::Address,
    implementation: soroban_sdk::BytesN<32>,
) -> Result<(), KineticRouterError>
fn update_variable_debt_token(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    asset: soroban_sdk::Address,
    implementation: soroban_sdk::BytesN<32>,
) -> Result<(), KineticRouterError>
fn drop_reserve(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    asset: soroban_sdk::Address,
) -> Result<(), KineticRouterError>

Pause reserve deployment (emergency admin only)

Arguments

  • caller: Emergency admin address (must be authorized)

Returns

  • Ok(()): Reserve deployment paused successfully
  • Err(KineticRouterError::Unauthorized): Caller is not emergency admin
fn pause_reserve_deployment(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
) -> Result<(), KineticRouterError>

Unpause reserve deployment (emergency admin only)

Arguments

  • caller: Emergency admin address (must be authorized)

Returns

  • Ok(()): Reserve deployment unpaused successfully
  • Err(KineticRouterError::Unauthorized): Caller is not emergency admin
fn unpause_reserve_deployment(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
) -> Result<(), KineticRouterError>

Check if reserve deployment is paused

Returns

  • bool: True if reserve deployment is paused, false otherwise
fn is_reserve_deployment_paused(env: soroban_sdk::Env) -> bool
fn get_pool_admin(env: soroban_sdk::Env) -> soroban_sdk::Address
fn get_kinetic_router(env: soroban_sdk::Env) -> soroban_sdk::Address
fn get_price_oracle(env: soroban_sdk::Env) -> soroban_sdk::Address
fn add_oracle_asset(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    asset: Asset,
) -> Result<(), KineticRouterError>
fn remove_oracle_asset(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    asset: Asset,
) -> Result<(), KineticRouterError>
fn set_oracle_asset_enabled(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    asset: Asset,
    enabled: bool,
) -> Result<(), KineticRouterError>
fn set_oracle_manual_override(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    asset: Asset,
    price: Option,
    expiry_timestamp: Option,
) -> Result<(), KineticRouterError>
fn get_oracle_whitelisted_assets(
    env: soroban_sdk::Env,
) -> Result, KineticRouterError>
fn get_oracle_asset_config(
    env: soroban_sdk::Env,
    asset: Asset,
) -> Result, KineticRouterError>
fn get_oracle_asset_price(
    env: soroban_sdk::Env,
    asset: Asset,
) -> Result
fn get_oracle_asset_price_data(
    env: soroban_sdk::Env,
    asset: Asset,
) -> Result

Set incentives contract on pool and update all existing tokens

fn set_incentives_contract(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    incentives: soroban_sdk::Address,
) -> Result
fn upgrade(
    env: soroban_sdk::Env,
    new_wasm_hash: soroban_sdk::BytesN<32>,
) -> Result<(), KineticRouterError>
fn version(env: soroban_sdk::Env) -> u32

Get current admin address

fn get_admin(env: soroban_sdk::Env) -> Result

Propose a new admin address (two-step transfer, step 1). Only the current admin can propose a new admin. The proposed admin must call accept_admin to complete the transfer.

Arguments

  • caller - Current admin address (must be authorized)
  • pending_admin - Proposed new admin address

Errors

  • Unauthorized - Caller is not current admin
fn propose_admin(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    pending_admin: soroban_sdk::Address,
) -> Result<(), KineticRouterError>

Accept admin role (two-step transfer, step 2). Only the pending admin can call this to finalize the transfer.

Arguments

  • caller - Pending admin address (must be authorized)

Errors

  • NoPendingAdmin - No pending admin proposal exists
  • InvalidPendingAdmin - Caller is not the pending admin
fn accept_admin(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
) -> Result<(), KineticRouterError>

Cancel a pending admin proposal. Only the current admin can cancel a pending proposal.

Arguments

  • caller - Current admin address (must be authorized)

Errors

  • Unauthorized - Caller is not current admin
  • NoPendingAdmin - No pending admin proposal exists
fn cancel_admin_proposal(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
) -> Result<(), KineticRouterError>

Get the pending admin address, if any.

fn get_pending_admin(
    env: soroban_sdk::Env,
) -> Result

Imports

WebAssembly Text (WAT) ▶