Cancel a pre-funded escrow. Admin-only.
fn cancel(env: soroban_sdk::Env, escrow_id: u64)
Refund — returns full USDC to buyer. Admin-only (dispute resolution).
fn refund(env: soroban_sdk::Env, escrow_id: u64)
Buyer deposits USDC into escrow. The buyer must authorize this transaction (their wallet signs).
fn deposit(env: soroban_sdk::Env, escrow_id: u64)
Raise a dispute — freezes funds until admin resolves. Can be called by either buyer or seller.
fn dispute(
env: soroban_sdk::Env,
escrow_id: u64,
caller: soroban_sdk::Address,
reason: soroban_sdk::String,
)
Release escrow — sends USDC to seller (minus custody fee). Admin-only. Should be called atomically with NFT transfer.
fn release(env: soroban_sdk::Env, escrow_id: u64)
Admin validates documents (after AI/OCR approval in backend).
fn validate(env: soroban_sdk::Env, escrow_id: u64)
fn get_escrow(env: soroban_sdk::Env, escrow_id: u64) -> EscrowData
Initialize with admin and USDC token contract address.
fn initialize(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
usdc_token: soroban_sdk::Address,
)
Create a new escrow. Admin-only (triggered by backend on sale preparation). Returns the new escrow_id.
fn create_escrow(
env: soroban_sdk::Env,
seller: soroban_sdk::Address,
buyer: soroban_sdk::Address,
nft_token_id: u64,
amount_usdc: i128,
custody_percent: u32,
) -> u64
fn total_escrows(env: soroban_sdk::Env) -> u64
fn get_active_escrows(
env: soroban_sdk::Env,
user: soroban_sdk::Address,
) -> soroban_sdk::Vec