Floor
For indexers and portfolio apps

Everything the Floor puts on chain, by name.

The Floor is one Move module, pad, published under the address below. Tokens are plain fungible assets (0x1::fungible_asset, 6 decimals), so balances index like any other asset. Prices, trades and the floor come from the module's events and view functions; this page lists all of them with their fields and units. Names do not change between testnet and mainnet. Upgrades only add: a new event, a new view or a new field, never a renamed one, and features() tells you which upgrade is live.

Where

Network
reading…
Module
reading…
Upgrade live
reading…
Vault account
reading…
Token metadata
each token's meta address is its fungible-asset metadata object; token_id(admin, meta) maps it back to the id
Views
every view takes the module address as its first argument, admin; call them through /rpc/v3/view as usual

Units and stages

stageMeaningTrades through
1On the curve, raising SUPRA toward targetbuy, sell, redeem
2Graduated into the module's own locked pool (networks without Atmos Swap)pool_buy, pool_sell, redeem
3Rescued by the guardian: frozen, only redeeming at the floor worksredeem
4Graduated into an Atmos Swap pool whose LP tokens the module holds foreverAtmos Swap's own entry functions, plus redeem here

Events

All emitted by pad with #[event], type <module>::pad::<Name>. The ones a portfolio needs are the first five.

EventFieldsWhat it says
Launchedid, creator, meta, name, symbol, target, fee, timeA new token. target is the SUPRA (octas) the curve raises before graduating; fee the launch fee paid.
Tradedid, who, buy, stage, supra, tokens, vault, circulating, vs, vt, pool_supra, pool_tokens, timeOne buy (buy = true) or sell. supra is the gross SUPRA paid or received including fees and any launch tax; tokens what moved. Stage 1 trades carry the curve after the trade in vs/vt (spot price = vs/vt) and zeros in the pool fields; stage 2 trades carry the pool reserves after the trade in pool_supra/pool_tokens and zeros in vs/vt. vault and circulating give the floor after the trade.
Redeemedid, who, tokens, supra, vault, circulating, timeA holder burned tokens and took supra from the vault, their exact share at the floor.
Graduatedid, pool_supra, pool_tokens, burned, vault, timeThe curve finished and a locked pool opened inside the module (stage 2). burned is unsold stock destroyed.
AtmosGraduatedid, pool, supra, tokens, lp, fee_bps, timeThe curve finished and the pool went to Atmos Swap at address pool (stage 4). Trades from here on are Atmos's own events on that pool.
DexGraduatedid, pool, supra, tokens, lp, fee_bps, timeThe curve finished and the token's reserved pool on the WARs DEX (wars_dex::wars_pool, address pool) was seeded (stage 5). Trades from here on are the DEX's Swap events on that pool.
Lockedid, creator, tokens, until, timeThe creator locked tokens in the module until until. Count them as the creator's, not the vault's.
Unlockedid, creator, tokens, timeThe lock ended and the tokens went back to the creator.
StrandedVaultid, to_reserve, to_prizes, prizes, timeUpgrade 20: a vault nobody held a claim on (every holder had sold back to the curve) was split by the next buy: to_reserve joined the curve reserve, to_prizes went to the prizes wallet instead of to that buyer.
Harvestedid, who, lp, supra, to_vault, to_platform, burned, kept, timeAtmos pool fees were collected: to_vault raised the floor; burned tokens left the supply.
Rescuedid, vault, circulating, timeThe guardian froze the token (stage 3); only redeeming works from now on.
BlockChangedwho, on, timeThe guardian put a wallet on the block list (on = true) or took it off. A blocked wallet's launches, trades and locks abort with 0x50015; redeem still works. The list has no effect once the guardian has ended.
SettingsChanged, CapsChanged, LaunchTaxChanged, RescueDaysChanged, AtmosChanged, GuardianChanged, OperatorProposed, OperatorChangedthe new valuesPlatform settings. Nothing to do with balances; useful only if you show the rules.

View functions

