Contract 6fd2e807c8b3c046420813b263f6476b35760908bcd656f5ee22c563d86000ba

← Back to Index 📥 Download WASM

Meta

cliver 23.2.0#8c559e832fd969aa469784b66e70891fadf94f0a
rssdkver 23.5.3#d3e1ab2424388b10893b796b0c8e405c5edd03d2
rsver 1.94.0

Instances

  • CANPXUJXJOTYJHFX3OKQPBRKI4YCVCWS4CJXXEGSSSVCJTSTXW5BPJ4D
  • CAQMXEEPMUKWBXZOETBWIZQENE2VDVLQWSI5ZIQ2I5KNR4RDA3LBESBX
  • CAQV6TD27ZBOSR5ZQ4OZVTRRXNISFQZMTH3QUJJIKV3KRJPUEEKFHPDD
  • CB5THAGEAPCXZNFAQSPCRILLALB6FLW5J2AQK5NRZPUYTE4NPKQO6TEQ
  • CBM6QVTH3IJVTU7JK7POEN6YAK6E7P6W7KYLOBEBTZ2KXWBCGL4Z3HKI
  • CBWZ6YJZDSSGK2XSUV67ZIKCWNDYAVVIMPO4JEQYX3GTW6DZK62TQ3LT
  • CCALCYHD2ITMPPETDUIGX7RY22OUU7O75ZS6BXLRCZZKL46BAFP55Q63
  • CCBRVB7QTOF4Z6MMZSGMFQ7SRJOZSPIGOORLYF4R3LCNY6E5IMB7A3ET
  • CCEPFTEWUW2KOW4GKEY6BKCQTQ5PKLENFQDIIP4EGHQU7FDKKT252DRI
  • CCJZH7YKQM5UOIHTTNYTU3K6HUX2XBHENWZKN2CN34EREY7GXK34W2HC
  • CCPLPM4TORONIW7ZTE5BCPAQFSULYMCZTWOZAV37NCEFZALOOOQST6LT
  • CCSBVVCGY77QDQTZYW6DTSEZO2VOWBXSEKLSWJYYA3UEZ3YRSIG2WRBQ
  • CCZA5JVXVFINBUCJ5DJF3HCGKRWFAD7J7MBOVKMLWOQNHYXTADZ5RVVC
  • CDIXFMCWMSYEFHMJ2MV2FZ5M523KYFCDNQT6PMG3WKWSBJOEFZ2I2FET
  • CDNFEKG7WQYBX2Z7MBLPMDR64YHNOKS3LBXW4ET76OCP3MU7IHDNCV3O
  • CDSN2VBMLYAPEIQC5MRGQJHEQ52Q7RBFMOMOBRM3RQYU5IPQLQCVEOFA

Interface

fn burn(env: soroban_sdk::Env, from: soroban_sdk::Address, amount: i128)
fn mint(
    env: soroban_sdk::Env,
    minter: soroban_sdk::Address,
    shares: i128,
) -> Result
fn name(env: soroban_sdk::Env) -> soroban_sdk::String
fn asset(env: soroban_sdk::Env) -> Result
fn redeem(
    env: soroban_sdk::Env,
    redeemer: soroban_sdk::Address,
    shares: i128,
) -> Result
fn symbol(env: soroban_sdk::Env) -> soroban_sdk::String
fn approve(
    env: soroban_sdk::Env,
    owner: soroban_sdk::Address,
    spender: soroban_sdk::Address,
    amount: i128,
    live_until_ledger: u32,
)
fn balance(env: soroban_sdk::Env, account: soroban_sdk::Address) -> i128
fn deposit(
    env: soroban_sdk::Env,
    depositor: soroban_sdk::Address,
    amount: i128,
) -> Result
fn upgrade(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    new_wasm_hash: soroban_sdk::BytesN<32>,
) -> Result<(), LendingVaultError>
fn bump_ttl(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
) -> Result<(), LendingVaultError>
fn decimals(env: soroban_sdk::Env) -> u32
fn max_mint(env: soroban_sdk::Env, owner: soroban_sdk::Address) -> i128
fn transfer(
    env: soroban_sdk::Env,
    from: soroban_sdk::Address,
    to: soroban_sdk::Address,
    amount: i128,
)
fn withdraw(
    env: soroban_sdk::Env,
    withdrawer: soroban_sdk::Address,
    assets: i128,
) -> Result
fn allowance(
    env: soroban_sdk::Env,
    owner: soroban_sdk::Address,
    spender: soroban_sdk::Address,
) -> i128
fn burn_from(
    env: soroban_sdk::Env,
    spender: soroban_sdk::Address,
    from: soroban_sdk::Address,
    amount: i128,
)
fn is_funded(env: soroban_sdk::Env) -> bool
fn is_paused(env: soroban_sdk::Env) -> bool
fn get_status(env: soroban_sdk::Env) -> VaultStatus
fn initialize(
    env: soroban_sdk::Env,
    vault_id: u64,
    request_id: u64,
    asset_token: soroban_sdk::Address,
    max_capacity: i128,
    deposit_deadline: u64,
    settlement_engine: soroban_sdk::Address,
    offer_book: soroban_sdk::Address,
    share_name: soroban_sdk::String,
    share_symbol: soroban_sdk::String,
    borrower: soroban_sdk::Address,
) -> Result<(), ProtocolError>
fn max_redeem(env: soroban_sdk::Env, owner: soroban_sdk::Address) -> i128
fn set_paused(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    paused: bool,
) -> Result<(), LendingVaultError>
fn mark_active(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    loan_id: u64,
) -> Result<(), LendingVaultError>
fn mark_closed(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
) -> Result<(), LendingVaultError>
fn max_deposit(env: soroban_sdk::Env, owner: soroban_sdk::Address) -> i128

