import { router } from '../trpc'
import { programRouter } from './program'
import { roundRouter } from './round'
import { projectRouter } from './project'
import { userRouter } from './user'
import { assignmentRouter } from './assignment'
import { evaluationRouter } from './evaluation'
import { fileRouter } from './file'
import { exportRouter } from './export'
import { auditRouter } from './audit'
import { settingsRouter } from './settings'
import { gracePeriodRouter } from './gracePeriod'
// Phase 2 routers
import { learningResourceRouter } from './learningResource'
import { partnerRouter } from './partner'
import { notionImportRouter } from './notion-import'
import { typeformImportRouter } from './typeform-import'
// Phase 2B routers
import { tagRouter } from './tag'
import { applicantRouter } from './applicant'
import { liveVotingRouter } from './live-voting'
import { analyticsRouter } from './analytics'
// Storage routers
import { avatarRouter } from './avatar'
import { logoRouter } from './logo'
// Applicant system routers
import { applicationRouter } from './application'
import { mentorRouter } from './mentor'
import { filteringRouter } from './filtering'
import { specialAwardRouter } from './specialAward'
import { notificationRouter } from './notification'

/**
 * Root tRPC router that combines all domain routers
 */
export const appRouter = router({
  program: programRouter,
  round: roundRouter,
  project: projectRouter,
  user: userRouter,
  assignment: assignmentRouter,
  evaluation: evaluationRouter,
  file: fileRouter,
  export: exportRouter,
  audit: auditRouter,
  settings: settingsRouter,
  gracePeriod: gracePeriodRouter,
  // Phase 2 routers
  learningResource: learningResourceRouter,
  partner: partnerRouter,
  notionImport: notionImportRouter,
  typeformImport: typeformImportRouter,
  // Phase 2B routers
  tag: tagRouter,
  applicant: applicantRouter,
  liveVoting: liveVotingRouter,
  analytics: analyticsRouter,
  // Storage routers
  avatar: avatarRouter,
  logo: logoRouter,
  // Applicant system routers
  application: applicationRouter,
  mentor: mentorRouter,
  filtering: filteringRouter,
  specialAward: specialAwardRouter,
  notification: notificationRouter,
})

export type AppRouter = typeof appRouter
