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)
caller: Emergency admin address (must be authorized)Ok(()): Reserve deployment paused successfullyErr(KineticRouterError::Unauthorized): Caller is not emergency adminfn pause_reserve_deployment(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
) -> Result<(), KineticRouterError>
Unpause reserve deployment (emergency admin only)
caller: Emergency admin address (must be authorized)Ok(()): Reserve deployment unpaused successfullyErr(KineticRouterError::Unauthorized): Caller is not emergency adminfn unpause_reserve_deployment(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
) -> Result<(), KineticRouterError>
Check if reserve deployment is paused
bool: True if reserve deployment is paused, false otherwisefn 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
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.
caller - Current admin address (must be authorized)pending_admin - Proposed new admin addressUnauthorized - Caller is not current adminfn 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.
caller - Pending admin address (must be authorized)NoPendingAdmin - No pending admin proposal existsInvalidPendingAdmin - Caller is not the pending adminfn 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.
caller - Current admin address (must be authorized)Unauthorized - Caller is not current adminNoPendingAdmin - No pending admin proposal existsfn 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