Buyer purchases a listed domain (ATOMIC) max_price provides slippage protection — reverts if listing price exceeds it
fn buy(
env: soroban_sdk::Env,
buyer: soroban_sdk::Address,
token_id: u32,
max_price: i128,
) -> Result<(), MarketError>
Seller lists a domain for sale. Seller must have already called NFD.approve(seller, this_contract, token_id, live_until_ledger)
fn list(
env: soroban_sdk::Env,
seller: soroban_sdk::Address,
token_id: u32,
price: i128,
) -> Result<(), MarketError>
Seller removes a listing
fn delist(
env: soroban_sdk::Env,
seller: soroban_sdk::Address,
token_id: u32,
) -> Result<(), MarketError>
Get a single listing by token ID
fn get_listing(env: soroban_sdk::Env, token_id: u32) -> Option
Admin can force-delist stale listings (e.g. transferred domains, expired approvals)
fn force_delist(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
token_id: u32,
) -> Result<(), MarketError>
Seller updates the price of a listing
fn update_price(
env: soroban_sdk::Env,
seller: soroban_sdk::Address,
token_id: u32,
new_price: i128,
) -> Result<(), MarketError>
Initialize the marketplace contract
fn __constructor(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
nfd_contract: soroban_sdk::Address,
xlm_sac: soroban_sdk::Address,
)
Get all active listings
fn get_all_listings(env: soroban_sdk::Env) -> soroban_sdk::Vec<(u32, Listing)>