Indexer: GET /v1/arena/wallet/{{address}}/stats for profile modal

Context

Wallet stats API for participant profile modal. Parent epic: #238 (closed).

Relevant files

  • indexer/src/api.rs
  • SQL aggregations over buy, podium payout, XP, CRED, WarBow epochs

Acceptance criteria

API returns:

  • epochs_participated (Last Buy epochs with ≥1 buy)
  • prizes_won[]: { podium, epoch, rank, amount_doub }
  • total_won_doub, total_spent_doub, buy_count
  • xp, level
  • highest_scores[]: { podium, epoch, score, rank } for Streak, TimeBooster, WarBow, LastBuy
  • Bonus stats: first buy timestamp, longest defended streak, WarBow steals/guards, referral CRED earned, CRED claimed, average buy size, max single buy, podium win rate, rank distribution

Verification checklist

  • Integration test with fixture buys across 2 Last Buy epochs
  • p95 query latency acceptable on Anvil-rich dataset