OpenZeppelin / stellar-tokens vault naming: underlying asset set at initialize. Panics if the vault was never initialized (same as [Vault::query_asset]).

fn query_asset(env: soroban_sdk::Env) -> soroban_sdk::Address

Fungible share ledger lives on this contract (same pattern as splyce-stellar-s-token SToken).

fn share_token(
    env: soroban_sdk::Env,
) -> Result
fn get_vault_id(env: soroban_sdk::Env) -> u64
fn mark_settled(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
) -> Result<(), LendingVaultError>
fn max_withdraw(env: soroban_sdk::Env, owner: soroban_sdk::Address) -> i128
fn preview_mint(env: soroban_sdk::Env, shares: i128) -> i128
fn total_assets(env: soroban_sdk::Env) -> i128
fn total_shares(env: soroban_sdk::Env) -> i128
fn total_supply(env: soroban_sdk::Env) -> i128

Vault-as-matcher: invoke configured settlement engine match_request with caller = this (principal pulled from vault).

Authorization: caller must be the borrow request creator, a settlement engine processor, or the settlement admin. The engine address is always read from vault config (not a parameter).

Soroban forbids re-entering this contract from within match_request, so post-match accounting (sync_after_principal_matched) runs here after match_request returns instead of via an SE callback.

fn execute_match(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    request_id: u64,
) -> Result

Move surplus underlying (ledger balance minus [Self::total_assets] bookkeeping for the payout token for the current status) to recipient. Only the settlement engine may call.

Use when users mistakenly transfer tokens into the vault, or other dust accumulates. Does not change TotalAssets (LP claims are unchanged).

fn sweep_surplus(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    token_addr: soroban_sdk::Address,
    recipient: soroban_sdk::Address,
) -> Result
fn transfer_from(
    env: soroban_sdk::Env,
    spender: soroban_sdk::Address,
    from: soroban_sdk::Address,
    to: soroban_sdk::Address,
    amount: i128,
)
fn get_request_id(env: soroban_sdk::Env) -> u64
fn mark_defaulted(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
) -> Result<(), LendingVaultError>

Pro-rata conversion preview (current TotalAssets / share supply). Not claimable exit: use max_redeem / max_withdraw to know whether redeem / burn will succeed (redemption is gated until Settled / Defaulted / Closed; see protocol docs).

fn preview_redeem(env: soroban_sdk::Env, shares: i128) -> i128
fn preview_deposit(env: soroban_sdk::Env, assets: i128) -> i128

Shares required to withdraw assets at current book (rounded up). Not claimable exit: use max_withdraw / max_redeem for whether exit is allowed.

fn preview_withdraw(env: soroban_sdk::Env, assets: i128) -> i128
fn convert_to_assets(env: soroban_sdk::Env, shares: i128) -> i128
fn convert_to_shares(env: soroban_sdk::Env, assets: i128) -> i128
fn receive_repayment(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    amount: i128,
) -> Result<(), LendingVaultError>

Borrower cancel penalty: principal token already transferred into this contract; bumps TotalAssets without minting shares (pro-rata bonus to LPs).

fn receive_cancel_penalty(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    amount: i128,
) -> Result<(), LendingVaultError>

After settlement_engine pulls amount of principal from this vault, sync book value and go Active. Prefer routing matches through [Self::execute_match]; this entrypoint remains for non-reentrant call paths.

fn record_match_principal(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    amount: i128,
    loan_id: u64,
) -> Result<(), LendingVaultError>
fn receive_default_collateral(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    collateral_token: soroban_sdk::Address,
    amount: i128,
) -> Result<(), LendingVaultError>
fn receive_liquidation_proceeds(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    amount: i128,
) -> Result<(), LendingVaultError>

Imports

WebAssembly Text (WAT) ▶