Skip to content

Flutter Web App

The Arenaton Flutter app is the user-facing terminal for market discovery, Market Briefs, paper rehearsal, wallet intelligence, and optional execution workflows. It should present the same Market, Outcome Share, Collateral, account, source, credit, and safety language as the public docs.

AreaResponsibility
Market browseShow external and Arenaton Markets with clear provider and environment labeling.
Market detailShow rules, source context, order book, trades, and Live State Version where present.
Market BriefsRender previews, full brief fields, sources, freshness states, and credit gates.
Paper RehearsalUse ppUSD/PaperUSDC for simulated orders, review, PnL, and decision memory.
Wallet RadarShow public wallet activity with freshness labels and private user tags.
Order entrySign EIP-712 orders with Smart Account or Raw EOA Mode where execution is enabled.
PortfolioShow confirmed positions, pending fills, fills, orders, and redeemable Markets.
Wallet/accountSupport user-controlled accounts and explicit signing modes.
LocalizationUse reviewed locale files for supported languages.
EnvironmentChainPublic hostRegistry config
paperPolygon Amoy 80002https://paper.arenaton.comConfigured target route: /api/paper/contract-registry.
productionPolygon PoS 137https://app.arenaton.comConfigured target route: /api/contract-registry.

Production builds must refuse Amoy signing. Paper builds must refuse Polygon mainnet signing.

Those registry URLs are client configuration targets. The current pulse server does not expose public registry routes yet; alpha and paper flows should rely on the implemented API responses or bundled environment config until registry HTTP routes ship.

Flutter paper app
-> GET /api/paper/markets
-> POST /api/paper/faucet/claim
-> sign EIP-712 ArenatonOrder
-> POST /api/paper/orders
-> WS /api/paper/ws
-> portfolio and redemption views

Expected paper WebSocket event families:

paper_market_book
paper_matched_pending_fill
paper_settlement_confirmed
paper_account_positions
paper_market_lifecycle
paper_redemption_confirmed
paper_market_live_state
paper_status

For Market Brief field contracts and freshness behavior, read Market Briefs.

Flutter order signing must stay byte-compatible with Go validation and settlement-contract verification.

Read EIP-712 Order Format for the typed data fields. The app should always populate:

  • chain ID from the selected environment config or registry,
  • verifying contract from the selected environment config or registry,
  • collateral token from the Market,
  • current Live State Version from the Market detail response,
  • account mode as Smart Account or Raw EOA Mode.
  • Show the selected environment in paper builds.
  • Never label ppUSD/PaperUSDC as real USDC.
  • Show pending fills separately from confirmed Outcome Shares.
  • Show redeemable Markets only after final resolution.
  • Preserve direct redemption paths where rules permit.
  • Keep risk copy visible: prediction markets involve risk of loss and may not be available everywhere.
  • Keep Market Brief copy observational: no buy/sell instructions, no expected returns, no confidence scores, and no guaranteed edge.

New copy should go through Flutter localization files instead of hard-coded English strings. Public landing routes currently prioritize English, Spanish, Portuguese, French, German, Italian, Dutch, Japanese, Korean, Simplified Chinese, Arabic, and Hindi. App locale coverage may be broader, but user-facing terminal copy should stay reviewed rather than copied from English.