Atomic swap between USDM0 and USDM1 (port of EVM swapTokens).
Always requires a USDM1 price attestation (USDM0 is pegged at 1e7). Burns input tokens and mints output tokens in a single transaction.
fn swap_v2(
env: soroban_sdk::Env,
swapper: soroban_sdk::Address,
input_token_id: u32,
amount: i128,
usdm1_price: PriceAttestation,
)
fn pause(env: soroban_sdk::Env, admin: soroban_sdk::Address)
fn sweep(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
sac: soroban_sdk::Address,
recipient: soroban_sdk::Address,
amount: i128,
)
fn unpause(env: soroban_sdk::Env, admin: soroban_sdk::Address)
fn upgrade(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
new_wasm_hash: soroban_sdk::BytesN<32>,
)
fn get_usdm0(env: soroban_sdk::Env) -> Option
fn get_usdm1(env: soroban_sdk::Env) -> Option
fn is_paused(env: soroban_sdk::Env) -> bool
fn get_config(env: soroban_sdk::Env) -> Config
fn assign_usdm0(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
usdm0: soroban_sdk::Address,
)
fn assign_usdm1(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
usdm1: soroban_sdk::Address,
)
fn get_operator(env: soroban_sdk::Env) -> Option
fn __constructor(env: soroban_sdk::Env, admin: soroban_sdk::Address)
fn set_base_fees(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
deposit_fee_bps: u32,
redemption_fee_bps: u32,
)
fn add_collateral(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
collateral: soroban_sdk::Address,
requires_attestation: bool,
deposit_fee_bps: u32,
redemption_fee_bps: u32,
)
fn is_whitelisted(env: soroban_sdk::Env, address: soroban_sdk::Address) -> bool
fn assign_operator(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
operator: soroban_sdk::Address,
)
fn compute_feed_id(
env: soroban_sdk::Env,
token: soroban_sdk::Address,
) -> soroban_sdk::BytesN<32>
fn get_beneficiary(env: soroban_sdk::Env) -> Option
fn get_collaterals(
env: soroban_sdk::Env,
) -> Option>
fn add_to_whitelist(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
address: soroban_sdk::Address,
)
fn verify_signature(
env: soroban_sdk::Env,
public_key: soroban_sdk::BytesN<32>,
message: soroban_sdk::BytesN<32>,
signature: soroban_sdk::BytesN<64>,
)
fn enable_collateral(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
collateral: soroban_sdk::Address,
)
fn get_administrator(env: soroban_sdk::Env) -> soroban_sdk::Address
fn is_trusted_signer(
env: soroban_sdk::Env,
public_key: soroban_sdk::BytesN<32>,
) -> bool
fn remove_collateral(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
collateral: soroban_sdk::Address,
)
fn add_trusted_signer(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
public_key: soroban_sdk::BytesN<32>,
)
fn assign_beneficiary(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
beneficiary: soroban_sdk::Address,
)
fn disable_collateral(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
collateral: soroban_sdk::Address,
)
fn get_trusted_signers(
env: soroban_sdk::Env,
) -> Option, bool>>
fn set_collateral_fees(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
collateral: soroban_sdk::Address,
deposit_fee_bps: u32,
redemption_fee_bps: u32,
)
fn get_contract_version(env: soroban_sdk::Env) -> u32
fn rotate_administrator(
env: soroban_sdk::Env,
current_admin: soroban_sdk::Address,
new_admin: soroban_sdk::Address,
)
fn get_collateral_config(
env: soroban_sdk::Env,
collateral: soroban_sdk::Address,
) -> Option
fn get_redeem_permit_seq(env: soroban_sdk::Env, source: soroban_sdk::Address) -> u64
fn remove_from_whitelist(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
address: soroban_sdk::Address,
)
fn remove_trusted_signer(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
public_key: soroban_sdk::BytesN<32>,
)
fn get_deposit_permit_seq(env: soroban_sdk::Env, source: soroban_sdk::Address) -> u64
fn reset_usdm_token_admin(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
usdm: soroban_sdk::Address,
new_admin: soroban_sdk::Address,
)
fn assert_contract_version(env: soroban_sdk::Env, expected: u32)
fn set_collateral_disabled(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
collateral: soroban_sdk::Address,
disabled: bool,
)
fn get_base_deposit_fee_bps(env: soroban_sdk::Env) -> u32
fn build_redeem_permit_digest(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
source: soroban_sdk::Address,
payout_recipient: soroban_sdk::Address,
token: soroban_sdk::Address,
collateral: soroban_sdk::Address,
amount: i128,
seq: u64,
not_before: u64,
not_after: u64,
) -> soroban_sdk::BytesN<32>
fn build_deposit_permit_digest(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
source: soroban_sdk::Address,
recipient: soroban_sdk::Address,
collateral: soroban_sdk::Address,
usdm: soroban_sdk::Address,
amount: i128,
seq: u64,
not_before: u64,
not_after: u64,
) -> soroban_sdk::BytesN<32>
fn get_base_redemption_fee_bps(env: soroban_sdk::Env) -> u32
fn build_price_attestation_digest(
env: soroban_sdk::Env,
feed_id: soroban_sdk::BytesN<32>,
consumer: soroban_sdk::Address,
index: i128,
not_before: u64,
not_after: u64,
seq: u64,
) -> soroban_sdk::BytesN<32>
Redeem USDM for collateral via permit + price attestation (port of EVM redeem).
Creates a pending redemption record with the calculated amount_approved.
The operator must call process_redemption to finalize (transfer collateral from
beneficiary to recipient and burn escrowed USDM), or the redeemer/admin can
call cancel_redemption to return the USDM.
fn redeem(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
source: soroban_sdk::Address,
token_id: u32,
amount: i128,
collateral: soroban_sdk::Address,
recipient: soroban_sdk::Address,
collateral_price: PriceAttestation,
usdm_price: PriceAttestation,
permit: RedeemPermitAttestation,
)
Redeem USDM0 for collateral, whitelist-only, no attestation required.
Port of EVM redeemUSDM0.
fn redeem_usdm0(
env: soroban_sdk::Env,
redeemer: soroban_sdk::Address,
amount: i128,
collateral: soroban_sdk::Address,
)
fn get_redemption(
env: soroban_sdk::Env,
redeemer: soroban_sdk::Address,
) -> Option
Cancel a pending redemption. Returns escrowed USDM to the redeemer.
Callable by the redeemer or the admin (port of EVM cancelRedemption).
fn cancel_redemption(
env: soroban_sdk::Env,
user: soroban_sdk::Address,
redeemer: soroban_sdk::Address,
)
Process a pending redemption (port of EVM processRedemption).
Operator burns escrowed USDM and transfers collateral from beneficiary to recipient.
fn process_redemption(
env: soroban_sdk::Env,
operator: soroban_sdk::Address,
redeemer: soroban_sdk::Address,
)
Atomic deposit via permit + price attestation (port of EVM deposit).
source to beneficiary (via allowance),
mints USDM to recipient.fn deposit(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
source: soroban_sdk::Address,
recipient: soroban_sdk::Address,
collateral: soroban_sdk::Address,
amount: i128,
token_id: u32,
collateral_price: PriceAttestation,
usdm_price: PriceAttestation,
permit: DepositPermitAttestation,
)
Atomic deposit for whitelisted callers, USDM0 only, no attestation required.
Port of EVM depositForUSDM0.
Caller must be whitelisted. Collateral must NOT require attestation. Both indices are 1e7 (no price conversion).
fn deposit_for_usdm0(
env: soroban_sdk::Env,
depositor: soroban_sdk::Address,
collateral: soroban_sdk::Address,
amount: i128,
)