/**
 * Marketing & Leads Pipeline route group — marketing-leads-pipeline.
 * Mounted at /api/marketing in apps/zync-api/src/routes/index.ts (via manifest).
 *
 * All sub-routes run behind authMiddleware so the session + db handle are
 * populated. Permission checks are applied per-route via requirePermission().
 *
 * wave-9 leaf3 additions:
 *   /catalog  — product/service catalog (GET/POST items, PATCH/DELETE items/:id, GET categories)
 *   /proposals — proposals CRUD + send/accept/reject lifecycle
 *   /campaigns — lightweight campaigns CRUD + activate
 *
 * wave-10 leaf6 additions:
 *   /sequences — email drip sequences CRUD + enroll
 *   /leads/:id/create-proposal — lead-to-proposal flow
 *   /proposals/:id/create-contract — proposal-to-contract flow
 */
import { Hono } from 'hono'
import type { AppEnv } from '../../types'
import { authMiddleware } from '../../middleware/auth'
import { leadsRoute } from './leads'
import { formsRoute } from './forms'
import { webhooksRoute } from './webhooks'
import { overviewRoute } from './overview'
import { catalogRoute } from './catalog'
import { proposalsRoute } from './proposals'
import { campaignsRoute } from './campaigns'
import { sequencesRoute } from './sequences'
import { leadScoringSettingsRoute } from './lead-score'

const marketingRouter = new Hono<AppEnv>()

// All marketing routes require an authenticated session
marketingRouter.use('*', authMiddleware)

marketingRouter.route('/overview', overviewRoute)
marketingRouter.route('/leads', leadsRoute)
marketingRouter.route('/forms', formsRoute)
marketingRouter.route('/webhooks', webhooksRoute)

// wave-9 leaf3: catalog, proposals, campaigns
marketingRouter.route('/catalog', catalogRoute)
marketingRouter.route('/proposals', proposalsRoute)
marketingRouter.route('/campaigns', campaignsRoute)

// wave-10 leaf6: email sequences
marketingRouter.route('/sequences', sequencesRoute)

// wave-14: lead-qualification-scoring settings
marketingRouter.route('/settings/crm/lead-scoring', leadScoringSettingsRoute)

export { marketingRouter }
