{
  "compilerOptions": {
    /* Language and Environment */
    "target": "ES2023",                          // Node 24 supports modern JS features
    "lib": ["ES2023"],                           // Include ES2023 standard library
    "module": "NodeNext",                        // Use Node's native ESM/CJS resolution
    "moduleResolution": "NodeNext",              // Modern Node.js module resolution
    
    /* Emit */
    "outDir": "./dist",                          // Output directory for compiled files
    "rootDir": "./",                             // Root directory of source files
    "declaration": true,                         // Generate .d.ts files
    "declarationMap": true,                      // Generate sourcemaps for declarations
    "sourceMap": true,                           // Generate .js.map files
    "removeComments": false,                     // Keep comments in output
    
    /* Interop Constraints */
    "esModuleInterop": true,                     // Enable default imports from CJS modules
    "allowSyntheticDefaultImports": true,        // Allow default imports from modules with no default export
    "forceConsistentCasingInFileNames": true,    // Ensure consistent file name casing
    "isolatedModules": true,                     // Ensure each file can be transpiled independently
    "resolveJsonModule": true,                   // Allow importing .json files
    
    /* Type Checking */
    "strict": true,                              // Enable all strict type checking options
    "noImplicitAny": true,                       // Error on expressions with implied 'any' type
    "strictNullChecks": true,                    // Enable strict null checks
    "strictFunctionTypes": true,                 // Enable strict checking of function types
    "strictBindCallApply": true,                 // Enable strict bind/call/apply methods
    "strictPropertyInitialization": true,        // Ensure class properties are initialized
    "noImplicitThis": true,                      // Error when 'this' has an implied 'any' type
    "alwaysStrict": true,                        // Parse in strict mode and emit "use strict"
    
    /* Additional Checks */
    "noUnusedLocals": true,                      // Report errors on unused local variables
    "noUnusedParameters": true,                  // Report errors on unused parameters
    "noImplicitReturns": true,                   // Report error when not all code paths return a value
    "noFallthroughCasesInSwitch": true,         // Report errors for fallthrough cases in switch
    "noUncheckedIndexedAccess": false,           // Set to true for stricter index access
    
    /* Completeness */
    "skipLibCheck": true                         // Skip type checking of declaration files
  },
  "include": [
    "**/*.ts",
    "scripts/**/*.ts",
    "config/**/*.ts"
  ],
  "exclude": [
    "node_modules",
    "dist",
    "**/*.spec.ts",
    "**/*.test.ts"
  ],
  "ts-node": {
    "esm": true,                                 // Enable ESM support in ts-node
    "experimentalSpecifierResolution": "node"    // Use Node.js-style module resolution
  }
}