{
    "extends": "tslint:all",
    "rulesDirectory": "./bin/rules",
    "rules": {
        // Custom rules
        "expect": true,
        "export-just-namespace": true,
        "no-bad-reference": true,
        "no-const-enum": true,
        "no-dead-reference": true,
        "no-import-default-of-export-equals": true,
        "no-padding": true,
        "redundant-undefined": true,
        "no-relative-import-in-test": true,
        "strict-export-declare-modifiers": true,
        "no-any-union": true,
        "no-single-declare-module": true,
        "no-unnecessary-generics": true,
        "no-useless-files": true,
        "prefer-declare-function": true,
        "trim-file": true,
        "unified-signatures": true,
        "void-return": true,
        "npm-naming": true,

        "comment-format": [true, "check-space"], // But not check-uppercase or check-lowercase
        "interface-name": [true, "never-prefix"],
        "max-line-length": [true, 200],
        "member-access": [true, "no-public"],
        "no-consecutive-blank-lines": true,
        "no-unnecessary-callback-wrapper": true,
        "no-namespace": [true, "allow-declarations"],
        "object-literal-key-quotes": [true, "as-needed"],
        "one-line": [
            true,
            "check-catch",
            "check-finally",
            "check-else",
            "check-open-brace",
            "check-whitespace"
        ],
        "one-variable-per-declaration": [true, "ignore-for-loop"],
        "only-arrow-functions": [true, "allow-declarations", "allow-named-functions"],
        "prefer-template": [true, "allow-single-concat"],
        "whitespace": [
            true,
            "check-branch",
            "check-decl",
            "check-operator",
            "check-module",
            "check-separator",
            "check-type",
            "check-typecast"
        ],

        // TODO?
        "align": false, // TODO
        "arrow-parens": false,
        "arrow-return-shorthand": true, // TODO: "multiline"
        "linebreak-style": false, // TODO
        "no-void-expression": [true, "ignore-arrow-function-shorthand"],
        "no-any": false, // TODO
        "no-floating-promises": false, // TODO: https://github.com/palantir/tslint/issues/2879
        "no-import-side-effect": false,
        "no-this-assignment": false,
        "no-unbound-method": false, // TODO?
        "no-unsafe-any": false, // TODO
        "no-restricted-globals": false,
        "number-literal-format": false, // TODO
        "promise-function-async": false,
        "restrict-plus-operands": false, // TODO
        "return-undefined": false, // TODO
        "switch-final-break": false, // TODO
        "prefer-method-signature": false, // TODO?

        // Pretty sure we don't want these
        "binary-expression-operand-order": false,
        "class-name": false,
        "completed-docs": false,
        "curly": false,
        "cyclomatic-complexity": false,
        "deprecation": false,
        "file-name-casing": false,
        "forin": false,
        "indent": false,
        "match-default-export-name": false,
        "max-classes-per-file": false,
        "max-file-line-count": false,
        "member-ordering": false,
        "newline-before-return": false,
        "newline-per-chained-call": false,
        "no-bitwise": false,
        "no-console": false,
        "no-default-export": false,
        "no-empty": false,
        "no-implicit-dependencies": false, // See https://github.com/palantir/tslint/issues/3364
        "no-inferred-empty-object-type": false,
        "no-magic-numbers": false,
        "no-non-null-assertion": false,
        "no-null-keyword": false,
        "no-parameter-properties": false,
        "no-parameter-reassignment": false,
        "no-reference": false, // But see no-bad-reference
        "no-require-imports": false,
        "no-shadowed-variable": false,
        "no-string-literal": false,
        "no-submodule-imports": false,
        "no-tautology-expression": false,
        "no-unused-expression": false,
        "no-unused-variable": false,
        "no-use-before-declare": false,
        "object-literal-sort-keys": false,
        "ordered-imports": false,
        "prefer-function-over-method": false,
        "quotemark": false,
        "strict-boolean-expressions": false,
        "strict-type-predicates": false,
        "switch-default": false,
        "trailing-comma": false,
        "triple-equals": [true, "allow-null-check"],
        "typedef": false,
        "type-literal-delimiter": false,
        "variable-name": false,
        "increment-decrement": false,
        "unnecessary-constructor": false,
        "unnecessary-else": false,
        "no-angle-bracket-type-assertion": false,
        "no-default-import": false,
        "callable-types": false
    }
}
