import { COOKIE_NAME } from "./_core/cookies.ts";
import { getSessionCookieOptions } from "./_core/cookies.ts";
import { systemRouter } from "./_core/systemRouter.ts";
import { publicProcedure, router } from "./_core/trpc.ts";
import { walletRouter } from "./routers/wallet.ts";
import { casinoRouter } from "./routers/casino.ts";
import { sportsbookRouter } from "./routers/sportsbook.ts";
import { pokerRouter } from "./routers/poker.ts";
import { bingoRouter } from "./routers/bingo.ts";
import { minigamesRouter } from "./routers/minigames.ts";
import { kycRouter } from "./routers/kyc.ts";
import { adminRouter } from "./routers/admin.ts";
import { staffPanelRouter } from "./routers/staffPanel.ts";
import { aiAssistantRouter } from "./routers/aiAssistant.ts";
import { chatRouter } from "./routers/chat.ts";
import { paymentRouter } from "./routers/payment.ts";
import { notificationRouter } from "./routers/notifications.ts";
import { gameManagementRouter } from "./routers/gameManagement.ts";
import { aiGameBuilderRouter } from "./routers/aiGameBuilder.ts";
import { aiSocialMediaRouter } from "./routers/aiSocialMedia.ts";
import { referralsRouter } from "./routers/referrals.ts";
import { achievementsRouter } from "./routers/achievements.ts";
import { socialRouter } from "./routers/social.ts";
import { engagementRouter } from "./routers/engagement.ts";
import { retentionRouter } from "./routers/retention.ts";
import { adminGamesRouter } from "./routers/adminGames.ts";
import { cashappRedemptionRouter } from "./routers/cashappRedemption.ts";
import { leaderboardRouter } from "./routers/leaderboard.ts";
import { tournamentsRouter } from "./routers/tournaments.ts";
import { vipRouter } from "./routers/vip.ts";
import { responsibleGamingRouter } from "./routers/responsibleGaming.ts";
import { dailyBonusRouter } from "./routers/dailyBonus.ts";
import { promoBannersRouter } from "./routers/promoBanners.ts";
import { favoritesRouter } from "./routers/favorites.ts";
import { dailySpinWheelRouter } from "./routers/dailySpinWheel.ts";
// import { cashappPaymentRouter } from "./routers/cashappPayment.ts"; // Disabled - table doesn't exist
import { poolSharkRouter } from "./routers/poolShark.ts";
import { platformRouter } from "./routers/platform.ts";
import { slotsRouter } from "./routers/slots.ts";
import { welcomeBonusRouter } from "./routers/welcomeBonus.ts";
import { gameConfigSlotsRouter } from "./routers/gameConfigSlots.ts";
import { adminFraudAlertsRouter } from "./routers/adminFraudAlerts.ts";
import { fraudAlertNotificationsRouter } from "./routers/fraudAlertNotifications.ts";
import { fraudActionsAdminRouter } from "./routers/fraudActionsAdmin.ts";
import { adminFingerprintAnalysisRouter } from "./routers/adminFingerprintAnalysis.ts";
import { gameManagerRouter } from "./routers/gameManager.ts";
import { gameTemplatesRouter } from "./routers/gameTemplates.ts";
import { rtpAdjustmentAdminRouter } from "./routers/rtpAdjustmentAdmin.ts";
import { aiEmployeeManagementRouter } from "./routers/aiEmployeeManagement.ts";
import { competitiveFeatures } from "./routers/competitiveFeatures.ts";
import { seasonalEventsRouter } from "./routers/seasonalEvents.ts";
import { seasonalEventsAdminRouter } from "./routers/seasonalEventsAdmin.ts";
import { seasonalEventsNotificationsRouter } from "./routers/seasonalEventsNotifications.ts";
import { adminThemeRouter } from "./routers/adminTheme.ts";
import { allGamesRouter } from "./routers/allGames.ts";
import { slotSettingsRouter } from "./routers/slotSettings.ts";
import { profileRouter } from "./routers/profile.ts";
import { emailVerificationRouter } from "./routers/emailVerification.ts";
import { gamesImportRouter } from "./routers/gamesImport.ts";
import { gameStatsRouter } from "./routers/gameStats.ts";
import { referralRouter } from "./routers/referral.ts";
import { popupRouter } from "./routers/popup.ts";
import { activityFeedRouter } from "./routers/activityFeed.ts";
import { gamificationRouter } from "./routers/gamification.ts";
import { vipPerksRouter } from "./routers/vipPerks.ts";
import { emailAuthRouter } from "./routers/emailAuth.ts";
import { sessionManagementRouter } from "./routers/sessionManagement.ts";
import { accountRecoveryRouter } from "./routers/accountRecovery.ts";
import { adminGamesRouter as adminGamesDetailRouter } from "./routers/admin.games.ts";
import { adminSupportRouter } from "./routers/admin.support.ts";
import { adminUsersRouter } from "./routers/admin.users.ts";
import { adminCasinoRouter } from "./routers/admin.casino.ts";
import { adminTrainingRouter } from "./routers/admin.training.ts";
import { playerEngagementRouter } from "./routers/player.engagement.ts";
import { analyticsRouter } from "./routers/analytics.ts";
import { easterGameRouter } from "./routers/easterGame.ts";
import { gameApprovalRouter } from "./routers/gameApproval.ts";
import { adminSectionsRouter } from "./routers/adminSections.ts";
import { adminOnboardingRouter } from "./routers/adminOnboarding.ts";
import { adminWelcomeRouter } from "./routers/adminWelcome.ts";
import { adminPerformanceRouter } from "./routers/adminPerformance.ts";
import { adminCoachingRouter } from "./routers/adminCoaching.ts";
import { adminShiftManagementRouter } from "./routers/adminShiftManagement.ts";
import { adminKnowledgeBaseRouter } from "./routers/adminKnowledgeBase.ts";
import { adminDelegationRouter } from "./routers/adminDelegation.ts";
import { adminBulkShiftsRouter } from "./routers/adminBulkShifts.ts";
import { adminOperationsRouter } from "./routers/adminOperations.ts";
import { emailCampaignsRouter } from "./routers/emailCampaigns.ts";
import { bannerAnalyticsRouter } from "./routers/bannerAnalytics.ts";
import { adminNotificationsRouter } from "./routers/adminNotifications.ts";
import { advancedFeaturesRouter } from "./routers/advancedFeatures.ts";
import { monitoringRouter } from "./routers/monitoring.ts";
import { webhookConfigRouter } from "./routers/webhookConfig.ts";
import { escalationPolicyRouter } from "./routers/escalationPolicy.ts";
import { alertTriggersRouter } from "./routers/alertTriggers.ts";
import { bonusRouter } from "./routers/bonusRouter.ts";
import { leaderboardNotificationsRouter } from "./routers/leaderboardNotificationsRouter.ts";
import { referralInviteRouter } from "./routers/referralInviteRouter.ts";
import { blockchainIntegrationRouter } from "./routers/blockchainIntegration.ts";
import { advancedSegmentationRouter } from "./routers/advancedSegmentation.ts";

