Upgrade this wallet Wasm. Factory must authorize (factory invokes this).
fn upgrade(
env: soroban_sdk::Env,
new_wasm_hash: soroban_sdk::BytesN<32>,
) -> Result<(), WalletError>
Transfer SAC tokens to to. spender must be owner or operator and must authorize.
fn transfer(
env: soroban_sdk::Env,
spender: soroban_sdk::Address,
token: soroban_sdk::Address,
to: soroban_sdk::Address,
amount: i128,
) -> Result<(), WalletError>
fn get_owner(env: soroban_sdk::Env) -> Option
Link a Stellar address as owner (Freighter / user key). Operator only.
fn link_owner(
env: soroban_sdk::Env,
owner: soroban_sdk::Address,
) -> Result<(), WalletError>
fn get_factory(env: soroban_sdk::Env) -> Result
fn get_operator(env: soroban_sdk::Env) -> Result
fn set_operator(
env: soroban_sdk::Env,
operator: soroban_sdk::Address,
) -> Result<(), WalletError>
fn get_daily_cap(env: soroban_sdk::Env) -> i128
daily_cap == 0 disables the cap. Units are token base units (caller’s convention).
fn set_daily_cap(env: soroban_sdk::Env, daily_cap: i128) -> Result<(), WalletError>
fn token_balance(env: soroban_sdk::Env, token: soroban_sdk::Address) -> i128
Deploy-time constructor (factory deploy_v2).
Until link_owner, only operator may spend (WhatsApp custodial mode).
Pass naira_vault == factory (or any sentinel equal to this wallet after
deploy) — unset vault is detected when vault == current contract; use
factory address as the "not configured" placeholder at construction.
fn __constructor(
env: soroban_sdk::Env,
factory: soroban_sdk::Address,
operator: soroban_sdk::Address,
withdrawal_authority: soroban_sdk::Address,
naira_vault: soroban_sdk::Address,
daily_cap: i128,
)
fn get_naira_vault(env: soroban_sdk::Env) -> Result
fn is_owner_linked(env: soroban_sdk::Env) -> bool
fn set_naira_vault(
env: soroban_sdk::Env,
vault: soroban_sdk::Address,
) -> Result<(), WalletError>
Current owner transfers ownership. Owner must authorize.
fn transfer_ownership(
env: soroban_sdk::Env,
new_owner: soroban_sdk::Address,
) -> Result<(), WalletError>
Sweep tokens to the Naira vault for off-ramp settlement (phase 2 fiat).
fn send_to_naira_vault(
env: soroban_sdk::Env,
spender: soroban_sdk::Address,
token: soroban_sdk::Address,
amount: i128,
) -> Result<(), WalletError>
fn get_withdrawal_authority(
env: soroban_sdk::Env,
) -> Result
fn set_withdrawal_authority(
env: soroban_sdk::Env,
authority: soroban_sdk::Address,
) -> Result<(), WalletError>