{
    "env": {
        "commonjs": false,
        "node": true
    },
    "extends": [
        "airbnb-base",
        "airbnb-typescript/base",
        "plugin:@typescript-eslint/recommended",
        "plugin:promise/recommended",
        "prettier"
    ],
    "parser": "@typescript-eslint/parser",
    "parserOptions": {
        "project": "./tsconfig.eslint.json"
    },
    "plugins": ["@typescript-eslint", "promise", "import", "prettier"],
    "rules": {
        "prettier/prettier": "error",
        "import/prefer-default-export": "off",
        "import/no-default-export": "off",
        "import/no-dynamic-require": "off",
        "class-methods-use-this": "off",
        "@typescript-eslint/no-explicit-any": "off",
        "import/no-named-as-default": "off",
        "no-use-before-define": [
            "error",
            {
                "functions": false,
                "classes": true,
                "variables": true
            }
        ],
        "@typescript-eslint/explicit-function-return-type": "off",
        "@typescript-eslint/no-use-before-define": [
            "error",
            {
                "functions": false,
                "classes": true,
                "variables": true,
                "typedefs": true
            }
        ],
        "import/no-extraneous-dependencies": "off"
    },
    "settings": {
        "import/resolver": {
            "typescript": {
                "alwaysTryTypes": true,
                "project": "./tsconfig.json"
            }
        }
    },
    "globals": {
        "Joi": "readonly"
    }
}
