/**
 * Webhook routes barrel — system-communications-notifications (Task 14).
 *
 * All webhook routes are mounted with RATE_LIMITER_WEBHOOK middleware.
 * Rate limit: 100 requests/min per IP (configured in wrangler.toml).
 */
import { Hono } from 'hono'
import type { AppEnv } from '../../types'
import { rateLimit } from '@zync/auth'
import { telegramWebhookRouter } from './telegram'
import { slackRouter } from './slack'
import { whatsappRouter } from './whatsapp'
import { resendWebhookRouter } from './resend'

const webhookRoutes = new Hono<AppEnv>()

// Apply rate limiting to all webhook routes
// Rate-limit key: client IP from Cloudflare header
webhookRoutes.use('*', async (c, next) => {
  const ip = c.req.header('CF-Connecting-IP') ?? c.req.header('X-Forwarded-For') ?? 'unknown'
  return rateLimit(c.env.RATE_LIMITER_WEBHOOK, ip)(c, next)
})

webhookRoutes.route('/telegram', telegramWebhookRouter)
webhookRoutes.route('/slack', slackRouter)
webhookRoutes.route('/whatsapp', whatsappRouter)
// invoice-email-history (wave-13): Resend delivery event webhooks
webhookRoutes.route('/resend', resendWebhookRouter)

export { webhookRoutes }
