fn upgrade(
env: soroban_sdk::Env,
new_wasm_hash: soroban_sdk::BytesN<32>,
operator: soroban_sdk::Address,
)
fn initialize(
env: soroban_sdk::Env,
config: VaultInitConfig,
) -> Result<(), STokenCoreError>
fn mint_core(
env: soroban_sdk::Env,
mint: soroban_sdk::Address,
to: soroban_sdk::Address,
amount: u64,
) -> Result<(), STokenAllowlistMintError>
Propose vault role changes
fn propose_roles(
env: soroban_sdk::Env,
new_manager: Option,
new_processor: Option,
new_accountant: Option,
new_oracle: Option,
new_asset_manager: Option,
caller: soroban_sdk::Address,
) -> Result<(), STokenRoleChangeError>
Accept pending role changes after cooldown
fn accept_roles(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
) -> Result<(), STokenRoleChangeError>
Propose fee parameter changes (starts cooldown period)
fn propose_fees(
env: soroban_sdk::Env,
deposit_fee_bps: u32,
withdraw_fee_bps: u32,
management_fee_bps_per_year: u32,
caller: soroban_sdk::Address,
) -> Result<(), STokenFeeChangeError>
Accept pending fee changes after cooldown
fn accept_fees(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
) -> Result<(), STokenFeeChangeError>
Propose limits parameter changes (starts cooldown period)
fn propose_limits(
env: soroban_sdk::Env,
new_max_total_shares: Option,
new_max_shares_per_user: Option,
new_max_total_idle: Option,
new_max_deviation_bps: Option,
new_min_shares_to_mint: Option,
caller: soroban_sdk::Address,
) -> Result<(), STokenCoreError>
Accept pending limits changes after cooldown
fn accept_limits(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
) -> Result<(), STokenCoreError>
Update S-Token price (with secure price flow for v2)
fn update_price(
env: soroban_sdk::Env,
new_price: u64,
caller: soroban_sdk::Address,
) -> Result<(), STokenOracleError>
Deposit underlying tokens to receive S-Tokens
fn deposit_core(
env: soroban_sdk::Env,
amount: u64,
caller: soroban_sdk::Address,
min_shares: Option,
beneficiary: Option,
) -> Result<(), STokenCoreError>
Request withdrawal of S-Tokens
fn withdraw_request(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
shares: u64,
min_amount_out: u64,
) -> Result<(), STokenCoreError>
Update minimum acceptable payout for a pending withdrawal request
fn update_withdrawal_minimum(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
request_id: u64,
new_minimum: u64,
) -> Result<(), STokenWithdrawalRequestError>
Process queued deposits (processor only)
fn process_deposits(
env: soroban_sdk::Env,
amount: u64,
caller: soroban_sdk::Address,
) -> Result<(), STokenCoreError>
Return funds from asset manager to vault
fn return_funds(
env: soroban_sdk::Env,
amount: u64,
caller: soroban_sdk::Address,
) -> Result<(), STokenCoreError>
Fulfill a withdrawal request by request ID
fn fulfill_withdrawal(
env: soroban_sdk::Env,
user: soroban_sdk::Address,
request_id: u64,
caller: soroban_sdk::Address,
) -> Result<(), STokenWithdrawalRequestError>
Accrue management fee (anyone can call)
fn accrue_management_fee(env: soroban_sdk::Env) -> Result<(), STokenCoreError>
Accept a pending price update
fn accept_price(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
) -> Result<(), STokenCoreError>
Reject a pending price update (manager only)
fn reject_price(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
) -> Result<(), STokenCoreError>
Cancel a withdrawal request
fn cancel_withdrawal(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
request_id: u64,
) -> Result<(), STokenWithdrawalRequestError>
Withdraw unexpected deposits immediately
fn withdraw_unexpected_deposits(
env: soroban_sdk::Env,
token_mint: soroban_sdk::Address,
amount: u64,
caller: soroban_sdk::Address,
) -> Result<(), STokenCoreError>
Pause the vault (emergency mode)
fn pause_vault(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
) -> Result<(), STokenEmergencyWithdrawalError>
Unpause the vault
fn unpause_vault(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
) -> Result<(), STokenEmergencyWithdrawalError>
Emergency withdrawal when vault is paused
fn emergency_withdraw(
env: soroban_sdk::Env,
token_mint: soroban_sdk::Address,
amount: u64,
caller: soroban_sdk::Address,
) -> Result<(), STokenEmergencyWithdrawalError>
Add a user to the vault whitelist
fn add_user_to_whitelist(
env: soroban_sdk::Env,
user_to_add: soroban_sdk::Address,
caller: soroban_sdk::Address,
) -> Result<(), STokenCoreError>
Propose whitelist toggle (starts cooldown period)
fn propose_whitelist(
env: soroban_sdk::Env,
enabled: bool,
caller: soroban_sdk::Address,
) -> Result<(), STokenWhitelistChangeError>
Accept pending whitelist changes after cooldown
fn accept_whitelist(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
) -> Result<(), STokenWhitelistChangeError>
Remove a user from the vault whitelist
fn remove_user_from_whitelist(
env: soroban_sdk::Env,
user_to_remove: soroban_sdk::Address,
caller: soroban_sdk::Address,
) -> Result<(), STokenCoreError>
Swap tokens between two s-token vaults with the same underlying token and asset manager
fn swap_tokens(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
destination_vault: soroban_sdk::Address,
source_amount: u64,
swap_fee_bps: u32,
min_destination_amount: u64,
) -> Result<(), STokenSwapError>
Propose cooldown parameter changes (starts cooldown period)
fn propose_cooldowns(
env: soroban_sdk::Env,
new_price_update_cooldown_secs: Option,
new_price_acceptance_cooldown: Option,
new_config_cooldown_secs: Option,
new_emergency_withdraw_cldwn: Option,
new_role_change_cooldown_secs: Option,
new_fee_change_cooldown_secs: Option,
caller: soroban_sdk::Address,
) -> Result<(), STokenCooldownChangeError>
Accept pending cooldown changes after cooldown
fn accept_cooldowns(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
) -> Result<(), STokenCooldownChangeError>
Accept allowlist mint - this should be the address of the vault that is being swapped to
fn accept_allowlist_mint(
env: soroban_sdk::Env,
mint: soroban_sdk::Address,
caller: soroban_sdk::Address,
) -> Result<(), STokenAllowlistMintError>
fn cancel_allowlist_mint(
env: soroban_sdk::Env,
mint: soroban_sdk::Address,
caller: soroban_sdk::Address,
) -> Result<(), STokenAllowlistMintError>
fn write_vault_total_shares(
env: soroban_sdk::Env,
mint: soroban_sdk::Address,
shares: u64,
) -> Result<(), STokenAllowlistMintError>
fn total_idle(env: soroban_sdk::Env) -> u64
fn total_shares(env: soroban_sdk::Env) -> u64
fn is_paused(env: soroban_sdk::Env) -> bool
fn price(env: soroban_sdk::Env) -> u64
fn asset_manager(env: soroban_sdk::Env) -> soroban_sdk::Address
fn accountant(env: soroban_sdk::Env) -> soroban_sdk::Address
fn whitelist_enabled(env: soroban_sdk::Env) -> bool
fn is_whitelisted(env: soroban_sdk::Env, caller: soroban_sdk::Address) -> bool
fn min_shares_to_mint(env: soroban_sdk::Env) -> u64
fn get_withdraw_request(env: soroban_sdk::Env, request_id: u64) -> (u64, u64, u64, u64)
fn theoretical_out(env: soroban_sdk::Env, shares: u64, price: u64) -> u64
fn total_withdrawals_pending(env: soroban_sdk::Env) -> u64
fn shares_in_custody(env: soroban_sdk::Env) -> u64
fn max_total_shares(env: soroban_sdk::Env) -> u64
fn max_shares_per_user(env: soroban_sdk::Env) -> u64
fn total_supply(env: soroban_sdk::Env) -> i128
fn balance(env: soroban_sdk::Env, account: soroban_sdk::Address) -> i128
fn allowance(
env: soroban_sdk::Env,
owner: soroban_sdk::Address,
spender: soroban_sdk::Address,
) -> i128
fn transfer(
env: soroban_sdk::Env,
from: soroban_sdk::Address,
to: soroban_sdk::Address,
amount: i128,
)
fn transfer_from(
env: soroban_sdk::Env,
spender: soroban_sdk::Address,
from: soroban_sdk::Address,
to: soroban_sdk::Address,
amount: i128,
)
fn approve(
env: soroban_sdk::Env,
owner: soroban_sdk::Address,
spender: soroban_sdk::Address,
amount: i128,
live_until_ledger: u32,
)
fn decimals(env: soroban_sdk::Env) -> u32
fn name(env: soroban_sdk::Env) -> soroban_sdk::String
fn symbol(env: soroban_sdk::Env) -> soroban_sdk::String
fn query_asset(env: soroban_sdk::Env) -> soroban_sdk::Address
fn total_assets(env: soroban_sdk::Env) -> i128
fn convert_to_shares(env: soroban_sdk::Env, assets: i128) -> i128
fn convert_to_assets(env: soroban_sdk::Env, shares: i128) -> i128
fn max_deposit(env: soroban_sdk::Env, account: soroban_sdk::Address) -> i128
fn preview_deposit(env: soroban_sdk::Env, assets: i128) -> i128
fn deposit(
env: soroban_sdk::Env,
assets: i128,
receiver: soroban_sdk::Address,
from: soroban_sdk::Address,
operator: soroban_sdk::Address,
) -> i128
fn max_mint(env: soroban_sdk::Env, account: soroban_sdk::Address) -> i128
fn preview_mint(env: soroban_sdk::Env, shares: i128) -> i128
fn mint(
env: soroban_sdk::Env,
shares: i128,
receiver: soroban_sdk::Address,
from: soroban_sdk::Address,
operator: soroban_sdk::Address,
) -> i128
fn max_withdraw(env: soroban_sdk::Env, account: soroban_sdk::Address) -> i128
fn preview_withdraw(env: soroban_sdk::Env, assets: i128) -> i128
fn withdraw(
env: soroban_sdk::Env,
assets: i128,
caller: soroban_sdk::Address,
receiver: soroban_sdk::Address,
owner: soroban_sdk::Address,
) -> i128
fn max_redeem(env: soroban_sdk::Env, account: soroban_sdk::Address) -> i128
fn preview_redeem(env: soroban_sdk::Env, shares: i128) -> i128
fn redeem(
env: soroban_sdk::Env,
shares: i128,
caller: soroban_sdk::Address,
receiver: soroban_sdk::Address,
owner: soroban_sdk::Address,
) -> i128
fn has_role(
env: soroban_sdk::Env,
account: soroban_sdk::Address,
role: soroban_sdk::Symbol,
) -> Option
fn get_role_member_count(env: soroban_sdk::Env, role: soroban_sdk::Symbol) -> u32
fn get_role_member(
env: soroban_sdk::Env,
role: soroban_sdk::Symbol,
index: u32,
) -> soroban_sdk::Address
fn get_role_admin(
env: soroban_sdk::Env,
role: soroban_sdk::Symbol,
) -> Option
fn get_admin(env: soroban_sdk::Env) -> Option
fn grant_role(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
account: soroban_sdk::Address,
role: soroban_sdk::Symbol,
)
fn revoke_role(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
account: soroban_sdk::Address,
role: soroban_sdk::Symbol,
)
fn renounce_role(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
role: soroban_sdk::Symbol,
)
fn renounce_admin(env: soroban_sdk::Env)
fn transfer_admin_role(
env: soroban_sdk::Env,
new_admin: soroban_sdk::Address,
live_until_ledger: u32,
)
fn accept_admin_transfer(env: soroban_sdk::Env)
fn set_role_admin(
env: soroban_sdk::Env,
role: soroban_sdk::Symbol,
admin_role: soroban_sdk::Symbol,
)