SEP-0050: Collection name
fn name(env: soroban_sdk::Env) -> soroban_sdk::String
Renew a domain (extend expiry, add vault deposit)
fn renew(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
node: soroban_sdk::BytesN<32>,
additional_years: u32,
) -> Result<(), soroban_sdk::Error>
SEP-0050: Collection symbol
fn symbol(env: soroban_sdk::Env) -> soroban_sdk::String
SEP-0050: Approve a single token for a spender Events: ["approve", owner, token_id] data: [approved, live_until_ledger]
fn approve(
env: soroban_sdk::Env,
approver: soroban_sdk::Address,
approved: soroban_sdk::Address,
token_id: u128,
live_until_ledger: u32,
) -> Result<(), soroban_sdk::Error>
SEP-0050: Returns the number of NFTs owned by owner
fn balance(env: soroban_sdk::Env, owner: soroban_sdk::Address) -> u128
fn resolve(
env: soroban_sdk::Env,
domain: soroban_sdk::String,
tld: soroban_sdk::String,
) -> Result
fn upgrade(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
new_wasm_hash: soroban_sdk::BytesN<32>,
) -> Result<(), soroban_sdk::Error>
SEP-0050: Returns the owner of a token by its numeric ID Panics if the token does not exist (per spec)
fn owner_of(env: soroban_sdk::Env, token_id: u128) -> soroban_sdk::Address
Register a new domain with USDC payment splitting
fn register(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
domain: soroban_sdk::String,
tld: soroban_sdk::String,
duration_years: u32,
) -> Result, soroban_sdk::Error>
Transfer domain ownership — blocked for Production domains Vault shares follow the domain automatically
fn transfer(
env: soroban_sdk::Env,
from: soroban_sdk::Address,
to: soroban_sdk::Address,
node: soroban_sdk::BytesN<32>,
) -> Result<(), soroban_sdk::Error>
fn get_price(
env: soroban_sdk::Env,
domain_length: u32,
duration_years: u32,
) -> Result
fn set_admin(
env: soroban_sdk::Env,
current_admin: soroban_sdk::Address,
new_admin: soroban_sdk::Address,
) -> Result<(), soroban_sdk::Error>
SEP-0050: Token metadata URI Panics if token does not exist (per spec)
fn token_uri(env: soroban_sdk::Env, token_id: u128) -> soroban_sdk::String
Early exit: owner forfeits domain before expiry, gets 95% - time-value fee
fn early_exit(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
node: soroban_sdk::BytesN<32>,
) -> Result
fn extend_ttl(env: soroban_sdk::Env)
Initialize registry with admin, operator wallet, vault, and USDC token
fn initialize(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
operator_wallet: soroban_sdk::Address,
vault_contract: soroban_sdk::Address,
usdc_token: soroban_sdk::Address,
) -> Result<(), soroban_sdk::Error>
Set domain status (owner only: Active <-> Production)
fn set_status(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
node: soroban_sdk::BytesN<32>,
new_status: u32,
) -> Result<(), soroban_sdk::Error>
fn fix_pricing(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
) -> Result<(), soroban_sdk::Error>
fn set_records(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
node: soroban_sdk::BytesN<32>,
key: soroban_sdk::Symbol,
value: soroban_sdk::String,
) -> Result<(), soroban_sdk::Error>
SEP-0050: Get the approved address for a token Panics if token does not exist (per spec)
fn get_approved(env: soroban_sdk::Env, token_id: u128) -> Option
Read: Get token ID for a domain node hash
fn get_token_id(env: soroban_sdk::Env, node: soroban_sdk::BytesN<32>) -> u128
fn is_available(
env: soroban_sdk::Env,
domain: soroban_sdk::String,
tld: soroban_sdk::String,
) -> bool
SEP-0050: Transfer by token_id (owner-initiated) Events: ["transfer", from, to] data: [token_id]
fn nft_transfer(
env: soroban_sdk::Env,
from: soroban_sdk::Address,
to: soroban_sdk::Address,
token_id: u128,
) -> Result<(), soroban_sdk::Error>
Admin: Set base URI for NFT metadata
fn set_base_uri(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
uri: soroban_sdk::String,
) -> Result<(), soroban_sdk::Error>
fn total_minted(env: soroban_sdk::Env) -> u32
Expire a domain after grace period — auto-refund vault to owner ANYONE can call this (public — trustless cleanup)
fn expire_domain(
env: soroban_sdk::Env,
node: soroban_sdk::BytesN<32>,
) -> Result<(), soroban_sdk::Error>
fn set_subdomain(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
parent_node: soroban_sdk::BytesN<32>,
sub_name: soroban_sdk::String,
) -> Result, soroban_sdk::Error>
SEP-0050: Transfer by approved spender Events: ["transfer", from, to] data: [token_id]
fn transfer_from(
env: soroban_sdk::Env,
spender: soroban_sdk::Address,
from: soroban_sdk::Address,
to: soroban_sdk::Address,
token_id: u128,
) -> Result<(), soroban_sdk::Error>
fn get_node_count(env: soroban_sdk::Env) -> u64
SEP-0050: Approve an operator for all tokens owned by owner
Events: ["approve_for_all", owner] data: [operator, live_until_ledger]
fn approve_for_all(
env: soroban_sdk::Env,
owner: soroban_sdk::Address,
operator: soroban_sdk::Address,
live_until_ledger: u32,
) -> Result<(), soroban_sdk::Error>
fn reverse_resolve(
env: soroban_sdk::Env,
address: soroban_sdk::Address,
) -> Result, soroban_sdk::Error>
Set marketplace contract address (admin only)
fn set_marketplace(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
marketplace: soroban_sdk::Address,
) -> Result<(), soroban_sdk::Error>
fn get_vault_shares(env: soroban_sdk::Env, node: soroban_sdk::BytesN<32>) -> i128
SEP-0050: Check if operator is approved for all tokens of owner
fn is_approved_for_all(
env: soroban_sdk::Env,
owner: soroban_sdk::Address,
operator: soroban_sdk::Address,
) -> bool
Marketplace-authorized transfer (for atomic trades)
fn marketplace_transfer(
env: soroban_sdk::Env,
marketplace: soroban_sdk::Address,
from: soroban_sdk::Address,
to: soroban_sdk::Address,
node: soroban_sdk::BytesN<32>,
) -> Result<(), soroban_sdk::Error>