Join our community: https://t.me/+DOylgFv1jyJlNzM0
Description
Soroban token amounts are i128 integers (smallest unit, like stroops for XLM or units for USDC at 7 decimals). The frontend currently has no utilities for converting between raw on-chain values and human-readable amounts.
What Needs to Happen
- Create
frontend/src/utils/amount.ts with:
fromStroops(amount: bigint, decimals: number): string
toStroops(amount: string, decimals: number): bigint
formatStreamRate(ratePerSecond: bigint, decimals: number): string (e.g., "0.0001 USDC/sec")
hasValidPrecision(amount: string, decimals: number): boolean
- Apply to all amount inputs and displays throughout the app
- Fetch token decimals from contract once and cache per token address
Files
frontend/src/utils/amount.ts (create)
Acceptance Criteria
Description
Soroban token amounts are
i128integers (smallest unit, like stroops for XLM or units for USDC at 7 decimals). The frontend currently has no utilities for converting between raw on-chain values and human-readable amounts.What Needs to Happen
frontend/src/utils/amount.tswith:fromStroops(amount: bigint, decimals: number): stringtoStroops(amount: string, decimals: number): bigintformatStreamRate(ratePerSecond: bigint, decimals: number): string(e.g., "0.0001 USDC/sec")hasValidPrecision(amount: string, decimals: number): booleanFiles
frontend/src/utils/amount.ts(create)Acceptance Criteria