Category: Frontend UX | Priority: Low | Dependencies: none | Out of scope: token logos, price conversion
Description & Context: Roadmap item. Streams show raw base units (stroops) — "1,000,000,000" vs "1,000" is indistinguishable. Read symbol()/decimals() from the SEP-41 token contract.
Acceptance Criteria / DoD:
How to verify: Create a stream in a non-native SAC token — the card shows e.g. 1,000.0000000 USDC instead of 10000000000.
Category: Frontend UX | Priority: Low | Dependencies: none | Out of scope: token logos, price conversion
Description & Context: Roadmap item. Streams show raw base units (stroops) — "1,000,000,000" vs "1,000" is indistinguishable. Read
symbol()/decimals()from the SEP-41 token contract.Acceptance Criteria / DoD:
getTokenMetadata(token)infrontend/src/lib/contracts/(read-only contract call tosymbol/decimals), cached per token address (module-level Map)format.tsgainsformatAmount(baseUnits, decimals); all amount displays use symbol + formatted value, falling back to raw units when metadata is unavailable (e.g., RPC down)tsc -bcleanHow to verify: Create a stream in a non-native SAC token — the card shows e.g.
1,000.0000000 USDCinstead of10000000000.