{
  "parser": "@typescript-eslint/parser", // Specifies the ESLint parser for TypeScript
  "plugins": ["@typescript-eslint", "import"], // Includes TypeScript and import plugins
  "overrides": [
    {
      "files": ["src/**/*.{ts,tsx,js,jsx}"], // Applies these rules to all TypeScript and JavaScript files in the src directory
      "rules": {
        // General rules that apply to all files
        "eqeqeq": ["error", "always"], // Enforces the use of === and !== instead of == and !=
        "indent": ["error", 2], // Enforces a 2-space indentation
        "quotes": ["error", "double"], // Enforces the use of double quotes for strings
        "no-var": "error", // Disallows the use of var, enforcing let or const instead
        "prefer-const": "error", // Prefers the use of const for variables that are never reassigned
        "no-undef": "off", // Disables the rule that disallows the use of undeclared variables (TypeScript handles this)
        "@typescript-eslint/no-unused-vars": [ "error", {
          "args": "none", // Allows unused function parameters. Useful for functions with specific signatures where not all parameters are always used.
          "ignoreRestSiblings": true // Allows unused variables that are part of a rest property in object destructuring. Useful for excluding certain properties from an object while using the rest.
        }],
        "eol-last": ["error", "always"], // Enforces at least one newline at the end of files
        "@typescript-eslint/semi": ["error", "always"], // Requires semicolons for TypeScript-specific syntax
        "semi": "off", // Disables the general semi rule for TypeScript files
        "@typescript-eslint/no-extra-semi": ["error"], // Disallows unnecessary semicolons for TypeScript-specific syntax
        "brace-style": "off", // Note: you must disable the base rule as it can report incorrect errors
        "curly": ["error", "all"], // Enforces the use of curly braces for all control statements
        "@typescript-eslint/brace-style": ["error", "1tbs"],
        "no-trailing-spaces": ["error", { // Disallows trailing whitespace at the end of lines
          "skipBlankLines": false, // Enforces the rule even on blank lines
          "ignoreComments": false // Enforces the rule on lines containing comments
        }],
        "space-before-blocks": ["error", "always"], // Enforces a space before blocks
        "keyword-spacing": ["error", { "before": true, "after": true }] // Enforces spacing before and after keywords
      }
    }
  ]
}