export const appRouter = router({
  system: systemRouter,
  auth: router({
    me: publicProcedure.query(opts => opts.ctx.user),
    logout: publicProcedure.mutation(({ ctx }) => {
      const cookieOptions = getSessionCookieOptions(ctx.req);
      ctx.res.clearCookie(COOKIE_NAME, { ...cookieOptions, maxAge: -1 });
      return { success: true } as const;
    }),
    sendEmailVerification: emailVerificationRouter.sendVerification,
    verifyEmailToken: emailVerificationRouter.verifyToken,
    getEmailVerificationStatus: emailVerificationRouter.getStatus,
  }),
  wallet: walletRouter,
  casino: casinoRouter,
  sportsbook: sportsbookRouter,
  poker: pokerRouter,
  bingo: bingoRouter,
  minigames: minigamesRouter,
  kyc: kycRouter,
  admin: adminRouter,
  staff: staffPanelRouter,
  ai: aiAssistantRouter,
  chat: chatRouter,
  payment: paymentRouter,
  notifications: notificationRouter,
  gameManagement: gameManagementRouter,
  aiGameBuilder: aiGameBuilderRouter,
  aiSocialMedia: aiSocialMediaRouter,
  referrals: referralsRouter,
  achievements: achievementsRouter,
  social: socialRouter,
  engagement: engagementRouter,
  retention: retentionRouter,
  adminGames: adminGamesRouter,
  cashapp: cashappRedemptionRouter,
  leaderboard: leaderboardRouter,
  tournaments: tournamentsRouter,
  vip: vipRouter,
  responsibleGaming: responsibleGamingRouter,
  dailyBonus: dailyBonusRouter,
  promoBanners: promoBannersRouter,
  favorites: favoritesRouter,
  dailySpinWheel: dailySpinWheelRouter,
  // cashappPayment: cashappPaymentRouter, // Disabled - table doesn't exist
  poolShark: poolSharkRouter,
  platform: platformRouter,
  slots: slotsRouter,
  welcomeBonus: welcomeBonusRouter,
  gameConfigSlots: gameConfigSlotsRouter,
  adminFraudAlerts: adminFraudAlertsRouter,
  fraudAlertNotifications: fraudAlertNotificationsRouter,
  fraudActionsAdmin: fraudActionsAdminRouter,
  adminFingerprintAnalysis: adminFingerprintAnalysisRouter,
  gameManager: gameManagerRouter,
  gameTemplates: gameTemplatesRouter,
  rtpAdjustment: rtpAdjustmentAdminRouter,
  aiEmployees: aiEmployeeManagementRouter,
  competitive: competitiveFeatures,
  seasonalEvents: seasonalEventsRouter,
  seasonalEventsAdmin: seasonalEventsAdminRouter,
  gameStats: gameStatsRouter,
  referral: referralRouter,
  seasonalEventsNotifications: seasonalEventsNotificationsRouter,
  adminTheme: adminThemeRouter,
  allGames: allGamesRouter,
  slotSettings: slotSettingsRouter,
  profile: profileRouter,
  gamesImport: gamesImportRouter,
  popup: popupRouter,
  activityFeed: activityFeedRouter,
  gamification: gamificationRouter,
  vipPerks: vipPerksRouter,
  emailAuth: emailAuthRouter,
  session: sessionManagementRouter,
  accountRecovery: accountRecoveryRouter,
  adminGamesDetail: adminGamesDetailRouter,
  adminSupport: adminSupportRouter,
  adminUsers: adminUsersRouter,
  adminCasino: adminCasinoRouter,
  adminTraining: adminTrainingRouter,
  playerEngagement: playerEngagementRouter,
  analytics: analyticsRouter,
  easterGame: easterGameRouter,
  gameApproval: gameApprovalRouter,
  adminSections: adminSectionsRouter,
  adminOnboarding: adminOnboardingRouter,
  adminWelcome: adminWelcomeRouter,
  adminPerformance: adminPerformanceRouter,
  adminCoaching: adminCoachingRouter,
  adminShiftManagement: adminShiftManagementRouter,
  adminKnowledgeBase: adminKnowledgeBaseRouter,
  adminDelegation: adminDelegationRouter,
  adminBulkShifts: adminBulkShiftsRouter,
  adminOperations: adminOperationsRouter,
  emailCampaigns: emailCampaignsRouter,
  bannerAnalytics: bannerAnalyticsRouter,
  adminNotifications: adminNotificationsRouter,
  advancedFeatures: advancedFeaturesRouter,
  monitoring: monitoringRouter,
  webhookConfig: webhookConfigRouter,
  escalationPolicy: escalationPolicyRouter,
  alertTriggers: alertTriggersRouter,
  bonus: bonusRouter,
  leaderboardNotifications: leaderboardNotificationsRouter,
  referralInvite: referralInviteRouter,
  blockchain: blockchainIntegrationRouter,
  segmentation: advancedSegmentationRouter,
});


export type AppRouter = typeof appRouter;
