{
  "rules": {
    "member-access": [true, "check-accessor", "check-constructor", "check-parameter-property"],
    "member-ordering": [
      false,
      {
        "order": "fields-first"
      }
    ],
    "no-any": false,
    "no-empty-interface": false,
    "no-inferrable-types": [true, "ignore-params"],
    "no-internal-module": true,
    "no-namespace": [true, "allow-declarations"],
    "no-reference": true,
    "no-var-requires": false,
    "typedef": [true, "call-signature", "parameter", "property-declaration"],
    "typedef-whitespace": [
      false,
      {
        "call-signature": "nospace",
        "index-signature": "nospace",
        "parameter": "nospace",
        "property-declaration": "nospace",
        "variable-declaration": "nospace"
      },
      {
        "call-signature": "nospace",
        "index-signature": "nospace",
        "parameter": "nospace",
        "property-declaration": "nospace",
        "variable-declaration": "nospace"
      }
    ],
    "unified-signatures": true,
    "ban": [true, "window", "eval"],
    "curly": true,
    "forin": true,
    "label-position": true,
    "no-arg": true,
    "no-bitwise": true,
    "no-conditional-assignment": true,
    "no-console": [false, "debug", "info", "time", "timeEnd", "trace"],
    "no-construct": true,
    "no-debugger": true,
    "no-duplicate-variable": true,
    "no-dynamic-delete": false,
    "no-empty": [true, "allow-empty-catch"],
    "no-eval": true,
    "no-implicit-dependencies": false,
    "no-invalid-template-strings": true,
    "no-invalid-this": true,
    "no-null-keyword": true,
    "no-object-literal-type-assertion": true,
    "no-return-await": true,
    "no-shadowed-variable": true,
    "no-sparse-arrays": true,
    "no-string-literal": false,
    "no-string-throw": true,
    "no-submodule-imports": [false, "@nationalbankbelgium", "rxjs", "lodash", "core-js", "valdr", "angular-material"],
    "no-switch-case-fall-through": true,
    "no-this-assignment": false,
    "no-unnecessary-class": ["allow-static-only"],
    "no-unsafe-finally": true,
    "no-unused-expression": true,
    "no-var-keyword": true,
    "prefer-conditional-expression": false,
    "prefer-object-spread": true,
    "prefer-template": false,
    "radix": true,
    "switch-default": true,
    "triple-equals": true,
    "use-isnan": true,
    "cyclomatic-complexity": [true, 20],
    "no-default-export": true,
    "no-duplicate-imports": true,
    "no-mergeable-namespace": true,
    "no-require-imports": false,
    "object-literal-sort-keys": false,
    "align": [false, "arguments", "statements", "parameters", "members", "elements"],
    "callable-types": true,
    "class-name": true,
    "comment-format": [true, "check-space"],
    "file-header": false,
    "encoding": false,
    "interface-name": [false, "never-prefix"],
    "interface-over-type-literal": true,
    "jsdoc-format": [true, "check-multiline-start"],
    "no-angle-bracket-type-assertion": false,
    "no-parameter-properties": false,
    "no-redundant-jsdoc": true,
    "no-reference-import": true,
    "no-unnecessary-callback-wrapper": false,
    "object-literal-shorthand": false,
    "one-variable-per-declaration": true,
    "switch-final-break": false,
    "variable-name": [
      true,
      "check-format",
      "require-const-for-all-caps",
      "allow-leading-underscore",
      "allow-trailing-underscore",
      "ban-keywords"
    ],
    "whitespace": [
      false,
      "check-branch",
      "check-decl",
      "check-operator",
      "check-module",
      "check-separator",
      "check-rest-spread",
      "check-type",
      "check-typecast",
      "check-type-operator",
      "check-preblock"
    ],
    "prefer-const": [
      true,
      {
        "destructuring": "all"
      }
    ],
    "no-magic-numbers": false,
    "import-blacklist": [true, "@angular/material", "lodash", "rxjs/internal", "rxjs/index", "rxjs/Rx", "lodash-es"],
    "ordered-imports": false,
    "max-classes-per-file": false, // [true, 1],
    "prefer-for-of": true,
    "array-type": false, // [true, "array"]
    "arrow-return-shorthand": true,
    "binary-expression-operand-order": false,
    "no-unnecessary-initializer": true,
    "no-misused-new": true,
    "prefer-method-signature": false,
    "prefer-switch": [
      true,
      {
        "min-cases": 3
      }
    ],
    "prefer-function-over-method": false,
    "prefer-while": true,
    "no-import-side-effect": [
      true,
      {
        "ignore-module": "(reflect-metadata|core-js|ngrx-store|angular|moment|polyfills|vendor|typings|\\.css|\\.pcss)"
      }
    ],
    "no-non-null-assertion": true,
    "no-parameter-reassignment": false,
    "adjacent-overload-signatures": true,
    "ban-comma-operator": false,
    "ban-types": false,
    "no-duplicate-super": true,
    "no-duplicate-switch-case": true,
    "newline-before-return": false,
    "newline-per-chained-call": false,
    "file-name-casing": [true, { "public_api.ts": "snake-case", ".*": "kebab-case" }],
    "ban-ts-ignore": true,
    "function-constructor": true,
    "unnecessary-constructor": true,
    "no-tautology-expression": true,
    "static-this": true,
    "unnecessary-else": [true, { "allow-else-if": true }],
    "no-null-undefined-union": true,
    "no-async-without-await": true,

    // TSlint rules that require type info
    "no-inferred-empty-object-type": true,
    "no-void-expression": [true, "ignore-arrow-function-shorthand"],
    "no-boolean-literal-compare": true,
    "no-unnecessary-qualifier": true,
    "no-floating-promises": true,
    "match-default-export-name": true,
    "return-undefined": true,
    "deprecation": true,
    "use-default-type-parameter": true,
    "await-promise": true,
    "no-for-in-array": true,
    "no-unbound-method": [true, { "ignore-static": true, "whitelist": ["expect"], "allow-typeof": true, "allow-delete": true }],
    "no-unnecessary-type-assertion": true,
    "restrict-plus-operands": true,
    "unnecessary-bind": true,
    "strict-comparisons": [true, { "allow-object-equal-comparison": true, "allow-string-order-comparison": true }]
    //  "strict-boolean-expressions": true,
    //	"promise-function-async": true,
    //	"completed-docs": true,
    //  "no-unsafe-any": true,
    //  "strict-type-predicates": true,
    //  "no-use-before-declare": true, // only useful when using the var keyword, deprecated for TypeScript > 2.9.0
    //  "no-unused-variable": true, // deprecated as from TSLint 5.11.0
    //  "prefer-readonly": true,
  }
}
