{
  "root": true,
  "parser": "@typescript-eslint/parser",
  "plugins": [
    "@typescript-eslint"
  ],
  "extends": [
    "eslint:recommended",
    "plugin:@typescript-eslint/eslint-recommended",
    "plugin:@typescript-eslint/recommended"
  ],
  "rules": {
    "@typescript-eslint/no-explicit-any": 0,
    "@typescript-eslint/no-unused-vars": 1,
    "@typescript-eslint/no-empty-interface": 0,
    "@typescript-eslint/no-namespace": 0,
    "@typescript-eslint/comma-dangle": 1,
    "@typescript-eslint/func-call-spacing": 2,
    "@typescript-eslint/quotes": 1,
    "@typescript-eslint/brace-style": [
      "warn",
      "allman"
    ],
    "@typescript-eslint/naming-convention": [
      "warn",
      {
        "selector": "default",
        "format": ["camelCase"],
        "leadingUnderscore": "allow"
      },
      {
        "selector": "typeLike",
        "format": ["PascalCase"]
      },
      {
        "selector": "objectLiteralProperty",
        "format": ["PascalCase", "camelCase"],
        "leadingUnderscore": "allow"
      },
      {
        "selector": "typeProperty",
        "format": ["PascalCase", "camelCase"],
        "leadingUnderscore": "allow"
      },
      {
        "selector": "enumMember",
        "format": ["UPPER_CASE"]
      }
    ],
    "@typescript-eslint/indent": [
      "warn",
      4
    ],
    "@typescript-eslint/no-unused-expressions": [
      "warn",
      { 
        "allowShortCircuit": false,
        "allowTernary": false
      }
    ],
    "@typescript-eslint/keyword-spacing": [
      "warn",
      {
        "before": true,
        "after": true
      }
    ],
    "@typescript-eslint/explicit-module-boundary-types": [
      "warn",
      {
        "allowArgumentsExplicitlyTypedAsAny": true
      }
    ]
  }
}