{
  "$schema": "./node_modules/oxlint/configuration_schema.json",
  "plugins": ["jsdoc", "jsx-a11y", "react", "typescript"],
  "jsPlugins": [
    "eslint-plugin-matrix-org"
    // TODO: Re-enable once oxlint supports lint rules that rely on TypeScript type-awareness.
    // "eslint-plugin-rxjs"
  ],
  "categories": {
    "correctness": "off"
  },
  "options": {
    "typeAware": true
  },
  "env": {
    "builtin": true
  },
  "rules": {
    "jsdoc/empty-tags": "error",
    "jsdoc/check-property-names": "error",
    "jsdoc/require-param-description": "warn",
    "matrix-org/require-copyright-header": [
      "error",
      "/*\nCopyright %%CURRENT_YEAR%% New Vector Ltd.\n\nSPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial\nPlease see LICENSE in the repository root for full details.\n*/\n\n"
    ],
    "react/display-name": "error",
    // TODO: Re-enable once oxlint supports lint rules that rely on TypeScript type-awareness.
    // "rxjs/no-exposed-subjects": "error",
    // "rxjs/finnish": [
    //   "error",
    //   {
    //     "names": {
    //       "^this$": false
    //     }
    //   }
    // ],
    "no-restricted-imports": [
      "error",
      {
        "paths": [
          {
            "name": "matrix-widget-api/src",
            "message": "Please use matrix-widget-api instead"
          },
          {
            "name": "matrix-widget-api/src/",
            "message": "Please use matrix-widget-api instead"
          },
          {
            "name": "matrix-widget-api/src/index",
            "message": "Please use matrix-widget-api instead"
          },
          {
            "name": "matrix-widget-api/lib",
            "message": "Please use matrix-widget-api instead"
          },
          {
            "name": "matrix-widget-api/lib/",
            "message": "Please use matrix-widget-api instead"
          },
          {
            "name": "matrix-widget-api/lib/index",
            "message": "Please use matrix-widget-api instead"
          },
          {
            "name": "matrix-js-sdk/src",
            "message": "Please use matrix-js-sdk instead"
          },
          {
            "name": "matrix-js-sdk/src/",
            "message": "Please use matrix-js-sdk instead"
          },
          {
            "name": "matrix-js-sdk/src/index",
            "message": "Please use matrix-js-sdk instead"
          },
          {
            "name": "matrix-js-sdk/lib",
            "message": "Please use matrix-js-sdk instead"
          },
          {
            "name": "matrix-js-sdk/lib/",
            "message": "Please use matrix-js-sdk instead"
          },
          {
            "name": "matrix-js-sdk/lib/index",
            "message": "Please use matrix-js-sdk instead"
          }
        ],
        "patterns": [
          {
            "group": [
              "matrix-widget-api/src",
              "matrix-widget-api/src/",
              "matrix-widget-api/src/**",
              "matrix-widget-api/lib",
              "matrix-widget-api/lib/",
              "matrix-widget-api/lib/**"
            ],
            "message": "Please use matrix-widget-api instead"
          },
          {
            "group": [
              "matrix-js-sdk/src",
              "matrix-js-sdk/src/",
              "matrix-js-sdk/src/**"
            ],
            "message": "Please use matrix-js-sdk instead"
          }
        ]
      }
    ],
    "typescript/no-floating-promises": "error",
    "typescript/no-misused-promises": "error",
    "typescript/promise-function-async": "error",
    "typescript/require-await": "error",
    "typescript/await-thenable": "error",
    "typescript/consistent-type-imports": [
      "error",
      {
        "fixStyle": "inline-type-imports"
      }
    ]
  }
}
