Join our community: https://t.me/+DOylgFv1jyJlNzM0
Description
On-chain amounts are raw i128 integers. Each component handles formatting differently (or not at all), leading to inconsistencies and potential precision loss.
What Needs to Happen
- Create
frontend/lib/amount.ts:
formatAmount(raw: bigint, decimals: number): string
parseAmount(display: string, decimals: number): bigint
formatRate(ratePerSec: bigint, decimals: number): string — "0.0001 USDC/sec" and "8.64 USDC/day"
hasValidPrecision(input: string, decimals: number): boolean
toStroops(value: string): bigint
- Apply consistently across
StreamCreationWizard, dashboard cards, stream detail, LiveCounter
Files
frontend/lib/amount.ts (create)
Acceptance Criteria
Description
On-chain amounts are raw
i128integers. Each component handles formatting differently (or not at all), leading to inconsistencies and potential precision loss.What Needs to Happen
frontend/lib/amount.ts:formatAmount(raw: bigint, decimals: number): stringparseAmount(display: string, decimals: number): bigintformatRate(ratePerSec: bigint, decimals: number): string— "0.0001 USDC/sec" and "8.64 USDC/day"hasValidPrecision(input: string, decimals: number): booleantoStroops(value: string): bigintStreamCreationWizard, dashboard cards, stream detail,LiveCounterFiles
frontend/lib/amount.ts(create)Acceptance Criteria