fn burn(env: soroban_sdk::Env, from: soroban_sdk::Address, amount: i128)
Mint XLD shares to an address (admin only, for migration/airdrops)
fn mint(env: soroban_sdk::Env, to: soroban_sdk::Address, amount: i128)
fn name(env: soroban_sdk::Env) -> soroban_sdk::String
fn symbol(env: soroban_sdk::Env) -> soroban_sdk::String
fn approve(
env: soroban_sdk::Env,
from: soroban_sdk::Address,
spender: soroban_sdk::Address,
amount: i128,
expiration_ledger: u32,
)
fn balance(env: soroban_sdk::Env, id: soroban_sdk::Address) -> i128
Deposit USDC into vault, receive XLD shares (minted internally). Protected against donation attacks via internal accounting + virtual offset.
fn deposit(
env: soroban_sdk::Env,
depositor: soroban_sdk::Address,
usdc_amount: i128,
domain_node: soroban_sdk::BytesN<32>,
) -> Result
Harvest yield: admin deposits additional USDC (from USTRY appreciation). Increases total_assets without new shares = share price appreciation.
fn harvest(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
yield_amount: i128,
) -> Result<(), soroban_sdk::Error>
fn upgrade(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
new_wasm_hash: soroban_sdk::BytesN<32>,
) -> Result<(), soroban_sdk::Error>
fn decimals(env: soroban_sdk::Env) -> u32
fn transfer(
env: soroban_sdk::Env,
from: soroban_sdk::Address,
muxed_to: soroban_sdk::MuxedAddress,
amount: i128,
)
Withdraw USDC by burning XLD shares (internal burn, no external SAC).
fn withdraw(
env: soroban_sdk::Env,
withdrawer: soroban_sdk::Address,
xld_amount: i128,
) -> Result
fn allowance(
env: soroban_sdk::Env,
from: 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 set_admin(
env: soroban_sdk::Env,
current_admin: soroban_sdk::Address,
new_admin: soroban_sdk::Address,
) -> Result<(), soroban_sdk::Error>
fn extend_ttl(env: soroban_sdk::Env)
Initialize vault with admin and USDC token address. The vault IS the XLD token — no external token address needed. Sets token metadata: name="XLM Domains Vault Share", symbol="XLD", decimals=7
fn initialize(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
usdc_token: soroban_sdk::Address,
) -> Result<(), soroban_sdk::Error>
fn vault_rate(env: soroban_sdk::Env) -> i128
Split a domain's vault position into separate PT and YT tokens
fn split_yield(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
domain_node: soroban_sdk::BytesN<32>,
) -> Result<(), soroban_sdk::Error>
Withdraw vault funds to a specified address (registry-authorized, for grace refunds). Burns corresponding XLD shares from recipient's internal balance. NO CLAWBACK — uses internal balance ledger debit.
fn withdraw_to(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
recipient: soroban_sdk::Address,
usdc_amount: i128,
shares_to_burn: i128,
) -> Result<(), soroban_sdk::Error>
Set authorized registry contract (admin only)
fn set_registry(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
registry: soroban_sdk::Address,
) -> Result<(), soroban_sdk::Error>
fn total_assets(env: soroban_sdk::Env) -> i128
fn total_shares(env: soroban_sdk::Env) -> i128
fn transfer_from(
env: soroban_sdk::Env,
spender: soroban_sdk::Address,
from: soroban_sdk::Address,
to: soroban_sdk::Address,
amount: i128,
)
Get yield split info for a domain
fn get_yield_split(
env: soroban_sdk::Env,
domain_node: soroban_sdk::BytesN<32>,
) -> Result