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: deprecated in V2 in favor of linear vault vesting
fn early_exit(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
node: soroban_sdk::BytesN<32>,
) -> Result
fn extend_ttl(env: soroban_sdk::Env)
Gift renewal: anyone can extend a domain's expiry by paying the renewal fee
fn gift_renew(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
node: soroban_sdk::BytesN<32>,
additional_years: u32,
) -> Result<(), soroban_sdk::Error>
Initialize registry with admin, operator wallet, vault, and USDC token Initialize registry with admin, operator wallet, vault, USDC token, USTRY token, and Aquarius router
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,
ustry_token: soroban_sdk::Address,
aquarius_router: 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>
Admin: rewrite PricingConfig to V3.1 (6-tier) values. Migrates stale V1 on-chain data to match initialize() and the frontend.
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>
Set a domain as reserved (can only be registered by admin)
fn set_reserved(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
name: soroban_sdk::String,
is_reserved: bool,
) -> 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
fn set_avatar_nft(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
node: soroban_sdk::BytesN<32>,
pfp_contract: soroban_sdk::String,
) -> Result<(), soroban_sdk::Error>
fn upgrade_domain(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
node: soroban_sdk::BytesN<32>,
) -> Result<(), soroban_sdk::Error>
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 a domain as blacklisted (cannot be registered by anyone)
fn set_blacklisted(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
name: soroban_sdk::String,
is_blacklisted: bool,
) -> 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>
Admin: set USTRY token
fn set_ustry_token(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
ustry: soroban_sdk::Address,
) -> Result<(), soroban_sdk::Error>
Read current pause status. Public, no auth required.
fn get_pause_status(env: soroban_sdk::Env) -> bool
fn get_vault_shares(env: soroban_sdk::Env, node: soroban_sdk::BytesN<32>) -> i128
Set Aquarius Pool Hash for swaps (admin only)
fn set_aquarius_pool(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
pool_hash: soroban_sdk::BytesN<32>,
) -> Result<(), soroban_sdk::Error>
Admin: set XLD SAC token address (for upgrade_domain transfers)
fn set_xld_sac_token(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
xld_sac: soroban_sdk::Address,
) -> Result<(), soroban_sdk::Error>
Zap public deposit: takes USDC and/or USTRY from user, swaps USDC for USTRY via Aquarius, and deposits total USTRY into the vault on behalf of the user.
fn zap_public_deposit(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
usdc_amount: i128,
ustry_amount: i128,
min_ustry_out: i128,
) -> Result
View: get current operator wallet
fn get_operator_wallet(env: soroban_sdk::Env) -> soroban_sdk::Address
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
Register a new domain paying in USTRY directly (no Aquarius swap needed). Operator share is still taken in USTRY. Vault share goes directly to vault.
fn register_with_ustry(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
domain: soroban_sdk::String,
tld: soroban_sdk::String,
duration_years: u32,
) -> Result, soroban_sdk::Error>
Admin: set Aquarius router
fn set_aquarius_router(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
router: soroban_sdk::Address,
) -> Result<(), soroban_sdk::Error>
Admin: update the operator wallet for fee routing
fn set_operator_wallet(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
new_operator: soroban_sdk::Address,
) -> Result<(), soroban_sdk::Error>
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>
Get domain attributes for dynamic NFT metadata (cross-contract reads from vault)
fn get_domain_attributes(
env: soroban_sdk::Env,
node: soroban_sdk::BytesN<32>,
) -> Result<
soroban_sdk::Map,
soroban_sdk::Error,
>
Toggle registration pause. Admin-only. When paused: register() and renew() both reject. M-03 fix: now emits RegistryPauseEvent for off-chain monitoring.
fn set_pause_registrations(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
paused: bool,
) -> Result<(), soroban_sdk::Error>
Set Aquarius Pool Contract address for auth tree (admin only) Required for register() and gift_renew() swap sub-invocation auth.
fn set_aquarius_pool_contract(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
pool: soroban_sdk::Address,
) -> Result<(), soroban_sdk::Error>