{
    "settings": {
        "react": {
            "version": "detect"
        }
    },
    "env": {
        "browser": true
    },
    "extends": [
        "plugin:react-hooks/recommended",
        "eslint:recommended",
        "plugin:react/recommended", // Uses the recommended rules from @eslint-plugin-react
        "plugin:@typescript-eslint/recommended", // Uses the recommended rules from the @typescript-eslint/eslint-plugin
    ],
    "parser": "@typescript-eslint/parser",
    "parserOptions": {
        "ecmaFeatures": {
            "jsx": true
        },
        "ecmaVersion": 12,
        "sourceType": "module"
    },
    "plugins": [
        "react",
        "react-hooks",
        "@typescript-eslint",
        "unicorn",
    ],
    "rules": {
        "react/display-name": "off",
        "unicorn/no-unused-properties": "error",
        "@typescript-eslint/no-unused-vars": [
            "error",
            { "argsIgnorePattern": "^_", "ignoreRestSiblings": true }
        ],
        "@emotion/import-from-emotion": "error",
        "@emotion/styled-import": "error",
        "react-hooks/exhaustive-deps": "warn",
        "@typescript-eslint/interface-name-prefix": "off",
        "@typescript-eslint/no-use-before-define": "off",
        "@typescript-eslint/no-explicit-any": "off",
        "@typescript-eslint/no-empty-function": "warn",
        "react/no-unescaped-entities": "off",
        "no-extra-boolean-cast": "warn",
        "no-empty-pattern": "warn",
        "prefer-const": "warn",
        "@typescript-eslint/no-extra-semi": "warn",
        "react/prop-types": "off",
        "react/jsx-key": "warn",
        "@typescript-eslint/no-non-null-asserted-optional-chain": "warn",
        "@typescript-eslint/no-non-null-assertion": ["error"],
        "@typescript-eslint/no-inferrable-types": "warn",
        "no-empty": "warn",
        "@typescript-eslint/no-var-requires": "off",
        "@typescript-eslint/ban-types": "warn",
        "no-var": "warn",
        "no-useless-escape": "warn",
        "no-async-promise-executor": "warn",
        "@typescript-eslint/no-empty-interface": "warn",
        "no-case-declarations": "off",
        "linebreak-style": ["warn", "unix"],
        "semi": ["warn", "always"],
        "no-debugger": ["warn"],
        "curly": ["error"],
        "valid-typeof": "error",
        "react/jsx-uses-react": "error",
        "react/react-in-jsx-scope": "error",
        "no-duplicate-imports": "error",
        "object-shorthand": ["error", "always"],
    }
}
