Contracts: TimeArenaBuyRouter — DOUB, CL8Y, ETH, USDm entry paths

Context

DOUB-primary buy router with Kumbaya multi-asset entry. Parent epic: #238 (closed).

Relevant files

  • Refactor contracts/src/TimeCurveBuyRouter.solTimeArenaBuyRouter.sol
  • contracts/src/fixtures/AnvilKumbayaFixture.sol
  • docs/integrations/kumbaya.md
  • frontend/src/lib/timeCurveKumbayaSingleTx.ts

Acceptance criteria

  • DOUB direct: buy(charmWad) pulls DOUB
  • CL8Y: swap via CL8Y/DOUB Kumbaya pair → DOUB → buy
  • ETH / USDm: multi-hop to CL8Y → DOUB
  • Single-tx router: buyViaKumbaya targets DOUB output equal to gross DOUB need
  • Balance-delta ingress preserved (#123 (closed))
  • Chain-time swap deadlines (#83 (closed))

Verification checklist

  • Forge fork/local: each pay asset path
  • bash scripts/verify-timecurve-buy-router-anvil.sh replaced with arena equivalent