Synchronous asset deposit into the underlying vault.
operator is explicit because Soroban has no ambient msg.sender; the
proxy must know which address to authenticate with require_auth().
This method follows the ERC-4626 deposit shape, but with the Soroban
operator address passed as an argument. The operator is also the asset
source for this compatibility entrypoint.
fn deposit(
env: soroban_sdk::Env,
operator: soroban_sdk::Address,
assets: i128,
receiver: soroban_sdk::Address,
) -> Result
Synchronous asset deposit with explicit minimum shares out.
This exposes the vault's native DepositWithMin slippage guard through
the proxy. operator is authenticated and is also the asset source for
this compatibility entrypoint.
fn deposit_with_min(
env: soroban_sdk::Env,
operator: soroban_sdk::Address,
assets: i128,
receiver: soroban_sdk::Address,
min_shares_out: i128,
) -> Result
Synchronous share mint into the underlying vault.
operator is explicit because Soroban has no ambient msg.sender; the
proxy must know which address to authenticate with require_auth().
The proxy previews the assets needed and submits a minimum share output
equal to shares. The operator is also the asset source for this
compatibility entrypoint.
fn mint(
env: soroban_sdk::Env,
operator: soroban_sdk::Address,
shares: i128,
receiver: soroban_sdk::Address,
) -> Result
Request an asynchronous redemption by asset amount.
This is an ERC-7540-style redemption request, not a synchronous
ERC-4626 withdrawal. It escrows shares in the vault and returns a
request_id; assets are not transferred to receiver until the
withdrawal becomes executable and execute_withdraw succeeds.
operator is explicit because Soroban has no ambient msg.sender.
The supported path is operator == owner. Operator-style delegated
requests require a transfer-from-backed vault request path.
fn withdraw(
env: soroban_sdk::Env,
operator: soroban_sdk::Address,
assets: i128,
receiver: soroban_sdk::Address,
owner: soroban_sdk::Address,
) -> Result
Request an asynchronous redemption by share amount.
This is an ERC-7540-style redemption request, not a synchronous
ERC-4626 redeem. It escrows shares in the vault and returns a
request_id; assets are not transferred to receiver until the
withdrawal becomes executable and execute_withdraw succeeds.
operator is explicit because Soroban has no ambient msg.sender.
The supported path is operator == owner. Operator-style delegated
requests require a transfer-from-backed vault request path.
fn redeem(
env: soroban_sdk::Env,
operator: soroban_sdk::Address,
shares: i128,
receiver: soroban_sdk::Address,
owner: soroban_sdk::Address,
) -> Result
Lower-level asynchronous redemption request with explicit slippage.
This mirrors the vault's native request path: owner authenticates,
shares are escrowed, and the returned request_id identifies the
queued redemption request. Claiming assets is a separate
execute_withdraw step after cooldown/liquidity conditions are met.
fn request_withdraw(
env: soroban_sdk::Env,
owner: soroban_sdk::Address,
receiver: soroban_sdk::Address,
shares: i128,
min_assets_out: i128,
) -> Result
Execute the next claimable queued withdrawal.
operator is the authenticated vault executor/keeper, not a request id.
This method executes according to the vault's queue and authorization
policy; it does not select a withdrawal request by request_id.
fn execute_withdraw(
env: soroban_sdk::Env,
operator: soroban_sdk::Address,
) -> Result<(), ContractError>
fn asset(env: soroban_sdk::Env) -> Result
fn total_assets(env: soroban_sdk::Env) -> Result
fn total_supply(env: soroban_sdk::Env) -> Result
fn balance_of(
env: soroban_sdk::Env,
owner: soroban_sdk::Address,
) -> Result
fn convert_to_shares(
env: soroban_sdk::Env,
assets: i128,
) -> Result
fn convert_to_assets(
env: soroban_sdk::Env,
shares: i128,
) -> Result
fn preview_deposit(env: soroban_sdk::Env, assets: i128) -> Result
fn preview_mint(env: soroban_sdk::Env, shares: i128) -> Result
fn preview_withdraw(env: soroban_sdk::Env, assets: i128) -> Result
fn preview_redeem(env: soroban_sdk::Env, shares: i128) -> Result
fn max_deposit(
env: soroban_sdk::Env,
receiver: soroban_sdk::Address,
) -> Result
fn max_mint(
env: soroban_sdk::Env,
receiver: soroban_sdk::Address,
) -> Result
fn max_withdraw(
env: soroban_sdk::Env,
owner: soroban_sdk::Address,
) -> Result
fn max_redeem(
env: soroban_sdk::Env,
owner: soroban_sdk::Address,
) -> Result
fn decimals(env: soroban_sdk::Env) -> Result
fn name(env: soroban_sdk::Env) -> Result
fn symbol(env: soroban_sdk::Env) -> Result
fn initialize(
env: soroban_sdk::Env,
vault_address: soroban_sdk::Address,
asset_token: soroban_sdk::Address,
share_token: soroban_sdk::Address,
) -> Result<(), ContractError>
Extend proxy configuration TTL.
This is permissionless because it only preserves existing proxy config; it cannot mutate vault accounting or authorization state.
fn extend_ttl(env: soroban_sdk::Env) -> Result<(), ContractError>