const express = require('express');

/**
 * Config routes aggregator
 * @param {Object} ctx - Application context (for backward compatibility)
 * @returns {express.Router}
 */
module.exports = function(ctx) {
  const router = express.Router();
  
  // Common deps for all config routes
  const baseDeps = {
    configStateManager: ctx.configStateManager,
    servicesStateManager: ctx.servicesStateManager,
    asyncHandler: ctx.asyncHandler,
    log: ctx.log,
    CONFIG_FILE: ctx.CONFIG_FILE,
    errorResponse: ctx.errorResponse,
    loadSiteConfig: ctx.loadSiteConfig
  };
  
  // Additional deps for backup route
  const backupDeps = {
    ...baseDeps,
    SERVICES_FILE: ctx.SERVICES_FILE,
    CONFIG_FILE: ctx.CONFIG_FILE,
    TOTP_CONFIG_FILE: ctx.TOTP_CONFIG_FILE,
    TAILSCALE_CONFIG_FILE: ctx.TAILSCALE_CONFIG_FILE,
    NOTIFICATIONS_FILE: ctx.NOTIFICATIONS_FILE,
    caddy: ctx.caddy,
    dns: ctx.dns,
    fetchT: ctx.fetchT,
    totpConfig: ctx.totpConfig,
    credentialManager: ctx.credentialManager,
    loadSiteConfig: ctx.loadSiteConfig,
    loadNotificationConfig: ctx.loadNotificationConfig,
    session: ctx.session,
    saveTotpConfig: ctx.saveTotpConfig
  };
  
  router.use(require('./settings')(baseDeps));
  router.use(require('./assets')({ ...baseDeps, readConfig: ctx.readConfig, saveConfig: ctx.saveConfig }));
  router.use(require('./backup')(backupDeps));
  return router;
};