ViewReturns
features()The upgrade number live on this network (the operator console shows it). The only view without admin.
config(admin)(operator, platform, prizes, launch_cents, grad_cents, paused, count, vault_account, all_paused, guardian_until). count is how many tokens exist: ids run from 0 to count − 1.
rules()(SUPPLY, CURVE_STOCK, VAULT_BPS, FEE_BPS, EARLY_SELL_BPS, EARLY_SELL_SECS, WALLET_CAP, POOL_FEE_BPS, MIN_BUY): the constants.
token(admin, id)One TokenView: id, creator, meta, name, symbol, uri, created, stage, v0, vs, vt, target, vault, circulating, pool_supra, pool_tokens, burned, volume, trades, creator_paid, supra_price, early_sell_bps, stock. Price and floor come from this alone (formulas above). v0 is the virtual SUPRA at launch, so vs − v0 is what the curve has raised.
tokens(admin, from, to)A page of TokenView, ids from up to but not including to. Page by 50.
token_id(admin, meta)The id for a fungible-asset metadata address: how to recognise a Floor token in a wallet.
details(admin, id)The creator's description and links.
extras(admin, from, to)Per token: cap_bps (the wallet cap fixed at launch) and the creator's lock (lock_creator, lock_tokens, lock_until).
taxes(admin, from, to) · tax_now(admin, id)Each token's launch tax terms (bps, secs), and the tax a buy pays right now in bps (0 once the window is over).
blocked(admin)The guardian's block list, vector<address>; empty once the guardian has ended.
caps(admin) · launch_tax(admin) · rescue_days(admin) · rescue_until(admin, from, to)The platform's current settings and each token's rescue deadline.
atmos_config(admin) · atmos_pools(admin, from, to)Whether graduations go to Atmos, the fee split, and every stage-4 (Atmos) and stage-5 (WARs DEX) pool with its LP, reserves and fees pending.
dex_config(admin)(on, fee_bps): whether new tokens get a reserved WARs DEX pool at launch (stage 5 at graduation) and its fee tier. The pool itself is wars_dex::wars_pool::pool_address(supra_asset(), meta).
quote_buy(admin, id, supra) · quote_sell(admin, id, tokens) · quote_redeem(admin, id, tokens)What a trade gives right now; quote_buy returns (tokens, refund), the refund being SUPRA that would not fit before graduation.
launch_quote(admin)(fee, gross, price): what a launch costs now and the oracle price used.

Entry functions

For recognising transactions by payload. Every one takes admin (the module address) after the signer.

FunctionArguments after adminEmits
launch_and_buyname, symbol, uri, description, labels, urls, supra, min_tokens, lock_daysLaunched, then Traded if supra > 0, then Locked if lock_days > 0
launch_with · launchname, symbol, uri (+ description, labels, urls)Launched
buy · sellid, supra, min_tokens · id, tokens, min_supraTraded (stage 1); a buy that completes the curve also emits Graduated, AtmosGraduated or DexGraduated
pool_buy · pool_sellsame as buy and sellTraded (stage 2)
redeemid, tokensRedeemed
lock · unlockid, tokens, lock_days · idLocked · Unlocked
harvest · harvest_all · harvest_rangeid · none · from, toHarvested, one per pool
set_blockedwho, onBlockChanged (guardian only)
set_settings, set_caps, set_launch_tax, set_rescue_days, set_atmos, set_dex, set_operator, pause_all, rescue, renounce_guardianoperator only (set_operator proposes; accept_operator from the proposed wallet moves the role)the matching settings event; rescue emits Rescued

The site's API

Plain JSON, no key, read from the same server as this page. It is a convenience over the views above, kept by our server: trades it has seen since launch, hourly price history, holders. Raw amounts come as strings (octas and raw units) next to SUPRA floats for display. Please poll no faster than every 20 seconds; that is what the site itself does.

RouteGives
GET /api/floorEvery token with price, floor, market cap, progress, the creator's lock, the launch tax and the last trade, plus module, features, supraUsd and the platform settings.
GET /api/floor/token?id=N · ?meta=0x…One token with its details, its last 200 trades and hourly [time, price, floor] history.
GET /api/floor/trades?id=N&before=T&limit=2000Every trade of a token, newest first, paged by time. A stage-2 trade carries ps/pt, the pool reserves after it.
GET /api/floor/holders?id=NThe top 10 holders with balances, the pool's share, the lock, and wallets never seen trading.
GET /api/floor/quote?id=N&side=buy|sell|redeem&amount=rawThe module's own quote, as the trade box shows it.
GET /api/floor/token?id=0 → reading a sample…

Promises