Borrower repays principal + interest before maturity. Releases collateral back to borrower, sends repayment to vault, marks loan REPAID and vault SETTLED.
fn repay(
env: soroban_sdk::Env,
borrower: soroban_sdk::Address,
loan_id: u64,
) -> Result<(), SettlementError>
fn is_paused(env: soroban_sdk::Env) -> bool
One-time setup. Registers all sibling contract addresses.
fn initialize(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
offer_book: soroban_sdk::Address,
loan_position: soroban_sdk::Address,
collateral_vault: soroban_sdk::Address,
lending_vault_factory: soroban_sdk::Address,
) -> Result<(), ProtocolError>
fn set_paused(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
paused: bool,
) -> Result<(), ProtocolError>
DirectClaim default path: after maturity, collateral is transferred from escrow directly to the lending vault for lender redemption. For LiquidatorBuyout, marks loan defaulted and waits for liquidator.
fn claim_default(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
loan_id: u64,
) -> Result<(), SettlementError>
fn is_liquidator(env: soroban_sdk::Env, address: soroban_sdk::Address) -> bool
Match a funded borrow request to a loan. Transfers collateral into escrow, disburses principal to borrower, creates a Loan record, and transitions vault to ACTIVE.
fn match_request(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
request_id: u64,
) -> Result
fn add_liquidator(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
liquidator: soroban_sdk::Address,
) -> Result<(), ProtocolError>
LiquidatorBuyout default path: whitelisted liquidator pays USDC into the vault and receives the collateral from escrow.
fn liquidator_buyout(
env: soroban_sdk::Env,
liquidator: soroban_sdk::Address,
loan_id: u64,
usdc_amount: i128,
) -> Result<(), SettlementError>
fn remove_liquidator(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
liquidator: soroban_sdk::Address,
) -> Result<(), ProtocolError>