[
  {
    "path": ".github/FUNDING.yml",
    "content": "github: [antfu]\n"
  },
  {
    "path": ".github/workflows/ci.yml",
    "content": "name: CI\n\non:\n  push:\n    branches:\n      - main\n\n  pull_request:\n    branches:\n      - main\n\njobs:\n  lint:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v3\n\n      - name: Install pnpm\n        uses: pnpm/action-setup@v2\n\n      - name: Set node\n        uses: actions/setup-node@v3\n        with:\n          node-version: lts/*\n\n      - name: Setup\n        run: npm i -g @antfu/ni\n\n      - name: Install\n        run: nci\n\n      - name: Lint\n        run: nr lint\n\n      - name: Typecheck\n        run: nr typecheck\n\n  test:\n    runs-on: ${{ matrix.os }}\n\n    strategy:\n      matrix:\n        node: [lts/*]\n        os: [ubuntu-latest, windows-latest, macos-latest]\n      fail-fast: false\n\n    steps:\n      - uses: actions/checkout@v3\n\n      - name: Install pnpm\n        uses: pnpm/action-setup@v2\n\n      - name: Set node ${{ matrix.node }}\n        uses: actions/setup-node@v3\n        with:\n          node-version: ${{ matrix.node }}\n\n      - name: Setup\n        run: npm i -g @antfu/ni\n\n      - name: Install\n        run: nci\n\n      - name: Build\n        run: nr build\n\n      - name: Test\n        run: nr test\n"
  },
  {
    "path": ".github/workflows/release.yml",
    "content": "name: Release\n\non:\n  push:\n    tags:\n      - 'v*'\n\njobs:\n  release:\n    uses: sxzz/workflows/.github/workflows/release.yml@v1\n    with:\n      publish: true\n    permissions:\n      contents: write\n      id-token: write\n"
  },
  {
    "path": ".gitignore",
    "content": ".cache\n.DS_Store\n.idea\n*.log\n*.tgz\ncoverage\ndist\nlib-cov\nlogs\nnode_modules\ntemp\neslint-typegen.d.ts\n"
  },
  {
    "path": ".npmrc",
    "content": "ignore-workspace-root-check=true\nshell-emulator=true\n"
  },
  {
    "path": ".vscode/settings.json",
    "content": "{\n  // Enable the ESlint flat config support\n  \"eslint.experimental.useFlatConfig\": true,\n\n  // Disable the default formatter, use eslint instead\n  \"prettier.enable\": false,\n  \"editor.formatOnSave\": false,\n\n  // Auto fix\n  \"editor.codeActionsOnSave\": {\n    \"source.fixAll\": \"explicit\",\n    \"source.organizeImports\": \"never\"\n  },\n\n  // Silent the stylistic rules in you IDE, but still auto fix them\n  \"eslint.rules.customizations\": [\n    { \"rule\": \"style/*\", \"severity\": \"off\" },\n    { \"rule\": \"*-indent\", \"severity\": \"off\" },\n    { \"rule\": \"*-spacing\", \"severity\": \"off\" },\n    { \"rule\": \"*-spaces\", \"severity\": \"off\" },\n    { \"rule\": \"*-order\", \"severity\": \"off\" },\n    { \"rule\": \"*-dangle\", \"severity\": \"off\" },\n    { \"rule\": \"*-newline\", \"severity\": \"off\" },\n    { \"rule\": \"*quotes\", \"severity\": \"off\" },\n    { \"rule\": \"*semi\", \"severity\": \"off\" }\n  ],\n\n  // Enable eslint for all supported languages\n  \"eslint.validate\": [\n    \"javascript\",\n    \"javascriptreact\",\n    \"typescript\",\n    \"typescriptreact\",\n    \"vue\",\n    \"html\",\n    \"markdown\",\n    \"json\",\n    \"jsonc\",\n    \"yaml\"\n  ]\n}\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "Please refer to https://github.com/antfu/contribute\n"
  },
  {
    "path": "LICENSE",
    "content": "MIT License\n\nCopyright (c) 2022 Anthony Fu <https://github.com/antfu>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "README.md",
    "content": "# eslint-typegen\n\n[![npm version][npm-version-src]][npm-version-href]\n[![npm downloads][npm-downloads-src]][npm-downloads-href]\n[![bundle][bundle-src]][bundle-href]\n[![JSDocs][jsdocs-src]][jsdocs-href]\n[![License][license-src]][license-href]\n\nGenerate types from ESLint rule schemas automatically, with auto-completion and type-checking for rule options.\n\n![](https://github.com/antfu/eslint-typegen/assets/11247099/642ffdc0-c662-4f3b-9237-16d776be1c3e)\n\n> Btw, if you are using [`@antfu/eslint-config`](https://github.com/antfu/eslint-config), you may NOT need to setup this, as the types for rules [are already shipped with the package](https://github.com/antfu/eslint-config/blob/95963ac345d27cd06a4eeb5ebc16e1848cb2fd81/scripts/typegen.ts#L29-L33).\n\n## Usage\n\n```bash\nnpm i eslint-typegen\n```\n\nIn your `eslint.config.mjs`, wrap the export with `typegen` function:\n\n```ts\n// @ts-check\n/// <reference path=\"./eslint-typegen.d.ts\" />\nimport typegen from 'eslint-typegen'\n\nexport default typegen(\n  [\n    // ...your normal eslint flat config\n  ]\n)\n```\n\nRun ESLint once, an `eslint-typegen.d.ts` file will be generated to augment ESLint's `Linter.RulesRecord` types, to provide you with auto-completion and type-checking for your ESLint rules configuration based on the ESLint plugins you are using.\n\n> It will caluclate the hash of the plugins meta from your flat config, and only regenerate the types when they changes. If you want to force regenerate the types, you can delete the `eslint-typegen.d.ts` file and run ESLint again.\n\n## Low-level API\n\nYou can find low-level APIs in the `eslint-typegen/core` modules.\n\n```ts\nimport fs from 'node:fs/promises'\nimport pluginTs from '@typescript-eslint/eslint-plugin'\nimport pluginN from 'eslint-plugin-n'\nimport { pluginsToRulesDTS } from 'eslint-typegen/core'\n\nconst dts = await pluginsToRulesDTS({\n  '@typescript-eslint': pluginTs,\n  'n': pluginN,\n})\n\nawait fs.writeFile('eslint-typegen.d.ts', dts)\n```\n\nThis can be useful if you want to have more control over the generation process, or even bundle the types with your config package. For example, [here](https://github.com/antfu/eslint-config/blob/95963ac345d27cd06a4eeb5ebc16e1848cb2fd81/scripts/typegen.ts#L29-L33) is how [`@antfu/eslint-config`](https://github.com/antfu/eslint-config) does.\n\n## How it works\n\nThanks to that [ESLint requires rules to provide the JSONSchema for options](https://eslint.org/docs/latest/extend/custom-rules#options-schemas), we could leverage that to generate types with [`json-schema-to-typescript`](https://github.com/bcherny/json-schema-to-typescript). With the new flat config allowing you to execute the code with fully resolved configs, we managed to sneak in the type generation process on the fly.\n\n## Credits\n\nThe initial idea comes from [@Shinigami92](https://github.com/Shinigami92) via his work on [`eslint-define-config`](https://github.com/eslint-types/eslint-define-config), thanks to him!\n\n## Sponsors\n\n<p align=\"center\">\n  <a href=\"https://cdn.jsdelivr.net/gh/antfu/static/sponsors.svg\">\n    <img src='https://cdn.jsdelivr.net/gh/antfu/static/sponsors.svg'/>\n  </a>\n</p>\n\n## License\n\n[MIT](./LICENSE) License © 2023-PRESENT [Anthony Fu](https://github.com/antfu)\n\n<!-- Badges -->\n\n[npm-version-src]: https://img.shields.io/npm/v/eslint-typegen?style=flat&colorA=080f12&colorB=1fa669\n[npm-version-href]: https://npmjs.com/package/eslint-typegen\n[npm-downloads-src]: https://img.shields.io/npm/dm/eslint-typegen?style=flat&colorA=080f12&colorB=1fa669\n[npm-downloads-href]: https://npmjs.com/package/eslint-typegen\n[bundle-src]: https://img.shields.io/bundlephobia/minzip/eslint-typegen?style=flat&colorA=080f12&colorB=1fa669&label=minzip\n[bundle-href]: https://bundlephobia.com/result?p=eslint-typegen\n[license-src]: https://img.shields.io/github/license/antfu/eslint-typegen.svg?style=flat&colorA=080f12&colorB=1fa669\n[license-href]: https://github.com/antfu/eslint-typegen/blob/main/LICENSE\n[jsdocs-src]: https://img.shields.io/badge/jsdocs-reference-080f12?style=flat&colorA=080f12&colorB=1fa669\n[jsdocs-href]: https://www.jsdocs.io/package/eslint-typegen\n"
  },
  {
    "path": "eslint.config.js",
    "content": "// @ts-check\n/// <reference path=\"./eslint-typegen.d.ts\" />\nimport antfu from '@antfu/eslint-config'\n// eslint-disable-next-line antfu/no-import-dist\nimport typegen from './dist/index.mjs'\n\nexport default typegen(await antfu({\n  vue: true,\n  typescript: true,\n  pnpm: true,\n}),\n)\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"eslint-typegen\",\n  \"type\": \"module\",\n  \"version\": \"2.3.1\",\n  \"packageManager\": \"pnpm@10.30.0\",\n  \"description\": \"Generate types from ESLint rule schemas automatically, with auto-completion and type-checking for rule options.\",\n  \"author\": \"Anthony Fu <anthonyfu117@hotmail.com>\",\n  \"license\": \"MIT\",\n  \"funding\": \"https://github.com/sponsors/antfu\",\n  \"homepage\": \"https://github.com/antfu/eslint-typegen#readme\",\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/antfu/eslint-typegen.git\"\n  },\n  \"bugs\": \"https://github.com/antfu/eslint-typegen/issues\",\n  \"keywords\": [\n    \"eslint\"\n  ],\n  \"sideEffects\": false,\n  \"exports\": {\n    \".\": \"./dist/index.mjs\",\n    \"./core\": \"./dist/core.mjs\",\n    \"./package.json\": \"./package.json\"\n  },\n  \"types\": \"./dist/index.d.mts\",\n  \"files\": [\n    \"dist\"\n  ],\n  \"scripts\": {\n    \"build\": \"tsdown\",\n    \"dev\": \"tsdown --watch\",\n    \"lint\": \"nr build && eslint .\",\n    \"prepublishOnly\": \"nr build\",\n    \"release\": \"bumpp\",\n    \"start\": \"tsx src/index.ts\",\n    \"test\": \"vitest\",\n    \"typecheck\": \"tsc --noEmit\",\n    \"prepare\": \"simple-git-hooks\"\n  },\n  \"peerDependencies\": {\n    \"eslint\": \"^9.0.0 || ^10.0.0\"\n  },\n  \"dependencies\": {\n    \"json-schema-to-typescript-lite\": \"catalog:prod\",\n    \"ohash\": \"catalog:prod\"\n  },\n  \"devDependencies\": {\n    \"@antfu/eslint-config\": \"catalog:dev\",\n    \"@antfu/ni\": \"catalog:dev\",\n    \"@types/json-schema\": \"catalog:dev\",\n    \"@types/node\": \"catalog:dev\",\n    \"@typescript-eslint/eslint-plugin\": \"catalog:test\",\n    \"bumpp\": \"catalog:dev\",\n    \"eslint\": \"catalog:dev\",\n    \"eslint-plugin-antfu\": \"catalog:test\",\n    \"eslint-plugin-import-x\": \"catalog:test\",\n    \"eslint-plugin-jsx-a11y\": \"catalog:test\",\n    \"eslint-plugin-you-dont-need-lodash-underscore\": \"catalog:test\",\n    \"lint-staged\": \"catalog:dev\",\n    \"pnpm\": \"catalog:dev\",\n    \"simple-git-hooks\": \"catalog:dev\",\n    \"tsdown\": \"catalog:dev\",\n    \"tsx\": \"catalog:dev\",\n    \"typescript\": \"catalog:dev\",\n    \"vite\": \"catalog:dev\",\n    \"vitest\": \"catalog:test\"\n  },\n  \"simple-git-hooks\": {\n    \"pre-commit\": \"pnpm lint-staged\"\n  },\n  \"lint-staged\": {\n    \"*\": \"eslint --fix\"\n  }\n}\n"
  },
  {
    "path": "pnpm-workspace.yaml",
    "content": "shellEmulator: true\n\ntrustPolicy: no-downgrade\n\npackages:\n  - playground\n  - docs\n  - packages/*\n  - examples/*\ncatalogs:\n  dev:\n    '@antfu/eslint-config': ^7.4.3\n    '@antfu/ni': ^28.2.0\n    '@types/json-schema': ^7.0.15\n    '@types/node': ^25.2.3\n    bumpp: ^10.4.1\n    eslint: ^10.0.0\n    lint-staged: ^16.2.7\n    pnpm: ^10.30.0\n    simple-git-hooks: ^2.13.1\n    tsdown: ^0.20.3\n    tsx: ^4.21.0\n    typescript: ^5.9.3\n    vite: ^7.3.1\n  prod:\n    json-schema-to-typescript-lite: ^15.0.0\n    ohash: ^2.0.11\n  test:\n    '@typescript-eslint/eslint-plugin': ^8.56.0\n    eslint-plugin-antfu: ^3.2.2\n    eslint-plugin-import-x: ^4.16.1\n    eslint-plugin-jsx-a11y: ^6.10.2\n    eslint-plugin-you-dont-need-lodash-underscore: ^6.14.0\n    vitest: ^4.0.18\nonlyBuiltDependencies:\n  - esbuild\n  - simple-git-hooks\n  - unrs-resolver\n"
  },
  {
    "path": "src/core.ts",
    "content": "import type { ESLint, Linter, Rule } from 'eslint'\nimport type { JSONSchema4 } from 'json-schema'\nimport type { Options as CompileOptions } from 'json-schema-to-typescript-lite'\nimport { compile as compileSchema, normalizeIdentifier } from 'json-schema-to-typescript-lite'\n\nexport interface RulesTypeGenOptions {\n  /**\n   * Insert type imports for the generated types.\n   *\n   * @default true\n   */\n  includeTypeImports?: boolean\n\n  /**\n   * Include comments to disable ESLint and Prettier.\n   *\n   * @default true\n   */\n  includeIgnoreComments?: boolean\n\n  /**\n   * Augment the interface to ESLint's `Linter.RulesRecord`.\n   *\n   * @default true\n   */\n  includeAugmentation?: boolean\n\n  /**\n   * Augment the `DefaultConfigNamesMap` interface for `eslint-flat-config-utils`\n   * For auto-completion of config names etc.\n   *\n   * @see https://github.com/antfu/eslint-flat-config-utils\n   * @default false\n   */\n  augmentFlatConfigUtils?: boolean\n\n  /**\n   * The name of the exported type.\n   *\n   * @default 'RuleOptions'\n   */\n  exportTypeName?: string\n\n  /**\n   * Options for json-schema-to-typescript\n   */\n  compileOptions?: Partial<CompileOptions>\n}\n\nexport interface FlatConfigsToPluginsOptions {\n  filterConfig?: (config: Linter.Config) => boolean\n  filterPlugin?: (name: string, plugin: ESLint.Plugin) => boolean\n}\n\nexport interface FlatConfigsToRulesOptions\n  extends RulesTypeGenOptions, FlatConfigsToPluginsOptions {\n}\n\nexport async function flatConfigsToPlugins(\n  configs: Linter.Config[],\n  options: FlatConfigsToPluginsOptions = {},\n): Promise<Record<string, ESLint.Plugin>> {\n  const plugins: Record<string, ESLint.Plugin> = {}\n  for (const config of configs) {\n    if (!config.plugins)\n      continue\n    if (options.filterConfig?.(config) === false)\n      continue\n    for (const [name, plugin] of Object.entries(config.plugins)) {\n      if (options.filterPlugin?.(name, plugin) === false)\n        continue\n      plugins[name] = plugin\n    }\n  }\n  return plugins\n}\n\n/**\n * Generate types for rules from an array of ESLint configurations.\n */\nexport async function flatConfigsToRulesDTS(\n  configs: Linter.Config[],\n  options: FlatConfigsToRulesOptions = {},\n) {\n  return pluginsToRulesDTS(\n    await flatConfigsToPlugins(configs, options),\n    options,\n  )\n}\n\n/**\n * Generate types for rule from an object of ESLint plugins.\n */\nexport async function pluginsToRulesDTS(\n  plugins: Record<string, ESLint.Plugin>,\n  options: RulesTypeGenOptions & { configNames?: string[] } = {},\n) {\n  const {\n    includeTypeImports = true,\n    includeIgnoreComments = true,\n    includeAugmentation = true,\n    augmentFlatConfigUtils = false,\n    exportTypeName = 'RuleOptions',\n    compileOptions = {},\n    configNames = [],\n  } = options\n\n  const rules: [name: string, rule: Rule.RuleModule][] = []\n\n  for (const [pluginName, plugin] of Object.entries(plugins)) {\n    for (const [ruleName, rule] of Object.entries(plugin.rules || {})) {\n      if (rule?.meta == null || typeof rule.meta === 'object') {\n        rules.push([\n          pluginName\n            ? `${pluginName}/${ruleName}`\n            : ruleName,\n          rule,\n        ])\n      }\n    }\n  }\n\n  rules.sort(([a], [b]) => a.localeCompare(b))\n  const resolved = await Promise.all(rules\n    .map(([name, rule]) => compileRule(name, rule, compileOptions)))\n\n  const exports = [\n    ...(includeIgnoreComments\n      ? [\n          '/* eslint-disable */',\n          '/* prettier-ignore */',\n        ]\n      : []),\n    ...(includeTypeImports\n      ? [\n          'import type { Linter } from \\'eslint\\'',\n        ]\n      : []),\n    ...(includeAugmentation\n      ? [\n          '',\n          `declare module 'eslint' {`,\n          `  namespace Linter {`,\n          `    interface RulesRecord extends ${exportTypeName} {}`,\n          `  }`,\n          `}`,\n        ]\n      : []),\n    ...(augmentFlatConfigUtils && configNames.length\n      ? [\n          '',\n          '// @ts-ignore - In case the package is not installed',\n          `declare module 'eslint-flat-config-utils' {`,\n          `  interface DefaultConfigNamesMap {`,\n          ...configNames.map(name => `    '${name}'?: true,`),\n          `  }`,\n          `}`,\n        ]\n      : []),\n    '',\n    `export interface ${exportTypeName} {`,\n    ...resolved.flatMap(({ typeName, name, jsdoc }) => [\n      jsdoc?.length\n        ? `  /**\\n${jsdoc.map(i => `   * ${i}`).join('\\n').replaceAll(/\\*\\//g, '*\\\\/')}\\n   */`\n        : undefined,\n      `  '${name}'?: Linter.RuleEntry<${typeName}>`,\n    ]).filter(Boolean),\n    `}`,\n  ]\n  const typeDeclarations = resolved.flatMap(({ typeDeclarations }) => typeDeclarations).join('\\n')\n\n  return [\n    ...exports,\n    '',\n    '/* ======= Declarations ======= */',\n    typeDeclarations,\n  ].join('\\n')\n}\n\nexport async function compileRule(\n  ruleName: string,\n  rule: Rule.RuleModule,\n  compileOptions: Partial<CompileOptions> = {},\n) {\n  const meta = rule.meta ?? {}\n  let schemas = meta.schema as JSONSchema4[] ?? []\n  if (!Array.isArray(schemas))\n    schemas = [schemas]\n\n  const id = normalizeIdentifier(ruleName)\n\n  const jsdoc: string[] = []\n  if (meta.docs?.description)\n    jsdoc.push(meta.docs.description)\n  if (meta.docs?.url)\n    jsdoc.push(`@see ${meta.docs.url}`)\n  if (meta.deprecated)\n    jsdoc.push('@deprecated')\n\n  if (!meta.schema || !schemas.length) {\n    return {\n      jsdoc,\n      name: ruleName,\n      typeName: '[]',\n      typeDeclarations: [],\n    }\n  }\n\n  let lines: string[] = []\n\n  const schema: JSONSchema4 = Array.isArray(meta.schema)\n    ? { type: 'array', items: meta.schema, definitions: meta.schema?.[0]?.definitions }\n    : meta.schema\n\n  let overriddenRootSchemaId: string | undefined\n  let isRootSchema = true\n\n  try {\n    const compiled = await compileSchema(schema, id, {\n      unreachableDefinitions: false,\n      strictIndexSignatures: true,\n      customName(schema, keyName) {\n        const canOverrideRootSchemaId = isRootSchema\n        isRootSchema = false\n\n        const resolved = schema.title || schema.$id || keyName\n        if (resolved === id)\n          return id\n        if (!resolved)\n          return undefined!\n\n        const normalizedName = `_${normalizeIdentifier(`${id}_${resolved}`)}`\n        if (canOverrideRootSchemaId)\n          overriddenRootSchemaId = normalizedName\n\n        return normalizedName\n      },\n      ...compileOptions,\n    })\n    lines.push(\n      compiled\n        .replace(/\\/\\*[\\s\\S]*?\\*\\//g, ''),\n    )\n  }\n  catch (error) {\n    console.warn(`Failed to compile schema ${ruleName} for rule ${ruleName}. Falling back to unknown.`)\n    console.error(error)\n    lines.push(`export type ${id} = unknown\\n`)\n  }\n\n  lines = lines\n    .join('\\n')\n    .split('\\n')\n    .map(line => line.replace(/^(export )/, ''))\n    .filter(Boolean)\n\n  lines.unshift(`// ----- ${ruleName} -----`)\n\n  return {\n    name: ruleName,\n    jsdoc,\n    typeName: overriddenRootSchemaId ?? id,\n    typeDeclarations: lines,\n  }\n}\n"
  },
  {
    "path": "src/index.ts",
    "content": "import type { Linter } from 'eslint'\nimport type { FlatConfigsToRulesOptions } from './core'\nimport { existsSync } from 'node:fs'\nimport fs from 'node:fs/promises'\nimport { hash as makeHash } from 'ohash'\nimport { version } from '../package.json'\nimport { flatConfigsToPlugins, pluginsToRulesDTS } from './core'\n\nexport interface TypeGenOptions extends FlatConfigsToRulesOptions {\n  /**\n   * Include core rules in the generated types.\n   *\n   * @default true\n   */\n  includeCoreRules?: boolean\n\n  /**\n   * Path to the generated types file.\n   */\n  dtsPath?: string\n}\n\n/**\n * Wrap with resolved flat configs to generates types for rules.\n */\nexport default async function typegen(\n  configs: Promise<Linter.Config[]> | Linter.Config[],\n  options: TypeGenOptions = {},\n): Promise<Linter.Config[]> {\n  const {\n    includeCoreRules = true,\n    dtsPath = 'eslint-typegen.d.ts',\n  } = options\n\n  const resolved = await configs\n  let configsInput = resolved\n\n  if (includeCoreRules) {\n    const { builtinRules } = await import('eslint/use-at-your-own-risk')\n    configsInput = [\n      {\n        plugins: {\n          '': { rules: Object.fromEntries(builtinRules.entries()) },\n        },\n      },\n      ...configsInput,\n    ]\n  }\n\n  const plugins = await flatConfigsToPlugins(configsInput, options)\n  const configNames = configsInput.flatMap(c => c.name).filter(Boolean) as string[]\n  const hashSource = [\n    // version of eslint-typegen\n    version,\n    // plugins name and version\n    ...Object.entries(plugins)\n      .map(([n, p]) => [p.meta?.name, p.meta?.version].filter(Boolean).join('@') || p.name || n)\n      .sort(),\n    // config names\n    ...configNames,\n  ].join(' ')\n  const hash = makeHash(hashSource)\n\n  const previousHash = existsSync(dtsPath)\n    ? (await fs.readFile(dtsPath, 'utf-8')).match(/\\/\\* eslint-typegen-hash: (\\S*) \\*\\//)?.[1]?.trim()\n    : undefined\n\n  if (previousHash !== hash) {\n    const dts = [\n      '/* This file is generated by eslint-typegen, for augmenting rules types in ESLint */',\n      '/* You might want to include this file in tsconfig.json but excluded from git */',\n      `/* eslint-typegen-hash: ${hash} */`,\n      '',\n      await pluginsToRulesDTS(plugins, {\n        ...options,\n        configNames,\n      }),\n    ].join('\\n')\n\n    fs.writeFile(dtsPath, dts, 'utf-8')\n  }\n\n  return resolved\n}\n"
  },
  {
    "path": "test/index.test.ts",
    "content": "import { vue } from '@antfu/eslint-config'\nimport { expect, it } from 'vitest'\nimport { flatConfigsToRulesDTS, pluginsToRulesDTS } from '../src/core'\nimport { invalidJsonSchemaPlugin } from './input/invalid-json-schema-plugin'\nimport { pluginWithSchemaIds } from './input/plugin-with-schema-ids'\n\nit('pluginsToRuleOptions', async () => {\n  await expect(await pluginsToRulesDTS({\n    // @ts-expect-error missing types\n    import: await import('eslint-plugin-import-x').then(m => m.default),\n    antfu: await import('eslint-plugin-antfu').then(m => m.default),\n  }))\n    .toMatchFileSnapshot('./output/plugins.d.ts')\n})\n\nit('pluginsToRuleOptions ts expect no warnings', async () => {\n  await pluginsToRulesDTS({\n    // @ts-expect-error missing types\n    ts: await import('@typescript-eslint/eslint-plugin').then(m => m.default),\n  })\n})\n\nit('core rules', async () => {\n  const { builtinRules } = await import('eslint/use-at-your-own-risk')\n\n  await expect(await pluginsToRulesDTS({\n    '': { rules: Object.fromEntries(builtinRules.entries()) },\n  }))\n    .toMatchFileSnapshot('./output/core-rules.d.ts')\n})\n\nit('invalid JSON schema plugin', async () => {\n  await expect(await pluginsToRulesDTS({\n    'invalid-json-schema-plugin': invalidJsonSchemaPlugin,\n  }))\n    .toMatchFileSnapshot('./output/invalid-json-schema-plugin.d.ts')\n})\n\nit('json schema with ids', async () => {\n  await expect(await pluginsToRulesDTS({\n    plugin: pluginWithSchemaIds,\n  }))\n    .toMatchFileSnapshot('./output/plugin-with-schema-ids.d.ts')\n})\n\nit('flatConfigsToRuleOptions', async () => {\n  await expect(await flatConfigsToRulesDTS(await vue() as any))\n    .toMatchFileSnapshot('./output/flat-config-vue.d.ts')\n})\n\nit('jsx-a11y', async () => {\n  await expect(await pluginsToRulesDTS({\n    // @ts-expect-error missing types\n    'jsx-a11y': await import('eslint-plugin-jsx-a11y').then(m => m.default),\n  }))\n    .toMatchFileSnapshot('./output/jsx-a11y.d.ts')\n})\n\nit('no rule `meta`', async () => {\n  await expect(await pluginsToRulesDTS({\n    // @ts-expect-error missing types\n    'you-dont-need-lodash-underscore': await import('eslint-plugin-you-dont-need-lodash-underscore').then(m => m.default),\n  }))\n    .toMatchFileSnapshot('./output/no-rule-meta.d.ts')\n})\n"
  },
  {
    "path": "test/input/invalid-json-schema-plugin.ts",
    "content": "import type { ESLint, Rule } from 'eslint'\n\nexport const invalidJsonSchemaPlugin: ESLint.Plugin = {\n  rules: {\n    'invalid-json-schema-rule': {\n      create: () => null as unknown as Rule.RuleListener,\n      meta: {\n        docs: {\n          description: 'This rules points to a non-existing schema',\n        },\n        schema: {\n          allOf: [\n            {\n              $ref: '#/definitions/some-definition-that-does-not-exist',\n            },\n          ],\n          type: 'object',\n        },\n      },\n    },\n  },\n}\n"
  },
  {
    "path": "test/input/plugin-with-schema-ids.ts",
    "content": "import type { ESLint, Rule } from 'eslint'\n\nexport const pluginWithSchemaIds: ESLint.Plugin = {\n  rules: {\n    'schema-with-id-at-root': {\n      create: () => null as unknown as Rule.RuleListener,\n      meta: {\n        schema: {\n          id: 'schemaId',\n          type: 'object',\n          additionalProperties: false,\n          properties: {\n            a: {\n              id: 'aId',\n              type: 'string',\n            },\n            b: {\n              id: 'bId',\n              additionalProperties: false,\n              type: 'object',\n              properties: {\n                b1: {\n                  type: 'string',\n                },\n              },\n            },\n            c: {\n              additionalProperties: false,\n              type: 'object',\n              properties: {\n                c1: {\n                  type: 'string',\n                  id: 'c1Id',\n                },\n              },\n            },\n            d: {\n              additionalProperties: false,\n              type: 'object',\n              properties: {\n                da: {\n                  type: 'string',\n                },\n              },\n            },\n          },\n        },\n      },\n    },\n  },\n}\n"
  },
  {
    "path": "test/output/core-rules.d.ts",
    "content": "/* eslint-disable */\n/* prettier-ignore */\nimport type { Linter } from 'eslint'\n\ndeclare module 'eslint' {\n  namespace Linter {\n    interface RulesRecord extends RuleOptions {}\n  }\n}\n\nexport interface RuleOptions {\n  /**\n   * Enforce getter and setter pairs in objects and classes\n   * @see https://eslint.org/docs/latest/rules/accessor-pairs\n   */\n  'accessor-pairs'?: Linter.RuleEntry<AccessorPairs>\n  /**\n   * Enforce linebreaks after opening and before closing array brackets\n   * @see https://eslint.org/docs/latest/rules/array-bracket-newline\n   * @deprecated\n   */\n  'array-bracket-newline'?: Linter.RuleEntry<ArrayBracketNewline>\n  /**\n   * Enforce consistent spacing inside array brackets\n   * @see https://eslint.org/docs/latest/rules/array-bracket-spacing\n   * @deprecated\n   */\n  'array-bracket-spacing'?: Linter.RuleEntry<ArrayBracketSpacing>\n  /**\n   * Enforce `return` statements in callbacks of array methods\n   * @see https://eslint.org/docs/latest/rules/array-callback-return\n   */\n  'array-callback-return'?: Linter.RuleEntry<ArrayCallbackReturn>\n  /**\n   * Enforce line breaks after each array element\n   * @see https://eslint.org/docs/latest/rules/array-element-newline\n   * @deprecated\n   */\n  'array-element-newline'?: Linter.RuleEntry<ArrayElementNewline>\n  /**\n   * Require braces around arrow function bodies\n   * @see https://eslint.org/docs/latest/rules/arrow-body-style\n   */\n  'arrow-body-style'?: Linter.RuleEntry<ArrowBodyStyle>\n  /**\n   * Require parentheses around arrow function arguments\n   * @see https://eslint.org/docs/latest/rules/arrow-parens\n   * @deprecated\n   */\n  'arrow-parens'?: Linter.RuleEntry<ArrowParens>\n  /**\n   * Enforce consistent spacing before and after the arrow in arrow functions\n   * @see https://eslint.org/docs/latest/rules/arrow-spacing\n   * @deprecated\n   */\n  'arrow-spacing'?: Linter.RuleEntry<ArrowSpacing>\n  /**\n   * Enforce the use of variables within the scope they are defined\n   * @see https://eslint.org/docs/latest/rules/block-scoped-var\n   */\n  'block-scoped-var'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow or enforce spaces inside of blocks after opening block and before closing block\n   * @see https://eslint.org/docs/latest/rules/block-spacing\n   * @deprecated\n   */\n  'block-spacing'?: Linter.RuleEntry<BlockSpacing>\n  /**\n   * Enforce consistent brace style for blocks\n   * @see https://eslint.org/docs/latest/rules/brace-style\n   * @deprecated\n   */\n  'brace-style'?: Linter.RuleEntry<BraceStyle>\n  /**\n   * Require `return` statements after callbacks\n   * @see https://eslint.org/docs/latest/rules/callback-return\n   * @deprecated\n   */\n  'callback-return'?: Linter.RuleEntry<CallbackReturn>\n  /**\n   * Enforce camelcase naming convention\n   * @see https://eslint.org/docs/latest/rules/camelcase\n   */\n  'camelcase'?: Linter.RuleEntry<Camelcase>\n  /**\n   * Enforce or disallow capitalization of the first letter of a comment\n   * @see https://eslint.org/docs/latest/rules/capitalized-comments\n   */\n  'capitalized-comments'?: Linter.RuleEntry<CapitalizedComments>\n  /**\n   * Enforce that class methods utilize `this`\n   * @see https://eslint.org/docs/latest/rules/class-methods-use-this\n   */\n  'class-methods-use-this'?: Linter.RuleEntry<ClassMethodsUseThis>\n  /**\n   * Require or disallow trailing commas\n   * @see https://eslint.org/docs/latest/rules/comma-dangle\n   * @deprecated\n   */\n  'comma-dangle'?: Linter.RuleEntry<CommaDangle>\n  /**\n   * Enforce consistent spacing before and after commas\n   * @see https://eslint.org/docs/latest/rules/comma-spacing\n   * @deprecated\n   */\n  'comma-spacing'?: Linter.RuleEntry<CommaSpacing>\n  /**\n   * Enforce consistent comma style\n   * @see https://eslint.org/docs/latest/rules/comma-style\n   * @deprecated\n   */\n  'comma-style'?: Linter.RuleEntry<CommaStyle>\n  /**\n   * Enforce a maximum cyclomatic complexity allowed in a program\n   * @see https://eslint.org/docs/latest/rules/complexity\n   */\n  'complexity'?: Linter.RuleEntry<Complexity>\n  /**\n   * Enforce consistent spacing inside computed property brackets\n   * @see https://eslint.org/docs/latest/rules/computed-property-spacing\n   * @deprecated\n   */\n  'computed-property-spacing'?: Linter.RuleEntry<ComputedPropertySpacing>\n  /**\n   * Require `return` statements to either always or never specify values\n   * @see https://eslint.org/docs/latest/rules/consistent-return\n   */\n  'consistent-return'?: Linter.RuleEntry<ConsistentReturn>\n  /**\n   * Enforce consistent naming when capturing the current execution context\n   * @see https://eslint.org/docs/latest/rules/consistent-this\n   */\n  'consistent-this'?: Linter.RuleEntry<ConsistentThis>\n  /**\n   * Require `super()` calls in constructors\n   * @see https://eslint.org/docs/latest/rules/constructor-super\n   */\n  'constructor-super'?: Linter.RuleEntry<[]>\n  /**\n   * Enforce consistent brace style for all control statements\n   * @see https://eslint.org/docs/latest/rules/curly\n   */\n  'curly'?: Linter.RuleEntry<Curly>\n  /**\n   * Require `default` cases in `switch` statements\n   * @see https://eslint.org/docs/latest/rules/default-case\n   */\n  'default-case'?: Linter.RuleEntry<DefaultCase>\n  /**\n   * Enforce `default` clauses in `switch` statements to be last\n   * @see https://eslint.org/docs/latest/rules/default-case-last\n   */\n  'default-case-last'?: Linter.RuleEntry<[]>\n  /**\n   * Enforce default parameters to be last\n   * @see https://eslint.org/docs/latest/rules/default-param-last\n   */\n  'default-param-last'?: Linter.RuleEntry<[]>\n  /**\n   * Enforce consistent newlines before and after dots\n   * @see https://eslint.org/docs/latest/rules/dot-location\n   * @deprecated\n   */\n  'dot-location'?: Linter.RuleEntry<DotLocation>\n  /**\n   * Enforce dot notation whenever possible\n   * @see https://eslint.org/docs/latest/rules/dot-notation\n   */\n  'dot-notation'?: Linter.RuleEntry<DotNotation>\n  /**\n   * Require or disallow newline at the end of files\n   * @see https://eslint.org/docs/latest/rules/eol-last\n   * @deprecated\n   */\n  'eol-last'?: Linter.RuleEntry<EolLast>\n  /**\n   * Require the use of `===` and `!==`\n   * @see https://eslint.org/docs/latest/rules/eqeqeq\n   */\n  'eqeqeq'?: Linter.RuleEntry<Eqeqeq>\n  /**\n   * Enforce `for` loop update clause moving the counter in the right direction\n   * @see https://eslint.org/docs/latest/rules/for-direction\n   */\n  'for-direction'?: Linter.RuleEntry<[]>\n  /**\n   * Require or disallow spacing between function identifiers and their invocations\n   * @see https://eslint.org/docs/latest/rules/func-call-spacing\n   * @deprecated\n   */\n  'func-call-spacing'?: Linter.RuleEntry<FuncCallSpacing>\n  /**\n   * Require function names to match the name of the variable or property to which they are assigned\n   * @see https://eslint.org/docs/latest/rules/func-name-matching\n   */\n  'func-name-matching'?: Linter.RuleEntry<FuncNameMatching>\n  /**\n   * Require or disallow named `function` expressions\n   * @see https://eslint.org/docs/latest/rules/func-names\n   */\n  'func-names'?: Linter.RuleEntry<FuncNames>\n  /**\n   * Enforce the consistent use of either `function` declarations or expressions assigned to variables\n   * @see https://eslint.org/docs/latest/rules/func-style\n   */\n  'func-style'?: Linter.RuleEntry<FuncStyle>\n  /**\n   * Enforce line breaks between arguments of a function call\n   * @see https://eslint.org/docs/latest/rules/function-call-argument-newline\n   * @deprecated\n   */\n  'function-call-argument-newline'?: Linter.RuleEntry<FunctionCallArgumentNewline>\n  /**\n   * Enforce consistent line breaks inside function parentheses\n   * @see https://eslint.org/docs/latest/rules/function-paren-newline\n   * @deprecated\n   */\n  'function-paren-newline'?: Linter.RuleEntry<FunctionParenNewline>\n  /**\n   * Enforce consistent spacing around `*` operators in generator functions\n   * @see https://eslint.org/docs/latest/rules/generator-star-spacing\n   * @deprecated\n   */\n  'generator-star-spacing'?: Linter.RuleEntry<GeneratorStarSpacing>\n  /**\n   * Enforce `return` statements in getters\n   * @see https://eslint.org/docs/latest/rules/getter-return\n   */\n  'getter-return'?: Linter.RuleEntry<GetterReturn>\n  /**\n   * Require `require()` calls to be placed at top-level module scope\n   * @see https://eslint.org/docs/latest/rules/global-require\n   * @deprecated\n   */\n  'global-require'?: Linter.RuleEntry<[]>\n  /**\n   * Require grouped accessor pairs in object literals and classes\n   * @see https://eslint.org/docs/latest/rules/grouped-accessor-pairs\n   */\n  'grouped-accessor-pairs'?: Linter.RuleEntry<GroupedAccessorPairs>\n  /**\n   * Require `for-in` loops to include an `if` statement\n   * @see https://eslint.org/docs/latest/rules/guard-for-in\n   */\n  'guard-for-in'?: Linter.RuleEntry<[]>\n  /**\n   * Require error handling in callbacks\n   * @see https://eslint.org/docs/latest/rules/handle-callback-err\n   * @deprecated\n   */\n  'handle-callback-err'?: Linter.RuleEntry<HandleCallbackErr>\n  /**\n   * Disallow specified identifiers\n   * @see https://eslint.org/docs/latest/rules/id-blacklist\n   * @deprecated\n   */\n  'id-blacklist'?: Linter.RuleEntry<IdBlacklist>\n  /**\n   * Disallow specified identifiers\n   * @see https://eslint.org/docs/latest/rules/id-denylist\n   */\n  'id-denylist'?: Linter.RuleEntry<IdDenylist>\n  /**\n   * Enforce minimum and maximum identifier lengths\n   * @see https://eslint.org/docs/latest/rules/id-length\n   */\n  'id-length'?: Linter.RuleEntry<IdLength>\n  /**\n   * Require identifiers to match a specified regular expression\n   * @see https://eslint.org/docs/latest/rules/id-match\n   */\n  'id-match'?: Linter.RuleEntry<IdMatch>\n  /**\n   * Enforce the location of arrow function bodies\n   * @see https://eslint.org/docs/latest/rules/implicit-arrow-linebreak\n   * @deprecated\n   */\n  'implicit-arrow-linebreak'?: Linter.RuleEntry<ImplicitArrowLinebreak>\n  /**\n   * Enforce consistent indentation\n   * @see https://eslint.org/docs/latest/rules/indent\n   * @deprecated\n   */\n  'indent'?: Linter.RuleEntry<Indent>\n  /**\n   * Enforce consistent indentation\n   * @see https://eslint.org/docs/latest/rules/indent-legacy\n   * @deprecated\n   */\n  'indent-legacy'?: Linter.RuleEntry<IndentLegacy>\n  /**\n   * Require or disallow initialization in variable declarations\n   * @see https://eslint.org/docs/latest/rules/init-declarations\n   */\n  'init-declarations'?: Linter.RuleEntry<InitDeclarations>\n  /**\n   * Enforce the consistent use of either double or single quotes in JSX attributes\n   * @see https://eslint.org/docs/latest/rules/jsx-quotes\n   * @deprecated\n   */\n  'jsx-quotes'?: Linter.RuleEntry<JsxQuotes>\n  /**\n   * Enforce consistent spacing between keys and values in object literal properties\n   * @see https://eslint.org/docs/latest/rules/key-spacing\n   * @deprecated\n   */\n  'key-spacing'?: Linter.RuleEntry<KeySpacing>\n  /**\n   * Enforce consistent spacing before and after keywords\n   * @see https://eslint.org/docs/latest/rules/keyword-spacing\n   * @deprecated\n   */\n  'keyword-spacing'?: Linter.RuleEntry<KeywordSpacing>\n  /**\n   * Enforce position of line comments\n   * @see https://eslint.org/docs/latest/rules/line-comment-position\n   * @deprecated\n   */\n  'line-comment-position'?: Linter.RuleEntry<LineCommentPosition>\n  /**\n   * Enforce consistent linebreak style\n   * @see https://eslint.org/docs/latest/rules/linebreak-style\n   * @deprecated\n   */\n  'linebreak-style'?: Linter.RuleEntry<LinebreakStyle>\n  /**\n   * Require empty lines around comments\n   * @see https://eslint.org/docs/latest/rules/lines-around-comment\n   * @deprecated\n   */\n  'lines-around-comment'?: Linter.RuleEntry<LinesAroundComment>\n  /**\n   * Require or disallow newlines around directives\n   * @see https://eslint.org/docs/latest/rules/lines-around-directive\n   * @deprecated\n   */\n  'lines-around-directive'?: Linter.RuleEntry<LinesAroundDirective>\n  /**\n   * Require or disallow an empty line between class members\n   * @see https://eslint.org/docs/latest/rules/lines-between-class-members\n   * @deprecated\n   */\n  'lines-between-class-members'?: Linter.RuleEntry<LinesBetweenClassMembers>\n  /**\n   * Require or disallow logical assignment operator shorthand\n   * @see https://eslint.org/docs/latest/rules/logical-assignment-operators\n   */\n  'logical-assignment-operators'?: Linter.RuleEntry<LogicalAssignmentOperators>\n  /**\n   * Enforce a maximum number of classes per file\n   * @see https://eslint.org/docs/latest/rules/max-classes-per-file\n   */\n  'max-classes-per-file'?: Linter.RuleEntry<MaxClassesPerFile>\n  /**\n   * Enforce a maximum depth that blocks can be nested\n   * @see https://eslint.org/docs/latest/rules/max-depth\n   */\n  'max-depth'?: Linter.RuleEntry<MaxDepth>\n  /**\n   * Enforce a maximum line length\n   * @see https://eslint.org/docs/latest/rules/max-len\n   * @deprecated\n   */\n  'max-len'?: Linter.RuleEntry<MaxLen>\n  /**\n   * Enforce a maximum number of lines per file\n   * @see https://eslint.org/docs/latest/rules/max-lines\n   */\n  'max-lines'?: Linter.RuleEntry<MaxLines>\n  /**\n   * Enforce a maximum number of lines of code in a function\n   * @see https://eslint.org/docs/latest/rules/max-lines-per-function\n   */\n  'max-lines-per-function'?: Linter.RuleEntry<MaxLinesPerFunction>\n  /**\n   * Enforce a maximum depth that callbacks can be nested\n   * @see https://eslint.org/docs/latest/rules/max-nested-callbacks\n   */\n  'max-nested-callbacks'?: Linter.RuleEntry<MaxNestedCallbacks>\n  /**\n   * Enforce a maximum number of parameters in function definitions\n   * @see https://eslint.org/docs/latest/rules/max-params\n   */\n  'max-params'?: Linter.RuleEntry<MaxParams>\n  /**\n   * Enforce a maximum number of statements allowed in function blocks\n   * @see https://eslint.org/docs/latest/rules/max-statements\n   */\n  'max-statements'?: Linter.RuleEntry<MaxStatements>\n  /**\n   * Enforce a maximum number of statements allowed per line\n   * @see https://eslint.org/docs/latest/rules/max-statements-per-line\n   * @deprecated\n   */\n  'max-statements-per-line'?: Linter.RuleEntry<MaxStatementsPerLine>\n  /**\n   * Enforce a particular style for multiline comments\n   * @see https://eslint.org/docs/latest/rules/multiline-comment-style\n   * @deprecated\n   */\n  'multiline-comment-style'?: Linter.RuleEntry<MultilineCommentStyle>\n  /**\n   * Enforce newlines between operands of ternary expressions\n   * @see https://eslint.org/docs/latest/rules/multiline-ternary\n   * @deprecated\n   */\n  'multiline-ternary'?: Linter.RuleEntry<MultilineTernary>\n  /**\n   * Require constructor names to begin with a capital letter\n   * @see https://eslint.org/docs/latest/rules/new-cap\n   */\n  'new-cap'?: Linter.RuleEntry<NewCap>\n  /**\n   * Enforce or disallow parentheses when invoking a constructor with no arguments\n   * @see https://eslint.org/docs/latest/rules/new-parens\n   * @deprecated\n   */\n  'new-parens'?: Linter.RuleEntry<NewParens>\n  /**\n   * Require or disallow an empty line after variable declarations\n   * @see https://eslint.org/docs/latest/rules/newline-after-var\n   * @deprecated\n   */\n  'newline-after-var'?: Linter.RuleEntry<NewlineAfterVar>\n  /**\n   * Require an empty line before `return` statements\n   * @see https://eslint.org/docs/latest/rules/newline-before-return\n   * @deprecated\n   */\n  'newline-before-return'?: Linter.RuleEntry<[]>\n  /**\n   * Require a newline after each call in a method chain\n   * @see https://eslint.org/docs/latest/rules/newline-per-chained-call\n   * @deprecated\n   */\n  'newline-per-chained-call'?: Linter.RuleEntry<NewlinePerChainedCall>\n  /**\n   * Disallow the use of `alert`, `confirm`, and `prompt`\n   * @see https://eslint.org/docs/latest/rules/no-alert\n   */\n  'no-alert'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow `Array` constructors\n   * @see https://eslint.org/docs/latest/rules/no-array-constructor\n   */\n  'no-array-constructor'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow using an async function as a Promise executor\n   * @see https://eslint.org/docs/latest/rules/no-async-promise-executor\n   */\n  'no-async-promise-executor'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow `await` inside of loops\n   * @see https://eslint.org/docs/latest/rules/no-await-in-loop\n   */\n  'no-await-in-loop'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow bitwise operators\n   * @see https://eslint.org/docs/latest/rules/no-bitwise\n   */\n  'no-bitwise'?: Linter.RuleEntry<NoBitwise>\n  /**\n   * Disallow use of the `Buffer()` constructor\n   * @see https://eslint.org/docs/latest/rules/no-buffer-constructor\n   * @deprecated\n   */\n  'no-buffer-constructor'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow the use of `arguments.caller` or `arguments.callee`\n   * @see https://eslint.org/docs/latest/rules/no-caller\n   */\n  'no-caller'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow lexical declarations in case clauses\n   * @see https://eslint.org/docs/latest/rules/no-case-declarations\n   */\n  'no-case-declarations'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow `catch` clause parameters from shadowing variables in the outer scope\n   * @see https://eslint.org/docs/latest/rules/no-catch-shadow\n   * @deprecated\n   */\n  'no-catch-shadow'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow reassigning class members\n   * @see https://eslint.org/docs/latest/rules/no-class-assign\n   */\n  'no-class-assign'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow comparing against `-0`\n   * @see https://eslint.org/docs/latest/rules/no-compare-neg-zero\n   */\n  'no-compare-neg-zero'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow assignment operators in conditional expressions\n   * @see https://eslint.org/docs/latest/rules/no-cond-assign\n   */\n  'no-cond-assign'?: Linter.RuleEntry<NoCondAssign>\n  /**\n   * Disallow arrow functions where they could be confused with comparisons\n   * @see https://eslint.org/docs/latest/rules/no-confusing-arrow\n   * @deprecated\n   */\n  'no-confusing-arrow'?: Linter.RuleEntry<NoConfusingArrow>\n  /**\n   * Disallow the use of `console`\n   * @see https://eslint.org/docs/latest/rules/no-console\n   */\n  'no-console'?: Linter.RuleEntry<NoConsole>\n  /**\n   * Disallow reassigning `const`, `using`, and `await using` variables\n   * @see https://eslint.org/docs/latest/rules/no-const-assign\n   */\n  'no-const-assign'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow expressions where the operation doesn't affect the value\n   * @see https://eslint.org/docs/latest/rules/no-constant-binary-expression\n   */\n  'no-constant-binary-expression'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow constant expressions in conditions\n   * @see https://eslint.org/docs/latest/rules/no-constant-condition\n   */\n  'no-constant-condition'?: Linter.RuleEntry<NoConstantCondition>\n  /**\n   * Disallow returning value from constructor\n   * @see https://eslint.org/docs/latest/rules/no-constructor-return\n   */\n  'no-constructor-return'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow `continue` statements\n   * @see https://eslint.org/docs/latest/rules/no-continue\n   */\n  'no-continue'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow control characters in regular expressions\n   * @see https://eslint.org/docs/latest/rules/no-control-regex\n   */\n  'no-control-regex'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow the use of `debugger`\n   * @see https://eslint.org/docs/latest/rules/no-debugger\n   */\n  'no-debugger'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow deleting variables\n   * @see https://eslint.org/docs/latest/rules/no-delete-var\n   */\n  'no-delete-var'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow equal signs explicitly at the beginning of regular expressions\n   * @see https://eslint.org/docs/latest/rules/no-div-regex\n   */\n  'no-div-regex'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow duplicate arguments in `function` definitions\n   * @see https://eslint.org/docs/latest/rules/no-dupe-args\n   */\n  'no-dupe-args'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow duplicate class members\n   * @see https://eslint.org/docs/latest/rules/no-dupe-class-members\n   */\n  'no-dupe-class-members'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow duplicate conditions in if-else-if chains\n   * @see https://eslint.org/docs/latest/rules/no-dupe-else-if\n   */\n  'no-dupe-else-if'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow duplicate keys in object literals\n   * @see https://eslint.org/docs/latest/rules/no-dupe-keys\n   */\n  'no-dupe-keys'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow duplicate case labels\n   * @see https://eslint.org/docs/latest/rules/no-duplicate-case\n   */\n  'no-duplicate-case'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow duplicate module imports\n   * @see https://eslint.org/docs/latest/rules/no-duplicate-imports\n   */\n  'no-duplicate-imports'?: Linter.RuleEntry<NoDuplicateImports>\n  /**\n   * Disallow `else` blocks after `return` statements in `if` statements\n   * @see https://eslint.org/docs/latest/rules/no-else-return\n   */\n  'no-else-return'?: Linter.RuleEntry<NoElseReturn>\n  /**\n   * Disallow empty block statements\n   * @see https://eslint.org/docs/latest/rules/no-empty\n   */\n  'no-empty'?: Linter.RuleEntry<NoEmpty>\n  /**\n   * Disallow empty character classes in regular expressions\n   * @see https://eslint.org/docs/latest/rules/no-empty-character-class\n   */\n  'no-empty-character-class'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow empty functions\n   * @see https://eslint.org/docs/latest/rules/no-empty-function\n   */\n  'no-empty-function'?: Linter.RuleEntry<NoEmptyFunction>\n  /**\n   * Disallow empty destructuring patterns\n   * @see https://eslint.org/docs/latest/rules/no-empty-pattern\n   */\n  'no-empty-pattern'?: Linter.RuleEntry<NoEmptyPattern>\n  /**\n   * Disallow empty static blocks\n   * @see https://eslint.org/docs/latest/rules/no-empty-static-block\n   */\n  'no-empty-static-block'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow `null` comparisons without type-checking operators\n   * @see https://eslint.org/docs/latest/rules/no-eq-null\n   */\n  'no-eq-null'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow the use of `eval()`\n   * @see https://eslint.org/docs/latest/rules/no-eval\n   */\n  'no-eval'?: Linter.RuleEntry<NoEval>\n  /**\n   * Disallow reassigning exceptions in `catch` clauses\n   * @see https://eslint.org/docs/latest/rules/no-ex-assign\n   */\n  'no-ex-assign'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow extending native types\n   * @see https://eslint.org/docs/latest/rules/no-extend-native\n   */\n  'no-extend-native'?: Linter.RuleEntry<NoExtendNative>\n  /**\n   * Disallow unnecessary calls to `.bind()`\n   * @see https://eslint.org/docs/latest/rules/no-extra-bind\n   */\n  'no-extra-bind'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow unnecessary boolean casts\n   * @see https://eslint.org/docs/latest/rules/no-extra-boolean-cast\n   */\n  'no-extra-boolean-cast'?: Linter.RuleEntry<NoExtraBooleanCast>\n  /**\n   * Disallow unnecessary labels\n   * @see https://eslint.org/docs/latest/rules/no-extra-label\n   */\n  'no-extra-label'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow unnecessary parentheses\n   * @see https://eslint.org/docs/latest/rules/no-extra-parens\n   * @deprecated\n   */\n  'no-extra-parens'?: Linter.RuleEntry<NoExtraParens>\n  /**\n   * Disallow unnecessary semicolons\n   * @see https://eslint.org/docs/latest/rules/no-extra-semi\n   * @deprecated\n   */\n  'no-extra-semi'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow fallthrough of `case` statements\n   * @see https://eslint.org/docs/latest/rules/no-fallthrough\n   */\n  'no-fallthrough'?: Linter.RuleEntry<NoFallthrough>\n  /**\n   * Disallow leading or trailing decimal points in numeric literals\n   * @see https://eslint.org/docs/latest/rules/no-floating-decimal\n   * @deprecated\n   */\n  'no-floating-decimal'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow reassigning `function` declarations\n   * @see https://eslint.org/docs/latest/rules/no-func-assign\n   */\n  'no-func-assign'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow assignments to native objects or read-only global variables\n   * @see https://eslint.org/docs/latest/rules/no-global-assign\n   */\n  'no-global-assign'?: Linter.RuleEntry<NoGlobalAssign>\n  /**\n   * Disallow shorthand type conversions\n   * @see https://eslint.org/docs/latest/rules/no-implicit-coercion\n   */\n  'no-implicit-coercion'?: Linter.RuleEntry<NoImplicitCoercion>\n  /**\n   * Disallow declarations in the global scope\n   * @see https://eslint.org/docs/latest/rules/no-implicit-globals\n   */\n  'no-implicit-globals'?: Linter.RuleEntry<NoImplicitGlobals>\n  /**\n   * Disallow the use of `eval()`-like methods\n   * @see https://eslint.org/docs/latest/rules/no-implied-eval\n   */\n  'no-implied-eval'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow assigning to imported bindings\n   * @see https://eslint.org/docs/latest/rules/no-import-assign\n   */\n  'no-import-assign'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow inline comments after code\n   * @see https://eslint.org/docs/latest/rules/no-inline-comments\n   */\n  'no-inline-comments'?: Linter.RuleEntry<NoInlineComments>\n  /**\n   * Disallow variable or `function` declarations in nested blocks\n   * @see https://eslint.org/docs/latest/rules/no-inner-declarations\n   */\n  'no-inner-declarations'?: Linter.RuleEntry<NoInnerDeclarations>\n  /**\n   * Disallow invalid regular expression strings in `RegExp` constructors\n   * @see https://eslint.org/docs/latest/rules/no-invalid-regexp\n   */\n  'no-invalid-regexp'?: Linter.RuleEntry<NoInvalidRegexp>\n  /**\n   * Disallow use of `this` in contexts where the value of `this` is `undefined`\n   * @see https://eslint.org/docs/latest/rules/no-invalid-this\n   */\n  'no-invalid-this'?: Linter.RuleEntry<NoInvalidThis>\n  /**\n   * Disallow irregular whitespace\n   * @see https://eslint.org/docs/latest/rules/no-irregular-whitespace\n   */\n  'no-irregular-whitespace'?: Linter.RuleEntry<NoIrregularWhitespace>\n  /**\n   * Disallow the use of the `__iterator__` property\n   * @see https://eslint.org/docs/latest/rules/no-iterator\n   */\n  'no-iterator'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow labels that share a name with a variable\n   * @see https://eslint.org/docs/latest/rules/no-label-var\n   */\n  'no-label-var'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow labeled statements\n   * @see https://eslint.org/docs/latest/rules/no-labels\n   */\n  'no-labels'?: Linter.RuleEntry<NoLabels>\n  /**\n   * Disallow unnecessary nested blocks\n   * @see https://eslint.org/docs/latest/rules/no-lone-blocks\n   */\n  'no-lone-blocks'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow `if` statements as the only statement in `else` blocks\n   * @see https://eslint.org/docs/latest/rules/no-lonely-if\n   */\n  'no-lonely-if'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow function declarations that contain unsafe references inside loop statements\n   * @see https://eslint.org/docs/latest/rules/no-loop-func\n   */\n  'no-loop-func'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow literal numbers that lose precision\n   * @see https://eslint.org/docs/latest/rules/no-loss-of-precision\n   */\n  'no-loss-of-precision'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow magic numbers\n   * @see https://eslint.org/docs/latest/rules/no-magic-numbers\n   */\n  'no-magic-numbers'?: Linter.RuleEntry<NoMagicNumbers>\n  /**\n   * Disallow characters which are made with multiple code points in character class syntax\n   * @see https://eslint.org/docs/latest/rules/no-misleading-character-class\n   */\n  'no-misleading-character-class'?: Linter.RuleEntry<NoMisleadingCharacterClass>\n  /**\n   * Disallow mixed binary operators\n   * @see https://eslint.org/docs/latest/rules/no-mixed-operators\n   * @deprecated\n   */\n  'no-mixed-operators'?: Linter.RuleEntry<NoMixedOperators>\n  /**\n   * Disallow `require` calls to be mixed with regular variable declarations\n   * @see https://eslint.org/docs/latest/rules/no-mixed-requires\n   * @deprecated\n   */\n  'no-mixed-requires'?: Linter.RuleEntry<NoMixedRequires>\n  /**\n   * Disallow mixed spaces and tabs for indentation\n   * @see https://eslint.org/docs/latest/rules/no-mixed-spaces-and-tabs\n   * @deprecated\n   */\n  'no-mixed-spaces-and-tabs'?: Linter.RuleEntry<NoMixedSpacesAndTabs>\n  /**\n   * Disallow use of chained assignment expressions\n   * @see https://eslint.org/docs/latest/rules/no-multi-assign\n   */\n  'no-multi-assign'?: Linter.RuleEntry<NoMultiAssign>\n  /**\n   * Disallow multiple spaces\n   * @see https://eslint.org/docs/latest/rules/no-multi-spaces\n   * @deprecated\n   */\n  'no-multi-spaces'?: Linter.RuleEntry<NoMultiSpaces>\n  /**\n   * Disallow multiline strings\n   * @see https://eslint.org/docs/latest/rules/no-multi-str\n   */\n  'no-multi-str'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow multiple empty lines\n   * @see https://eslint.org/docs/latest/rules/no-multiple-empty-lines\n   * @deprecated\n   */\n  'no-multiple-empty-lines'?: Linter.RuleEntry<NoMultipleEmptyLines>\n  /**\n   * Disallow assignments to native objects or read-only global variables\n   * @see https://eslint.org/docs/latest/rules/no-native-reassign\n   * @deprecated\n   */\n  'no-native-reassign'?: Linter.RuleEntry<NoNativeReassign>\n  /**\n   * Disallow negated conditions\n   * @see https://eslint.org/docs/latest/rules/no-negated-condition\n   */\n  'no-negated-condition'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow negating the left operand in `in` expressions\n   * @see https://eslint.org/docs/latest/rules/no-negated-in-lhs\n   * @deprecated\n   */\n  'no-negated-in-lhs'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow nested ternary expressions\n   * @see https://eslint.org/docs/latest/rules/no-nested-ternary\n   */\n  'no-nested-ternary'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow `new` operators outside of assignments or comparisons\n   * @see https://eslint.org/docs/latest/rules/no-new\n   */\n  'no-new'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow `new` operators with the `Function` object\n   * @see https://eslint.org/docs/latest/rules/no-new-func\n   */\n  'no-new-func'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow `new` operators with global non-constructor functions\n   * @see https://eslint.org/docs/latest/rules/no-new-native-nonconstructor\n   */\n  'no-new-native-nonconstructor'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow `Object` constructors\n   * @see https://eslint.org/docs/latest/rules/no-new-object\n   * @deprecated\n   */\n  'no-new-object'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow `new` operators with calls to `require`\n   * @see https://eslint.org/docs/latest/rules/no-new-require\n   * @deprecated\n   */\n  'no-new-require'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow `new` operators with the `Symbol` object\n   * @see https://eslint.org/docs/latest/rules/no-new-symbol\n   * @deprecated\n   */\n  'no-new-symbol'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow `new` operators with the `String`, `Number`, and `Boolean` objects\n   * @see https://eslint.org/docs/latest/rules/no-new-wrappers\n   */\n  'no-new-wrappers'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow `\\8` and `\\9` escape sequences in string literals\n   * @see https://eslint.org/docs/latest/rules/no-nonoctal-decimal-escape\n   */\n  'no-nonoctal-decimal-escape'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow calling global object properties as functions\n   * @see https://eslint.org/docs/latest/rules/no-obj-calls\n   */\n  'no-obj-calls'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow calls to the `Object` constructor without an argument\n   * @see https://eslint.org/docs/latest/rules/no-object-constructor\n   */\n  'no-object-constructor'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow octal literals\n   * @see https://eslint.org/docs/latest/rules/no-octal\n   */\n  'no-octal'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow octal escape sequences in string literals\n   * @see https://eslint.org/docs/latest/rules/no-octal-escape\n   */\n  'no-octal-escape'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow reassigning function parameters\n   * @see https://eslint.org/docs/latest/rules/no-param-reassign\n   */\n  'no-param-reassign'?: Linter.RuleEntry<NoParamReassign>\n  /**\n   * Disallow string concatenation with `__dirname` and `__filename`\n   * @see https://eslint.org/docs/latest/rules/no-path-concat\n   * @deprecated\n   */\n  'no-path-concat'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow the unary operators `++` and `--`\n   * @see https://eslint.org/docs/latest/rules/no-plusplus\n   */\n  'no-plusplus'?: Linter.RuleEntry<NoPlusplus>\n  /**\n   * Disallow the use of `process.env`\n   * @see https://eslint.org/docs/latest/rules/no-process-env\n   * @deprecated\n   */\n  'no-process-env'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow the use of `process.exit()`\n   * @see https://eslint.org/docs/latest/rules/no-process-exit\n   * @deprecated\n   */\n  'no-process-exit'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow returning values from Promise executor functions\n   * @see https://eslint.org/docs/latest/rules/no-promise-executor-return\n   */\n  'no-promise-executor-return'?: Linter.RuleEntry<NoPromiseExecutorReturn>\n  /**\n   * Disallow the use of the `__proto__` property\n   * @see https://eslint.org/docs/latest/rules/no-proto\n   */\n  'no-proto'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow calling some `Object.prototype` methods directly on objects\n   * @see https://eslint.org/docs/latest/rules/no-prototype-builtins\n   */\n  'no-prototype-builtins'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow variable redeclaration\n   * @see https://eslint.org/docs/latest/rules/no-redeclare\n   */\n  'no-redeclare'?: Linter.RuleEntry<NoRedeclare>\n  /**\n   * Disallow multiple spaces in regular expressions\n   * @see https://eslint.org/docs/latest/rules/no-regex-spaces\n   */\n  'no-regex-spaces'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow specified names in exports\n   * @see https://eslint.org/docs/latest/rules/no-restricted-exports\n   */\n  'no-restricted-exports'?: Linter.RuleEntry<NoRestrictedExports>\n  /**\n   * Disallow specified global variables\n   * @see https://eslint.org/docs/latest/rules/no-restricted-globals\n   */\n  'no-restricted-globals'?: Linter.RuleEntry<NoRestrictedGlobals>\n  /**\n   * Disallow specified modules when loaded by `import`\n   * @see https://eslint.org/docs/latest/rules/no-restricted-imports\n   */\n  'no-restricted-imports'?: Linter.RuleEntry<NoRestrictedImports>\n  /**\n   * Disallow specified modules when loaded by `require`\n   * @see https://eslint.org/docs/latest/rules/no-restricted-modules\n   * @deprecated\n   */\n  'no-restricted-modules'?: Linter.RuleEntry<NoRestrictedModules>\n  /**\n   * Disallow certain properties on certain objects\n   * @see https://eslint.org/docs/latest/rules/no-restricted-properties\n   */\n  'no-restricted-properties'?: Linter.RuleEntry<NoRestrictedProperties>\n  /**\n   * Disallow specified syntax\n   * @see https://eslint.org/docs/latest/rules/no-restricted-syntax\n   */\n  'no-restricted-syntax'?: Linter.RuleEntry<NoRestrictedSyntax>\n  /**\n   * Disallow assignment operators in `return` statements\n   * @see https://eslint.org/docs/latest/rules/no-return-assign\n   */\n  'no-return-assign'?: Linter.RuleEntry<NoReturnAssign>\n  /**\n   * Disallow unnecessary `return await`\n   * @see https://eslint.org/docs/latest/rules/no-return-await\n   * @deprecated\n   */\n  'no-return-await'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow `javascript:` URLs\n   * @see https://eslint.org/docs/latest/rules/no-script-url\n   */\n  'no-script-url'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow assignments where both sides are exactly the same\n   * @see https://eslint.org/docs/latest/rules/no-self-assign\n   */\n  'no-self-assign'?: Linter.RuleEntry<NoSelfAssign>\n  /**\n   * Disallow comparisons where both sides are exactly the same\n   * @see https://eslint.org/docs/latest/rules/no-self-compare\n   */\n  'no-self-compare'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow comma operators\n   * @see https://eslint.org/docs/latest/rules/no-sequences\n   */\n  'no-sequences'?: Linter.RuleEntry<NoSequences>\n  /**\n   * Disallow returning values from setters\n   * @see https://eslint.org/docs/latest/rules/no-setter-return\n   */\n  'no-setter-return'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow variable declarations from shadowing variables declared in the outer scope\n   * @see https://eslint.org/docs/latest/rules/no-shadow\n   */\n  'no-shadow'?: Linter.RuleEntry<NoShadow>\n  /**\n   * Disallow identifiers from shadowing restricted names\n   * @see https://eslint.org/docs/latest/rules/no-shadow-restricted-names\n   */\n  'no-shadow-restricted-names'?: Linter.RuleEntry<NoShadowRestrictedNames>\n  /**\n   * Disallow spacing between function identifiers and their applications (deprecated)\n   * @see https://eslint.org/docs/latest/rules/no-spaced-func\n   * @deprecated\n   */\n  'no-spaced-func'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow sparse arrays\n   * @see https://eslint.org/docs/latest/rules/no-sparse-arrays\n   */\n  'no-sparse-arrays'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow synchronous methods\n   * @see https://eslint.org/docs/latest/rules/no-sync\n   * @deprecated\n   */\n  'no-sync'?: Linter.RuleEntry<NoSync>\n  /**\n   * Disallow all tabs\n   * @see https://eslint.org/docs/latest/rules/no-tabs\n   * @deprecated\n   */\n  'no-tabs'?: Linter.RuleEntry<NoTabs>\n  /**\n   * Disallow template literal placeholder syntax in regular strings\n   * @see https://eslint.org/docs/latest/rules/no-template-curly-in-string\n   */\n  'no-template-curly-in-string'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow ternary operators\n   * @see https://eslint.org/docs/latest/rules/no-ternary\n   */\n  'no-ternary'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow `this`/`super` before calling `super()` in constructors\n   * @see https://eslint.org/docs/latest/rules/no-this-before-super\n   */\n  'no-this-before-super'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow throwing literals as exceptions\n   * @see https://eslint.org/docs/latest/rules/no-throw-literal\n   */\n  'no-throw-literal'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow trailing whitespace at the end of lines\n   * @see https://eslint.org/docs/latest/rules/no-trailing-spaces\n   * @deprecated\n   */\n  'no-trailing-spaces'?: Linter.RuleEntry<NoTrailingSpaces>\n  /**\n   * Disallow `let` or `var` variables that are read but never assigned\n   * @see https://eslint.org/docs/latest/rules/no-unassigned-vars\n   */\n  'no-unassigned-vars'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow the use of undeclared variables unless mentioned in `/*global *\\/` comments\n   * @see https://eslint.org/docs/latest/rules/no-undef\n   */\n  'no-undef'?: Linter.RuleEntry<NoUndef>\n  /**\n   * Disallow initializing variables to `undefined`\n   * @see https://eslint.org/docs/latest/rules/no-undef-init\n   */\n  'no-undef-init'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow the use of `undefined` as an identifier\n   * @see https://eslint.org/docs/latest/rules/no-undefined\n   */\n  'no-undefined'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow dangling underscores in identifiers\n   * @see https://eslint.org/docs/latest/rules/no-underscore-dangle\n   */\n  'no-underscore-dangle'?: Linter.RuleEntry<NoUnderscoreDangle>\n  /**\n   * Disallow confusing multiline expressions\n   * @see https://eslint.org/docs/latest/rules/no-unexpected-multiline\n   */\n  'no-unexpected-multiline'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow unmodified loop conditions\n   * @see https://eslint.org/docs/latest/rules/no-unmodified-loop-condition\n   */\n  'no-unmodified-loop-condition'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow ternary operators when simpler alternatives exist\n   * @see https://eslint.org/docs/latest/rules/no-unneeded-ternary\n   */\n  'no-unneeded-ternary'?: Linter.RuleEntry<NoUnneededTernary>\n  /**\n   * Disallow unreachable code after `return`, `throw`, `continue`, and `break` statements\n   * @see https://eslint.org/docs/latest/rules/no-unreachable\n   */\n  'no-unreachable'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow loops with a body that allows only one iteration\n   * @see https://eslint.org/docs/latest/rules/no-unreachable-loop\n   */\n  'no-unreachable-loop'?: Linter.RuleEntry<NoUnreachableLoop>\n  /**\n   * Disallow control flow statements in `finally` blocks\n   * @see https://eslint.org/docs/latest/rules/no-unsafe-finally\n   */\n  'no-unsafe-finally'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow negating the left operand of relational operators\n   * @see https://eslint.org/docs/latest/rules/no-unsafe-negation\n   */\n  'no-unsafe-negation'?: Linter.RuleEntry<NoUnsafeNegation>\n  /**\n   * Disallow use of optional chaining in contexts where the `undefined` value is not allowed\n   * @see https://eslint.org/docs/latest/rules/no-unsafe-optional-chaining\n   */\n  'no-unsafe-optional-chaining'?: Linter.RuleEntry<NoUnsafeOptionalChaining>\n  /**\n   * Disallow unused expressions\n   * @see https://eslint.org/docs/latest/rules/no-unused-expressions\n   */\n  'no-unused-expressions'?: Linter.RuleEntry<NoUnusedExpressions>\n  /**\n   * Disallow unused labels\n   * @see https://eslint.org/docs/latest/rules/no-unused-labels\n   */\n  'no-unused-labels'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow unused private class members\n   * @see https://eslint.org/docs/latest/rules/no-unused-private-class-members\n   */\n  'no-unused-private-class-members'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow unused variables\n   * @see https://eslint.org/docs/latest/rules/no-unused-vars\n   */\n  'no-unused-vars'?: Linter.RuleEntry<NoUnusedVars>\n  /**\n   * Disallow the use of variables before they are defined\n   * @see https://eslint.org/docs/latest/rules/no-use-before-define\n   */\n  'no-use-before-define'?: Linter.RuleEntry<NoUseBeforeDefine>\n  /**\n   * Disallow variable assignments when the value is not used\n   * @see https://eslint.org/docs/latest/rules/no-useless-assignment\n   */\n  'no-useless-assignment'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow useless backreferences in regular expressions\n   * @see https://eslint.org/docs/latest/rules/no-useless-backreference\n   */\n  'no-useless-backreference'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow unnecessary calls to `.call()` and `.apply()`\n   * @see https://eslint.org/docs/latest/rules/no-useless-call\n   */\n  'no-useless-call'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow unnecessary `catch` clauses\n   * @see https://eslint.org/docs/latest/rules/no-useless-catch\n   */\n  'no-useless-catch'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow unnecessary computed property keys in objects and classes\n   * @see https://eslint.org/docs/latest/rules/no-useless-computed-key\n   */\n  'no-useless-computed-key'?: Linter.RuleEntry<NoUselessComputedKey>\n  /**\n   * Disallow unnecessary concatenation of literals or template literals\n   * @see https://eslint.org/docs/latest/rules/no-useless-concat\n   */\n  'no-useless-concat'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow unnecessary constructors\n   * @see https://eslint.org/docs/latest/rules/no-useless-constructor\n   */\n  'no-useless-constructor'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow unnecessary escape characters\n   * @see https://eslint.org/docs/latest/rules/no-useless-escape\n   */\n  'no-useless-escape'?: Linter.RuleEntry<NoUselessEscape>\n  /**\n   * Disallow renaming import, export, and destructured assignments to the same name\n   * @see https://eslint.org/docs/latest/rules/no-useless-rename\n   */\n  'no-useless-rename'?: Linter.RuleEntry<NoUselessRename>\n  /**\n   * Disallow redundant return statements\n   * @see https://eslint.org/docs/latest/rules/no-useless-return\n   */\n  'no-useless-return'?: Linter.RuleEntry<[]>\n  /**\n   * Require `let` or `const` instead of `var`\n   * @see https://eslint.org/docs/latest/rules/no-var\n   */\n  'no-var'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow `void` operators\n   * @see https://eslint.org/docs/latest/rules/no-void\n   */\n  'no-void'?: Linter.RuleEntry<NoVoid>\n  /**\n   * Disallow specified warning terms in comments\n   * @see https://eslint.org/docs/latest/rules/no-warning-comments\n   */\n  'no-warning-comments'?: Linter.RuleEntry<NoWarningComments>\n  /**\n   * Disallow whitespace before properties\n   * @see https://eslint.org/docs/latest/rules/no-whitespace-before-property\n   * @deprecated\n   */\n  'no-whitespace-before-property'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow `with` statements\n   * @see https://eslint.org/docs/latest/rules/no-with\n   */\n  'no-with'?: Linter.RuleEntry<[]>\n  /**\n   * Enforce the location of single-line statements\n   * @see https://eslint.org/docs/latest/rules/nonblock-statement-body-position\n   * @deprecated\n   */\n  'nonblock-statement-body-position'?: Linter.RuleEntry<NonblockStatementBodyPosition>\n  /**\n   * Enforce consistent line breaks after opening and before closing braces\n   * @see https://eslint.org/docs/latest/rules/object-curly-newline\n   * @deprecated\n   */\n  'object-curly-newline'?: Linter.RuleEntry<ObjectCurlyNewline>\n  /**\n   * Enforce consistent spacing inside braces\n   * @see https://eslint.org/docs/latest/rules/object-curly-spacing\n   * @deprecated\n   */\n  'object-curly-spacing'?: Linter.RuleEntry<ObjectCurlySpacing>\n  /**\n   * Enforce placing object properties on separate lines\n   * @see https://eslint.org/docs/latest/rules/object-property-newline\n   * @deprecated\n   */\n  'object-property-newline'?: Linter.RuleEntry<ObjectPropertyNewline>\n  /**\n   * Require or disallow method and property shorthand syntax for object literals\n   * @see https://eslint.org/docs/latest/rules/object-shorthand\n   */\n  'object-shorthand'?: Linter.RuleEntry<ObjectShorthand>\n  /**\n   * Enforce variables to be declared either together or separately in functions\n   * @see https://eslint.org/docs/latest/rules/one-var\n   */\n  'one-var'?: Linter.RuleEntry<OneVar>\n  /**\n   * Require or disallow newlines around variable declarations\n   * @see https://eslint.org/docs/latest/rules/one-var-declaration-per-line\n   * @deprecated\n   */\n  'one-var-declaration-per-line'?: Linter.RuleEntry<OneVarDeclarationPerLine>\n  /**\n   * Require or disallow assignment operator shorthand where possible\n   * @see https://eslint.org/docs/latest/rules/operator-assignment\n   */\n  'operator-assignment'?: Linter.RuleEntry<OperatorAssignment>\n  /**\n   * Enforce consistent linebreak style for operators\n   * @see https://eslint.org/docs/latest/rules/operator-linebreak\n   * @deprecated\n   */\n  'operator-linebreak'?: Linter.RuleEntry<OperatorLinebreak>\n  /**\n   * Require or disallow padding within blocks\n   * @see https://eslint.org/docs/latest/rules/padded-blocks\n   * @deprecated\n   */\n  'padded-blocks'?: Linter.RuleEntry<PaddedBlocks>\n  /**\n   * Require or disallow padding lines between statements\n   * @see https://eslint.org/docs/latest/rules/padding-line-between-statements\n   * @deprecated\n   */\n  'padding-line-between-statements'?: Linter.RuleEntry<PaddingLineBetweenStatements>\n  /**\n   * Require using arrow functions for callbacks\n   * @see https://eslint.org/docs/latest/rules/prefer-arrow-callback\n   */\n  'prefer-arrow-callback'?: Linter.RuleEntry<PreferArrowCallback>\n  /**\n   * Require `const` declarations for variables that are never reassigned after declared\n   * @see https://eslint.org/docs/latest/rules/prefer-const\n   */\n  'prefer-const'?: Linter.RuleEntry<PreferConst>\n  /**\n   * Require destructuring from arrays and/or objects\n   * @see https://eslint.org/docs/latest/rules/prefer-destructuring\n   */\n  'prefer-destructuring'?: Linter.RuleEntry<PreferDestructuring>\n  /**\n   * Disallow the use of `Math.pow` in favor of the `**` operator\n   * @see https://eslint.org/docs/latest/rules/prefer-exponentiation-operator\n   */\n  'prefer-exponentiation-operator'?: Linter.RuleEntry<[]>\n  /**\n   * Enforce using named capture group in regular expression\n   * @see https://eslint.org/docs/latest/rules/prefer-named-capture-group\n   */\n  'prefer-named-capture-group'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow `parseInt()` and `Number.parseInt()` in favor of binary, octal, and hexadecimal literals\n   * @see https://eslint.org/docs/latest/rules/prefer-numeric-literals\n   */\n  'prefer-numeric-literals'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow use of `Object.prototype.hasOwnProperty.call()` and prefer use of `Object.hasOwn()`\n   * @see https://eslint.org/docs/latest/rules/prefer-object-has-own\n   */\n  'prefer-object-has-own'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow using `Object.assign` with an object literal as the first argument and prefer the use of object spread instead\n   * @see https://eslint.org/docs/latest/rules/prefer-object-spread\n   */\n  'prefer-object-spread'?: Linter.RuleEntry<[]>\n  /**\n   * Require using Error objects as Promise rejection reasons\n   * @see https://eslint.org/docs/latest/rules/prefer-promise-reject-errors\n   */\n  'prefer-promise-reject-errors'?: Linter.RuleEntry<PreferPromiseRejectErrors>\n  /**\n   * Require `Reflect` methods where applicable\n   * @see https://eslint.org/docs/latest/rules/prefer-reflect\n   * @deprecated\n   */\n  'prefer-reflect'?: Linter.RuleEntry<PreferReflect>\n  /**\n   * Disallow use of the `RegExp` constructor in favor of regular expression literals\n   * @see https://eslint.org/docs/latest/rules/prefer-regex-literals\n   */\n  'prefer-regex-literals'?: Linter.RuleEntry<PreferRegexLiterals>\n  /**\n   * Require rest parameters instead of `arguments`\n   * @see https://eslint.org/docs/latest/rules/prefer-rest-params\n   */\n  'prefer-rest-params'?: Linter.RuleEntry<[]>\n  /**\n   * Require spread operators instead of `.apply()`\n   * @see https://eslint.org/docs/latest/rules/prefer-spread\n   */\n  'prefer-spread'?: Linter.RuleEntry<[]>\n  /**\n   * Require template literals instead of string concatenation\n   * @see https://eslint.org/docs/latest/rules/prefer-template\n   */\n  'prefer-template'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow losing originally caught error when re-throwing custom errors\n   * @see https://eslint.org/docs/latest/rules/preserve-caught-error\n   */\n  'preserve-caught-error'?: Linter.RuleEntry<PreserveCaughtError>\n  /**\n   * Require quotes around object literal property names\n   * @see https://eslint.org/docs/latest/rules/quote-props\n   * @deprecated\n   */\n  'quote-props'?: Linter.RuleEntry<QuoteProps>\n  /**\n   * Enforce the consistent use of either backticks, double, or single quotes\n   * @see https://eslint.org/docs/latest/rules/quotes\n   * @deprecated\n   */\n  'quotes'?: Linter.RuleEntry<Quotes>\n  /**\n   * Enforce the use of the radix argument when using `parseInt()`\n   * @see https://eslint.org/docs/latest/rules/radix\n   */\n  'radix'?: Linter.RuleEntry<Radix>\n  /**\n   * Disallow assignments that can lead to race conditions due to usage of `await` or `yield`\n   * @see https://eslint.org/docs/latest/rules/require-atomic-updates\n   */\n  'require-atomic-updates'?: Linter.RuleEntry<RequireAtomicUpdates>\n  /**\n   * Disallow async functions which have no `await` expression\n   * @see https://eslint.org/docs/latest/rules/require-await\n   */\n  'require-await'?: Linter.RuleEntry<[]>\n  /**\n   * Enforce the use of `u` or `v` flag on regular expressions\n   * @see https://eslint.org/docs/latest/rules/require-unicode-regexp\n   */\n  'require-unicode-regexp'?: Linter.RuleEntry<RequireUnicodeRegexp>\n  /**\n   * Require generator functions to contain `yield`\n   * @see https://eslint.org/docs/latest/rules/require-yield\n   */\n  'require-yield'?: Linter.RuleEntry<[]>\n  /**\n   * Enforce spacing between rest and spread operators and their expressions\n   * @see https://eslint.org/docs/latest/rules/rest-spread-spacing\n   * @deprecated\n   */\n  'rest-spread-spacing'?: Linter.RuleEntry<RestSpreadSpacing>\n  /**\n   * Require or disallow semicolons instead of ASI\n   * @see https://eslint.org/docs/latest/rules/semi\n   * @deprecated\n   */\n  'semi'?: Linter.RuleEntry<Semi>\n  /**\n   * Enforce consistent spacing before and after semicolons\n   * @see https://eslint.org/docs/latest/rules/semi-spacing\n   * @deprecated\n   */\n  'semi-spacing'?: Linter.RuleEntry<SemiSpacing>\n  /**\n   * Enforce location of semicolons\n   * @see https://eslint.org/docs/latest/rules/semi-style\n   * @deprecated\n   */\n  'semi-style'?: Linter.RuleEntry<SemiStyle>\n  /**\n   * Enforce sorted `import` declarations within modules\n   * @see https://eslint.org/docs/latest/rules/sort-imports\n   */\n  'sort-imports'?: Linter.RuleEntry<SortImports>\n  /**\n   * Require object keys to be sorted\n   * @see https://eslint.org/docs/latest/rules/sort-keys\n   */\n  'sort-keys'?: Linter.RuleEntry<SortKeys>\n  /**\n   * Require variables within the same declaration block to be sorted\n   * @see https://eslint.org/docs/latest/rules/sort-vars\n   */\n  'sort-vars'?: Linter.RuleEntry<SortVars>\n  /**\n   * Enforce consistent spacing before blocks\n   * @see https://eslint.org/docs/latest/rules/space-before-blocks\n   * @deprecated\n   */\n  'space-before-blocks'?: Linter.RuleEntry<SpaceBeforeBlocks>\n  /**\n   * Enforce consistent spacing before `function` definition opening parenthesis\n   * @see https://eslint.org/docs/latest/rules/space-before-function-paren\n   * @deprecated\n   */\n  'space-before-function-paren'?: Linter.RuleEntry<SpaceBeforeFunctionParen>\n  /**\n   * Enforce consistent spacing inside parentheses\n   * @see https://eslint.org/docs/latest/rules/space-in-parens\n   * @deprecated\n   */\n  'space-in-parens'?: Linter.RuleEntry<SpaceInParens>\n  /**\n   * Require spacing around infix operators\n   * @see https://eslint.org/docs/latest/rules/space-infix-ops\n   * @deprecated\n   */\n  'space-infix-ops'?: Linter.RuleEntry<SpaceInfixOps>\n  /**\n   * Enforce consistent spacing before or after unary operators\n   * @see https://eslint.org/docs/latest/rules/space-unary-ops\n   * @deprecated\n   */\n  'space-unary-ops'?: Linter.RuleEntry<SpaceUnaryOps>\n  /**\n   * Enforce consistent spacing after the `//` or `/*` in a comment\n   * @see https://eslint.org/docs/latest/rules/spaced-comment\n   * @deprecated\n   */\n  'spaced-comment'?: Linter.RuleEntry<SpacedComment>\n  /**\n   * Require or disallow strict mode directives\n   * @see https://eslint.org/docs/latest/rules/strict\n   */\n  'strict'?: Linter.RuleEntry<Strict>\n  /**\n   * Enforce spacing around colons of switch statements\n   * @see https://eslint.org/docs/latest/rules/switch-colon-spacing\n   * @deprecated\n   */\n  'switch-colon-spacing'?: Linter.RuleEntry<SwitchColonSpacing>\n  /**\n   * Require symbol descriptions\n   * @see https://eslint.org/docs/latest/rules/symbol-description\n   */\n  'symbol-description'?: Linter.RuleEntry<[]>\n  /**\n   * Require or disallow spacing around embedded expressions of template strings\n   * @see https://eslint.org/docs/latest/rules/template-curly-spacing\n   * @deprecated\n   */\n  'template-curly-spacing'?: Linter.RuleEntry<TemplateCurlySpacing>\n  /**\n   * Require or disallow spacing between template tags and their literals\n   * @see https://eslint.org/docs/latest/rules/template-tag-spacing\n   * @deprecated\n   */\n  'template-tag-spacing'?: Linter.RuleEntry<TemplateTagSpacing>\n  /**\n   * Require or disallow Unicode byte order mark (BOM)\n   * @see https://eslint.org/docs/latest/rules/unicode-bom\n   */\n  'unicode-bom'?: Linter.RuleEntry<UnicodeBom>\n  /**\n   * Require calls to `isNaN()` when checking for `NaN`\n   * @see https://eslint.org/docs/latest/rules/use-isnan\n   */\n  'use-isnan'?: Linter.RuleEntry<UseIsnan>\n  /**\n   * Enforce comparing `typeof` expressions against valid strings\n   * @see https://eslint.org/docs/latest/rules/valid-typeof\n   */\n  'valid-typeof'?: Linter.RuleEntry<ValidTypeof>\n  /**\n   * Require `var` declarations be placed at the top of their containing scope\n   * @see https://eslint.org/docs/latest/rules/vars-on-top\n   */\n  'vars-on-top'?: Linter.RuleEntry<[]>\n  /**\n   * Require parentheses around immediate `function` invocations\n   * @see https://eslint.org/docs/latest/rules/wrap-iife\n   * @deprecated\n   */\n  'wrap-iife'?: Linter.RuleEntry<WrapIife>\n  /**\n   * Require parenthesis around regex literals\n   * @see https://eslint.org/docs/latest/rules/wrap-regex\n   * @deprecated\n   */\n  'wrap-regex'?: Linter.RuleEntry<[]>\n  /**\n   * Require or disallow spacing around the `*` in `yield*` expressions\n   * @see https://eslint.org/docs/latest/rules/yield-star-spacing\n   * @deprecated\n   */\n  'yield-star-spacing'?: Linter.RuleEntry<YieldStarSpacing>\n  /**\n   * Require or disallow \"Yoda\" conditions\n   * @see https://eslint.org/docs/latest/rules/yoda\n   */\n  'yoda'?: Linter.RuleEntry<Yoda>\n}\n\n/* ======= Declarations ======= */\n// ----- accessor-pairs -----\ntype AccessorPairs = []|[{\n  getWithoutSet?: boolean\n  setWithoutGet?: boolean\n  enforceForClassMembers?: boolean\n  enforceForTSTypes?: boolean\n}]\n// ----- array-bracket-newline -----\ntype ArrayBracketNewline = []|[((\"always\" | \"never\" | \"consistent\") | {\n  multiline?: boolean\n  minItems?: (number | null)\n})]\n// ----- array-bracket-spacing -----\ntype ArrayBracketSpacing = []|[(\"always\" | \"never\")]|[(\"always\" | \"never\"), {\n  singleValue?: boolean\n  objectsInArrays?: boolean\n  arraysInArrays?: boolean\n}]\n// ----- array-callback-return -----\ntype ArrayCallbackReturn = []|[{\n  allowImplicit?: boolean\n  checkForEach?: boolean\n  allowVoid?: boolean\n}]\n// ----- array-element-newline -----\ntype ArrayElementNewline = []|[(_ArrayElementNewlineBasicConfig | {\n  ArrayExpression?: _ArrayElementNewlineBasicConfig\n  ArrayPattern?: _ArrayElementNewlineBasicConfig\n})]\ntype _ArrayElementNewlineBasicConfig = ((\"always\" | \"never\" | \"consistent\") | {\n  multiline?: boolean\n  minItems?: (number | null)\n})\n// ----- arrow-body-style -----\ntype ArrowBodyStyle = ([]|[(\"always\" | \"never\")] | []|[\"as-needed\"]|[\"as-needed\", {\n  requireReturnForObjectLiteral?: boolean\n}])\n// ----- arrow-parens -----\ntype ArrowParens = []|[(\"always\" | \"as-needed\")]|[(\"always\" | \"as-needed\"), {\n  requireForBlockBody?: boolean\n}]\n// ----- arrow-spacing -----\ntype ArrowSpacing = []|[{\n  before?: boolean\n  after?: boolean\n}]\n// ----- block-spacing -----\ntype BlockSpacing = []|[(\"always\" | \"never\")]\n// ----- brace-style -----\ntype BraceStyle = []|[(\"1tbs\" | \"stroustrup\" | \"allman\")]|[(\"1tbs\" | \"stroustrup\" | \"allman\"), {\n  allowSingleLine?: boolean\n}]\n// ----- callback-return -----\ntype CallbackReturn = []|[string[]]\n// ----- camelcase -----\ntype Camelcase = []|[{\n  ignoreDestructuring?: boolean\n  ignoreImports?: boolean\n  ignoreGlobals?: boolean\n  properties?: (\"always\" | \"never\")\n  \n  allow?: string[]\n}]\n// ----- capitalized-comments -----\ntype CapitalizedComments = []|[(\"always\" | \"never\")]|[(\"always\" | \"never\"), ({\n  ignorePattern?: string\n  ignoreInlineComments?: boolean\n  ignoreConsecutiveComments?: boolean\n} | {\n  line?: {\n    ignorePattern?: string\n    ignoreInlineComments?: boolean\n    ignoreConsecutiveComments?: boolean\n  }\n  block?: {\n    ignorePattern?: string\n    ignoreInlineComments?: boolean\n    ignoreConsecutiveComments?: boolean\n  }\n})]\n// ----- class-methods-use-this -----\ntype ClassMethodsUseThis = []|[{\n  exceptMethods?: string[]\n  enforceForClassFields?: boolean\n  ignoreOverrideMethods?: boolean\n  ignoreClassesWithImplements?: (\"all\" | \"public-fields\")\n}]\n// ----- comma-dangle -----\ntype CommaDangle = []|[(_CommaDangleValue | {\n  arrays?: _CommaDangleValueWithIgnore\n  objects?: _CommaDangleValueWithIgnore\n  imports?: _CommaDangleValueWithIgnore\n  exports?: _CommaDangleValueWithIgnore\n  functions?: _CommaDangleValueWithIgnore\n})]\ntype _CommaDangleValue = (\"always-multiline\" | \"always\" | \"never\" | \"only-multiline\")\ntype _CommaDangleValueWithIgnore = (\"always-multiline\" | \"always\" | \"ignore\" | \"never\" | \"only-multiline\")\n// ----- comma-spacing -----\ntype CommaSpacing = []|[{\n  before?: boolean\n  after?: boolean\n}]\n// ----- comma-style -----\ntype CommaStyle = []|[(\"first\" | \"last\")]|[(\"first\" | \"last\"), {\n  exceptions?: {\n    [k: string]: boolean | undefined\n  }\n}]\n// ----- complexity -----\ntype Complexity = []|[(number | {\n  maximum?: number\n  max?: number\n  variant?: (\"classic\" | \"modified\")\n})]\n// ----- computed-property-spacing -----\ntype ComputedPropertySpacing = []|[(\"always\" | \"never\")]|[(\"always\" | \"never\"), {\n  enforceForClassMembers?: boolean\n}]\n// ----- consistent-return -----\ntype ConsistentReturn = []|[{\n  treatUndefinedAsUnspecified?: boolean\n}]\n// ----- consistent-this -----\ntype ConsistentThis = string[]\n// ----- curly -----\ntype Curly = ([]|[\"all\"] | []|[(\"multi\" | \"multi-line\" | \"multi-or-nest\")]|[(\"multi\" | \"multi-line\" | \"multi-or-nest\"), \"consistent\"])\n// ----- default-case -----\ntype DefaultCase = []|[{\n  commentPattern?: string\n}]\n// ----- dot-location -----\ntype DotLocation = []|[(\"object\" | \"property\")]\n// ----- dot-notation -----\ntype DotNotation = []|[{\n  allowKeywords?: boolean\n  allowPattern?: string\n}]\n// ----- eol-last -----\ntype EolLast = []|[(\"always\" | \"never\" | \"unix\" | \"windows\")]\n// ----- eqeqeq -----\ntype Eqeqeq = ([]|[\"always\"]|[\"always\", {\n  null?: (\"always\" | \"never\" | \"ignore\")\n}] | []|[(\"smart\" | \"allow-null\")])\n// ----- func-call-spacing -----\ntype FuncCallSpacing = ([]|[\"never\"] | []|[\"always\"]|[\"always\", {\n  allowNewlines?: boolean\n}])\n// ----- func-name-matching -----\ntype FuncNameMatching = ([]|[(\"always\" | \"never\")]|[(\"always\" | \"never\"), {\n  considerPropertyDescriptor?: boolean\n  includeCommonJSModuleExports?: boolean\n}] | []|[{\n  considerPropertyDescriptor?: boolean\n  includeCommonJSModuleExports?: boolean\n}])\n// ----- func-names -----\ntype FuncNames = []|[_FuncNamesValue]|[_FuncNamesValue, {\n  generators?: _FuncNamesValue\n}]\ntype _FuncNamesValue = (\"always\" | \"as-needed\" | \"never\")\n// ----- func-style -----\ntype FuncStyle = []|[(\"declaration\" | \"expression\")]|[(\"declaration\" | \"expression\"), {\n  allowArrowFunctions?: boolean\n  allowTypeAnnotation?: boolean\n  overrides?: {\n    namedExports?: (\"declaration\" | \"expression\" | \"ignore\")\n  }\n}]\n// ----- function-call-argument-newline -----\ntype FunctionCallArgumentNewline = []|[(\"always\" | \"never\" | \"consistent\")]\n// ----- function-paren-newline -----\ntype FunctionParenNewline = []|[((\"always\" | \"never\" | \"consistent\" | \"multiline\" | \"multiline-arguments\") | {\n  minItems?: number\n})]\n// ----- generator-star-spacing -----\ntype GeneratorStarSpacing = []|[((\"before\" | \"after\" | \"both\" | \"neither\") | {\n  before?: boolean\n  after?: boolean\n  named?: ((\"before\" | \"after\" | \"both\" | \"neither\") | {\n    before?: boolean\n    after?: boolean\n  })\n  anonymous?: ((\"before\" | \"after\" | \"both\" | \"neither\") | {\n    before?: boolean\n    after?: boolean\n  })\n  method?: ((\"before\" | \"after\" | \"both\" | \"neither\") | {\n    before?: boolean\n    after?: boolean\n  })\n})]\n// ----- getter-return -----\ntype GetterReturn = []|[{\n  allowImplicit?: boolean\n}]\n// ----- grouped-accessor-pairs -----\ntype GroupedAccessorPairs = []|[(\"anyOrder\" | \"getBeforeSet\" | \"setBeforeGet\")]|[(\"anyOrder\" | \"getBeforeSet\" | \"setBeforeGet\"), {\n  enforceForTSTypes?: boolean\n}]\n// ----- handle-callback-err -----\ntype HandleCallbackErr = []|[string]\n// ----- id-blacklist -----\ntype IdBlacklist = string[]\n// ----- id-denylist -----\ntype IdDenylist = string[]\n// ----- id-length -----\ntype IdLength = []|[{\n  min?: number\n  max?: number\n  exceptions?: string[]\n  exceptionPatterns?: string[]\n  properties?: (\"always\" | \"never\")\n}]\n// ----- id-match -----\ntype IdMatch = []|[string]|[string, {\n  properties?: boolean\n  classFields?: boolean\n  onlyDeclarations?: boolean\n  ignoreDestructuring?: boolean\n}]\n// ----- implicit-arrow-linebreak -----\ntype ImplicitArrowLinebreak = []|[(\"beside\" | \"below\")]\n// ----- indent -----\ntype Indent = []|[(\"tab\" | number)]|[(\"tab\" | number), {\n  SwitchCase?: number\n  VariableDeclarator?: ((number | (\"first\" | \"off\")) | {\n    var?: (number | (\"first\" | \"off\"))\n    let?: (number | (\"first\" | \"off\"))\n    const?: (number | (\"first\" | \"off\"))\n  })\n  outerIIFEBody?: (number | \"off\")\n  MemberExpression?: (number | \"off\")\n  FunctionDeclaration?: {\n    parameters?: (number | (\"first\" | \"off\"))\n    body?: number\n  }\n  FunctionExpression?: {\n    parameters?: (number | (\"first\" | \"off\"))\n    body?: number\n  }\n  StaticBlock?: {\n    body?: number\n  }\n  CallExpression?: {\n    arguments?: (number | (\"first\" | \"off\"))\n  }\n  ArrayExpression?: (number | (\"first\" | \"off\"))\n  ObjectExpression?: (number | (\"first\" | \"off\"))\n  ImportDeclaration?: (number | (\"first\" | \"off\"))\n  flatTernaryExpressions?: boolean\n  offsetTernaryExpressions?: boolean\n  ignoredNodes?: string[]\n  ignoreComments?: boolean\n}]\n// ----- indent-legacy -----\ntype IndentLegacy = []|[(\"tab\" | number)]|[(\"tab\" | number), {\n  SwitchCase?: number\n  VariableDeclarator?: (number | {\n    var?: number\n    let?: number\n    const?: number\n    [k: string]: unknown | undefined\n  })\n  outerIIFEBody?: number\n  MemberExpression?: number\n  FunctionDeclaration?: {\n    parameters?: (number | \"first\")\n    body?: number\n    [k: string]: unknown | undefined\n  }\n  FunctionExpression?: {\n    parameters?: (number | \"first\")\n    body?: number\n    [k: string]: unknown | undefined\n  }\n  CallExpression?: {\n    parameters?: (number | \"first\")\n    [k: string]: unknown | undefined\n  }\n  ArrayExpression?: (number | \"first\")\n  ObjectExpression?: (number | \"first\")\n}]\n// ----- init-declarations -----\ntype InitDeclarations = ([]|[\"always\"] | []|[\"never\"]|[\"never\", {\n  ignoreForLoopInit?: boolean\n}])\n// ----- jsx-quotes -----\ntype JsxQuotes = []|[(\"prefer-single\" | \"prefer-double\")]\n// ----- key-spacing -----\ntype KeySpacing = []|[({\n  align?: ((\"colon\" | \"value\") | {\n    mode?: (\"strict\" | \"minimum\")\n    on?: (\"colon\" | \"value\")\n    beforeColon?: boolean\n    afterColon?: boolean\n  })\n  mode?: (\"strict\" | \"minimum\")\n  beforeColon?: boolean\n  afterColon?: boolean\n} | {\n  singleLine?: {\n    mode?: (\"strict\" | \"minimum\")\n    beforeColon?: boolean\n    afterColon?: boolean\n  }\n  multiLine?: {\n    align?: ((\"colon\" | \"value\") | {\n      mode?: (\"strict\" | \"minimum\")\n      on?: (\"colon\" | \"value\")\n      beforeColon?: boolean\n      afterColon?: boolean\n    })\n    mode?: (\"strict\" | \"minimum\")\n    beforeColon?: boolean\n    afterColon?: boolean\n  }\n} | {\n  singleLine?: {\n    mode?: (\"strict\" | \"minimum\")\n    beforeColon?: boolean\n    afterColon?: boolean\n  }\n  multiLine?: {\n    mode?: (\"strict\" | \"minimum\")\n    beforeColon?: boolean\n    afterColon?: boolean\n  }\n  align?: {\n    mode?: (\"strict\" | \"minimum\")\n    on?: (\"colon\" | \"value\")\n    beforeColon?: boolean\n    afterColon?: boolean\n  }\n})]\n// ----- keyword-spacing -----\ntype KeywordSpacing = []|[{\n  before?: boolean\n  after?: boolean\n  overrides?: {\n    abstract?: {\n      before?: boolean\n      after?: boolean\n    }\n    as?: {\n      before?: boolean\n      after?: boolean\n    }\n    async?: {\n      before?: boolean\n      after?: boolean\n    }\n    await?: {\n      before?: boolean\n      after?: boolean\n    }\n    boolean?: {\n      before?: boolean\n      after?: boolean\n    }\n    break?: {\n      before?: boolean\n      after?: boolean\n    }\n    byte?: {\n      before?: boolean\n      after?: boolean\n    }\n    case?: {\n      before?: boolean\n      after?: boolean\n    }\n    catch?: {\n      before?: boolean\n      after?: boolean\n    }\n    char?: {\n      before?: boolean\n      after?: boolean\n    }\n    class?: {\n      before?: boolean\n      after?: boolean\n    }\n    const?: {\n      before?: boolean\n      after?: boolean\n    }\n    continue?: {\n      before?: boolean\n      after?: boolean\n    }\n    debugger?: {\n      before?: boolean\n      after?: boolean\n    }\n    default?: {\n      before?: boolean\n      after?: boolean\n    }\n    delete?: {\n      before?: boolean\n      after?: boolean\n    }\n    do?: {\n      before?: boolean\n      after?: boolean\n    }\n    double?: {\n      before?: boolean\n      after?: boolean\n    }\n    else?: {\n      before?: boolean\n      after?: boolean\n    }\n    enum?: {\n      before?: boolean\n      after?: boolean\n    }\n    export?: {\n      before?: boolean\n      after?: boolean\n    }\n    extends?: {\n      before?: boolean\n      after?: boolean\n    }\n    false?: {\n      before?: boolean\n      after?: boolean\n    }\n    final?: {\n      before?: boolean\n      after?: boolean\n    }\n    finally?: {\n      before?: boolean\n      after?: boolean\n    }\n    float?: {\n      before?: boolean\n      after?: boolean\n    }\n    for?: {\n      before?: boolean\n      after?: boolean\n    }\n    from?: {\n      before?: boolean\n      after?: boolean\n    }\n    function?: {\n      before?: boolean\n      after?: boolean\n    }\n    get?: {\n      before?: boolean\n      after?: boolean\n    }\n    goto?: {\n      before?: boolean\n      after?: boolean\n    }\n    if?: {\n      before?: boolean\n      after?: boolean\n    }\n    implements?: {\n      before?: boolean\n      after?: boolean\n    }\n    import?: {\n      before?: boolean\n      after?: boolean\n    }\n    in?: {\n      before?: boolean\n      after?: boolean\n    }\n    instanceof?: {\n      before?: boolean\n      after?: boolean\n    }\n    int?: {\n      before?: boolean\n      after?: boolean\n    }\n    interface?: {\n      before?: boolean\n      after?: boolean\n    }\n    let?: {\n      before?: boolean\n      after?: boolean\n    }\n    long?: {\n      before?: boolean\n      after?: boolean\n    }\n    native?: {\n      before?: boolean\n      after?: boolean\n    }\n    new?: {\n      before?: boolean\n      after?: boolean\n    }\n    null?: {\n      before?: boolean\n      after?: boolean\n    }\n    of?: {\n      before?: boolean\n      after?: boolean\n    }\n    package?: {\n      before?: boolean\n      after?: boolean\n    }\n    private?: {\n      before?: boolean\n      after?: boolean\n    }\n    protected?: {\n      before?: boolean\n      after?: boolean\n    }\n    public?: {\n      before?: boolean\n      after?: boolean\n    }\n    return?: {\n      before?: boolean\n      after?: boolean\n    }\n    set?: {\n      before?: boolean\n      after?: boolean\n    }\n    short?: {\n      before?: boolean\n      after?: boolean\n    }\n    static?: {\n      before?: boolean\n      after?: boolean\n    }\n    super?: {\n      before?: boolean\n      after?: boolean\n    }\n    switch?: {\n      before?: boolean\n      after?: boolean\n    }\n    synchronized?: {\n      before?: boolean\n      after?: boolean\n    }\n    this?: {\n      before?: boolean\n      after?: boolean\n    }\n    throw?: {\n      before?: boolean\n      after?: boolean\n    }\n    throws?: {\n      before?: boolean\n      after?: boolean\n    }\n    transient?: {\n      before?: boolean\n      after?: boolean\n    }\n    true?: {\n      before?: boolean\n      after?: boolean\n    }\n    try?: {\n      before?: boolean\n      after?: boolean\n    }\n    typeof?: {\n      before?: boolean\n      after?: boolean\n    }\n    var?: {\n      before?: boolean\n      after?: boolean\n    }\n    void?: {\n      before?: boolean\n      after?: boolean\n    }\n    volatile?: {\n      before?: boolean\n      after?: boolean\n    }\n    while?: {\n      before?: boolean\n      after?: boolean\n    }\n    with?: {\n      before?: boolean\n      after?: boolean\n    }\n    yield?: {\n      before?: boolean\n      after?: boolean\n    }\n  }\n}]\n// ----- line-comment-position -----\ntype LineCommentPosition = []|[((\"above\" | \"beside\") | {\n  position?: (\"above\" | \"beside\")\n  ignorePattern?: string\n  applyDefaultPatterns?: boolean\n  applyDefaultIgnorePatterns?: boolean\n})]\n// ----- linebreak-style -----\ntype LinebreakStyle = []|[(\"unix\" | \"windows\")]\n// ----- lines-around-comment -----\ntype LinesAroundComment = []|[{\n  beforeBlockComment?: boolean\n  afterBlockComment?: boolean\n  beforeLineComment?: boolean\n  afterLineComment?: boolean\n  allowBlockStart?: boolean\n  allowBlockEnd?: boolean\n  allowClassStart?: boolean\n  allowClassEnd?: boolean\n  allowObjectStart?: boolean\n  allowObjectEnd?: boolean\n  allowArrayStart?: boolean\n  allowArrayEnd?: boolean\n  ignorePattern?: string\n  applyDefaultIgnorePatterns?: boolean\n  afterHashbangComment?: boolean\n}]\n// ----- lines-around-directive -----\ntype LinesAroundDirective = []|[((\"always\" | \"never\") | {\n  before?: (\"always\" | \"never\")\n  after?: (\"always\" | \"never\")\n})]\n// ----- lines-between-class-members -----\ntype LinesBetweenClassMembers = []|[({\n  \n  enforce: [{\n    blankLine: (\"always\" | \"never\")\n    prev: (\"method\" | \"field\" | \"*\")\n    next: (\"method\" | \"field\" | \"*\")\n  }, ...({\n    blankLine: (\"always\" | \"never\")\n    prev: (\"method\" | \"field\" | \"*\")\n    next: (\"method\" | \"field\" | \"*\")\n  })[]]\n} | (\"always\" | \"never\"))]|[({\n  \n  enforce: [{\n    blankLine: (\"always\" | \"never\")\n    prev: (\"method\" | \"field\" | \"*\")\n    next: (\"method\" | \"field\" | \"*\")\n  }, ...({\n    blankLine: (\"always\" | \"never\")\n    prev: (\"method\" | \"field\" | \"*\")\n    next: (\"method\" | \"field\" | \"*\")\n  })[]]\n} | (\"always\" | \"never\")), {\n  exceptAfterSingleLine?: boolean\n}]\n// ----- logical-assignment-operators -----\ntype LogicalAssignmentOperators = (([]|[\"always\"]|[\"always\", {\n  enforceForIfStatements?: boolean\n}] | [\"never\"]) & unknown[])\n// ----- max-classes-per-file -----\ntype MaxClassesPerFile = []|[(number | {\n  ignoreExpressions?: boolean\n  max?: number\n})]\n// ----- max-depth -----\ntype MaxDepth = []|[(number | {\n  maximum?: number\n  max?: number\n})]\n// ----- max-len -----\ntype MaxLen = []|[({\n  code?: number\n  comments?: number\n  tabWidth?: number\n  ignorePattern?: string\n  ignoreComments?: boolean\n  ignoreStrings?: boolean\n  ignoreUrls?: boolean\n  ignoreTemplateLiterals?: boolean\n  ignoreRegExpLiterals?: boolean\n  ignoreTrailingComments?: boolean\n} | number)]|[({\n  code?: number\n  comments?: number\n  tabWidth?: number\n  ignorePattern?: string\n  ignoreComments?: boolean\n  ignoreStrings?: boolean\n  ignoreUrls?: boolean\n  ignoreTemplateLiterals?: boolean\n  ignoreRegExpLiterals?: boolean\n  ignoreTrailingComments?: boolean\n} | number), ({\n  code?: number\n  comments?: number\n  tabWidth?: number\n  ignorePattern?: string\n  ignoreComments?: boolean\n  ignoreStrings?: boolean\n  ignoreUrls?: boolean\n  ignoreTemplateLiterals?: boolean\n  ignoreRegExpLiterals?: boolean\n  ignoreTrailingComments?: boolean\n} | number)]|[({\n  code?: number\n  comments?: number\n  tabWidth?: number\n  ignorePattern?: string\n  ignoreComments?: boolean\n  ignoreStrings?: boolean\n  ignoreUrls?: boolean\n  ignoreTemplateLiterals?: boolean\n  ignoreRegExpLiterals?: boolean\n  ignoreTrailingComments?: boolean\n} | number), ({\n  code?: number\n  comments?: number\n  tabWidth?: number\n  ignorePattern?: string\n  ignoreComments?: boolean\n  ignoreStrings?: boolean\n  ignoreUrls?: boolean\n  ignoreTemplateLiterals?: boolean\n  ignoreRegExpLiterals?: boolean\n  ignoreTrailingComments?: boolean\n} | number), {\n  code?: number\n  comments?: number\n  tabWidth?: number\n  ignorePattern?: string\n  ignoreComments?: boolean\n  ignoreStrings?: boolean\n  ignoreUrls?: boolean\n  ignoreTemplateLiterals?: boolean\n  ignoreRegExpLiterals?: boolean\n  ignoreTrailingComments?: boolean\n}]\n// ----- max-lines -----\ntype MaxLines = []|[(number | {\n  max?: number\n  skipComments?: boolean\n  skipBlankLines?: boolean\n})]\n// ----- max-lines-per-function -----\ntype MaxLinesPerFunction = []|[({\n  max?: number\n  skipComments?: boolean\n  skipBlankLines?: boolean\n  IIFEs?: boolean\n} | number)]\n// ----- max-nested-callbacks -----\ntype MaxNestedCallbacks = []|[(number | {\n  maximum?: number\n  max?: number\n})]\n// ----- max-params -----\ntype MaxParams = []|[(number | {\n  maximum?: number\n  max?: number\n  \n  countVoidThis?: boolean\n  \n  countThis?: (\"never\" | \"except-void\" | \"always\")\n})]\n// ----- max-statements -----\ntype MaxStatements = []|[(number | {\n  maximum?: number\n  max?: number\n})]|[(number | {\n  maximum?: number\n  max?: number\n}), {\n  ignoreTopLevelFunctions?: boolean\n}]\n// ----- max-statements-per-line -----\ntype MaxStatementsPerLine = []|[{\n  max?: number\n}]\n// ----- multiline-comment-style -----\ntype MultilineCommentStyle = ([]|[(\"starred-block\" | \"bare-block\")] | []|[\"separate-lines\"]|[\"separate-lines\", {\n  checkJSDoc?: boolean\n}])\n// ----- multiline-ternary -----\ntype MultilineTernary = []|[(\"always\" | \"always-multiline\" | \"never\")]\n// ----- new-cap -----\ntype NewCap = []|[{\n  newIsCap?: boolean\n  capIsNew?: boolean\n  newIsCapExceptions?: string[]\n  newIsCapExceptionPattern?: string\n  capIsNewExceptions?: string[]\n  capIsNewExceptionPattern?: string\n  properties?: boolean\n}]\n// ----- new-parens -----\ntype NewParens = []|[(\"always\" | \"never\")]\n// ----- newline-after-var -----\ntype NewlineAfterVar = []|[(\"never\" | \"always\")]\n// ----- newline-per-chained-call -----\ntype NewlinePerChainedCall = []|[{\n  ignoreChainWithDepth?: number\n}]\n// ----- no-bitwise -----\ntype NoBitwise = []|[{\n  allow?: (\"^\" | \"|\" | \"&\" | \"<<\" | \">>\" | \">>>\" | \"^=\" | \"|=\" | \"&=\" | \"<<=\" | \">>=\" | \">>>=\" | \"~\")[]\n  int32Hint?: boolean\n}]\n// ----- no-cond-assign -----\ntype NoCondAssign = []|[(\"except-parens\" | \"always\")]\n// ----- no-confusing-arrow -----\ntype NoConfusingArrow = []|[{\n  allowParens?: boolean\n  onlyOneSimpleParam?: boolean\n}]\n// ----- no-console -----\ntype NoConsole = []|[{\n  \n  allow?: [string, ...(string)[]]\n}]\n// ----- no-constant-condition -----\ntype NoConstantCondition = []|[{\n  checkLoops?: (\"all\" | \"allExceptWhileTrue\" | \"none\" | true | false)\n}]\n// ----- no-duplicate-imports -----\ntype NoDuplicateImports = []|[{\n  includeExports?: boolean\n  allowSeparateTypeImports?: boolean\n}]\n// ----- no-else-return -----\ntype NoElseReturn = []|[{\n  allowElseIf?: boolean\n}]\n// ----- no-empty -----\ntype NoEmpty = []|[{\n  allowEmptyCatch?: boolean\n}]\n// ----- no-empty-function -----\ntype NoEmptyFunction = []|[{\n  allow?: (\"functions\" | \"arrowFunctions\" | \"generatorFunctions\" | \"methods\" | \"generatorMethods\" | \"getters\" | \"setters\" | \"constructors\" | \"asyncFunctions\" | \"asyncMethods\" | \"privateConstructors\" | \"protectedConstructors\" | \"decoratedFunctions\" | \"overrideMethods\")[]\n}]\n// ----- no-empty-pattern -----\ntype NoEmptyPattern = []|[{\n  allowObjectPatternsAsParameters?: boolean\n}]\n// ----- no-eval -----\ntype NoEval = []|[{\n  allowIndirect?: boolean\n}]\n// ----- no-extend-native -----\ntype NoExtendNative = []|[{\n  exceptions?: string[]\n}]\n// ----- no-extra-boolean-cast -----\ntype NoExtraBooleanCast = []|[({\n  enforceForInnerExpressions?: boolean\n} | {\n  enforceForLogicalOperands?: boolean\n})]\n// ----- no-extra-parens -----\ntype NoExtraParens = ([]|[\"functions\"] | []|[\"all\"]|[\"all\", {\n  conditionalAssign?: boolean\n  ternaryOperandBinaryExpressions?: boolean\n  nestedBinaryExpressions?: boolean\n  returnAssign?: boolean\n  ignoreJSX?: (\"none\" | \"all\" | \"single-line\" | \"multi-line\")\n  enforceForArrowConditionals?: boolean\n  enforceForSequenceExpressions?: boolean\n  enforceForNewInMemberExpressions?: boolean\n  enforceForFunctionPrototypeMethods?: boolean\n  allowParensAfterCommentPattern?: string\n}])\n// ----- no-fallthrough -----\ntype NoFallthrough = []|[{\n  commentPattern?: string\n  allowEmptyCase?: boolean\n  reportUnusedFallthroughComment?: boolean\n}]\n// ----- no-global-assign -----\ntype NoGlobalAssign = []|[{\n  exceptions?: string[]\n}]\n// ----- no-implicit-coercion -----\ntype NoImplicitCoercion = []|[{\n  boolean?: boolean\n  number?: boolean\n  string?: boolean\n  disallowTemplateShorthand?: boolean\n  allow?: (\"~\" | \"!!\" | \"+\" | \"- -\" | \"-\" | \"*\")[]\n}]\n// ----- no-implicit-globals -----\ntype NoImplicitGlobals = []|[{\n  lexicalBindings?: boolean\n}]\n// ----- no-inline-comments -----\ntype NoInlineComments = []|[{\n  ignorePattern?: string\n}]\n// ----- no-inner-declarations -----\ntype NoInnerDeclarations = []|[(\"functions\" | \"both\")]|[(\"functions\" | \"both\"), {\n  blockScopedFunctions?: (\"allow\" | \"disallow\")\n}]\n// ----- no-invalid-regexp -----\ntype NoInvalidRegexp = []|[{\n  allowConstructorFlags?: string[]\n}]\n// ----- no-invalid-this -----\ntype NoInvalidThis = []|[{\n  capIsConstructor?: boolean\n}]\n// ----- no-irregular-whitespace -----\ntype NoIrregularWhitespace = []|[{\n  skipComments?: boolean\n  skipStrings?: boolean\n  skipTemplates?: boolean\n  skipRegExps?: boolean\n  skipJSXText?: boolean\n}]\n// ----- no-labels -----\ntype NoLabels = []|[{\n  allowLoop?: boolean\n  allowSwitch?: boolean\n}]\n// ----- no-magic-numbers -----\ntype NoMagicNumbers = []|[{\n  detectObjects?: boolean\n  enforceConst?: boolean\n  ignore?: (number | string)[]\n  ignoreArrayIndexes?: boolean\n  ignoreDefaultValues?: boolean\n  ignoreClassFieldInitialValues?: boolean\n  ignoreEnums?: boolean\n  ignoreNumericLiteralTypes?: boolean\n  ignoreReadonlyClassProperties?: boolean\n  ignoreTypeIndexes?: boolean\n}]\n// ----- no-misleading-character-class -----\ntype NoMisleadingCharacterClass = []|[{\n  allowEscape?: boolean\n}]\n// ----- no-mixed-operators -----\ntype NoMixedOperators = []|[{\n  groups?: [(\"+\" | \"-\" | \"*\" | \"/\" | \"%\" | \"**\" | \"&\" | \"|\" | \"^\" | \"~\" | \"<<\" | \">>\" | \">>>\" | \"==\" | \"!=\" | \"===\" | \"!==\" | \">\" | \">=\" | \"<\" | \"<=\" | \"&&\" | \"||\" | \"in\" | \"instanceof\" | \"?:\" | \"??\"), (\"+\" | \"-\" | \"*\" | \"/\" | \"%\" | \"**\" | \"&\" | \"|\" | \"^\" | \"~\" | \"<<\" | \">>\" | \">>>\" | \"==\" | \"!=\" | \"===\" | \"!==\" | \">\" | \">=\" | \"<\" | \"<=\" | \"&&\" | \"||\" | \"in\" | \"instanceof\" | \"?:\" | \"??\"), ...((\"+\" | \"-\" | \"*\" | \"/\" | \"%\" | \"**\" | \"&\" | \"|\" | \"^\" | \"~\" | \"<<\" | \">>\" | \">>>\" | \"==\" | \"!=\" | \"===\" | \"!==\" | \">\" | \">=\" | \"<\" | \"<=\" | \"&&\" | \"||\" | \"in\" | \"instanceof\" | \"?:\" | \"??\"))[]][]\n  allowSamePrecedence?: boolean\n}]\n// ----- no-mixed-requires -----\ntype NoMixedRequires = []|[(boolean | {\n  grouping?: boolean\n  allowCall?: boolean\n})]\n// ----- no-mixed-spaces-and-tabs -----\ntype NoMixedSpacesAndTabs = []|[(\"smart-tabs\" | true | false)]\n// ----- no-multi-assign -----\ntype NoMultiAssign = []|[{\n  ignoreNonDeclaration?: boolean\n}]\n// ----- no-multi-spaces -----\ntype NoMultiSpaces = []|[{\n  exceptions?: {\n    [k: string]: boolean\n  }\n  ignoreEOLComments?: boolean\n}]\n// ----- no-multiple-empty-lines -----\ntype NoMultipleEmptyLines = []|[{\n  max: number\n  maxEOF?: number\n  maxBOF?: number\n}]\n// ----- no-native-reassign -----\ntype NoNativeReassign = []|[{\n  exceptions?: string[]\n}]\n// ----- no-param-reassign -----\ntype NoParamReassign = []|[({\n  props?: false\n} | {\n  props?: true\n  ignorePropertyModificationsFor?: string[]\n  ignorePropertyModificationsForRegex?: string[]\n})]\n// ----- no-plusplus -----\ntype NoPlusplus = []|[{\n  allowForLoopAfterthoughts?: boolean\n}]\n// ----- no-promise-executor-return -----\ntype NoPromiseExecutorReturn = []|[{\n  allowVoid?: boolean\n}]\n// ----- no-redeclare -----\ntype NoRedeclare = []|[{\n  builtinGlobals?: boolean\n}]\n// ----- no-restricted-exports -----\ntype NoRestrictedExports = []|[({\n  restrictedNamedExports?: string[]\n  restrictedNamedExportsPattern?: string\n} | {\n  restrictedNamedExports?: string[]\n  restrictedNamedExportsPattern?: string\n  restrictDefaultExports?: {\n    direct?: boolean\n    named?: boolean\n    defaultFrom?: boolean\n    namedFrom?: boolean\n    namespaceFrom?: boolean\n  }\n})]\n// ----- no-restricted-globals -----\ntype NoRestrictedGlobals = ((string | {\n  name: string\n  message?: string\n})[] | []|[{\n  \n  globals: (string | {\n    name: string\n    message?: string\n  })[]\n  checkGlobalObject?: boolean\n  globalObjects?: string[]\n}])\n// ----- no-restricted-imports -----\ntype NoRestrictedImports = ((string | {\n  name: string\n  message?: string\n  importNames?: string[]\n  allowImportNames?: string[]\n  \n  allowTypeImports?: boolean\n})[] | []|[{\n  paths?: (string | {\n    name: string\n    message?: string\n    importNames?: string[]\n    allowImportNames?: string[]\n    \n    allowTypeImports?: boolean\n  })[]\n  patterns?: (string[] | ({\n    [k: string]: unknown | undefined\n  } | {\n    [k: string]: unknown | undefined\n  })[])\n}])\n// ----- no-restricted-modules -----\ntype NoRestrictedModules = ((string | {\n  name: string\n  message?: string\n})[] | {\n  paths?: (string | {\n    name: string\n    message?: string\n  })[]\n  patterns?: string[]\n}[])\n// ----- no-restricted-properties -----\ntype NoRestrictedProperties = ({\n  [k: string]: unknown | undefined\n} | {\n  [k: string]: unknown | undefined\n})[]\n// ----- no-restricted-syntax -----\ntype NoRestrictedSyntax = (string | {\n  selector: string\n  message?: string\n})[]\n// ----- no-return-assign -----\ntype NoReturnAssign = []|[(\"except-parens\" | \"always\")]\n// ----- no-self-assign -----\ntype NoSelfAssign = []|[{\n  props?: boolean\n}]\n// ----- no-sequences -----\ntype NoSequences = []|[{\n  allowInParentheses?: boolean\n}]\n// ----- no-shadow -----\ntype NoShadow = []|[{\n  builtinGlobals?: boolean\n  hoist?: (\"all\" | \"functions\" | \"never\" | \"types\" | \"functions-and-types\")\n  allow?: string[]\n  ignoreOnInitialization?: boolean\n  ignoreTypeValueShadow?: boolean\n  ignoreFunctionTypeParameterNameValueShadow?: boolean\n}]\n// ----- no-shadow-restricted-names -----\ntype NoShadowRestrictedNames = []|[{\n  reportGlobalThis?: boolean\n}]\n// ----- no-sync -----\ntype NoSync = []|[{\n  allowAtRootLevel?: boolean\n}]\n// ----- no-tabs -----\ntype NoTabs = []|[{\n  allowIndentationTabs?: boolean\n}]\n// ----- no-trailing-spaces -----\ntype NoTrailingSpaces = []|[{\n  skipBlankLines?: boolean\n  ignoreComments?: boolean\n}]\n// ----- no-undef -----\ntype NoUndef = []|[{\n  typeof?: boolean\n}]\n// ----- no-underscore-dangle -----\ntype NoUnderscoreDangle = []|[{\n  allow?: string[]\n  allowAfterThis?: boolean\n  allowAfterSuper?: boolean\n  allowAfterThisConstructor?: boolean\n  enforceInMethodNames?: boolean\n  allowFunctionParams?: boolean\n  enforceInClassFields?: boolean\n  allowInArrayDestructuring?: boolean\n  allowInObjectDestructuring?: boolean\n}]\n// ----- no-unneeded-ternary -----\ntype NoUnneededTernary = []|[{\n  defaultAssignment?: boolean\n}]\n// ----- no-unreachable-loop -----\ntype NoUnreachableLoop = []|[{\n  ignore?: (\"WhileStatement\" | \"DoWhileStatement\" | \"ForStatement\" | \"ForInStatement\" | \"ForOfStatement\")[]\n}]\n// ----- no-unsafe-negation -----\ntype NoUnsafeNegation = []|[{\n  enforceForOrderingRelations?: boolean\n}]\n// ----- no-unsafe-optional-chaining -----\ntype NoUnsafeOptionalChaining = []|[{\n  disallowArithmeticOperators?: boolean\n}]\n// ----- no-unused-expressions -----\ntype NoUnusedExpressions = []|[{\n  allowShortCircuit?: boolean\n  allowTernary?: boolean\n  allowTaggedTemplates?: boolean\n  enforceForJSX?: boolean\n  ignoreDirectives?: boolean\n}]\n// ----- no-unused-vars -----\ntype NoUnusedVars = []|[((\"all\" | \"local\") | {\n  vars?: (\"all\" | \"local\")\n  varsIgnorePattern?: string\n  args?: (\"all\" | \"after-used\" | \"none\")\n  ignoreRestSiblings?: boolean\n  argsIgnorePattern?: string\n  caughtErrors?: (\"all\" | \"none\")\n  caughtErrorsIgnorePattern?: string\n  destructuredArrayIgnorePattern?: string\n  ignoreClassWithStaticInitBlock?: boolean\n  ignoreUsingDeclarations?: boolean\n  reportUsedIgnorePattern?: boolean\n})]\n// ----- no-use-before-define -----\ntype NoUseBeforeDefine = []|[(\"nofunc\" | {\n  functions?: boolean\n  classes?: boolean\n  variables?: boolean\n  allowNamedExports?: boolean\n  enums?: boolean\n  typedefs?: boolean\n  ignoreTypeReferences?: boolean\n})]\n// ----- no-useless-computed-key -----\ntype NoUselessComputedKey = []|[{\n  enforceForClassMembers?: boolean\n}]\n// ----- no-useless-escape -----\ntype NoUselessEscape = []|[{\n  allowRegexCharacters?: string[]\n}]\n// ----- no-useless-rename -----\ntype NoUselessRename = []|[{\n  ignoreDestructuring?: boolean\n  ignoreImport?: boolean\n  ignoreExport?: boolean\n}]\n// ----- no-void -----\ntype NoVoid = []|[{\n  allowAsStatement?: boolean\n}]\n// ----- no-warning-comments -----\ntype NoWarningComments = []|[{\n  terms?: string[]\n  location?: (\"start\" | \"anywhere\")\n  \n  decoration?: [string, ...(string)[]]\n}]\n// ----- nonblock-statement-body-position -----\ntype NonblockStatementBodyPosition = []|[(\"beside\" | \"below\" | \"any\")]|[(\"beside\" | \"below\" | \"any\"), {\n  overrides?: {\n    if?: (\"beside\" | \"below\" | \"any\")\n    else?: (\"beside\" | \"below\" | \"any\")\n    while?: (\"beside\" | \"below\" | \"any\")\n    do?: (\"beside\" | \"below\" | \"any\")\n    for?: (\"beside\" | \"below\" | \"any\")\n  }\n}]\n// ----- object-curly-newline -----\ntype ObjectCurlyNewline = []|[(((\"always\" | \"never\") | {\n  multiline?: boolean\n  minProperties?: number\n  consistent?: boolean\n}) | {\n  ObjectExpression?: ((\"always\" | \"never\") | {\n    multiline?: boolean\n    minProperties?: number\n    consistent?: boolean\n  })\n  ObjectPattern?: ((\"always\" | \"never\") | {\n    multiline?: boolean\n    minProperties?: number\n    consistent?: boolean\n  })\n  ImportDeclaration?: ((\"always\" | \"never\") | {\n    multiline?: boolean\n    minProperties?: number\n    consistent?: boolean\n  })\n  ExportDeclaration?: ((\"always\" | \"never\") | {\n    multiline?: boolean\n    minProperties?: number\n    consistent?: boolean\n  })\n})]\n// ----- object-curly-spacing -----\ntype ObjectCurlySpacing = []|[(\"always\" | \"never\")]|[(\"always\" | \"never\"), {\n  arraysInObjects?: boolean\n  objectsInObjects?: boolean\n}]\n// ----- object-property-newline -----\ntype ObjectPropertyNewline = []|[{\n  allowAllPropertiesOnSameLine?: boolean\n  allowMultiplePropertiesPerLine?: boolean\n}]\n// ----- object-shorthand -----\ntype ObjectShorthand = ([]|[(\"always\" | \"methods\" | \"properties\" | \"never\" | \"consistent\" | \"consistent-as-needed\")] | []|[(\"always\" | \"methods\" | \"properties\")]|[(\"always\" | \"methods\" | \"properties\"), {\n  avoidQuotes?: boolean\n}] | []|[(\"always\" | \"methods\")]|[(\"always\" | \"methods\"), {\n  ignoreConstructors?: boolean\n  methodsIgnorePattern?: string\n  avoidQuotes?: boolean\n  avoidExplicitReturnArrows?: boolean\n}])\n// ----- one-var -----\ntype OneVar = []|[((\"always\" | \"never\" | \"consecutive\") | {\n  separateRequires?: boolean\n  var?: (\"always\" | \"never\" | \"consecutive\")\n  let?: (\"always\" | \"never\" | \"consecutive\")\n  const?: (\"always\" | \"never\" | \"consecutive\")\n  using?: (\"always\" | \"never\" | \"consecutive\")\n  awaitUsing?: (\"always\" | \"never\" | \"consecutive\")\n} | {\n  initialized?: (\"always\" | \"never\" | \"consecutive\")\n  uninitialized?: (\"always\" | \"never\" | \"consecutive\")\n})]\n// ----- one-var-declaration-per-line -----\ntype OneVarDeclarationPerLine = []|[(\"always\" | \"initializations\")]\n// ----- operator-assignment -----\ntype OperatorAssignment = []|[(\"always\" | \"never\")]\n// ----- operator-linebreak -----\ntype OperatorLinebreak = []|[(\"after\" | \"before\" | \"none\" | null)]|[(\"after\" | \"before\" | \"none\" | null), {\n  overrides?: {\n    [k: string]: (\"after\" | \"before\" | \"none\" | \"ignore\") | undefined\n  }\n}]\n// ----- padded-blocks -----\ntype PaddedBlocks = []|[((\"always\" | \"never\") | {\n  blocks?: (\"always\" | \"never\")\n  switches?: (\"always\" | \"never\")\n  classes?: (\"always\" | \"never\")\n})]|[((\"always\" | \"never\") | {\n  blocks?: (\"always\" | \"never\")\n  switches?: (\"always\" | \"never\")\n  classes?: (\"always\" | \"never\")\n}), {\n  allowSingleLineBlocks?: boolean\n}]\n// ----- padding-line-between-statements -----\ntype _PaddingLineBetweenStatementsPaddingType = (\"any\" | \"never\" | \"always\")\ntype _PaddingLineBetweenStatementsStatementType = ((\"*\" | \"block-like\" | \"cjs-export\" | \"cjs-import\" | \"directive\" | \"expression\" | \"iife\" | \"multiline-block-like\" | \"multiline-expression\" | \"multiline-const\" | \"multiline-let\" | \"multiline-var\" | \"singleline-const\" | \"singleline-let\" | \"singleline-var\" | \"block\" | \"empty\" | \"function\" | \"break\" | \"case\" | \"class\" | \"const\" | \"continue\" | \"debugger\" | \"default\" | \"do\" | \"export\" | \"for\" | \"if\" | \"import\" | \"let\" | \"return\" | \"switch\" | \"throw\" | \"try\" | \"var\" | \"while\" | \"with\") | [(\"*\" | \"block-like\" | \"cjs-export\" | \"cjs-import\" | \"directive\" | \"expression\" | \"iife\" | \"multiline-block-like\" | \"multiline-expression\" | \"multiline-const\" | \"multiline-let\" | \"multiline-var\" | \"singleline-const\" | \"singleline-let\" | \"singleline-var\" | \"block\" | \"empty\" | \"function\" | \"break\" | \"case\" | \"class\" | \"const\" | \"continue\" | \"debugger\" | \"default\" | \"do\" | \"export\" | \"for\" | \"if\" | \"import\" | \"let\" | \"return\" | \"switch\" | \"throw\" | \"try\" | \"var\" | \"while\" | \"with\"), ...((\"*\" | \"block-like\" | \"cjs-export\" | \"cjs-import\" | \"directive\" | \"expression\" | \"iife\" | \"multiline-block-like\" | \"multiline-expression\" | \"multiline-const\" | \"multiline-let\" | \"multiline-var\" | \"singleline-const\" | \"singleline-let\" | \"singleline-var\" | \"block\" | \"empty\" | \"function\" | \"break\" | \"case\" | \"class\" | \"const\" | \"continue\" | \"debugger\" | \"default\" | \"do\" | \"export\" | \"for\" | \"if\" | \"import\" | \"let\" | \"return\" | \"switch\" | \"throw\" | \"try\" | \"var\" | \"while\" | \"with\"))[]])\ntype PaddingLineBetweenStatements = {\n  blankLine: _PaddingLineBetweenStatementsPaddingType\n  prev: _PaddingLineBetweenStatementsStatementType\n  next: _PaddingLineBetweenStatementsStatementType\n}[]\n// ----- prefer-arrow-callback -----\ntype PreferArrowCallback = []|[{\n  allowNamedFunctions?: boolean\n  allowUnboundThis?: boolean\n}]\n// ----- prefer-const -----\ntype PreferConst = []|[{\n  destructuring?: (\"any\" | \"all\")\n  ignoreReadBeforeAssign?: boolean\n}]\n// ----- prefer-destructuring -----\ntype PreferDestructuring = []|[({\n  VariableDeclarator?: {\n    array?: boolean\n    object?: boolean\n  }\n  AssignmentExpression?: {\n    array?: boolean\n    object?: boolean\n  }\n} | {\n  array?: boolean\n  object?: boolean\n})]|[({\n  VariableDeclarator?: {\n    array?: boolean\n    object?: boolean\n  }\n  AssignmentExpression?: {\n    array?: boolean\n    object?: boolean\n  }\n} | {\n  array?: boolean\n  object?: boolean\n}), {\n  enforceForRenamedProperties?: boolean\n}]\n// ----- prefer-promise-reject-errors -----\ntype PreferPromiseRejectErrors = []|[{\n  allowEmptyReject?: boolean\n}]\n// ----- prefer-reflect -----\ntype PreferReflect = []|[{\n  exceptions?: (\"apply\" | \"call\" | \"delete\" | \"defineProperty\" | \"getOwnPropertyDescriptor\" | \"getPrototypeOf\" | \"setPrototypeOf\" | \"isExtensible\" | \"getOwnPropertyNames\" | \"preventExtensions\")[]\n}]\n// ----- prefer-regex-literals -----\ntype PreferRegexLiterals = []|[{\n  disallowRedundantWrapping?: boolean\n}]\n// ----- preserve-caught-error -----\ntype PreserveCaughtError = []|[{\n  \n  requireCatchParameter?: boolean\n}]\n// ----- quote-props -----\ntype QuoteProps = ([]|[(\"always\" | \"as-needed\" | \"consistent\" | \"consistent-as-needed\")] | []|[(\"always\" | \"as-needed\" | \"consistent\" | \"consistent-as-needed\")]|[(\"always\" | \"as-needed\" | \"consistent\" | \"consistent-as-needed\"), {\n  keywords?: boolean\n  unnecessary?: boolean\n  numbers?: boolean\n}])\n// ----- quotes -----\ntype Quotes = []|[(\"single\" | \"double\" | \"backtick\")]|[(\"single\" | \"double\" | \"backtick\"), (\"avoid-escape\" | {\n  avoidEscape?: boolean\n  allowTemplateLiterals?: boolean\n})]\n// ----- radix -----\ntype Radix = []|[(\"always\" | \"as-needed\")]\n// ----- require-atomic-updates -----\ntype RequireAtomicUpdates = []|[{\n  allowProperties?: boolean\n}]\n// ----- require-unicode-regexp -----\ntype RequireUnicodeRegexp = []|[{\n  requireFlag?: (\"u\" | \"v\")\n}]\n// ----- rest-spread-spacing -----\ntype RestSpreadSpacing = []|[(\"always\" | \"never\")]\n// ----- semi -----\ntype Semi = ([]|[\"never\"]|[\"never\", {\n  beforeStatementContinuationChars?: (\"always\" | \"any\" | \"never\")\n}] | []|[\"always\"]|[\"always\", {\n  omitLastInOneLineBlock?: boolean\n  omitLastInOneLineClassBody?: boolean\n}])\n// ----- semi-spacing -----\ntype SemiSpacing = []|[{\n  before?: boolean\n  after?: boolean\n}]\n// ----- semi-style -----\ntype SemiStyle = []|[(\"last\" | \"first\")]\n// ----- sort-imports -----\ntype SortImports = []|[{\n  ignoreCase?: boolean\n  \n  memberSyntaxSortOrder?: [(\"none\" | \"all\" | \"multiple\" | \"single\"), (\"none\" | \"all\" | \"multiple\" | \"single\"), (\"none\" | \"all\" | \"multiple\" | \"single\"), (\"none\" | \"all\" | \"multiple\" | \"single\")]\n  ignoreDeclarationSort?: boolean\n  ignoreMemberSort?: boolean\n  allowSeparatedGroups?: boolean\n}]\n// ----- sort-keys -----\ntype SortKeys = []|[(\"asc\" | \"desc\")]|[(\"asc\" | \"desc\"), {\n  caseSensitive?: boolean\n  natural?: boolean\n  minKeys?: number\n  allowLineSeparatedGroups?: boolean\n  ignoreComputedKeys?: boolean\n}]\n// ----- sort-vars -----\ntype SortVars = []|[{\n  ignoreCase?: boolean\n}]\n// ----- space-before-blocks -----\ntype SpaceBeforeBlocks = []|[((\"always\" | \"never\") | {\n  keywords?: (\"always\" | \"never\" | \"off\")\n  functions?: (\"always\" | \"never\" | \"off\")\n  classes?: (\"always\" | \"never\" | \"off\")\n})]\n// ----- space-before-function-paren -----\ntype SpaceBeforeFunctionParen = []|[((\"always\" | \"never\") | {\n  anonymous?: (\"always\" | \"never\" | \"ignore\")\n  named?: (\"always\" | \"never\" | \"ignore\")\n  asyncArrow?: (\"always\" | \"never\" | \"ignore\")\n})]\n// ----- space-in-parens -----\ntype SpaceInParens = []|[(\"always\" | \"never\")]|[(\"always\" | \"never\"), {\n  exceptions?: (\"{}\" | \"[]\" | \"()\" | \"empty\")[]\n}]\n// ----- space-infix-ops -----\ntype SpaceInfixOps = []|[{\n  int32Hint?: boolean\n}]\n// ----- space-unary-ops -----\ntype SpaceUnaryOps = []|[{\n  words?: boolean\n  nonwords?: boolean\n  overrides?: {\n    [k: string]: boolean | undefined\n  }\n}]\n// ----- spaced-comment -----\ntype SpacedComment = []|[(\"always\" | \"never\")]|[(\"always\" | \"never\"), {\n  exceptions?: string[]\n  markers?: string[]\n  line?: {\n    exceptions?: string[]\n    markers?: string[]\n  }\n  block?: {\n    exceptions?: string[]\n    markers?: string[]\n    balanced?: boolean\n  }\n}]\n// ----- strict -----\ntype Strict = []|[(\"never\" | \"global\" | \"function\" | \"safe\")]\n// ----- switch-colon-spacing -----\ntype SwitchColonSpacing = []|[{\n  before?: boolean\n  after?: boolean\n}]\n// ----- template-curly-spacing -----\ntype TemplateCurlySpacing = []|[(\"always\" | \"never\")]\n// ----- template-tag-spacing -----\ntype TemplateTagSpacing = []|[(\"always\" | \"never\")]\n// ----- unicode-bom -----\ntype UnicodeBom = []|[(\"always\" | \"never\")]\n// ----- use-isnan -----\ntype UseIsnan = []|[{\n  enforceForSwitchCase?: boolean\n  enforceForIndexOf?: boolean\n}]\n// ----- valid-typeof -----\ntype ValidTypeof = []|[{\n  requireStringLiterals?: boolean\n}]\n// ----- wrap-iife -----\ntype WrapIife = []|[(\"outside\" | \"inside\" | \"any\")]|[(\"outside\" | \"inside\" | \"any\"), {\n  functionPrototypeMethods?: boolean\n}]\n// ----- yield-star-spacing -----\ntype YieldStarSpacing = []|[((\"before\" | \"after\" | \"both\" | \"neither\") | {\n  before?: boolean\n  after?: boolean\n})]\n// ----- yoda -----\ntype Yoda = []|[(\"always\" | \"never\")]|[(\"always\" | \"never\"), {\n  exceptRange?: boolean\n  onlyEquality?: boolean\n}]"
  },
  {
    "path": "test/output/flat-config-vue.d.ts",
    "content": "/* eslint-disable */\n/* prettier-ignore */\nimport type { Linter } from 'eslint'\n\ndeclare module 'eslint' {\n  namespace Linter {\n    interface RulesRecord extends RuleOptions {}\n  }\n}\n\nexport interface RuleOptions {\n  /**\n   * Enforce linebreaks after opening and before closing array brackets in `<template>`\n   * @see https://eslint.vuejs.org/rules/array-bracket-newline.html\n   */\n  'vue/array-bracket-newline'?: Linter.RuleEntry<VueArrayBracketNewline>\n  /**\n   * Enforce consistent spacing inside array brackets in `<template>`\n   * @see https://eslint.vuejs.org/rules/array-bracket-spacing.html\n   */\n  'vue/array-bracket-spacing'?: Linter.RuleEntry<VueArrayBracketSpacing>\n  /**\n   * Enforce line breaks after each array element in `<template>`\n   * @see https://eslint.vuejs.org/rules/array-element-newline.html\n   */\n  'vue/array-element-newline'?: Linter.RuleEntry<VueArrayElementNewline>\n  /**\n   * Enforce consistent spacing before and after the arrow in arrow functions in `<template>`\n   * @see https://eslint.vuejs.org/rules/arrow-spacing.html\n   */\n  'vue/arrow-spacing'?: Linter.RuleEntry<VueArrowSpacing>\n  /**\n   * enforce attribute naming style on custom components in template\n   * @see https://eslint.vuejs.org/rules/attribute-hyphenation.html\n   */\n  'vue/attribute-hyphenation'?: Linter.RuleEntry<VueAttributeHyphenation>\n  /**\n   * enforce order of attributes\n   * @see https://eslint.vuejs.org/rules/attributes-order.html\n   */\n  'vue/attributes-order'?: Linter.RuleEntry<VueAttributesOrder>\n  /**\n   * disallow use other than available `lang`\n   * @see https://eslint.vuejs.org/rules/block-lang.html\n   */\n  'vue/block-lang'?: Linter.RuleEntry<VueBlockLang>\n  /**\n   * enforce order of component top-level elements\n   * @see https://eslint.vuejs.org/rules/block-order.html\n   */\n  'vue/block-order'?: Linter.RuleEntry<VueBlockOrder>\n  /**\n   * Disallow or enforce spaces inside of blocks after opening block and before closing block in `<template>`\n   * @see https://eslint.vuejs.org/rules/block-spacing.html\n   */\n  'vue/block-spacing'?: Linter.RuleEntry<VueBlockSpacing>\n  /**\n   * enforce line breaks after opening and before closing block-level tags\n   * @see https://eslint.vuejs.org/rules/block-tag-newline.html\n   */\n  'vue/block-tag-newline'?: Linter.RuleEntry<VueBlockTagNewline>\n  /**\n   * Enforce consistent brace style for blocks in `<template>`\n   * @see https://eslint.vuejs.org/rules/brace-style.html\n   */\n  'vue/brace-style'?: Linter.RuleEntry<VueBraceStyle>\n  /**\n   * Enforce camelcase naming convention in `<template>`\n   * @see https://eslint.vuejs.org/rules/camelcase.html\n   */\n  'vue/camelcase'?: Linter.RuleEntry<VueCamelcase>\n  /**\n   * Require or disallow trailing commas in `<template>`\n   * @see https://eslint.vuejs.org/rules/comma-dangle.html\n   */\n  'vue/comma-dangle'?: Linter.RuleEntry<VueCommaDangle>\n  /**\n   * Enforce consistent spacing before and after commas in `<template>`\n   * @see https://eslint.vuejs.org/rules/comma-spacing.html\n   */\n  'vue/comma-spacing'?: Linter.RuleEntry<VueCommaSpacing>\n  /**\n   * Enforce consistent comma style in `<template>`\n   * @see https://eslint.vuejs.org/rules/comma-style.html\n   */\n  'vue/comma-style'?: Linter.RuleEntry<VueCommaStyle>\n  /**\n   * support comment-directives in `<template>`\n   * @see https://eslint.vuejs.org/rules/comment-directive.html\n   */\n  'vue/comment-directive'?: Linter.RuleEntry<VueCommentDirective>\n  /**\n   * enforce component API style\n   * @see https://eslint.vuejs.org/rules/component-api-style.html\n   */\n  'vue/component-api-style'?: Linter.RuleEntry<VueComponentApiStyle>\n  /**\n   * enforce specific casing for component definition name\n   * @see https://eslint.vuejs.org/rules/component-definition-name-casing.html\n   */\n  'vue/component-definition-name-casing'?: Linter.RuleEntry<VueComponentDefinitionNameCasing>\n  /**\n   * enforce specific casing for the component naming style in template\n   * @see https://eslint.vuejs.org/rules/component-name-in-template-casing.html\n   */\n  'vue/component-name-in-template-casing'?: Linter.RuleEntry<VueComponentNameInTemplateCasing>\n  /**\n   * enforce the casing of component name in `components` options\n   * @see https://eslint.vuejs.org/rules/component-options-name-casing.html\n   */\n  'vue/component-options-name-casing'?: Linter.RuleEntry<VueComponentOptionsNameCasing>\n  /**\n   * enforce specific casing for custom event name\n   * @see https://eslint.vuejs.org/rules/custom-event-name-casing.html\n   */\n  'vue/custom-event-name-casing'?: Linter.RuleEntry<VueCustomEventNameCasing>\n  /**\n   * enforce declaration style of `defineEmits`\n   * @see https://eslint.vuejs.org/rules/define-emits-declaration.html\n   */\n  'vue/define-emits-declaration'?: Linter.RuleEntry<VueDefineEmitsDeclaration>\n  /**\n   * enforce order of compiler macros (`defineProps`, `defineEmits`, etc.)\n   * @see https://eslint.vuejs.org/rules/define-macros-order.html\n   */\n  'vue/define-macros-order'?: Linter.RuleEntry<VueDefineMacrosOrder>\n  /**\n   * enforce declaration style of `defineProps`\n   * @see https://eslint.vuejs.org/rules/define-props-declaration.html\n   */\n  'vue/define-props-declaration'?: Linter.RuleEntry<VueDefinePropsDeclaration>\n  /**\n   * enforce consistent style for props destructuring\n   * @see https://eslint.vuejs.org/rules/define-props-destructuring.html\n   */\n  'vue/define-props-destructuring'?: Linter.RuleEntry<VueDefinePropsDestructuring>\n  /**\n   * Enforce consistent newlines before and after dots in `<template>`\n   * @see https://eslint.vuejs.org/rules/dot-location.html\n   */\n  'vue/dot-location'?: Linter.RuleEntry<VueDotLocation>\n  /**\n   * Enforce dot notation whenever possible in `<template>`\n   * @see https://eslint.vuejs.org/rules/dot-notation.html\n   */\n  'vue/dot-notation'?: Linter.RuleEntry<VueDotNotation>\n  /**\n   * enforce or forbid the use of the `scoped` and `module` attributes in SFC top level style tags\n   * @see https://eslint.vuejs.org/rules/enforce-style-attribute.html\n   */\n  'vue/enforce-style-attribute'?: Linter.RuleEntry<VueEnforceStyleAttribute>\n  /**\n   * Require the use of `===` and `!==` in `<template>`\n   * @see https://eslint.vuejs.org/rules/eqeqeq.html\n   */\n  'vue/eqeqeq'?: Linter.RuleEntry<VueEqeqeq>\n  /**\n   * enforce the location of first attribute\n   * @see https://eslint.vuejs.org/rules/first-attribute-linebreak.html\n   */\n  'vue/first-attribute-linebreak'?: Linter.RuleEntry<VueFirstAttributeLinebreak>\n  /**\n   * Require or disallow spacing between function identifiers and their invocations in `<template>`\n   * @see https://eslint.vuejs.org/rules/func-call-spacing.html\n   */\n  'vue/func-call-spacing'?: Linter.RuleEntry<VueFuncCallSpacing>\n  /**\n   * disallow usage of button without an explicit type attribute\n   * @see https://eslint.vuejs.org/rules/html-button-has-type.html\n   */\n  'vue/html-button-has-type'?: Linter.RuleEntry<VueHtmlButtonHasType>\n  /**\n   * require or disallow a line break before tag's closing brackets\n   * @see https://eslint.vuejs.org/rules/html-closing-bracket-newline.html\n   */\n  'vue/html-closing-bracket-newline'?: Linter.RuleEntry<VueHtmlClosingBracketNewline>\n  /**\n   * require or disallow a space before tag's closing brackets\n   * @see https://eslint.vuejs.org/rules/html-closing-bracket-spacing.html\n   */\n  'vue/html-closing-bracket-spacing'?: Linter.RuleEntry<VueHtmlClosingBracketSpacing>\n  /**\n   * enforce unified line break in HTML comments\n   * @see https://eslint.vuejs.org/rules/html-comment-content-newline.html\n   */\n  'vue/html-comment-content-newline'?: Linter.RuleEntry<VueHtmlCommentContentNewline>\n  /**\n   * enforce unified spacing in HTML comments\n   * @see https://eslint.vuejs.org/rules/html-comment-content-spacing.html\n   */\n  'vue/html-comment-content-spacing'?: Linter.RuleEntry<VueHtmlCommentContentSpacing>\n  /**\n   * enforce consistent indentation in HTML comments\n   * @see https://eslint.vuejs.org/rules/html-comment-indent.html\n   */\n  'vue/html-comment-indent'?: Linter.RuleEntry<VueHtmlCommentIndent>\n  /**\n   * enforce end tag style\n   * @see https://eslint.vuejs.org/rules/html-end-tags.html\n   */\n  'vue/html-end-tags'?: Linter.RuleEntry<[]>\n  /**\n   * enforce consistent indentation in `<template>`\n   * @see https://eslint.vuejs.org/rules/html-indent.html\n   */\n  'vue/html-indent'?: Linter.RuleEntry<VueHtmlIndent>\n  /**\n   * enforce quotes style of HTML attributes\n   * @see https://eslint.vuejs.org/rules/html-quotes.html\n   */\n  'vue/html-quotes'?: Linter.RuleEntry<VueHtmlQuotes>\n  /**\n   * enforce self-closing style\n   * @see https://eslint.vuejs.org/rules/html-self-closing.html\n   */\n  'vue/html-self-closing'?: Linter.RuleEntry<VueHtmlSelfClosing>\n  /**\n   * prevent variables used in JSX to be marked as unused\n   * @see https://eslint.vuejs.org/rules/jsx-uses-vars.html\n   */\n  'vue/jsx-uses-vars'?: Linter.RuleEntry<[]>\n  /**\n   * Enforce consistent spacing between property names and type annotations in types and interfaces in `<template>`\n   * @see https://eslint.vuejs.org/rules/key-spacing.html\n   */\n  'vue/key-spacing'?: Linter.RuleEntry<VueKeySpacing>\n  /**\n   * Enforce consistent spacing before and after keywords in `<template>`\n   * @see https://eslint.vuejs.org/rules/keyword-spacing.html\n   */\n  'vue/keyword-spacing'?: Linter.RuleEntry<VueKeywordSpacing>\n  /**\n   * require component name property to match its file name\n   * @see https://eslint.vuejs.org/rules/match-component-file-name.html\n   */\n  'vue/match-component-file-name'?: Linter.RuleEntry<VueMatchComponentFileName>\n  /**\n   * require the registered component name to match the imported component name\n   * @see https://eslint.vuejs.org/rules/match-component-import-name.html\n   */\n  'vue/match-component-import-name'?: Linter.RuleEntry<[]>\n  /**\n   * enforce the maximum number of attributes per line\n   * @see https://eslint.vuejs.org/rules/max-attributes-per-line.html\n   */\n  'vue/max-attributes-per-line'?: Linter.RuleEntry<VueMaxAttributesPerLine>\n  /**\n   * enforce a maximum line length in `.vue` files\n   * @see https://eslint.vuejs.org/rules/max-len.html\n   */\n  'vue/max-len'?: Linter.RuleEntry<VueMaxLen>\n  /**\n   * enforce maximum number of lines in Vue SFC blocks\n   * @see https://eslint.vuejs.org/rules/max-lines-per-block.html\n   */\n  'vue/max-lines-per-block'?: Linter.RuleEntry<VueMaxLinesPerBlock>\n  /**\n   * enforce maximum number of props in Vue component\n   * @see https://eslint.vuejs.org/rules/max-props.html\n   */\n  'vue/max-props'?: Linter.RuleEntry<VueMaxProps>\n  /**\n   * enforce maximum depth of template\n   * @see https://eslint.vuejs.org/rules/max-template-depth.html\n   */\n  'vue/max-template-depth'?: Linter.RuleEntry<VueMaxTemplateDepth>\n  /**\n   * require component names to be always multi-word\n   * @see https://eslint.vuejs.org/rules/multi-word-component-names.html\n   */\n  'vue/multi-word-component-names'?: Linter.RuleEntry<VueMultiWordComponentNames>\n  /**\n   * require a line break before and after the contents of a multiline element\n   * @see https://eslint.vuejs.org/rules/multiline-html-element-content-newline.html\n   */\n  'vue/multiline-html-element-content-newline'?: Linter.RuleEntry<VueMultilineHtmlElementContentNewline>\n  /**\n   * Enforce newlines between operands of ternary expressions in `<template>`\n   * @see https://eslint.vuejs.org/rules/multiline-ternary.html\n   */\n  'vue/multiline-ternary'?: Linter.RuleEntry<VueMultilineTernary>\n  /**\n   * enforce unified spacing in mustache interpolations\n   * @see https://eslint.vuejs.org/rules/mustache-interpolation-spacing.html\n   */\n  'vue/mustache-interpolation-spacing'?: Linter.RuleEntry<VueMustacheInterpolationSpacing>\n  /**\n   * enforce new lines between multi-line properties in Vue components\n   * @see https://eslint.vuejs.org/rules/new-line-between-multi-line-property.html\n   */\n  'vue/new-line-between-multi-line-property'?: Linter.RuleEntry<VueNewLineBetweenMultiLineProperty>\n  /**\n   * enforce Promise or callback style in `nextTick`\n   * @see https://eslint.vuejs.org/rules/next-tick-style.html\n   */\n  'vue/next-tick-style'?: Linter.RuleEntry<VueNextTickStyle>\n  /**\n   * disallow using arrow functions to define watcher\n   * @see https://eslint.vuejs.org/rules/no-arrow-functions-in-watch.html\n   */\n  'vue/no-arrow-functions-in-watch'?: Linter.RuleEntry<[]>\n  /**\n   * disallow asynchronous actions in computed properties\n   * @see https://eslint.vuejs.org/rules/no-async-in-computed-properties.html\n   */\n  'vue/no-async-in-computed-properties'?: Linter.RuleEntry<VueNoAsyncInComputedProperties>\n  /**\n   * disallow the use of bare strings in `<template>`\n   * @see https://eslint.vuejs.org/rules/no-bare-strings-in-template.html\n   */\n  'vue/no-bare-strings-in-template'?: Linter.RuleEntry<VueNoBareStringsInTemplate>\n  /**\n   * disallow boolean defaults\n   * @see https://eslint.vuejs.org/rules/no-boolean-default.html\n   */\n  'vue/no-boolean-default'?: Linter.RuleEntry<VueNoBooleanDefault>\n  /**\n   * disallow element's child contents which would be overwritten by a directive like `v-html` or `v-text`\n   * @see https://eslint.vuejs.org/rules/no-child-content.html\n   */\n  'vue/no-child-content'?: Linter.RuleEntry<VueNoChildContent>\n  /**\n   * disallow accessing computed properties in `data`\n   * @see https://eslint.vuejs.org/rules/no-computed-properties-in-data.html\n   */\n  'vue/no-computed-properties-in-data'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow the use of `console` in `<template>`\n   * @see https://eslint.vuejs.org/rules/no-console.html\n   */\n  'vue/no-console'?: Linter.RuleEntry<VueNoConsole>\n  /**\n   * Disallow constant expressions in conditions in `<template>`\n   * @see https://eslint.vuejs.org/rules/no-constant-condition.html\n   */\n  'vue/no-constant-condition'?: Linter.RuleEntry<VueNoConstantCondition>\n  /**\n   * disallow custom modifiers on v-model used on the component\n   * @see https://eslint.vuejs.org/rules/no-custom-modifiers-on-v-model.html\n   */\n  'vue/no-custom-modifiers-on-v-model'?: Linter.RuleEntry<[]>\n  /**\n   * disallow using deprecated object declaration on data (in Vue.js 3.0.0+)\n   * @see https://eslint.vuejs.org/rules/no-deprecated-data-object-declaration.html\n   */\n  'vue/no-deprecated-data-object-declaration'?: Linter.RuleEntry<[]>\n  /**\n   * disallow using deprecated `$delete` and `$set` (in Vue.js 3.0.0+)\n   * @see https://eslint.vuejs.org/rules/no-deprecated-delete-set.html\n   */\n  'vue/no-deprecated-delete-set'?: Linter.RuleEntry<[]>\n  /**\n   * disallow using deprecated `destroyed` and `beforeDestroy` lifecycle hooks (in Vue.js 3.0.0+)\n   * @see https://eslint.vuejs.org/rules/no-deprecated-destroyed-lifecycle.html\n   */\n  'vue/no-deprecated-destroyed-lifecycle'?: Linter.RuleEntry<[]>\n  /**\n   * disallow using deprecated `$listeners` (in Vue.js 3.0.0+)\n   * @see https://eslint.vuejs.org/rules/no-deprecated-dollar-listeners-api.html\n   */\n  'vue/no-deprecated-dollar-listeners-api'?: Linter.RuleEntry<[]>\n  /**\n   * disallow using deprecated `$scopedSlots` (in Vue.js 3.0.0+)\n   * @see https://eslint.vuejs.org/rules/no-deprecated-dollar-scopedslots-api.html\n   */\n  'vue/no-deprecated-dollar-scopedslots-api'?: Linter.RuleEntry<[]>\n  /**\n   * disallow using deprecated events api (in Vue.js 3.0.0+)\n   * @see https://eslint.vuejs.org/rules/no-deprecated-events-api.html\n   */\n  'vue/no-deprecated-events-api'?: Linter.RuleEntry<[]>\n  /**\n   * disallow using deprecated filters syntax (in Vue.js 3.0.0+)\n   * @see https://eslint.vuejs.org/rules/no-deprecated-filter.html\n   */\n  'vue/no-deprecated-filter'?: Linter.RuleEntry<[]>\n  /**\n   * disallow using deprecated the `functional` template (in Vue.js 3.0.0+)\n   * @see https://eslint.vuejs.org/rules/no-deprecated-functional-template.html\n   */\n  'vue/no-deprecated-functional-template'?: Linter.RuleEntry<[]>\n  /**\n   * disallow using deprecated the `is` attribute on HTML elements (in Vue.js 3.0.0+)\n   * @see https://eslint.vuejs.org/rules/no-deprecated-html-element-is.html\n   */\n  'vue/no-deprecated-html-element-is'?: Linter.RuleEntry<[]>\n  /**\n   * disallow using deprecated `inline-template` attribute (in Vue.js 3.0.0+)\n   * @see https://eslint.vuejs.org/rules/no-deprecated-inline-template.html\n   */\n  'vue/no-deprecated-inline-template'?: Linter.RuleEntry<[]>\n  /**\n   * disallow deprecated `model` definition (in Vue.js 3.0.0+)\n   * @see https://eslint.vuejs.org/rules/no-deprecated-model-definition.html\n   */\n  'vue/no-deprecated-model-definition'?: Linter.RuleEntry<VueNoDeprecatedModelDefinition>\n  /**\n   * disallow deprecated `this` access in props default function (in Vue.js 3.0.0+)\n   * @see https://eslint.vuejs.org/rules/no-deprecated-props-default-this.html\n   */\n  'vue/no-deprecated-props-default-this'?: Linter.RuleEntry<[]>\n  /**\n   * disallow using deprecated `tag` property on `RouterLink` (in Vue.js 3.0.0+)\n   * @see https://eslint.vuejs.org/rules/no-deprecated-router-link-tag-prop.html\n   */\n  'vue/no-deprecated-router-link-tag-prop'?: Linter.RuleEntry<VueNoDeprecatedRouterLinkTagProp>\n  /**\n   * disallow deprecated `scope` attribute (in Vue.js 2.5.0+)\n   * @see https://eslint.vuejs.org/rules/no-deprecated-scope-attribute.html\n   */\n  'vue/no-deprecated-scope-attribute'?: Linter.RuleEntry<[]>\n  /**\n   * disallow deprecated `slot` attribute (in Vue.js 2.6.0+)\n   * @see https://eslint.vuejs.org/rules/no-deprecated-slot-attribute.html\n   */\n  'vue/no-deprecated-slot-attribute'?: Linter.RuleEntry<VueNoDeprecatedSlotAttribute>\n  /**\n   * disallow deprecated `slot-scope` attribute (in Vue.js 2.6.0+)\n   * @see https://eslint.vuejs.org/rules/no-deprecated-slot-scope-attribute.html\n   */\n  'vue/no-deprecated-slot-scope-attribute'?: Linter.RuleEntry<[]>\n  /**\n   * disallow use of deprecated `.sync` modifier on `v-bind` directive (in Vue.js 3.0.0+)\n   * @see https://eslint.vuejs.org/rules/no-deprecated-v-bind-sync.html\n   */\n  'vue/no-deprecated-v-bind-sync'?: Linter.RuleEntry<[]>\n  /**\n   * disallow deprecated `v-is` directive (in Vue.js 3.1.0+)\n   * @see https://eslint.vuejs.org/rules/no-deprecated-v-is.html\n   */\n  'vue/no-deprecated-v-is'?: Linter.RuleEntry<[]>\n  /**\n   * disallow using deprecated `.native` modifiers (in Vue.js 3.0.0+)\n   * @see https://eslint.vuejs.org/rules/no-deprecated-v-on-native-modifier.html\n   */\n  'vue/no-deprecated-v-on-native-modifier'?: Linter.RuleEntry<[]>\n  /**\n   * disallow using deprecated number (keycode) modifiers (in Vue.js 3.0.0+)\n   * @see https://eslint.vuejs.org/rules/no-deprecated-v-on-number-modifiers.html\n   */\n  'vue/no-deprecated-v-on-number-modifiers'?: Linter.RuleEntry<[]>\n  /**\n   * disallow using deprecated `Vue.config.keyCodes` (in Vue.js 3.0.0+)\n   * @see https://eslint.vuejs.org/rules/no-deprecated-vue-config-keycodes.html\n   */\n  'vue/no-deprecated-vue-config-keycodes'?: Linter.RuleEntry<[]>\n  /**\n   * disallow duplication of field names\n   * @see https://eslint.vuejs.org/rules/no-dupe-keys.html\n   */\n  'vue/no-dupe-keys'?: Linter.RuleEntry<VueNoDupeKeys>\n  /**\n   * disallow duplicate conditions in `v-if` / `v-else-if` chains\n   * @see https://eslint.vuejs.org/rules/no-dupe-v-else-if.html\n   */\n  'vue/no-dupe-v-else-if'?: Linter.RuleEntry<[]>\n  /**\n   * enforce `inheritAttrs` to be set to `false` when using `v-bind=\"$attrs\"`\n   * @see https://eslint.vuejs.org/rules/no-duplicate-attr-inheritance.html\n   */\n  'vue/no-duplicate-attr-inheritance'?: Linter.RuleEntry<VueNoDuplicateAttrInheritance>\n  /**\n   * disallow duplication of attributes\n   * @see https://eslint.vuejs.org/rules/no-duplicate-attributes.html\n   */\n  'vue/no-duplicate-attributes'?: Linter.RuleEntry<VueNoDuplicateAttributes>\n  /**\n   * disallow duplication of class names in class attributes\n   * @see https://eslint.vuejs.org/rules/no-duplicate-class-names.html\n   */\n  'vue/no-duplicate-class-names'?: Linter.RuleEntry<[]>\n  /**\n   * disallow the `<template>` `<script>` `<style>` block to be empty\n   * @see https://eslint.vuejs.org/rules/no-empty-component-block.html\n   */\n  'vue/no-empty-component-block'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow empty destructuring patterns in `<template>`\n   * @see https://eslint.vuejs.org/rules/no-empty-pattern.html\n   */\n  'vue/no-empty-pattern'?: Linter.RuleEntry<VueNoEmptyPattern>\n  /**\n   * disallow `export` in `<script setup>`\n   * @see https://eslint.vuejs.org/rules/no-export-in-script-setup.html\n   */\n  'vue/no-export-in-script-setup'?: Linter.RuleEntry<[]>\n  /**\n   * disallow asynchronously registered `expose`\n   * @see https://eslint.vuejs.org/rules/no-expose-after-await.html\n   */\n  'vue/no-expose-after-await'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow unnecessary parentheses in `<template>`\n   * @see https://eslint.vuejs.org/rules/no-extra-parens.html\n   */\n  'vue/no-extra-parens'?: Linter.RuleEntry<VueNoExtraParens>\n  /**\n   * Disallow shorthand type conversions in `<template>`\n   * @see https://eslint.vuejs.org/rules/no-implicit-coercion.html\n   */\n  'vue/no-implicit-coercion'?: Linter.RuleEntry<VueNoImplicitCoercion>\n  /**\n   * disallow importing Vue compiler macros\n   * @see https://eslint.vuejs.org/rules/no-import-compiler-macros.html\n   */\n  'vue/no-import-compiler-macros'?: Linter.RuleEntry<[]>\n  /**\n   * disallow irregular whitespace in `.vue` files\n   * @see https://eslint.vuejs.org/rules/no-irregular-whitespace.html\n   */\n  'vue/no-irregular-whitespace'?: Linter.RuleEntry<VueNoIrregularWhitespace>\n  /**\n   * disallow asynchronously registered lifecycle hooks\n   * @see https://eslint.vuejs.org/rules/no-lifecycle-after-await.html\n   */\n  'vue/no-lifecycle-after-await'?: Linter.RuleEntry<[]>\n  /**\n   * disallow object, array, and function literals in template\n   * @see https://eslint.vuejs.org/rules/no-literals-in-template.html\n   */\n  'vue/no-literals-in-template'?: Linter.RuleEntry<[]>\n  /**\n   * disallow unnecessary `<template>`\n   * @see https://eslint.vuejs.org/rules/no-lone-template.html\n   */\n  'vue/no-lone-template'?: Linter.RuleEntry<VueNoLoneTemplate>\n  /**\n   * Disallow literal numbers that lose precision in `<template>`\n   * @see https://eslint.vuejs.org/rules/no-loss-of-precision.html\n   */\n  'vue/no-loss-of-precision'?: Linter.RuleEntry<[]>\n  /**\n   * disallow multiple spaces\n   * @see https://eslint.vuejs.org/rules/no-multi-spaces.html\n   */\n  'vue/no-multi-spaces'?: Linter.RuleEntry<VueNoMultiSpaces>\n  /**\n   * disallow passing multiple objects in an array to class\n   * @see https://eslint.vuejs.org/rules/no-multiple-objects-in-class.html\n   */\n  'vue/no-multiple-objects-in-class'?: Linter.RuleEntry<[]>\n  /**\n   * disallow passing multiple arguments to scoped slots\n   * @see https://eslint.vuejs.org/rules/no-multiple-slot-args.html\n   */\n  'vue/no-multiple-slot-args'?: Linter.RuleEntry<[]>\n  /**\n   * disallow adding multiple root nodes to the template\n   * @see https://eslint.vuejs.org/rules/no-multiple-template-root.html\n   */\n  'vue/no-multiple-template-root'?: Linter.RuleEntry<VueNoMultipleTemplateRoot>\n  /**\n   * disallow mutation of component props\n   * @see https://eslint.vuejs.org/rules/no-mutating-props.html\n   */\n  'vue/no-mutating-props'?: Linter.RuleEntry<VueNoMutatingProps>\n  /**\n   * Disallow negated conditions in `<template>`\n   * @see https://eslint.vuejs.org/rules/no-negated-condition.html\n   */\n  'vue/no-negated-condition'?: Linter.RuleEntry<[]>\n  /**\n   * disallow negated conditions in v-if/v-else\n   * @see https://eslint.vuejs.org/rules/no-negated-v-if-condition.html\n   */\n  'vue/no-negated-v-if-condition'?: Linter.RuleEntry<[]>\n  /**\n   * disallow parsing errors in `<template>`\n   * @see https://eslint.vuejs.org/rules/no-parsing-error.html\n   */\n  'vue/no-parsing-error'?: Linter.RuleEntry<VueNoParsingError>\n  /**\n   * disallow a potential typo in your component property\n   * @see https://eslint.vuejs.org/rules/no-potential-component-option-typo.html\n   */\n  'vue/no-potential-component-option-typo'?: Linter.RuleEntry<VueNoPotentialComponentOptionTypo>\n  /**\n   * disallow use of value wrapped by `ref()` (Composition API) as an operand\n   * @see https://eslint.vuejs.org/rules/no-ref-as-operand.html\n   */\n  'vue/no-ref-as-operand'?: Linter.RuleEntry<[]>\n  /**\n   * disallow usages of ref objects that can lead to loss of reactivity\n   * @see https://eslint.vuejs.org/rules/no-ref-object-reactivity-loss.html\n   */\n  'vue/no-ref-object-reactivity-loss'?: Linter.RuleEntry<[]>\n  /**\n   * enforce props with default values to be optional\n   * @see https://eslint.vuejs.org/rules/no-required-prop-with-default.html\n   */\n  'vue/no-required-prop-with-default'?: Linter.RuleEntry<VueNoRequiredPropWithDefault>\n  /**\n   * disallow the use of reserved names in component definitions\n   * @see https://eslint.vuejs.org/rules/no-reserved-component-names.html\n   */\n  'vue/no-reserved-component-names'?: Linter.RuleEntry<VueNoReservedComponentNames>\n  /**\n   * disallow overwriting reserved keys\n   * @see https://eslint.vuejs.org/rules/no-reserved-keys.html\n   */\n  'vue/no-reserved-keys'?: Linter.RuleEntry<VueNoReservedKeys>\n  /**\n   * disallow reserved names in props\n   * @see https://eslint.vuejs.org/rules/no-reserved-props.html\n   */\n  'vue/no-reserved-props'?: Linter.RuleEntry<VueNoReservedProps>\n  /**\n   * disallow specific block\n   * @see https://eslint.vuejs.org/rules/no-restricted-block.html\n   */\n  'vue/no-restricted-block'?: Linter.RuleEntry<VueNoRestrictedBlock>\n  /**\n   * disallow asynchronously called restricted methods\n   * @see https://eslint.vuejs.org/rules/no-restricted-call-after-await.html\n   */\n  'vue/no-restricted-call-after-await'?: Linter.RuleEntry<VueNoRestrictedCallAfterAwait>\n  /**\n   * disallow specific classes in Vue components\n   * @see https://eslint.vuejs.org/rules/no-restricted-class.html\n   */\n  'vue/no-restricted-class'?: Linter.RuleEntry<VueNoRestrictedClass>\n  /**\n   * disallow specific component names\n   * @see https://eslint.vuejs.org/rules/no-restricted-component-names.html\n   */\n  'vue/no-restricted-component-names'?: Linter.RuleEntry<VueNoRestrictedComponentNames>\n  /**\n   * disallow specific component option\n   * @see https://eslint.vuejs.org/rules/no-restricted-component-options.html\n   */\n  'vue/no-restricted-component-options'?: Linter.RuleEntry<VueNoRestrictedComponentOptions>\n  /**\n   * disallow specific custom event\n   * @see https://eslint.vuejs.org/rules/no-restricted-custom-event.html\n   */\n  'vue/no-restricted-custom-event'?: Linter.RuleEntry<VueNoRestrictedCustomEvent>\n  /**\n   * disallow specific elements\n   * @see https://eslint.vuejs.org/rules/no-restricted-html-elements.html\n   */\n  'vue/no-restricted-html-elements'?: Linter.RuleEntry<VueNoRestrictedHtmlElements>\n  /**\n   * disallow specific props\n   * @see https://eslint.vuejs.org/rules/no-restricted-props.html\n   */\n  'vue/no-restricted-props'?: Linter.RuleEntry<VueNoRestrictedProps>\n  /**\n   * disallow specific attribute\n   * @see https://eslint.vuejs.org/rules/no-restricted-static-attribute.html\n   */\n  'vue/no-restricted-static-attribute'?: Linter.RuleEntry<VueNoRestrictedStaticAttribute>\n  /**\n   * Disallow specified syntax in `<template>`\n   * @see https://eslint.vuejs.org/rules/no-restricted-syntax.html\n   */\n  'vue/no-restricted-syntax'?: Linter.RuleEntry<VueNoRestrictedSyntax>\n  /**\n   * disallow specific argument in `v-bind`\n   * @see https://eslint.vuejs.org/rules/no-restricted-v-bind.html\n   */\n  'vue/no-restricted-v-bind'?: Linter.RuleEntry<VueNoRestrictedVBind>\n  /**\n   * disallow specific argument in `v-on`\n   * @see https://eslint.vuejs.org/rules/no-restricted-v-on.html\n   */\n  'vue/no-restricted-v-on'?: Linter.RuleEntry<VueNoRestrictedVOn>\n  /**\n   * disallow `v-if` directives on root element\n   * @see https://eslint.vuejs.org/rules/no-root-v-if.html\n   */\n  'vue/no-root-v-if'?: Linter.RuleEntry<[]>\n  /**\n   * disallow usages that lose the reactivity of `props` passed to `setup`\n   * @see https://eslint.vuejs.org/rules/no-setup-props-reactivity-loss.html\n   */\n  'vue/no-setup-props-reactivity-loss'?: Linter.RuleEntry<[]>\n  /**\n   * enforce component's data property to be a function\n   * @see https://eslint.vuejs.org/rules/no-shared-component-data.html\n   */\n  'vue/no-shared-component-data'?: Linter.RuleEntry<[]>\n  /**\n   * disallow side effects in computed properties\n   * @see https://eslint.vuejs.org/rules/no-side-effects-in-computed-properties.html\n   */\n  'vue/no-side-effects-in-computed-properties'?: Linter.RuleEntry<[]>\n  /**\n   * disallow spaces around equal signs in attribute\n   * @see https://eslint.vuejs.org/rules/no-spaces-around-equal-signs-in-attribute.html\n   */\n  'vue/no-spaces-around-equal-signs-in-attribute'?: Linter.RuleEntry<[]>\n  /**\n   * Disallow sparse arrays in `<template>`\n   * @see https://eslint.vuejs.org/rules/no-sparse-arrays.html\n   */\n  'vue/no-sparse-arrays'?: Linter.RuleEntry<[]>\n  /**\n   * disallow static inline `style` attributes\n   * @see https://eslint.vuejs.org/rules/no-static-inline-styles.html\n   */\n  'vue/no-static-inline-styles'?: Linter.RuleEntry<VueNoStaticInlineStyles>\n  /**\n   * disallow `key` attribute on `<template>`\n   * @see https://eslint.vuejs.org/rules/no-template-key.html\n   */\n  'vue/no-template-key'?: Linter.RuleEntry<[]>\n  /**\n   * disallow variable declarations from shadowing variables declared in the outer scope\n   * @see https://eslint.vuejs.org/rules/no-template-shadow.html\n   */\n  'vue/no-template-shadow'?: Linter.RuleEntry<VueNoTemplateShadow>\n  /**\n   * disallow target=\"_blank\" attribute without rel=\"noopener noreferrer\"\n   * @see https://eslint.vuejs.org/rules/no-template-target-blank.html\n   */\n  'vue/no-template-target-blank'?: Linter.RuleEntry<VueNoTemplateTargetBlank>\n  /**\n   * disallow mustaches in `<textarea>`\n   * @see https://eslint.vuejs.org/rules/no-textarea-mustache.html\n   */\n  'vue/no-textarea-mustache'?: Linter.RuleEntry<[]>\n  /**\n   * disallow `this` usage in a `beforeRouteEnter` method\n   * @see https://eslint.vuejs.org/rules/no-this-in-before-route-enter.html\n   */\n  'vue/no-this-in-before-route-enter'?: Linter.RuleEntry<[]>\n  /**\n   * disallow use of undefined components in `<template>`\n   * @see https://eslint.vuejs.org/rules/no-undef-components.html\n   */\n  'vue/no-undef-components'?: Linter.RuleEntry<VueNoUndefComponents>\n  /**\n   * disallow use of undefined custom directives\n   * @see https://eslint.vuejs.org/rules/no-undef-directives.html\n   */\n  'vue/no-undef-directives'?: Linter.RuleEntry<VueNoUndefDirectives>\n  /**\n   * disallow undefined properties\n   * @see https://eslint.vuejs.org/rules/no-undef-properties.html\n   */\n  'vue/no-undef-properties'?: Linter.RuleEntry<VueNoUndefProperties>\n  /**\n   * disallow unsupported Vue.js syntax on the specified version\n   * @see https://eslint.vuejs.org/rules/no-unsupported-features.html\n   */\n  'vue/no-unsupported-features'?: Linter.RuleEntry<VueNoUnsupportedFeatures>\n  /**\n   * disallow registering components that are not used inside templates\n   * @see https://eslint.vuejs.org/rules/no-unused-components.html\n   */\n  'vue/no-unused-components'?: Linter.RuleEntry<VueNoUnusedComponents>\n  /**\n   * disallow unused emit declarations\n   * @see https://eslint.vuejs.org/rules/no-unused-emit-declarations.html\n   */\n  'vue/no-unused-emit-declarations'?: Linter.RuleEntry<[]>\n  /**\n   * disallow unused properties\n   * @see https://eslint.vuejs.org/rules/no-unused-properties.html\n   */\n  'vue/no-unused-properties'?: Linter.RuleEntry<VueNoUnusedProperties>\n  /**\n   * disallow unused refs\n   * @see https://eslint.vuejs.org/rules/no-unused-refs.html\n   */\n  'vue/no-unused-refs'?: Linter.RuleEntry<[]>\n  /**\n   * disallow unused variable definitions of v-for directives or scope attributes\n   * @see https://eslint.vuejs.org/rules/no-unused-vars.html\n   */\n  'vue/no-unused-vars'?: Linter.RuleEntry<VueNoUnusedVars>\n  /**\n   * disallow use computed property like method\n   * @see https://eslint.vuejs.org/rules/no-use-computed-property-like-method.html\n   */\n  'vue/no-use-computed-property-like-method'?: Linter.RuleEntry<[]>\n  /**\n   * disallow using `v-else-if`/`v-else` on the same element as `v-for`\n   * @see https://eslint.vuejs.org/rules/no-use-v-else-with-v-for.html\n   */\n  'vue/no-use-v-else-with-v-for'?: Linter.RuleEntry<[]>\n  /**\n   * disallow using `v-if` on the same element as `v-for`\n   * @see https://eslint.vuejs.org/rules/no-use-v-if-with-v-for.html\n   */\n  'vue/no-use-v-if-with-v-for'?: Linter.RuleEntry<VueNoUseVIfWithVFor>\n  /**\n   * Disallow unnecessary concatenation of literals or template literals in `<template>`\n   * @see https://eslint.vuejs.org/rules/no-useless-concat.html\n   */\n  'vue/no-useless-concat'?: Linter.RuleEntry<[]>\n  /**\n   * disallow unnecessary mustache interpolations\n   * @see https://eslint.vuejs.org/rules/no-useless-mustaches.html\n   */\n  'vue/no-useless-mustaches'?: Linter.RuleEntry<VueNoUselessMustaches>\n  /**\n   * disallow useless attribute on `<template>`\n   * @see https://eslint.vuejs.org/rules/no-useless-template-attributes.html\n   */\n  'vue/no-useless-template-attributes'?: Linter.RuleEntry<[]>\n  /**\n   * disallow unnecessary `v-bind` directives\n   * @see https://eslint.vuejs.org/rules/no-useless-v-bind.html\n   */\n  'vue/no-useless-v-bind'?: Linter.RuleEntry<VueNoUselessVBind>\n  /**\n   * disallow `key` attribute on `<template v-for>`\n   * @see https://eslint.vuejs.org/rules/no-v-for-template-key.html\n   * @deprecated\n   */\n  'vue/no-v-for-template-key'?: Linter.RuleEntry<[]>\n  /**\n   * disallow key of `<template v-for>` placed on child elements\n   * @see https://eslint.vuejs.org/rules/no-v-for-template-key-on-child.html\n   */\n  'vue/no-v-for-template-key-on-child'?: Linter.RuleEntry<[]>\n  /**\n   * disallow use of v-html to prevent XSS attack\n   * @see https://eslint.vuejs.org/rules/no-v-html.html\n   */\n  'vue/no-v-html'?: Linter.RuleEntry<VueNoVHtml>\n  /**\n   * disallow adding an argument to `v-model` used in custom component\n   * @see https://eslint.vuejs.org/rules/no-v-model-argument.html\n   * @deprecated\n   */\n  'vue/no-v-model-argument'?: Linter.RuleEntry<[]>\n  /**\n   * disallow use of v-text\n   * @see https://eslint.vuejs.org/rules/no-v-text.html\n   */\n  'vue/no-v-text'?: Linter.RuleEntry<[]>\n  /**\n   * disallow v-text / v-html on component\n   * @see https://eslint.vuejs.org/rules/no-v-text-v-html-on-component.html\n   */\n  'vue/no-v-text-v-html-on-component'?: Linter.RuleEntry<VueNoVTextVHtmlOnComponent>\n  /**\n   * disallow asynchronously registered `watch`\n   * @see https://eslint.vuejs.org/rules/no-watch-after-await.html\n   */\n  'vue/no-watch-after-await'?: Linter.RuleEntry<[]>\n  /**\n   * Enforce consistent line breaks after opening and before closing braces in `<template>`\n   * @see https://eslint.vuejs.org/rules/object-curly-newline.html\n   */\n  'vue/object-curly-newline'?: Linter.RuleEntry<VueObjectCurlyNewline>\n  /**\n   * Enforce consistent spacing inside braces in `<template>`\n   * @see https://eslint.vuejs.org/rules/object-curly-spacing.html\n   */\n  'vue/object-curly-spacing'?: Linter.RuleEntry<VueObjectCurlySpacing>\n  /**\n   * Enforce placing object properties on separate lines in `<template>`\n   * @see https://eslint.vuejs.org/rules/object-property-newline.html\n   */\n  'vue/object-property-newline'?: Linter.RuleEntry<VueObjectPropertyNewline>\n  /**\n   * Require or disallow method and property shorthand syntax for object literals in `<template>`\n   * @see https://eslint.vuejs.org/rules/object-shorthand.html\n   */\n  'vue/object-shorthand'?: Linter.RuleEntry<VueObjectShorthand>\n  /**\n   * enforce that each component should be in its own file\n   * @see https://eslint.vuejs.org/rules/one-component-per-file.html\n   */\n  'vue/one-component-per-file'?: Linter.RuleEntry<[]>\n  /**\n   * Enforce consistent linebreak style for operators in `<template>`\n   * @see https://eslint.vuejs.org/rules/operator-linebreak.html\n   */\n  'vue/operator-linebreak'?: Linter.RuleEntry<VueOperatorLinebreak>\n  /**\n   * enforce order of properties in components\n   * @see https://eslint.vuejs.org/rules/order-in-components.html\n   */\n  'vue/order-in-components'?: Linter.RuleEntry<VueOrderInComponents>\n  /**\n   * require or disallow padding lines between blocks\n   * @see https://eslint.vuejs.org/rules/padding-line-between-blocks.html\n   */\n  'vue/padding-line-between-blocks'?: Linter.RuleEntry<VuePaddingLineBetweenBlocks>\n  /**\n   * require or disallow newlines between sibling tags in template\n   * @see https://eslint.vuejs.org/rules/padding-line-between-tags.html\n   */\n  'vue/padding-line-between-tags'?: Linter.RuleEntry<VuePaddingLineBetweenTags>\n  /**\n   * require or disallow padding lines in component definition\n   * @see https://eslint.vuejs.org/rules/padding-lines-in-component-definition.html\n   */\n  'vue/padding-lines-in-component-definition'?: Linter.RuleEntry<VuePaddingLinesInComponentDefinition>\n  /**\n   * enforce use of `defineOptions` instead of default export\n   * @see https://eslint.vuejs.org/rules/prefer-define-options.html\n   */\n  'vue/prefer-define-options'?: Linter.RuleEntry<[]>\n  /**\n   * enforce import from 'vue' instead of import from '@vue/*'\n   * @see https://eslint.vuejs.org/rules/prefer-import-from-vue.html\n   */\n  'vue/prefer-import-from-vue'?: Linter.RuleEntry<[]>\n  /**\n   * enforce `Boolean` comes first in component prop types\n   * @see https://eslint.vuejs.org/rules/prefer-prop-type-boolean-first.html\n   */\n  'vue/prefer-prop-type-boolean-first'?: Linter.RuleEntry<[]>\n  /**\n   * require static class names in template to be in a separate `class` attribute\n   * @see https://eslint.vuejs.org/rules/prefer-separate-static-class.html\n   */\n  'vue/prefer-separate-static-class'?: Linter.RuleEntry<[]>\n  /**\n   * Require template literals instead of string concatenation in `<template>`\n   * @see https://eslint.vuejs.org/rules/prefer-template.html\n   */\n  'vue/prefer-template'?: Linter.RuleEntry<[]>\n  /**\n   * require shorthand form attribute when `v-bind` value is `true`\n   * @see https://eslint.vuejs.org/rules/prefer-true-attribute-shorthand.html\n   */\n  'vue/prefer-true-attribute-shorthand'?: Linter.RuleEntry<VuePreferTrueAttributeShorthand>\n  /**\n   * require using `useTemplateRef` instead of `ref`/`shallowRef` for template refs\n   * @see https://eslint.vuejs.org/rules/prefer-use-template-ref.html\n   */\n  'vue/prefer-use-template-ref'?: Linter.RuleEntry<[]>\n  /**\n   * enforce specific casing for the Prop name in Vue components\n   * @see https://eslint.vuejs.org/rules/prop-name-casing.html\n   */\n  'vue/prop-name-casing'?: Linter.RuleEntry<VuePropNameCasing>\n  /**\n   * Require quotes around object literal, type literal, interfaces and enums property names in `<template>`\n   * @see https://eslint.vuejs.org/rules/quote-props.html\n   */\n  'vue/quote-props'?: Linter.RuleEntry<VueQuoteProps>\n  /**\n   * require `v-bind:is` of `<component>` elements\n   * @see https://eslint.vuejs.org/rules/require-component-is.html\n   */\n  'vue/require-component-is'?: Linter.RuleEntry<[]>\n  /**\n   * require components to be the default export\n   * @see https://eslint.vuejs.org/rules/require-default-export.html\n   */\n  'vue/require-default-export'?: Linter.RuleEntry<[]>\n  /**\n   * require default value for props\n   * @see https://eslint.vuejs.org/rules/require-default-prop.html\n   */\n  'vue/require-default-prop'?: Linter.RuleEntry<[]>\n  /**\n   * require the component to be directly exported\n   * @see https://eslint.vuejs.org/rules/require-direct-export.html\n   */\n  'vue/require-direct-export'?: Linter.RuleEntry<VueRequireDirectExport>\n  /**\n   * require type definitions in emits\n   * @see https://eslint.vuejs.org/rules/require-emit-validator.html\n   */\n  'vue/require-emit-validator'?: Linter.RuleEntry<[]>\n  /**\n   * require `emits` option with name triggered by `$emit()`\n   * @see https://eslint.vuejs.org/rules/require-explicit-emits.html\n   */\n  'vue/require-explicit-emits'?: Linter.RuleEntry<VueRequireExplicitEmits>\n  /**\n   * require slots to be explicitly defined\n   * @see https://eslint.vuejs.org/rules/require-explicit-slots.html\n   */\n  'vue/require-explicit-slots'?: Linter.RuleEntry<[]>\n  /**\n   * require declare public properties using `expose`\n   * @see https://eslint.vuejs.org/rules/require-expose.html\n   */\n  'vue/require-expose'?: Linter.RuleEntry<[]>\n  /**\n   * require a certain macro variable name\n   * @see https://eslint.vuejs.org/rules/require-macro-variable-name.html\n   */\n  'vue/require-macro-variable-name'?: Linter.RuleEntry<VueRequireMacroVariableName>\n  /**\n   * require a name property in Vue components\n   * @see https://eslint.vuejs.org/rules/require-name-property.html\n   */\n  'vue/require-name-property'?: Linter.RuleEntry<[]>\n  /**\n   * require props to have a comment\n   * @see https://eslint.vuejs.org/rules/require-prop-comment.html\n   */\n  'vue/require-prop-comment'?: Linter.RuleEntry<VueRequirePropComment>\n  /**\n   * require prop type to be a constructor\n   * @see https://eslint.vuejs.org/rules/require-prop-type-constructor.html\n   */\n  'vue/require-prop-type-constructor'?: Linter.RuleEntry<[]>\n  /**\n   * require type definitions in props\n   * @see https://eslint.vuejs.org/rules/require-prop-types.html\n   */\n  'vue/require-prop-types'?: Linter.RuleEntry<[]>\n  /**\n   * enforce render function to always return value\n   * @see https://eslint.vuejs.org/rules/require-render-return.html\n   */\n  'vue/require-render-return'?: Linter.RuleEntry<[]>\n  /**\n   * enforce properties of `$slots` to be used as a function\n   * @see https://eslint.vuejs.org/rules/require-slots-as-functions.html\n   */\n  'vue/require-slots-as-functions'?: Linter.RuleEntry<[]>\n  /**\n   * require control the display of the content inside `<transition>`\n   * @see https://eslint.vuejs.org/rules/require-toggle-inside-transition.html\n   */\n  'vue/require-toggle-inside-transition'?: Linter.RuleEntry<VueRequireToggleInsideTransition>\n  /**\n   * enforce adding type declarations to object props\n   * @see https://eslint.vuejs.org/rules/require-typed-object-prop.html\n   */\n  'vue/require-typed-object-prop'?: Linter.RuleEntry<[]>\n  /**\n   * require `ref` and `shallowRef` functions to be strongly typed\n   * @see https://eslint.vuejs.org/rules/require-typed-ref.html\n   */\n  'vue/require-typed-ref'?: Linter.RuleEntry<[]>\n  /**\n   * require `v-bind:key` with `v-for` directives\n   * @see https://eslint.vuejs.org/rules/require-v-for-key.html\n   */\n  'vue/require-v-for-key'?: Linter.RuleEntry<[]>\n  /**\n   * enforce props default values to be valid\n   * @see https://eslint.vuejs.org/rules/require-valid-default-prop.html\n   */\n  'vue/require-valid-default-prop'?: Linter.RuleEntry<[]>\n  /**\n   * enforce using only specific component names\n   * @see https://eslint.vuejs.org/rules/restricted-component-names.html\n   */\n  'vue/restricted-component-names'?: Linter.RuleEntry<VueRestrictedComponentNames>\n  /**\n   * enforce that a return statement is present in computed property\n   * @see https://eslint.vuejs.org/rules/return-in-computed-property.html\n   */\n  'vue/return-in-computed-property'?: Linter.RuleEntry<VueReturnInComputedProperty>\n  /**\n   * enforce that a return statement is present in emits validator\n   * @see https://eslint.vuejs.org/rules/return-in-emits-validator.html\n   */\n  'vue/return-in-emits-validator'?: Linter.RuleEntry<[]>\n  /**\n   * enforce consistent indentation in `<script>`\n   * @see https://eslint.vuejs.org/rules/script-indent.html\n   */\n  'vue/script-indent'?: Linter.RuleEntry<VueScriptIndent>\n  /**\n   * require a line break before and after the contents of a singleline element\n   * @see https://eslint.vuejs.org/rules/singleline-html-element-content-newline.html\n   */\n  'vue/singleline-html-element-content-newline'?: Linter.RuleEntry<VueSinglelineHtmlElementContentNewline>\n  /**\n   * enforce specific casing for slot names\n   * @see https://eslint.vuejs.org/rules/slot-name-casing.html\n   */\n  'vue/slot-name-casing'?: Linter.RuleEntry<VueSlotNameCasing>\n  /**\n   * enforce sort-keys in a manner that is compatible with order-in-components\n   * @see https://eslint.vuejs.org/rules/sort-keys.html\n   */\n  'vue/sort-keys'?: Linter.RuleEntry<VueSortKeys>\n  /**\n   * Enforce consistent spacing inside parentheses in `<template>`\n   * @see https://eslint.vuejs.org/rules/space-in-parens.html\n   */\n  'vue/space-in-parens'?: Linter.RuleEntry<VueSpaceInParens>\n  /**\n   * Require spacing around infix operators in `<template>`\n   * @see https://eslint.vuejs.org/rules/space-infix-ops.html\n   */\n  'vue/space-infix-ops'?: Linter.RuleEntry<VueSpaceInfixOps>\n  /**\n   * Enforce consistent spacing before or after unary operators in `<template>`\n   * @see https://eslint.vuejs.org/rules/space-unary-ops.html\n   */\n  'vue/space-unary-ops'?: Linter.RuleEntry<VueSpaceUnaryOps>\n  /**\n   * enforce static class names order\n   * @see https://eslint.vuejs.org/rules/static-class-names-order.html\n   */\n  'vue/static-class-names-order'?: Linter.RuleEntry<[]>\n  /**\n   * Require or disallow spacing around embedded expressions of template strings in `<template>`\n   * @see https://eslint.vuejs.org/rules/template-curly-spacing.html\n   */\n  'vue/template-curly-spacing'?: Linter.RuleEntry<VueTemplateCurlySpacing>\n  /**\n   * disallow usage of `this` in template\n   * @see https://eslint.vuejs.org/rules/this-in-template.html\n   */\n  'vue/this-in-template'?: Linter.RuleEntry<VueThisInTemplate>\n  /**\n   * enforce usage of `exact` modifier on `v-on`\n   * @see https://eslint.vuejs.org/rules/use-v-on-exact.html\n   */\n  'vue/use-v-on-exact'?: Linter.RuleEntry<[]>\n  /**\n   * enforce `v-bind` directive style\n   * @see https://eslint.vuejs.org/rules/v-bind-style.html\n   */\n  'vue/v-bind-style'?: Linter.RuleEntry<VueVBindStyle>\n  /**\n   * enforce `v-for` directive's delimiter style\n   * @see https://eslint.vuejs.org/rules/v-for-delimiter-style.html\n   */\n  'vue/v-for-delimiter-style'?: Linter.RuleEntry<VueVForDelimiterStyle>\n  /**\n   * require key attribute for conditionally rendered repeated components\n   * @see https://eslint.vuejs.org/rules/v-if-else-key.html\n   */\n  'vue/v-if-else-key'?: Linter.RuleEntry<[]>\n  /**\n   * enforce v-on event naming style on custom components in template\n   * @see https://eslint.vuejs.org/rules/v-on-event-hyphenation.html\n   */\n  'vue/v-on-event-hyphenation'?: Linter.RuleEntry<VueVOnEventHyphenation>\n  /**\n   * enforce writing style for handlers in `v-on` directives\n   * @see https://eslint.vuejs.org/rules/v-on-handler-style.html\n   */\n  'vue/v-on-handler-style'?: Linter.RuleEntry<VueVOnHandlerStyle>\n  /**\n   * enforce `v-on` directive style\n   * @see https://eslint.vuejs.org/rules/v-on-style.html\n   */\n  'vue/v-on-style'?: Linter.RuleEntry<VueVOnStyle>\n  /**\n   * enforce `v-slot` directive style\n   * @see https://eslint.vuejs.org/rules/v-slot-style.html\n   */\n  'vue/v-slot-style'?: Linter.RuleEntry<VueVSlotStyle>\n  /**\n   * require valid attribute names\n   * @see https://eslint.vuejs.org/rules/valid-attribute-name.html\n   */\n  'vue/valid-attribute-name'?: Linter.RuleEntry<[]>\n  /**\n   * enforce valid `defineEmits` compiler macro\n   * @see https://eslint.vuejs.org/rules/valid-define-emits.html\n   */\n  'vue/valid-define-emits'?: Linter.RuleEntry<[]>\n  /**\n   * enforce valid `defineOptions` compiler macro\n   * @see https://eslint.vuejs.org/rules/valid-define-options.html\n   */\n  'vue/valid-define-options'?: Linter.RuleEntry<[]>\n  /**\n   * enforce valid `defineProps` compiler macro\n   * @see https://eslint.vuejs.org/rules/valid-define-props.html\n   */\n  'vue/valid-define-props'?: Linter.RuleEntry<[]>\n  /**\n   * require valid keys in model option\n   * @see https://eslint.vuejs.org/rules/valid-model-definition.html\n   * @deprecated\n   */\n  'vue/valid-model-definition'?: Linter.RuleEntry<[]>\n  /**\n   * enforce valid `nextTick` function calls\n   * @see https://eslint.vuejs.org/rules/valid-next-tick.html\n   */\n  'vue/valid-next-tick'?: Linter.RuleEntry<[]>\n  /**\n   * enforce valid template root\n   * @see https://eslint.vuejs.org/rules/valid-template-root.html\n   */\n  'vue/valid-template-root'?: Linter.RuleEntry<[]>\n  /**\n   * enforce valid `v-bind` directives\n   * @see https://eslint.vuejs.org/rules/valid-v-bind.html\n   */\n  'vue/valid-v-bind'?: Linter.RuleEntry<[]>\n  /**\n   * enforce valid `.sync` modifier on `v-bind` directives\n   * @see https://eslint.vuejs.org/rules/valid-v-bind-sync.html\n   * @deprecated\n   */\n  'vue/valid-v-bind-sync'?: Linter.RuleEntry<[]>\n  /**\n   * enforce valid `v-cloak` directives\n   * @see https://eslint.vuejs.org/rules/valid-v-cloak.html\n   */\n  'vue/valid-v-cloak'?: Linter.RuleEntry<[]>\n  /**\n   * enforce valid `v-else` directives\n   * @see https://eslint.vuejs.org/rules/valid-v-else.html\n   */\n  'vue/valid-v-else'?: Linter.RuleEntry<[]>\n  /**\n   * enforce valid `v-else-if` directives\n   * @see https://eslint.vuejs.org/rules/valid-v-else-if.html\n   */\n  'vue/valid-v-else-if'?: Linter.RuleEntry<[]>\n  /**\n   * enforce valid `v-for` directives\n   * @see https://eslint.vuejs.org/rules/valid-v-for.html\n   */\n  'vue/valid-v-for'?: Linter.RuleEntry<VueValidVFor>\n  /**\n   * enforce valid `v-html` directives\n   * @see https://eslint.vuejs.org/rules/valid-v-html.html\n   */\n  'vue/valid-v-html'?: Linter.RuleEntry<[]>\n  /**\n   * enforce valid `v-if` directives\n   * @see https://eslint.vuejs.org/rules/valid-v-if.html\n   */\n  'vue/valid-v-if'?: Linter.RuleEntry<[]>\n  /**\n   * enforce valid `v-is` directives\n   * @see https://eslint.vuejs.org/rules/valid-v-is.html\n   */\n  'vue/valid-v-is'?: Linter.RuleEntry<[]>\n  /**\n   * enforce valid `v-memo` directives\n   * @see https://eslint.vuejs.org/rules/valid-v-memo.html\n   */\n  'vue/valid-v-memo'?: Linter.RuleEntry<[]>\n  /**\n   * enforce valid `v-model` directives\n   * @see https://eslint.vuejs.org/rules/valid-v-model.html\n   */\n  'vue/valid-v-model'?: Linter.RuleEntry<[]>\n  /**\n   * enforce valid `v-on` directives\n   * @see https://eslint.vuejs.org/rules/valid-v-on.html\n   */\n  'vue/valid-v-on'?: Linter.RuleEntry<VueValidVOn>\n  /**\n   * enforce valid `v-once` directives\n   * @see https://eslint.vuejs.org/rules/valid-v-once.html\n   */\n  'vue/valid-v-once'?: Linter.RuleEntry<[]>\n  /**\n   * enforce valid `v-pre` directives\n   * @see https://eslint.vuejs.org/rules/valid-v-pre.html\n   */\n  'vue/valid-v-pre'?: Linter.RuleEntry<[]>\n  /**\n   * enforce valid `v-show` directives\n   * @see https://eslint.vuejs.org/rules/valid-v-show.html\n   */\n  'vue/valid-v-show'?: Linter.RuleEntry<[]>\n  /**\n   * enforce valid `v-slot` directives\n   * @see https://eslint.vuejs.org/rules/valid-v-slot.html\n   */\n  'vue/valid-v-slot'?: Linter.RuleEntry<VueValidVSlot>\n  /**\n   * enforce valid `v-text` directives\n   * @see https://eslint.vuejs.org/rules/valid-v-text.html\n   */\n  'vue/valid-v-text'?: Linter.RuleEntry<[]>\n}\n\n/* ======= Declarations ======= */\n// ----- vue/array-bracket-newline -----\ntype VueArrayBracketNewline = []|[((\"always\" | \"never\" | \"consistent\") | {\n  multiline?: boolean\n  minItems?: (number | null)\n})]\n// ----- vue/array-bracket-spacing -----\ntype VueArrayBracketSpacing = []|[(\"always\" | \"never\")]|[(\"always\" | \"never\"), {\n  singleValue?: boolean\n  objectsInArrays?: boolean\n  arraysInArrays?: boolean\n}]\n// ----- vue/array-element-newline -----\ntype VueArrayElementNewline = []|[(_VueArrayElementNewlineBasicConfig | {\n  ArrayExpression?: _VueArrayElementNewlineBasicConfig\n  ArrayPattern?: _VueArrayElementNewlineBasicConfig\n})]\ntype _VueArrayElementNewlineBasicConfig = ((\"always\" | \"never\" | \"consistent\") | {\n  consistent?: boolean\n  multiline?: boolean\n  minItems?: (number | null)\n})\n// ----- vue/arrow-spacing -----\ntype VueArrowSpacing = []|[{\n  before?: boolean\n  after?: boolean\n}]\n// ----- vue/attribute-hyphenation -----\ntype VueAttributeHyphenation = []|[(\"always\" | \"never\")]|[(\"always\" | \"never\"), {\n  ignore?: (string & {\n    [k: string]: unknown | undefined\n  } & {\n    [k: string]: unknown | undefined\n  })[]\n  ignoreTags?: string[]\n}]\n// ----- vue/attributes-order -----\ntype VueAttributesOrder = []|[{\n  order?: ((\"DEFINITION\" | \"LIST_RENDERING\" | \"CONDITIONALS\" | \"RENDER_MODIFIERS\" | \"GLOBAL\" | \"UNIQUE\" | \"SLOT\" | \"TWO_WAY_BINDING\" | \"OTHER_DIRECTIVES\" | \"OTHER_ATTR\" | \"ATTR_STATIC\" | \"ATTR_DYNAMIC\" | \"ATTR_SHORTHAND_BOOL\" | \"EVENTS\" | \"CONTENT\") | (\"DEFINITION\" | \"LIST_RENDERING\" | \"CONDITIONALS\" | \"RENDER_MODIFIERS\" | \"GLOBAL\" | \"UNIQUE\" | \"SLOT\" | \"TWO_WAY_BINDING\" | \"OTHER_DIRECTIVES\" | \"OTHER_ATTR\" | \"ATTR_STATIC\" | \"ATTR_DYNAMIC\" | \"ATTR_SHORTHAND_BOOL\" | \"EVENTS\" | \"CONTENT\")[])[]\n  alphabetical?: boolean\n  sortLineLength?: boolean\n  ignoreVBindObject?: boolean\n}]\n// ----- vue/block-lang -----\ntype VueBlockLang = []|[{\n  [k: string]: {\n    lang?: (string | string[])\n    allowNoLang?: boolean\n  }\n}]\n// ----- vue/block-order -----\ntype VueBlockOrder = []|[{\n  order?: (string | string[])[]\n}]\n// ----- vue/block-spacing -----\ntype VueBlockSpacing = []|[(\"always\" | \"never\")]\n// ----- vue/block-tag-newline -----\ntype VueBlockTagNewline = []|[{\n  singleline?: (\"always\" | \"never\" | \"consistent\" | \"ignore\")\n  multiline?: (\"always\" | \"never\" | \"consistent\" | \"ignore\")\n  maxEmptyLines?: number\n  blocks?: {\n    [k: string]: {\n      singleline?: (\"always\" | \"never\" | \"consistent\" | \"ignore\")\n      multiline?: (\"always\" | \"never\" | \"consistent\" | \"ignore\")\n      maxEmptyLines?: number\n    }\n  }\n}]\n// ----- vue/brace-style -----\ntype VueBraceStyle = []|[(\"1tbs\" | \"stroustrup\" | \"allman\")]|[(\"1tbs\" | \"stroustrup\" | \"allman\"), {\n  allowSingleLine?: boolean\n}]\n// ----- vue/camelcase -----\ntype VueCamelcase = []|[{\n  ignoreDestructuring?: boolean\n  ignoreImports?: boolean\n  ignoreGlobals?: boolean\n  properties?: (\"always\" | \"never\")\n  \n  allow?: string[]\n}]\n// ----- vue/comma-dangle -----\ntype VueCommaDangle = []|[(_VueCommaDangleValue | {\n  arrays?: _VueCommaDangleValueWithIgnore\n  objects?: _VueCommaDangleValueWithIgnore\n  imports?: _VueCommaDangleValueWithIgnore\n  exports?: _VueCommaDangleValueWithIgnore\n  functions?: _VueCommaDangleValueWithIgnore\n  importAttributes?: _VueCommaDangleValueWithIgnore\n  dynamicImports?: _VueCommaDangleValueWithIgnore\n  enums?: _VueCommaDangleValueWithIgnore\n  generics?: _VueCommaDangleValueWithIgnore\n  tuples?: _VueCommaDangleValueWithIgnore\n})]\ntype _VueCommaDangleValue = (\"always-multiline\" | \"always\" | \"never\" | \"only-multiline\")\ntype _VueCommaDangleValueWithIgnore = (\"always-multiline\" | \"always\" | \"never\" | \"only-multiline\" | \"ignore\")\n// ----- vue/comma-spacing -----\ntype VueCommaSpacing = []|[{\n  before?: boolean\n  after?: boolean\n}]\n// ----- vue/comma-style -----\ntype VueCommaStyle = []|[(\"first\" | \"last\")]|[(\"first\" | \"last\"), {\n  exceptions?: {\n    [k: string]: boolean | undefined\n  }\n}]\n// ----- vue/comment-directive -----\ntype VueCommentDirective = []|[{\n  reportUnusedDisableDirectives?: boolean\n}]\n// ----- vue/component-api-style -----\ntype VueComponentApiStyle = []|[[(\"script-setup\" | \"composition\" | \"composition-vue2\" | \"options\"), ...((\"script-setup\" | \"composition\" | \"composition-vue2\" | \"options\"))[]]]\n// ----- vue/component-definition-name-casing -----\ntype VueComponentDefinitionNameCasing = []|[(\"PascalCase\" | \"kebab-case\")]\n// ----- vue/component-name-in-template-casing -----\ntype VueComponentNameInTemplateCasing = []|[(\"PascalCase\" | \"kebab-case\")]|[(\"PascalCase\" | \"kebab-case\"), {\n  globals?: string[]\n  ignores?: string[]\n  registeredComponentsOnly?: boolean\n}]\n// ----- vue/component-options-name-casing -----\ntype VueComponentOptionsNameCasing = []|[(\"camelCase\" | \"kebab-case\" | \"PascalCase\")]\n// ----- vue/custom-event-name-casing -----\ntype VueCustomEventNameCasing = []|[(\"kebab-case\" | \"camelCase\")]|[(\"kebab-case\" | \"camelCase\"), {\n  ignores?: string[]\n}]\n// ----- vue/define-emits-declaration -----\ntype VueDefineEmitsDeclaration = []|[(\"type-based\" | \"type-literal\" | \"runtime\")]\n// ----- vue/define-macros-order -----\ntype VueDefineMacrosOrder = []|[{\n  order?: string[]\n  defineExposeLast?: boolean\n}]\n// ----- vue/define-props-declaration -----\ntype VueDefinePropsDeclaration = []|[(\"type-based\" | \"runtime\")]\n// ----- vue/define-props-destructuring -----\ntype VueDefinePropsDestructuring = []|[{\n  destructure?: (\"only-when-assigned\" | \"always\" | \"never\")\n}]\n// ----- vue/dot-location -----\ntype VueDotLocation = []|[(\"object\" | \"property\")]\n// ----- vue/dot-notation -----\ntype VueDotNotation = []|[{\n  allowKeywords?: boolean\n  allowPattern?: string\n}]\n// ----- vue/enforce-style-attribute -----\ntype VueEnforceStyleAttribute = []|[{\n  \n  allow?: [(\"plain\" | \"scoped\" | \"module\"), ...((\"plain\" | \"scoped\" | \"module\"))[]]\n}]\n// ----- vue/eqeqeq -----\ntype VueEqeqeq = ([]|[\"always\"]|[\"always\", {\n  null?: (\"always\" | \"never\" | \"ignore\")\n}] | []|[(\"smart\" | \"allow-null\")])\n// ----- vue/first-attribute-linebreak -----\ntype VueFirstAttributeLinebreak = []|[{\n  multiline?: (\"below\" | \"beside\" | \"ignore\")\n  singleline?: (\"below\" | \"beside\" | \"ignore\")\n}]\n// ----- vue/func-call-spacing -----\ntype VueFuncCallSpacing = ([]|[\"never\"] | []|[\"always\"]|[\"always\", {\n  allowNewlines?: boolean\n  optionalChain?: {\n    before?: boolean\n    after?: boolean\n  }\n}])\n// ----- vue/html-button-has-type -----\ntype VueHtmlButtonHasType = []|[{\n  button?: boolean\n  submit?: boolean\n  reset?: boolean\n}]\n// ----- vue/html-closing-bracket-newline -----\ntype VueHtmlClosingBracketNewline = []|[{\n  singleline?: (\"always\" | \"never\")\n  multiline?: (\"always\" | \"never\")\n  selfClosingTag?: {\n    singleline?: (\"always\" | \"never\")\n    multiline?: (\"always\" | \"never\")\n  }\n}]\n// ----- vue/html-closing-bracket-spacing -----\ntype VueHtmlClosingBracketSpacing = []|[{\n  startTag?: (\"always\" | \"never\")\n  endTag?: (\"always\" | \"never\")\n  selfClosingTag?: (\"always\" | \"never\")\n}]\n// ----- vue/html-comment-content-newline -----\ntype VueHtmlCommentContentNewline = []|[((\"always\" | \"never\") | {\n  singleline?: (\"always\" | \"never\" | \"ignore\")\n  multiline?: (\"always\" | \"never\" | \"ignore\")\n})]|[((\"always\" | \"never\") | {\n  singleline?: (\"always\" | \"never\" | \"ignore\")\n  multiline?: (\"always\" | \"never\" | \"ignore\")\n}), {\n  exceptions?: string[]\n}]\n// ----- vue/html-comment-content-spacing -----\ntype VueHtmlCommentContentSpacing = []|[(\"always\" | \"never\")]|[(\"always\" | \"never\"), {\n  exceptions?: string[]\n}]\n// ----- vue/html-comment-indent -----\ntype VueHtmlCommentIndent = []|[(number | \"tab\")]\n// ----- vue/html-indent -----\ntype VueHtmlIndent = []|[(number | \"tab\")]|[(number | \"tab\"), {\n  attribute?: number\n  baseIndent?: number\n  closeBracket?: (number | {\n    startTag?: number\n    endTag?: number\n    selfClosingTag?: number\n  })\n  switchCase?: number\n  alignAttributesVertically?: boolean\n  ignores?: (string & {\n    [k: string]: unknown | undefined\n  } & {\n    [k: string]: unknown | undefined\n  })[]\n}]\n// ----- vue/html-quotes -----\ntype VueHtmlQuotes = []|[(\"double\" | \"single\")]|[(\"double\" | \"single\"), {\n  avoidEscape?: boolean\n}]\n// ----- vue/html-self-closing -----\ntype VueHtmlSelfClosing = []|[{\n  html?: {\n    normal?: _VueHtmlSelfClosingOptionValue\n    void?: _VueHtmlSelfClosingOptionValue\n    component?: _VueHtmlSelfClosingOptionValue\n  }\n  svg?: _VueHtmlSelfClosingOptionValue\n  math?: _VueHtmlSelfClosingOptionValue\n}]\ntype _VueHtmlSelfClosingOptionValue = (\"always\" | \"never\" | \"any\")\n// ----- vue/key-spacing -----\ntype VueKeySpacing = []|[({\n  align?: ((\"colon\" | \"value\") | {\n    mode?: (\"strict\" | \"minimum\")\n    on?: (\"colon\" | \"value\")\n    beforeColon?: boolean\n    afterColon?: boolean\n  })\n  mode?: (\"strict\" | \"minimum\")\n  beforeColon?: boolean\n  afterColon?: boolean\n  ignoredNodes?: (\"ObjectExpression\" | \"ObjectPattern\" | \"ImportDeclaration\" | \"ExportNamedDeclaration\" | \"ExportAllDeclaration\" | \"TSTypeLiteral\" | \"TSInterfaceBody\" | \"ClassBody\")[]\n} | {\n  singleLine?: {\n    mode?: (\"strict\" | \"minimum\")\n    beforeColon?: boolean\n    afterColon?: boolean\n  }\n  multiLine?: {\n    align?: ((\"colon\" | \"value\") | {\n      mode?: (\"strict\" | \"minimum\")\n      on?: (\"colon\" | \"value\")\n      beforeColon?: boolean\n      afterColon?: boolean\n    })\n    mode?: (\"strict\" | \"minimum\")\n    beforeColon?: boolean\n    afterColon?: boolean\n  }\n} | {\n  singleLine?: {\n    mode?: (\"strict\" | \"minimum\")\n    beforeColon?: boolean\n    afterColon?: boolean\n  }\n  multiLine?: {\n    mode?: (\"strict\" | \"minimum\")\n    beforeColon?: boolean\n    afterColon?: boolean\n  }\n  align?: {\n    mode?: (\"strict\" | \"minimum\")\n    on?: (\"colon\" | \"value\")\n    beforeColon?: boolean\n    afterColon?: boolean\n  }\n})]\n// ----- vue/keyword-spacing -----\ntype VueKeywordSpacing = []|[{\n  before?: boolean\n  after?: boolean\n  overrides?: {\n    abstract?: {\n      before?: boolean\n      after?: boolean\n    }\n    boolean?: {\n      before?: boolean\n      after?: boolean\n    }\n    break?: {\n      before?: boolean\n      after?: boolean\n    }\n    byte?: {\n      before?: boolean\n      after?: boolean\n    }\n    case?: {\n      before?: boolean\n      after?: boolean\n    }\n    catch?: {\n      before?: boolean\n      after?: boolean\n    }\n    char?: {\n      before?: boolean\n      after?: boolean\n    }\n    class?: {\n      before?: boolean\n      after?: boolean\n    }\n    const?: {\n      before?: boolean\n      after?: boolean\n    }\n    continue?: {\n      before?: boolean\n      after?: boolean\n    }\n    debugger?: {\n      before?: boolean\n      after?: boolean\n    }\n    default?: {\n      before?: boolean\n      after?: boolean\n    }\n    delete?: {\n      before?: boolean\n      after?: boolean\n    }\n    do?: {\n      before?: boolean\n      after?: boolean\n    }\n    double?: {\n      before?: boolean\n      after?: boolean\n    }\n    else?: {\n      before?: boolean\n      after?: boolean\n    }\n    enum?: {\n      before?: boolean\n      after?: boolean\n    }\n    export?: {\n      before?: boolean\n      after?: boolean\n    }\n    extends?: {\n      before?: boolean\n      after?: boolean\n    }\n    false?: {\n      before?: boolean\n      after?: boolean\n    }\n    final?: {\n      before?: boolean\n      after?: boolean\n    }\n    finally?: {\n      before?: boolean\n      after?: boolean\n    }\n    float?: {\n      before?: boolean\n      after?: boolean\n    }\n    for?: {\n      before?: boolean\n      after?: boolean\n    }\n    function?: {\n      before?: boolean\n      after?: boolean\n    }\n    goto?: {\n      before?: boolean\n      after?: boolean\n    }\n    if?: {\n      before?: boolean\n      after?: boolean\n    }\n    implements?: {\n      before?: boolean\n      after?: boolean\n    }\n    import?: {\n      before?: boolean\n      after?: boolean\n    }\n    in?: {\n      before?: boolean\n      after?: boolean\n    }\n    instanceof?: {\n      before?: boolean\n      after?: boolean\n    }\n    int?: {\n      before?: boolean\n      after?: boolean\n    }\n    interface?: {\n      before?: boolean\n      after?: boolean\n    }\n    long?: {\n      before?: boolean\n      after?: boolean\n    }\n    native?: {\n      before?: boolean\n      after?: boolean\n    }\n    new?: {\n      before?: boolean\n      after?: boolean\n    }\n    null?: {\n      before?: boolean\n      after?: boolean\n    }\n    package?: {\n      before?: boolean\n      after?: boolean\n    }\n    private?: {\n      before?: boolean\n      after?: boolean\n    }\n    protected?: {\n      before?: boolean\n      after?: boolean\n    }\n    public?: {\n      before?: boolean\n      after?: boolean\n    }\n    return?: {\n      before?: boolean\n      after?: boolean\n    }\n    short?: {\n      before?: boolean\n      after?: boolean\n    }\n    static?: {\n      before?: boolean\n      after?: boolean\n    }\n    super?: {\n      before?: boolean\n      after?: boolean\n    }\n    switch?: {\n      before?: boolean\n      after?: boolean\n    }\n    synchronized?: {\n      before?: boolean\n      after?: boolean\n    }\n    this?: {\n      before?: boolean\n      after?: boolean\n    }\n    throw?: {\n      before?: boolean\n      after?: boolean\n    }\n    throws?: {\n      before?: boolean\n      after?: boolean\n    }\n    transient?: {\n      before?: boolean\n      after?: boolean\n    }\n    true?: {\n      before?: boolean\n      after?: boolean\n    }\n    try?: {\n      before?: boolean\n      after?: boolean\n    }\n    typeof?: {\n      before?: boolean\n      after?: boolean\n    }\n    var?: {\n      before?: boolean\n      after?: boolean\n    }\n    void?: {\n      before?: boolean\n      after?: boolean\n    }\n    volatile?: {\n      before?: boolean\n      after?: boolean\n    }\n    while?: {\n      before?: boolean\n      after?: boolean\n    }\n    with?: {\n      before?: boolean\n      after?: boolean\n    }\n    arguments?: {\n      before?: boolean\n      after?: boolean\n    }\n    as?: {\n      before?: boolean\n      after?: boolean\n    }\n    async?: {\n      before?: boolean\n      after?: boolean\n    }\n    await?: {\n      before?: boolean\n      after?: boolean\n    }\n    eval?: {\n      before?: boolean\n      after?: boolean\n    }\n    from?: {\n      before?: boolean\n      after?: boolean\n    }\n    get?: {\n      before?: boolean\n      after?: boolean\n    }\n    let?: {\n      before?: boolean\n      after?: boolean\n    }\n    of?: {\n      before?: boolean\n      after?: boolean\n    }\n    set?: {\n      before?: boolean\n      after?: boolean\n    }\n    type?: {\n      before?: boolean\n      after?: boolean\n    }\n    using?: {\n      before?: boolean\n      after?: boolean\n    }\n    yield?: {\n      before?: boolean\n      after?: boolean\n    }\n    accessor?: {\n      before?: boolean\n      after?: boolean\n    }\n    satisfies?: {\n      before?: boolean\n      after?: boolean\n    }\n  }\n}]\n// ----- vue/match-component-file-name -----\ntype VueMatchComponentFileName = []|[{\n  extensions?: string[]\n  shouldMatchCase?: boolean\n}]\n// ----- vue/max-attributes-per-line -----\ntype VueMaxAttributesPerLine = []|[{\n  singleline?: (number | {\n    max?: number\n  })\n  multiline?: (number | {\n    max?: number\n  })\n}]\n// ----- vue/max-len -----\ntype VueMaxLen = []|[({\n  code?: number\n  template?: number\n  comments?: number\n  tabWidth?: number\n  ignorePattern?: string\n  ignoreComments?: boolean\n  ignoreTrailingComments?: boolean\n  ignoreUrls?: boolean\n  ignoreStrings?: boolean\n  ignoreTemplateLiterals?: boolean\n  ignoreRegExpLiterals?: boolean\n  ignoreHTMLAttributeValues?: boolean\n  ignoreHTMLTextContents?: boolean\n} | number)]|[({\n  code?: number\n  template?: number\n  comments?: number\n  tabWidth?: number\n  ignorePattern?: string\n  ignoreComments?: boolean\n  ignoreTrailingComments?: boolean\n  ignoreUrls?: boolean\n  ignoreStrings?: boolean\n  ignoreTemplateLiterals?: boolean\n  ignoreRegExpLiterals?: boolean\n  ignoreHTMLAttributeValues?: boolean\n  ignoreHTMLTextContents?: boolean\n} | number), ({\n  code?: number\n  template?: number\n  comments?: number\n  tabWidth?: number\n  ignorePattern?: string\n  ignoreComments?: boolean\n  ignoreTrailingComments?: boolean\n  ignoreUrls?: boolean\n  ignoreStrings?: boolean\n  ignoreTemplateLiterals?: boolean\n  ignoreRegExpLiterals?: boolean\n  ignoreHTMLAttributeValues?: boolean\n  ignoreHTMLTextContents?: boolean\n} | number)]|[({\n  code?: number\n  template?: number\n  comments?: number\n  tabWidth?: number\n  ignorePattern?: string\n  ignoreComments?: boolean\n  ignoreTrailingComments?: boolean\n  ignoreUrls?: boolean\n  ignoreStrings?: boolean\n  ignoreTemplateLiterals?: boolean\n  ignoreRegExpLiterals?: boolean\n  ignoreHTMLAttributeValues?: boolean\n  ignoreHTMLTextContents?: boolean\n} | number), ({\n  code?: number\n  template?: number\n  comments?: number\n  tabWidth?: number\n  ignorePattern?: string\n  ignoreComments?: boolean\n  ignoreTrailingComments?: boolean\n  ignoreUrls?: boolean\n  ignoreStrings?: boolean\n  ignoreTemplateLiterals?: boolean\n  ignoreRegExpLiterals?: boolean\n  ignoreHTMLAttributeValues?: boolean\n  ignoreHTMLTextContents?: boolean\n} | number), {\n  code?: number\n  template?: number\n  comments?: number\n  tabWidth?: number\n  ignorePattern?: string\n  ignoreComments?: boolean\n  ignoreTrailingComments?: boolean\n  ignoreUrls?: boolean\n  ignoreStrings?: boolean\n  ignoreTemplateLiterals?: boolean\n  ignoreRegExpLiterals?: boolean\n  ignoreHTMLAttributeValues?: boolean\n  ignoreHTMLTextContents?: boolean\n}]\n// ----- vue/max-lines-per-block -----\ntype VueMaxLinesPerBlock = []|[{\n  style?: number\n  template?: number\n  script?: number\n  skipBlankLines?: boolean\n}]\n// ----- vue/max-props -----\ntype VueMaxProps = []|[{\n  maxProps?: number\n}]\n// ----- vue/max-template-depth -----\ntype VueMaxTemplateDepth = []|[{\n  maxDepth?: number\n}]\n// ----- vue/multi-word-component-names -----\ntype VueMultiWordComponentNames = []|[{\n  ignores?: string[]\n}]\n// ----- vue/multiline-html-element-content-newline -----\ntype VueMultilineHtmlElementContentNewline = []|[{\n  ignoreWhenEmpty?: boolean\n  ignores?: string[]\n  allowEmptyLines?: boolean\n}]\n// ----- vue/multiline-ternary -----\ntype VueMultilineTernary = []|[(\"always\" | \"always-multiline\" | \"never\")]|[(\"always\" | \"always-multiline\" | \"never\"), {\n  ignoreJSX?: boolean\n}]\n// ----- vue/mustache-interpolation-spacing -----\ntype VueMustacheInterpolationSpacing = []|[(\"always\" | \"never\")]\n// ----- vue/new-line-between-multi-line-property -----\ntype VueNewLineBetweenMultiLineProperty = []|[{\n  minLineOfMultilineProperty?: number\n}]\n// ----- vue/next-tick-style -----\ntype VueNextTickStyle = []|[(\"promise\" | \"callback\")]\n// ----- vue/no-async-in-computed-properties -----\ntype VueNoAsyncInComputedProperties = []|[{\n  ignoredObjectNames?: string[]\n}]\n// ----- vue/no-bare-strings-in-template -----\ntype VueNoBareStringsInTemplate = []|[{\n  allowlist?: string[]\n  attributes?: {\n    [k: string]: string[]\n  }\n  directives?: string[]\n}]\n// ----- vue/no-boolean-default -----\ntype VueNoBooleanDefault = []|[(\"default-false\" | \"no-default\")]\n// ----- vue/no-child-content -----\ntype VueNoChildContent = []|[{\n  \n  additionalDirectives: [string, ...(string)[]]\n}]\n// ----- vue/no-console -----\ntype VueNoConsole = []|[{\n  \n  allow?: [string, ...(string)[]]\n}]\n// ----- vue/no-constant-condition -----\ntype VueNoConstantCondition = []|[{\n  checkLoops?: (\"all\" | \"allExceptWhileTrue\" | \"none\" | true | false)\n}]\n// ----- vue/no-deprecated-model-definition -----\ntype VueNoDeprecatedModelDefinition = []|[{\n  allowVue3Compat?: boolean\n}]\n// ----- vue/no-deprecated-router-link-tag-prop -----\ntype VueNoDeprecatedRouterLinkTagProp = []|[{\n  \n  components?: [string, ...(string)[]]\n}]\n// ----- vue/no-deprecated-slot-attribute -----\ntype VueNoDeprecatedSlotAttribute = []|[{\n  ignore?: string[]\n  ignoreParents?: string[]\n}]\n// ----- vue/no-dupe-keys -----\ntype VueNoDupeKeys = []|[{\n  groups?: unknown[]\n}]\n// ----- vue/no-duplicate-attr-inheritance -----\ntype VueNoDuplicateAttrInheritance = []|[{\n  checkMultiRootNodes?: boolean\n}]\n// ----- vue/no-duplicate-attributes -----\ntype VueNoDuplicateAttributes = []|[{\n  allowCoexistClass?: boolean\n  allowCoexistStyle?: boolean\n}]\n// ----- vue/no-empty-pattern -----\ntype VueNoEmptyPattern = []|[{\n  allowObjectPatternsAsParameters?: boolean\n}]\n// ----- vue/no-extra-parens -----\ntype VueNoExtraParens = ([]|[\"functions\"] | []|[\"all\"]|[\"all\", {\n  conditionalAssign?: boolean\n  ternaryOperandBinaryExpressions?: boolean\n  nestedBinaryExpressions?: boolean\n  returnAssign?: boolean\n  ignoreJSX?: (\"none\" | \"all\" | \"single-line\" | \"multi-line\")\n  enforceForArrowConditionals?: boolean\n  enforceForSequenceExpressions?: boolean\n  enforceForNewInMemberExpressions?: boolean\n  enforceForFunctionPrototypeMethods?: boolean\n  allowParensAfterCommentPattern?: string\n  nestedConditionalExpressions?: boolean\n  allowNodesInSpreadElement?: {\n    ConditionalExpression?: boolean\n    LogicalExpression?: boolean\n    AwaitExpression?: boolean\n  }\n  ignoredNodes?: string[]\n}])\n// ----- vue/no-implicit-coercion -----\ntype VueNoImplicitCoercion = []|[{\n  boolean?: boolean\n  number?: boolean\n  string?: boolean\n  disallowTemplateShorthand?: boolean\n  allow?: (\"~\" | \"!!\" | \"+\" | \"- -\" | \"-\" | \"*\")[]\n}]\n// ----- vue/no-irregular-whitespace -----\ntype VueNoIrregularWhitespace = []|[{\n  skipComments?: boolean\n  skipStrings?: boolean\n  skipTemplates?: boolean\n  skipRegExps?: boolean\n  skipHTMLAttributeValues?: boolean\n  skipHTMLTextContents?: boolean\n}]\n// ----- vue/no-lone-template -----\ntype VueNoLoneTemplate = []|[{\n  ignoreAccessible?: boolean\n}]\n// ----- vue/no-multi-spaces -----\ntype VueNoMultiSpaces = []|[{\n  ignoreProperties?: boolean\n  ignoreEOLComments?: boolean\n}]\n// ----- vue/no-multiple-template-root -----\ntype VueNoMultipleTemplateRoot = []|[{\n  disallowComments?: boolean\n}]\n// ----- vue/no-mutating-props -----\ntype VueNoMutatingProps = []|[{\n  shallowOnly?: boolean\n}]\n// ----- vue/no-parsing-error -----\ntype VueNoParsingError = []|[{\n  \"abrupt-closing-of-empty-comment\"?: boolean\n  \"absence-of-digits-in-numeric-character-reference\"?: boolean\n  \"cdata-in-html-content\"?: boolean\n  \"character-reference-outside-unicode-range\"?: boolean\n  \"control-character-in-input-stream\"?: boolean\n  \"control-character-reference\"?: boolean\n  \"eof-before-tag-name\"?: boolean\n  \"eof-in-cdata\"?: boolean\n  \"eof-in-comment\"?: boolean\n  \"eof-in-tag\"?: boolean\n  \"incorrectly-closed-comment\"?: boolean\n  \"incorrectly-opened-comment\"?: boolean\n  \"invalid-first-character-of-tag-name\"?: boolean\n  \"missing-attribute-value\"?: boolean\n  \"missing-end-tag-name\"?: boolean\n  \"missing-semicolon-after-character-reference\"?: boolean\n  \"missing-whitespace-between-attributes\"?: boolean\n  \"nested-comment\"?: boolean\n  \"noncharacter-character-reference\"?: boolean\n  \"noncharacter-in-input-stream\"?: boolean\n  \"null-character-reference\"?: boolean\n  \"surrogate-character-reference\"?: boolean\n  \"surrogate-in-input-stream\"?: boolean\n  \"unexpected-character-in-attribute-name\"?: boolean\n  \"unexpected-character-in-unquoted-attribute-value\"?: boolean\n  \"unexpected-equals-sign-before-attribute-name\"?: boolean\n  \"unexpected-null-character\"?: boolean\n  \"unexpected-question-mark-instead-of-tag-name\"?: boolean\n  \"unexpected-solidus-in-tag\"?: boolean\n  \"unknown-named-character-reference\"?: boolean\n  \"end-tag-with-attributes\"?: boolean\n  \"duplicate-attribute\"?: boolean\n  \"end-tag-with-trailing-solidus\"?: boolean\n  \"non-void-html-element-start-tag-with-trailing-solidus\"?: boolean\n  \"x-invalid-end-tag\"?: boolean\n  \"x-invalid-namespace\"?: boolean\n}]\n// ----- vue/no-potential-component-option-typo -----\ntype VueNoPotentialComponentOptionTypo = []|[{\n  \n  presets?: (\"all\" | \"vue\" | \"vue-router\" | \"nuxt\")[]\n  \n  custom?: string[]\n  threshold?: number\n}]\n// ----- vue/no-required-prop-with-default -----\ntype VueNoRequiredPropWithDefault = []|[{\n  autofix?: boolean\n}]\n// ----- vue/no-reserved-component-names -----\ntype VueNoReservedComponentNames = []|[{\n  disallowVueBuiltInComponents?: boolean\n  disallowVue3BuiltInComponents?: boolean\n  htmlElementCaseSensitive?: boolean\n}]\n// ----- vue/no-reserved-keys -----\ntype VueNoReservedKeys = []|[{\n  reserved?: unknown[]\n  groups?: unknown[]\n}]\n// ----- vue/no-reserved-props -----\ntype VueNoReservedProps = []|[{\n  vueVersion?: (2 | 3)\n}]\n// ----- vue/no-restricted-block -----\ntype VueNoRestrictedBlock = (string | {\n  element: string\n  message?: string\n})[]\n// ----- vue/no-restricted-call-after-await -----\ntype VueNoRestrictedCallAfterAwait = {\n  module: string\n  path?: (string | string[])\n  message?: string\n}[]\n// ----- vue/no-restricted-class -----\ntype VueNoRestrictedClass = string[]\n// ----- vue/no-restricted-component-names -----\ntype VueNoRestrictedComponentNames = (string | {\n  name: string\n  message?: string\n  suggest?: string\n})[]\n// ----- vue/no-restricted-component-options -----\ntype VueNoRestrictedComponentOptions = (string | string[] | {\n  name: (string | string[])\n  message?: string\n})[]\n// ----- vue/no-restricted-custom-event -----\ntype VueNoRestrictedCustomEvent = (string | {\n  event: string\n  message?: string\n  suggest?: string\n})[]\n// ----- vue/no-restricted-html-elements -----\ntype VueNoRestrictedHtmlElements = (string | {\n  element: (string | string[])\n  message?: string\n})[]\n// ----- vue/no-restricted-props -----\ntype VueNoRestrictedProps = (string | {\n  name: string\n  message?: string\n  suggest?: string\n})[]\n// ----- vue/no-restricted-static-attribute -----\ntype VueNoRestrictedStaticAttribute = (string | {\n  key: string\n  value?: (string | true)\n  element?: string\n  message?: string\n})[]\n// ----- vue/no-restricted-syntax -----\ntype VueNoRestrictedSyntax = (string | {\n  selector: string\n  message?: string\n})[]\n// ----- vue/no-restricted-v-bind -----\ntype VueNoRestrictedVBind = ((string | null) | {\n  argument: (string | null)\n  modifiers?: (\"prop\" | \"camel\" | \"sync\" | \"attr\")[]\n  element?: string\n  message?: string\n})[]\n// ----- vue/no-restricted-v-on -----\ntype VueNoRestrictedVOn = ((string | null) | {\n  argument: (string | null)\n  element?: string\n  message?: string\n  \n  modifiers?: [(\"prevent\" | \"stop\" | \"capture\" | \"self\" | \"once\" | \"passive\"), ...((\"prevent\" | \"stop\" | \"capture\" | \"self\" | \"once\" | \"passive\"))[]]\n})[]\n// ----- vue/no-static-inline-styles -----\ntype VueNoStaticInlineStyles = []|[{\n  allowBinding?: boolean\n}]\n// ----- vue/no-template-shadow -----\ntype VueNoTemplateShadow = []|[{\n  allow?: string[]\n}]\n// ----- vue/no-template-target-blank -----\ntype VueNoTemplateTargetBlank = []|[{\n  allowReferrer?: boolean\n  enforceDynamicLinks?: (\"always\" | \"never\")\n}]\n// ----- vue/no-undef-components -----\ntype VueNoUndefComponents = []|[{\n  ignorePatterns?: unknown[]\n}]\n// ----- vue/no-undef-directives -----\ntype VueNoUndefDirectives = []|[{\n  ignore?: string[]\n}]\n// ----- vue/no-undef-properties -----\ntype VueNoUndefProperties = []|[{\n  ignores?: string[]\n}]\n// ----- vue/no-unsupported-features -----\ntype VueNoUnsupportedFeatures = []|[{\n  version?: string\n  ignores?: (\"slot-scope-attribute\" | \"dynamic-directive-arguments\" | \"v-slot\" | \"script-setup\" | \"style-css-vars-injection\" | \"v-model-argument\" | \"v-model-custom-modifiers\" | \"v-is\" | \"is-attribute-with-vue-prefix\" | \"v-memo\" | \"v-bind-prop-modifier-shorthand\" | \"v-bind-attr-modifier\" | \"define-options\" | \"define-slots\" | \"define-model\" | \"v-bind-same-name-shorthand\")[]\n}]\n// ----- vue/no-unused-components -----\ntype VueNoUnusedComponents = []|[{\n  ignoreWhenBindingPresent?: boolean\n}]\n// ----- vue/no-unused-properties -----\ntype VueNoUnusedProperties = []|[{\n  groups?: (\"props\" | \"data\" | \"asyncData\" | \"computed\" | \"methods\" | \"setup\")[]\n  deepData?: boolean\n  ignorePublicMembers?: boolean\n  unreferencedOptions?: (\"unknownMemberAsUnreferenced\" | \"returnAsUnreferenced\")[]\n}]\n// ----- vue/no-unused-vars -----\ntype VueNoUnusedVars = []|[{\n  ignorePattern?: string\n}]\n// ----- vue/no-use-v-if-with-v-for -----\ntype VueNoUseVIfWithVFor = []|[{\n  allowUsingIterationVar?: boolean\n}]\n// ----- vue/no-useless-mustaches -----\ntype VueNoUselessMustaches = []|[{\n  ignoreIncludesComment?: boolean\n  ignoreStringEscape?: boolean\n}]\n// ----- vue/no-useless-v-bind -----\ntype VueNoUselessVBind = []|[{\n  ignoreIncludesComment?: boolean\n  ignoreStringEscape?: boolean\n}]\n// ----- vue/no-v-html -----\ntype VueNoVHtml = []|[{\n  ignorePattern?: string\n}]\n// ----- vue/no-v-text-v-html-on-component -----\ntype VueNoVTextVHtmlOnComponent = []|[{\n  allow?: string[]\n  ignoreElementNamespaces?: boolean\n}]\n// ----- vue/object-curly-newline -----\ntype VueObjectCurlyNewline = []|[(((\"always\" | \"never\") | {\n  multiline?: boolean\n  minProperties?: number\n  consistent?: boolean\n}) | {\n  ObjectExpression?: ((\"always\" | \"never\") | {\n    multiline?: boolean\n    minProperties?: number\n    consistent?: boolean\n  })\n  ObjectPattern?: ((\"always\" | \"never\") | {\n    multiline?: boolean\n    minProperties?: number\n    consistent?: boolean\n  })\n  ImportDeclaration?: ((\"always\" | \"never\") | {\n    multiline?: boolean\n    minProperties?: number\n    consistent?: boolean\n  })\n  ExportDeclaration?: ((\"always\" | \"never\") | {\n    multiline?: boolean\n    minProperties?: number\n    consistent?: boolean\n  })\n  TSTypeLiteral?: ((\"always\" | \"never\") | {\n    multiline?: boolean\n    minProperties?: number\n    consistent?: boolean\n  })\n  TSInterfaceBody?: ((\"always\" | \"never\") | {\n    multiline?: boolean\n    minProperties?: number\n    consistent?: boolean\n  })\n  TSEnumBody?: ((\"always\" | \"never\") | {\n    multiline?: boolean\n    minProperties?: number\n    consistent?: boolean\n  })\n})]\n// ----- vue/object-curly-spacing -----\ntype VueObjectCurlySpacing = []|[(\"always\" | \"never\")]|[(\"always\" | \"never\"), {\n  arraysInObjects?: boolean\n  objectsInObjects?: boolean\n  overrides?: {\n    ObjectPattern?: (\"always\" | \"never\")\n    ObjectExpression?: (\"always\" | \"never\")\n    ImportDeclaration?: (\"always\" | \"never\")\n    ImportAttributes?: (\"always\" | \"never\")\n    ExportNamedDeclaration?: (\"always\" | \"never\")\n    ExportAllDeclaration?: (\"always\" | \"never\")\n    TSMappedType?: (\"always\" | \"never\")\n    TSTypeLiteral?: (\"always\" | \"never\")\n    TSInterfaceBody?: (\"always\" | \"never\")\n    TSEnumBody?: (\"always\" | \"never\")\n  }\n  emptyObjects?: (\"ignore\" | \"always\" | \"never\")\n}]\n// ----- vue/object-property-newline -----\ntype VueObjectPropertyNewline = []|[{\n  allowAllPropertiesOnSameLine?: boolean\n}]\n// ----- vue/object-shorthand -----\ntype VueObjectShorthand = ([]|[(\"always\" | \"methods\" | \"properties\" | \"never\" | \"consistent\" | \"consistent-as-needed\")] | []|[(\"always\" | \"methods\" | \"properties\")]|[(\"always\" | \"methods\" | \"properties\"), {\n  avoidQuotes?: boolean\n}] | []|[(\"always\" | \"methods\")]|[(\"always\" | \"methods\"), {\n  ignoreConstructors?: boolean\n  methodsIgnorePattern?: string\n  avoidQuotes?: boolean\n  avoidExplicitReturnArrows?: boolean\n}])\n// ----- vue/operator-linebreak -----\ntype VueOperatorLinebreak = []|[((\"after\" | \"before\" | \"none\") | null)]|[((\"after\" | \"before\" | \"none\") | null), {\n  overrides?: {\n    [k: string]: (\"after\" | \"before\" | \"none\" | \"ignore\") | undefined\n  }\n}]\n// ----- vue/order-in-components -----\ntype VueOrderInComponents = []|[{\n  order?: unknown[]\n}]\n// ----- vue/padding-line-between-blocks -----\ntype VuePaddingLineBetweenBlocks = []|[(\"never\" | \"always\")]\n// ----- vue/padding-line-between-tags -----\ntype VuePaddingLineBetweenTags = []|[{\n  blankLine: (\"always\" | \"never\" | \"consistent\")\n  prev: string\n  next: string\n}[]]\n// ----- vue/padding-lines-in-component-definition -----\ntype VuePaddingLinesInComponentDefinition = []|[((\"always\" | \"never\") | {\n  betweenOptions?: (\"never\" | \"always\" | \"ignore\")\n  withinOption?: ((\"never\" | \"always\" | \"ignore\") | {\n    [k: string]: ((\"never\" | \"always\" | \"ignore\") | {\n      betweenItems?: (\"never\" | \"always\" | \"ignore\")\n      withinEach?: (\"never\" | \"always\" | \"ignore\")\n    })\n  })\n  groupSingleLineProperties?: boolean\n})]\n// ----- vue/prefer-true-attribute-shorthand -----\ntype VuePreferTrueAttributeShorthand = []|[(\"always\" | \"never\")]|[(\"always\" | \"never\"), {\n  except?: string[]\n}]\n// ----- vue/prop-name-casing -----\ntype VuePropNameCasing = []|[(\"camelCase\" | \"snake_case\")]|[(\"camelCase\" | \"snake_case\"), {\n  ignoreProps?: string[]\n}]\n// ----- vue/quote-props -----\ntype VueQuoteProps = ([]|[(\"always\" | \"as-needed\" | \"consistent\" | \"consistent-as-needed\")] | []|[(\"always\" | \"as-needed\" | \"consistent\" | \"consistent-as-needed\")]|[(\"always\" | \"as-needed\" | \"consistent\" | \"consistent-as-needed\"), {\n  keywords?: boolean\n  unnecessary?: boolean\n  numbers?: boolean\n}])\n// ----- vue/require-direct-export -----\ntype VueRequireDirectExport = []|[{\n  disallowFunctionalComponentFunction?: boolean\n}]\n// ----- vue/require-explicit-emits -----\ntype VueRequireExplicitEmits = []|[{\n  allowProps?: boolean\n}]\n// ----- vue/require-macro-variable-name -----\ntype VueRequireMacroVariableName = []|[{\n  defineProps?: string\n  defineEmits?: string\n  defineSlots?: string\n  useSlots?: string\n  useAttrs?: string\n}]\n// ----- vue/require-prop-comment -----\ntype VueRequirePropComment = []|[{\n  type?: (\"JSDoc\" | \"line\" | \"block\" | \"any\")\n}]\n// ----- vue/require-toggle-inside-transition -----\ntype VueRequireToggleInsideTransition = []|[{\n  additionalDirectives?: string[]\n}]\n// ----- vue/restricted-component-names -----\ntype VueRestrictedComponentNames = []|[{\n  allow?: string[]\n}]\n// ----- vue/return-in-computed-property -----\ntype VueReturnInComputedProperty = []|[{\n  treatUndefinedAsUnspecified?: boolean\n}]\n// ----- vue/script-indent -----\ntype VueScriptIndent = []|[(number | \"tab\")]|[(number | \"tab\"), {\n  baseIndent?: number\n  switchCase?: number\n  ignores?: (string & {\n    [k: string]: unknown | undefined\n  } & {\n    [k: string]: unknown | undefined\n  })[]\n}]\n// ----- vue/singleline-html-element-content-newline -----\ntype VueSinglelineHtmlElementContentNewline = []|[{\n  ignoreWhenNoAttributes?: boolean\n  ignoreWhenEmpty?: boolean\n  ignores?: string[]\n  externalIgnores?: string[]\n}]\n// ----- vue/slot-name-casing -----\ntype VueSlotNameCasing = []|[(\"camelCase\" | \"kebab-case\" | \"singleword\")]\n// ----- vue/sort-keys -----\ntype VueSortKeys = []|[(\"asc\" | \"desc\")]|[(\"asc\" | \"desc\"), {\n  caseSensitive?: boolean\n  ignoreChildrenOf?: unknown[]\n  ignoreGrandchildrenOf?: unknown[]\n  minKeys?: number\n  natural?: boolean\n}]\n// ----- vue/space-in-parens -----\ntype VueSpaceInParens = []|[(\"always\" | \"never\")]|[(\"always\" | \"never\"), {\n  exceptions?: (\"{}\" | \"[]\" | \"()\" | \"empty\")[]\n}]\n// ----- vue/space-infix-ops -----\ntype VueSpaceInfixOps = []|[{\n  int32Hint?: boolean\n  ignoreTypes?: boolean\n}]\n// ----- vue/space-unary-ops -----\ntype VueSpaceUnaryOps = []|[{\n  words?: boolean\n  nonwords?: boolean\n  overrides?: {\n    [k: string]: boolean | undefined\n  }\n}]\n// ----- vue/template-curly-spacing -----\ntype VueTemplateCurlySpacing = []|[(\"always\" | \"never\")]\n// ----- vue/this-in-template -----\ntype VueThisInTemplate = []|[(\"always\" | \"never\")]\n// ----- vue/v-bind-style -----\ntype VueVBindStyle = []|[(\"shorthand\" | \"longform\")]|[(\"shorthand\" | \"longform\"), {\n  sameNameShorthand?: (\"always\" | \"never\" | \"ignore\")\n}]\n// ----- vue/v-for-delimiter-style -----\ntype VueVForDelimiterStyle = []|[(\"in\" | \"of\")]\n// ----- vue/v-on-event-hyphenation -----\ntype VueVOnEventHyphenation = []|[(\"always\" | \"never\")]|[(\"always\" | \"never\"), {\n  autofix?: boolean\n  ignore?: (string & {\n    [k: string]: unknown | undefined\n  } & {\n    [k: string]: unknown | undefined\n  })[]\n  ignoreTags?: string[]\n}]\n// ----- vue/v-on-handler-style -----\ntype VueVOnHandlerStyle = []|[((\"inline\" | \"inline-function\") | [\"method\", (\"inline\" | \"inline-function\")])]|[((\"inline\" | \"inline-function\") | [\"method\", (\"inline\" | \"inline-function\")]), {\n  ignoreIncludesComment?: boolean\n}]\n// ----- vue/v-on-style -----\ntype VueVOnStyle = []|[(\"shorthand\" | \"longform\")]\n// ----- vue/v-slot-style -----\ntype VueVSlotStyle = []|[((\"shorthand\" | \"longform\") | {\n  atComponent?: (\"shorthand\" | \"longform\" | \"v-slot\")\n  default?: (\"shorthand\" | \"longform\" | \"v-slot\")\n  named?: (\"shorthand\" | \"longform\")\n})]\n// ----- vue/valid-v-for -----\ntype VueValidVFor = []|[{\n  allowEmptyAlias?: boolean\n}]\n// ----- vue/valid-v-on -----\ntype VueValidVOn = []|[{\n  modifiers?: unknown[]\n}]\n// ----- vue/valid-v-slot -----\ntype VueValidVSlot = []|[{\n  allowModifiers?: boolean\n}]"
  },
  {
    "path": "test/output/invalid-json-schema-plugin.d.ts",
    "content": "/* eslint-disable */\n/* prettier-ignore */\nimport type { Linter } from 'eslint'\n\ndeclare module 'eslint' {\n  namespace Linter {\n    interface RulesRecord extends RuleOptions {}\n  }\n}\n\nexport interface RuleOptions {\n  /**\n   * This rules points to a non-existing schema\n   */\n  'invalid-json-schema-plugin/invalid-json-schema-rule'?: Linter.RuleEntry<InvalidJsonSchemaPluginInvalidJsonSchemaRule>\n}\n\n/* ======= Declarations ======= */\n// ----- invalid-json-schema-plugin/invalid-json-schema-rule -----\ntype InvalidJsonSchemaPluginInvalidJsonSchemaRule = unknown"
  },
  {
    "path": "test/output/jsx-a11y.d.ts",
    "content": "/* eslint-disable */\n/* prettier-ignore */\nimport type { Linter } from 'eslint'\n\ndeclare module 'eslint' {\n  namespace Linter {\n    interface RulesRecord extends RuleOptions {}\n  }\n}\n\nexport interface RuleOptions {\n  /**\n   * Enforce emojis are wrapped in `<span>` and provide screen reader access.\n   * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/accessible-emoji.md\n   * @deprecated\n   */\n  'jsx-a11y/accessible-emoji'?: Linter.RuleEntry<JsxA11YAccessibleEmoji>\n  /**\n   * Enforce all elements that require alternative text have meaningful information to relay back to end user.\n   * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/alt-text.md\n   */\n  'jsx-a11y/alt-text'?: Linter.RuleEntry<JsxA11YAltText>\n  /**\n   * Enforce `<a>` text to not exactly match \"click here\", \"here\", \"link\", or \"a link\".\n   * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/anchor-ambiguous-text.md\n   */\n  'jsx-a11y/anchor-ambiguous-text'?: Linter.RuleEntry<JsxA11YAnchorAmbiguousText>\n  /**\n   * Enforce all anchors to contain accessible content.\n   * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/anchor-has-content.md\n   */\n  'jsx-a11y/anchor-has-content'?: Linter.RuleEntry<JsxA11YAnchorHasContent>\n  /**\n   * Enforce all anchors are valid, navigable elements.\n   * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/anchor-is-valid.md\n   */\n  'jsx-a11y/anchor-is-valid'?: Linter.RuleEntry<JsxA11YAnchorIsValid>\n  /**\n   * Enforce elements with aria-activedescendant are tabbable.\n   * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/aria-activedescendant-has-tabindex.md\n   */\n  'jsx-a11y/aria-activedescendant-has-tabindex'?: Linter.RuleEntry<JsxA11YAriaActivedescendantHasTabindex>\n  /**\n   * Enforce all `aria-*` props are valid.\n   * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/aria-props.md\n   */\n  'jsx-a11y/aria-props'?: Linter.RuleEntry<JsxA11YAriaProps>\n  /**\n   * Enforce ARIA state and property values are valid.\n   * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/aria-proptypes.md\n   */\n  'jsx-a11y/aria-proptypes'?: Linter.RuleEntry<JsxA11YAriaProptypes>\n  /**\n   * Enforce that elements with ARIA roles must use a valid, non-abstract ARIA role.\n   * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/aria-role.md\n   */\n  'jsx-a11y/aria-role'?: Linter.RuleEntry<JsxA11YAriaRole>\n  /**\n   * Enforce that elements that do not support ARIA roles, states, and properties do not have those attributes.\n   * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/aria-unsupported-elements.md\n   */\n  'jsx-a11y/aria-unsupported-elements'?: Linter.RuleEntry<JsxA11YAriaUnsupportedElements>\n  /**\n   * Enforce that autocomplete attributes are used correctly.\n   * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/autocomplete-valid.md\n   */\n  'jsx-a11y/autocomplete-valid'?: Linter.RuleEntry<JsxA11YAutocompleteValid>\n  /**\n   * Enforce a clickable non-interactive element has at least one keyboard event listener.\n   * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/click-events-have-key-events.md\n   */\n  'jsx-a11y/click-events-have-key-events'?: Linter.RuleEntry<JsxA11YClickEventsHaveKeyEvents>\n  /**\n   * Enforce that a control (an interactive element) has a text label.\n   * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/control-has-associated-label.md\n   */\n  'jsx-a11y/control-has-associated-label'?: Linter.RuleEntry<JsxA11YControlHasAssociatedLabel>\n  /**\n   * Enforce heading (`h1`, `h2`, etc) elements contain accessible content.\n   * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/heading-has-content.md\n   */\n  'jsx-a11y/heading-has-content'?: Linter.RuleEntry<JsxA11YHeadingHasContent>\n  /**\n   * Enforce `<html>` element has `lang` prop.\n   * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/html-has-lang.md\n   */\n  'jsx-a11y/html-has-lang'?: Linter.RuleEntry<JsxA11YHtmlHasLang>\n  /**\n   * Enforce iframe elements have a title attribute.\n   * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/iframe-has-title.md\n   */\n  'jsx-a11y/iframe-has-title'?: Linter.RuleEntry<JsxA11YIframeHasTitle>\n  /**\n   * Enforce `<img>` alt prop does not contain the word \"image\", \"picture\", or \"photo\".\n   * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/img-redundant-alt.md\n   */\n  'jsx-a11y/img-redundant-alt'?: Linter.RuleEntry<JsxA11YImgRedundantAlt>\n  /**\n   * Enforce that elements with interactive handlers like `onClick` must be focusable.\n   * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/interactive-supports-focus.md\n   */\n  'jsx-a11y/interactive-supports-focus'?: Linter.RuleEntry<JsxA11YInteractiveSupportsFocus>\n  /**\n   * Enforce that a `label` tag has a text label and an associated control.\n   * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/label-has-associated-control.md\n   */\n  'jsx-a11y/label-has-associated-control'?: Linter.RuleEntry<JsxA11YLabelHasAssociatedControl>\n  /**\n   * Enforce that `<label>` elements have the `htmlFor` prop.\n   * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/label-has-for.md\n   * @deprecated\n   */\n  'jsx-a11y/label-has-for'?: Linter.RuleEntry<JsxA11YLabelHasFor>\n  /**\n   * Enforce lang attribute has a valid value.\n   * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/lang.md\n   */\n  'jsx-a11y/lang'?: Linter.RuleEntry<JsxA11YLang>\n  /**\n   * Enforces that `<audio>` and `<video>` elements must have a `<track>` for captions.\n   * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/media-has-caption.md\n   */\n  'jsx-a11y/media-has-caption'?: Linter.RuleEntry<JsxA11YMediaHasCaption>\n  /**\n   * Enforce that `onMouseOver`/`onMouseOut` are accompanied by `onFocus`/`onBlur` for keyboard-only users.\n   * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/mouse-events-have-key-events.md\n   */\n  'jsx-a11y/mouse-events-have-key-events'?: Linter.RuleEntry<JsxA11YMouseEventsHaveKeyEvents>\n  /**\n   * Enforce that the `accessKey` prop is not used on any element to avoid complications with keyboard commands used by a screen reader.\n   * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-access-key.md\n   */\n  'jsx-a11y/no-access-key'?: Linter.RuleEntry<JsxA11YNoAccessKey>\n  /**\n   * Disallow `aria-hidden=\"true\"` from being set on focusable elements.\n   * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-aria-hidden-on-focusable.md\n   */\n  'jsx-a11y/no-aria-hidden-on-focusable'?: Linter.RuleEntry<JsxA11YNoAriaHiddenOnFocusable>\n  /**\n   * Enforce autoFocus prop is not used.\n   * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-autofocus.md\n   */\n  'jsx-a11y/no-autofocus'?: Linter.RuleEntry<JsxA11YNoAutofocus>\n  /**\n   * Enforce distracting elements are not used.\n   * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-distracting-elements.md\n   */\n  'jsx-a11y/no-distracting-elements'?: Linter.RuleEntry<JsxA11YNoDistractingElements>\n  /**\n   * Interactive elements should not be assigned non-interactive roles.\n   * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-interactive-element-to-noninteractive-role.md\n   */\n  'jsx-a11y/no-interactive-element-to-noninteractive-role'?: Linter.RuleEntry<JsxA11YNoInteractiveElementToNoninteractiveRole>\n  /**\n   * Non-interactive elements should not be assigned mouse or keyboard event listeners.\n   * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-noninteractive-element-interactions.md\n   */\n  'jsx-a11y/no-noninteractive-element-interactions'?: Linter.RuleEntry<JsxA11YNoNoninteractiveElementInteractions>\n  /**\n   * Non-interactive elements should not be assigned interactive roles.\n   * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-noninteractive-element-to-interactive-role.md\n   */\n  'jsx-a11y/no-noninteractive-element-to-interactive-role'?: Linter.RuleEntry<JsxA11YNoNoninteractiveElementToInteractiveRole>\n  /**\n   * `tabIndex` should only be declared on interactive elements.\n   * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-noninteractive-tabindex.md\n   */\n  'jsx-a11y/no-noninteractive-tabindex'?: Linter.RuleEntry<JsxA11YNoNoninteractiveTabindex>\n  /**\n   * Enforce usage of `onBlur` over `onChange` on select menus for accessibility.\n   * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-onchange.md\n   * @deprecated\n   */\n  'jsx-a11y/no-onchange'?: Linter.RuleEntry<JsxA11YNoOnchange>\n  /**\n   * Enforce explicit role property is not the same as implicit/default role property on element.\n   * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-redundant-roles.md\n   */\n  'jsx-a11y/no-redundant-roles'?: Linter.RuleEntry<JsxA11YNoRedundantRoles>\n  /**\n   * Enforce that non-interactive, visible elements (such as `<div>`) that have click handlers use the role attribute.\n   * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-static-element-interactions.md\n   */\n  'jsx-a11y/no-static-element-interactions'?: Linter.RuleEntry<JsxA11YNoStaticElementInteractions>\n  /**\n   * Enforces using semantic DOM elements over the ARIA `role` property.\n   * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/prefer-tag-over-role.md\n   */\n  'jsx-a11y/prefer-tag-over-role'?: Linter.RuleEntry<JsxA11YPreferTagOverRole>\n  /**\n   * Enforce that elements with ARIA roles must have all required attributes for that role.\n   * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/role-has-required-aria-props.md\n   */\n  'jsx-a11y/role-has-required-aria-props'?: Linter.RuleEntry<JsxA11YRoleHasRequiredAriaProps>\n  /**\n   * Enforce that elements with explicit or implicit roles defined contain only `aria-*` properties supported by that `role`.\n   * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/role-supports-aria-props.md\n   */\n  'jsx-a11y/role-supports-aria-props'?: Linter.RuleEntry<JsxA11YRoleSupportsAriaProps>\n  /**\n   * Enforce `scope` prop is only used on `<th>` elements.\n   * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/scope.md\n   */\n  'jsx-a11y/scope'?: Linter.RuleEntry<JsxA11YScope>\n  /**\n   * Enforce `tabIndex` value is not greater than zero.\n   * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/tabindex-no-positive.md\n   */\n  'jsx-a11y/tabindex-no-positive'?: Linter.RuleEntry<JsxA11YTabindexNoPositive>\n}\n\n/* ======= Declarations ======= */\n// ----- jsx-a11y/accessible-emoji -----\ntype JsxA11YAccessibleEmoji = []|[{\n  [k: string]: unknown | undefined\n}]\n// ----- jsx-a11y/alt-text -----\ntype JsxA11YAltText = []|[{\n  elements?: string[]\n  img?: string[]\n  object?: string[]\n  area?: string[]\n  \"input[type=\\\"image\\\"]\"?: string[]\n  [k: string]: unknown | undefined\n}]\n// ----- jsx-a11y/anchor-ambiguous-text -----\ntype JsxA11YAnchorAmbiguousText = []|[{\n  words?: string[]\n  [k: string]: unknown | undefined\n}]\n// ----- jsx-a11y/anchor-has-content -----\ntype JsxA11YAnchorHasContent = []|[{\n  components?: string[]\n  [k: string]: unknown | undefined\n}]\n// ----- jsx-a11y/anchor-is-valid -----\ntype JsxA11YAnchorIsValid = []|[{\n  components?: string[]\n  specialLink?: string[]\n  \n  aspects?: [(\"noHref\" | \"invalidHref\" | \"preferButton\"), ...((\"noHref\" | \"invalidHref\" | \"preferButton\"))[]]\n  [k: string]: unknown | undefined\n}]\n// ----- jsx-a11y/aria-activedescendant-has-tabindex -----\ntype JsxA11YAriaActivedescendantHasTabindex = []|[{\n  [k: string]: unknown | undefined\n}]\n// ----- jsx-a11y/aria-props -----\ntype JsxA11YAriaProps = []|[{\n  [k: string]: unknown | undefined\n}]\n// ----- jsx-a11y/aria-proptypes -----\ntype JsxA11YAriaProptypes = []|[{\n  [k: string]: unknown | undefined\n}]\n// ----- jsx-a11y/aria-role -----\ntype JsxA11YAriaRole = []|[{\n  allowedInvalidRoles?: string[]\n  ignoreNonDOM?: boolean\n  [k: string]: unknown | undefined\n}]\n// ----- jsx-a11y/aria-unsupported-elements -----\ntype JsxA11YAriaUnsupportedElements = []|[{\n  [k: string]: unknown | undefined\n}]\n// ----- jsx-a11y/autocomplete-valid -----\ntype JsxA11YAutocompleteValid = []|[{\n  inputComponents?: string[]\n  [k: string]: unknown | undefined\n}]\n// ----- jsx-a11y/click-events-have-key-events -----\ntype JsxA11YClickEventsHaveKeyEvents = []|[{\n  [k: string]: unknown | undefined\n}]\n// ----- jsx-a11y/control-has-associated-label -----\ntype JsxA11YControlHasAssociatedLabel = []|[{\n  labelAttributes?: string[]\n  controlComponents?: string[]\n  ignoreElements?: string[]\n  ignoreRoles?: string[]\n  \n  depth?: number\n  [k: string]: unknown | undefined\n}]\n// ----- jsx-a11y/heading-has-content -----\ntype JsxA11YHeadingHasContent = []|[{\n  components?: string[]\n  [k: string]: unknown | undefined\n}]\n// ----- jsx-a11y/html-has-lang -----\ntype JsxA11YHtmlHasLang = []|[{\n  [k: string]: unknown | undefined\n}]\n// ----- jsx-a11y/iframe-has-title -----\ntype JsxA11YIframeHasTitle = []|[{\n  [k: string]: unknown | undefined\n}]\n// ----- jsx-a11y/img-redundant-alt -----\ntype JsxA11YImgRedundantAlt = []|[{\n  components?: string[]\n  words?: string[]\n  [k: string]: unknown | undefined\n}]\n// ----- jsx-a11y/interactive-supports-focus -----\ntype JsxA11YInteractiveSupportsFocus = []|[{\n  \n  tabbable?: (\"button\" | \"checkbox\" | \"columnheader\" | \"combobox\" | \"grid\" | \"gridcell\" | \"link\" | \"listbox\" | \"menu\" | \"menubar\" | \"menuitem\" | \"menuitemcheckbox\" | \"menuitemradio\" | \"option\" | \"progressbar\" | \"radio\" | \"radiogroup\" | \"row\" | \"rowheader\" | \"scrollbar\" | \"searchbox\" | \"slider\" | \"spinbutton\" | \"switch\" | \"tab\" | \"tablist\" | \"textbox\" | \"tree\" | \"treegrid\" | \"treeitem\" | \"doc-backlink\" | \"doc-biblioref\" | \"doc-glossref\" | \"doc-noteref\")[]\n  [k: string]: unknown | undefined\n}]\n// ----- jsx-a11y/label-has-associated-control -----\ntype JsxA11YLabelHasAssociatedControl = []|[{\n  labelComponents?: string[]\n  labelAttributes?: string[]\n  controlComponents?: string[]\n  \n  assert?: (\"htmlFor\" | \"nesting\" | \"both\" | \"either\")\n  \n  depth?: number\n  [k: string]: unknown | undefined\n}]\n// ----- jsx-a11y/label-has-for -----\ntype JsxA11YLabelHasFor = []|[{\n  components?: string[]\n  required?: ((\"nesting\" | \"id\") | {\n    \n    some: (\"nesting\" | \"id\")[]\n    [k: string]: unknown | undefined\n  } | {\n    \n    every: (\"nesting\" | \"id\")[]\n    [k: string]: unknown | undefined\n  })\n  allowChildren?: boolean\n  [k: string]: unknown | undefined\n}]\n// ----- jsx-a11y/lang -----\ntype JsxA11YLang = []|[{\n  [k: string]: unknown | undefined\n}]\n// ----- jsx-a11y/media-has-caption -----\ntype JsxA11YMediaHasCaption = []|[{\n  audio?: string[]\n  video?: string[]\n  track?: string[]\n  [k: string]: unknown | undefined\n}]\n// ----- jsx-a11y/mouse-events-have-key-events -----\ntype JsxA11YMouseEventsHaveKeyEvents = []|[{\n  \n  hoverInHandlers?: string[]\n  \n  hoverOutHandlers?: string[]\n  [k: string]: unknown | undefined\n}]\n// ----- jsx-a11y/no-access-key -----\ntype JsxA11YNoAccessKey = []|[{\n  [k: string]: unknown | undefined\n}]\n// ----- jsx-a11y/no-aria-hidden-on-focusable -----\ntype JsxA11YNoAriaHiddenOnFocusable = []|[{\n  [k: string]: unknown | undefined\n}]\n// ----- jsx-a11y/no-autofocus -----\ntype JsxA11YNoAutofocus = []|[{\n  ignoreNonDOM?: boolean\n  [k: string]: unknown | undefined\n}]\n// ----- jsx-a11y/no-distracting-elements -----\ntype JsxA11YNoDistractingElements = []|[{\n  \n  elements?: (\"marquee\" | \"blink\")[]\n  [k: string]: unknown | undefined\n}]\n// ----- jsx-a11y/no-interactive-element-to-noninteractive-role -----\ntype JsxA11YNoInteractiveElementToNoninteractiveRole = []|[{\n  [k: string]: string[] | undefined\n}]\n// ----- jsx-a11y/no-noninteractive-element-interactions -----\ntype JsxA11YNoNoninteractiveElementInteractions = []|[{\n  handlers?: string[]\n  [k: string]: unknown | undefined\n}]\n// ----- jsx-a11y/no-noninteractive-element-to-interactive-role -----\ntype JsxA11YNoNoninteractiveElementToInteractiveRole = []|[{\n  [k: string]: string[] | undefined\n}]\n// ----- jsx-a11y/no-noninteractive-tabindex -----\ntype JsxA11YNoNoninteractiveTabindex = []|[{\n  \n  roles?: string[]\n  \n  tags?: string[]\n  [k: string]: unknown | undefined\n}]\n// ----- jsx-a11y/no-onchange -----\ntype JsxA11YNoOnchange = []|[{\n  [k: string]: unknown | undefined\n}]\n// ----- jsx-a11y/no-redundant-roles -----\ntype JsxA11YNoRedundantRoles = []|[{\n  [k: string]: string[] | undefined\n}]\n// ----- jsx-a11y/no-static-element-interactions -----\ntype JsxA11YNoStaticElementInteractions = []|[{\n  handlers?: string[]\n  [k: string]: unknown | undefined\n}]\n// ----- jsx-a11y/prefer-tag-over-role -----\ntype JsxA11YPreferTagOverRole = []|[{\n  [k: string]: unknown | undefined\n}]\n// ----- jsx-a11y/role-has-required-aria-props -----\ntype JsxA11YRoleHasRequiredAriaProps = []|[{\n  [k: string]: unknown | undefined\n}]\n// ----- jsx-a11y/role-supports-aria-props -----\ntype JsxA11YRoleSupportsAriaProps = []|[{\n  [k: string]: unknown | undefined\n}]\n// ----- jsx-a11y/scope -----\ntype JsxA11YScope = []|[{\n  [k: string]: unknown | undefined\n}]\n// ----- jsx-a11y/tabindex-no-positive -----\ntype JsxA11YTabindexNoPositive = []|[{\n  [k: string]: unknown | undefined\n}]"
  },
  {
    "path": "test/output/no-rule-meta.d.ts",
    "content": "/* eslint-disable */\n/* prettier-ignore */\nimport type { Linter } from 'eslint'\n\ndeclare module 'eslint' {\n  namespace Linter {\n    interface RulesRecord extends RuleOptions {}\n  }\n}\n\nexport interface RuleOptions {\n  'you-dont-need-lodash-underscore/all'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/any'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/assign'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/bind'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/capitalize'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/cast-array'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/clone-deep'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/collect'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/concat'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/contains'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/defaults'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/detect'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/drop'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/drop-right'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/each'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/ends-with'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/entries'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/every'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/extend-own'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/fill'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/filter'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/find'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/find-index'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/first'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/flatten'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/foldl'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/foldr'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/for-each'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/get'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/head'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/includes'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/index-of'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/inject'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/is-array'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/is-array-buffer'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/is-date'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/is-finite'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/is-function'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/is-integer'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/is-nan'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/is-nil'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/is-null'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/is-string'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/is-undefined'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/join'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/keys'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/last'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/last-index-of'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/map'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/omit'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/pad-end'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/pad-start'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/pairs'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/reduce'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/reduce-right'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/repeat'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/replace'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/reverse'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/select'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/size'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/slice'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/some'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/split'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/starts-with'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/take-right'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/throttle'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/to-lower'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/to-pairs'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/to-upper'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/trim'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/union-by'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/uniq'?: Linter.RuleEntry<[]>\n  'you-dont-need-lodash-underscore/values'?: Linter.RuleEntry<[]>\n}\n\n/* ======= Declarations ======= */\n"
  },
  {
    "path": "test/output/plugin-with-schema-ids.d.ts",
    "content": "/* eslint-disable */\n/* prettier-ignore */\nimport type { Linter } from 'eslint'\n\ndeclare module 'eslint' {\n  namespace Linter {\n    interface RulesRecord extends RuleOptions {}\n  }\n}\n\nexport interface RuleOptions {\n  'plugin/schema-with-id-at-root'?: Linter.RuleEntry<_PluginSchemaWithIdAtRootSchemaId>\n}\n\n/* ======= Declarations ======= */\n// ----- plugin/schema-with-id-at-root -----\ntype _PluginSchemaWithIdAtRootAId = string\ntype _PluginSchemaWithIdAtRootC1Id = string\ninterface _PluginSchemaWithIdAtRootSchemaId {\n  a?: _PluginSchemaWithIdAtRootAId\n  b?: _PluginSchemaWithIdAtRootBId\n  c?: {\n    c1?: _PluginSchemaWithIdAtRootC1Id\n  }\n  d?: {\n    da?: string\n  }\n}\ninterface _PluginSchemaWithIdAtRootBId {\n  b1?: string\n}"
  },
  {
    "path": "test/output/plugins.d.ts",
    "content": "/* eslint-disable */\n/* prettier-ignore */\nimport type { Linter } from 'eslint'\n\ndeclare module 'eslint' {\n  namespace Linter {\n    interface RulesRecord extends RuleOptions {}\n  }\n}\n\nexport interface RuleOptions {\n  /**\n   * Having line breaks styles to object, array and named imports\n   * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/consistent-chaining.md\n   */\n  'antfu/consistent-chaining'?: Linter.RuleEntry<AntfuConsistentChaining>\n  /**\n   * Having line breaks styles to object, array and named imports\n   * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/consistent-list-newline.md\n   */\n  'antfu/consistent-list-newline'?: Linter.RuleEntry<AntfuConsistentListNewline>\n  /**\n   * Enforce Anthony's style of curly bracket\n   * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/curly.md\n   */\n  'antfu/curly'?: Linter.RuleEntry<[]>\n  /**\n   * Newline after if\n   * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/if-newline.md\n   */\n  'antfu/if-newline'?: Linter.RuleEntry<[]>\n  /**\n   * Fix duplication in imports\n   * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/import-dedupe.md\n   */\n  'antfu/import-dedupe'?: Linter.RuleEntry<[]>\n  /**\n   * Enforce consistent indentation in `unindent` template tag\n   * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/indent-unindent.md\n   */\n  'antfu/indent-unindent'?: Linter.RuleEntry<AntfuIndentUnindent>\n  /**\n   * Prevent importing modules in `dist` folder\n   * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/no-import-dist.test.ts\n   */\n  'antfu/no-import-dist'?: Linter.RuleEntry<[]>\n  /**\n   * Prevent importing modules in `node_modules` folder by relative or absolute path\n   * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/no-import-node-modules-by-path.test.ts\n   */\n  'antfu/no-import-node-modules-by-path'?: Linter.RuleEntry<[]>\n  /**\n   * Prevent using top-level await\n   * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/no-top-level-await.test.ts\n   */\n  'antfu/no-top-level-await'?: Linter.RuleEntry<[]>\n  /**\n   * Do not use `exports =`\n   * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/no-ts-export-equal.test.ts\n   */\n  'antfu/no-ts-export-equal'?: Linter.RuleEntry<[]>\n  /**\n   * Enforce top-level functions to be declared with function keyword\n   * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/top-level-function.md\n   */\n  'antfu/top-level-function'?: Linter.RuleEntry<[]>\n  /**\n   * Enforce or ban the use of inline type-only markers for named imports.\n   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.1/docs/rules/consistent-type-specifier-style.md\n   */\n  'import/consistent-type-specifier-style'?: Linter.RuleEntry<ImportConsistentTypeSpecifierStyle>\n  /**\n   * Ensure a default export is present, given a default import.\n   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.1/docs/rules/default.md\n   */\n  'import/default'?: Linter.RuleEntry<[]>\n  /**\n   * Enforce a leading comment with the webpackChunkName for dynamic imports.\n   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.1/docs/rules/dynamic-import-chunkname.md\n   */\n  'import/dynamic-import-chunkname'?: Linter.RuleEntry<ImportDynamicImportChunkname>\n  /**\n   * Forbid any invalid exports, i.e. re-export of the same name.\n   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.1/docs/rules/export.md\n   */\n  'import/export'?: Linter.RuleEntry<[]>\n  /**\n   * Ensure all exports appear after other statements.\n   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.1/docs/rules/exports-last.md\n   */\n  'import/exports-last'?: Linter.RuleEntry<[]>\n  /**\n   * Ensure consistent use of file extension within the import path.\n   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.1/docs/rules/extensions.md\n   */\n  'import/extensions'?: Linter.RuleEntry<ImportExtensions>\n  /**\n   * Ensure all imports appear before other statements.\n   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.1/docs/rules/first.md\n   */\n  'import/first'?: Linter.RuleEntry<ImportFirst>\n  /**\n   * Prefer named exports to be grouped together in a single export declaration.\n   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.1/docs/rules/group-exports.md\n   */\n  'import/group-exports'?: Linter.RuleEntry<[]>\n  /**\n   * Replaced by `import-x/first`.\n   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.1/docs/rules/imports-first.md\n   * @deprecated\n   */\n  'import/imports-first'?: Linter.RuleEntry<ImportImportsFirst>\n  /**\n   * Enforce the maximum number of dependencies a module can have.\n   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.1/docs/rules/max-dependencies.md\n   */\n  'import/max-dependencies'?: Linter.RuleEntry<ImportMaxDependencies>\n  /**\n   * Ensure named imports correspond to a named export in the remote file.\n   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.1/docs/rules/named.md\n   */\n  'import/named'?: Linter.RuleEntry<ImportNamed>\n  /**\n   * Ensure imported namespaces contain dereferenced properties as they are dereferenced.\n   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.1/docs/rules/namespace.md\n   */\n  'import/namespace'?: Linter.RuleEntry<ImportNamespace>\n  /**\n   * Enforce a newline after import statements.\n   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.1/docs/rules/newline-after-import.md\n   */\n  'import/newline-after-import'?: Linter.RuleEntry<ImportNewlineAfterImport>\n  /**\n   * Forbid import of modules using absolute paths.\n   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.1/docs/rules/no-absolute-path.md\n   */\n  'import/no-absolute-path'?: Linter.RuleEntry<ImportNoAbsolutePath>\n  /**\n   * Forbid AMD `require` and `define` calls.\n   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.1/docs/rules/no-amd.md\n   */\n  'import/no-amd'?: Linter.RuleEntry<[]>\n  /**\n   * Forbid anonymous values as default exports.\n   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.1/docs/rules/no-anonymous-default-export.md\n   */\n  'import/no-anonymous-default-export'?: Linter.RuleEntry<ImportNoAnonymousDefaultExport>\n  /**\n   * Forbid CommonJS `require` calls and `module.exports` or `exports.*`.\n   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.1/docs/rules/no-commonjs.md\n   */\n  'import/no-commonjs'?: Linter.RuleEntry<ImportNoCommonjs>\n  /**\n   * Forbid a module from importing a module with a dependency path back to itself.\n   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.1/docs/rules/no-cycle.md\n   */\n  'import/no-cycle'?: Linter.RuleEntry<ImportNoCycle>\n  /**\n   * Forbid default exports.\n   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.1/docs/rules/no-default-export.md\n   */\n  'import/no-default-export'?: Linter.RuleEntry<[]>\n  /**\n   * Forbid imported names marked with `@deprecated` documentation tag.\n   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.1/docs/rules/no-deprecated.md\n   */\n  'import/no-deprecated'?: Linter.RuleEntry<[]>\n  /**\n   * Forbid repeated import of the same module in multiple places.\n   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.1/docs/rules/no-duplicates.md\n   */\n  'import/no-duplicates'?: Linter.RuleEntry<ImportNoDuplicates>\n  /**\n   * Forbid `require()` calls with expressions.\n   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.1/docs/rules/no-dynamic-require.md\n   */\n  'import/no-dynamic-require'?: Linter.RuleEntry<ImportNoDynamicRequire>\n  /**\n   * Forbid empty named import blocks.\n   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.1/docs/rules/no-empty-named-blocks.md\n   */\n  'import/no-empty-named-blocks'?: Linter.RuleEntry<[]>\n  /**\n   * Forbid the use of extraneous packages.\n   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.1/docs/rules/no-extraneous-dependencies.md\n   */\n  'import/no-extraneous-dependencies'?: Linter.RuleEntry<ImportNoExtraneousDependencies>\n  /**\n   * Forbid import statements with CommonJS module.exports.\n   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.1/docs/rules/no-import-module-exports.md\n   */\n  'import/no-import-module-exports'?: Linter.RuleEntry<ImportNoImportModuleExports>\n  /**\n   * Forbid importing the submodules of other modules.\n   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.1/docs/rules/no-internal-modules.md\n   */\n  'import/no-internal-modules'?: Linter.RuleEntry<ImportNoInternalModules>\n  /**\n   * Forbid the use of mutable exports with `var` or `let`.\n   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.1/docs/rules/no-mutable-exports.md\n   */\n  'import/no-mutable-exports'?: Linter.RuleEntry<[]>\n  /**\n   * Forbid use of exported name as identifier of default export.\n   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.1/docs/rules/no-named-as-default.md\n   */\n  'import/no-named-as-default'?: Linter.RuleEntry<[]>\n  /**\n   * Forbid use of exported name as property of default export.\n   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.1/docs/rules/no-named-as-default-member.md\n   */\n  'import/no-named-as-default-member'?: Linter.RuleEntry<[]>\n  /**\n   * Forbid named default exports.\n   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.1/docs/rules/no-named-default.md\n   */\n  'import/no-named-default'?: Linter.RuleEntry<[]>\n  /**\n   * Forbid named exports.\n   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.1/docs/rules/no-named-export.md\n   */\n  'import/no-named-export'?: Linter.RuleEntry<[]>\n  /**\n   * Forbid namespace (a.k.a. \"wildcard\" `*`) imports.\n   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.1/docs/rules/no-namespace.md\n   */\n  'import/no-namespace'?: Linter.RuleEntry<ImportNoNamespace>\n  /**\n   * Forbid Node.js builtin modules.\n   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.1/docs/rules/no-nodejs-modules.md\n   */\n  'import/no-nodejs-modules'?: Linter.RuleEntry<ImportNoNodejsModules>\n  /**\n   * Forbid importing packages through relative paths.\n   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.1/docs/rules/no-relative-packages.md\n   */\n  'import/no-relative-packages'?: Linter.RuleEntry<ImportNoRelativePackages>\n  /**\n   * Forbid importing modules from parent directories.\n   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.1/docs/rules/no-relative-parent-imports.md\n   */\n  'import/no-relative-parent-imports'?: Linter.RuleEntry<ImportNoRelativeParentImports>\n  /**\n   * Forbid importing a default export by a different name.\n   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.1/docs/rules/no-rename-default.md\n   */\n  'import/no-rename-default'?: Linter.RuleEntry<ImportNoRenameDefault>\n  /**\n   * Enforce which files can be imported in a given folder.\n   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.1/docs/rules/no-restricted-paths.md\n   */\n  'import/no-restricted-paths'?: Linter.RuleEntry<ImportNoRestrictedPaths>\n  /**\n   * Forbid a module from importing itself.\n   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.1/docs/rules/no-self-import.md\n   */\n  'import/no-self-import'?: Linter.RuleEntry<[]>\n  /**\n   * Forbid unassigned imports.\n   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.1/docs/rules/no-unassigned-import.md\n   */\n  'import/no-unassigned-import'?: Linter.RuleEntry<ImportNoUnassignedImport>\n  /**\n   * Ensure imports point to a file/module that can be resolved.\n   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.1/docs/rules/no-unresolved.md\n   */\n  'import/no-unresolved'?: Linter.RuleEntry<ImportNoUnresolved>\n  /**\n   * Forbid modules without exports, or exports without matching import in another module.\n   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.1/docs/rules/no-unused-modules.md\n   */\n  'import/no-unused-modules'?: Linter.RuleEntry<ImportNoUnusedModules>\n  /**\n   * Forbid unnecessary path segments in import and require statements.\n   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.1/docs/rules/no-useless-path-segments.md\n   */\n  'import/no-useless-path-segments'?: Linter.RuleEntry<ImportNoUselessPathSegments>\n  /**\n   * Forbid webpack loader syntax in imports.\n   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.1/docs/rules/no-webpack-loader-syntax.md\n   */\n  'import/no-webpack-loader-syntax'?: Linter.RuleEntry<[]>\n  /**\n   * Enforce a convention in module import order.\n   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.1/docs/rules/order.md\n   */\n  'import/order'?: Linter.RuleEntry<ImportOrder>\n  /**\n   * Prefer a default export if module exports a single name or multiple names.\n   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.1/docs/rules/prefer-default-export.md\n   */\n  'import/prefer-default-export'?: Linter.RuleEntry<ImportPreferDefaultExport>\n  /**\n   * Enforce using namespace imports for specific modules, like `react`/`react-dom`, etc.\n   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.1/docs/rules/prefer-namespace-import.md\n   */\n  'import/prefer-namespace-import'?: Linter.RuleEntry<ImportPreferNamespaceImport>\n  /**\n   * Forbid potentially ambiguous parse goal (`script` vs. `module`).\n   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.1/docs/rules/unambiguous.md\n   */\n  'import/unambiguous'?: Linter.RuleEntry<[]>\n}\n\n/* ======= Declarations ======= */\n// ----- antfu/consistent-chaining -----\ntype AntfuConsistentChaining = []|[{\n  \n  allowLeadingPropertyAccess?: boolean\n}]\n// ----- antfu/consistent-list-newline -----\ntype AntfuConsistentListNewline = []|[{\n  ArrayExpression?: boolean\n  ArrayPattern?: boolean\n  ArrowFunctionExpression?: boolean\n  CallExpression?: boolean\n  ExportNamedDeclaration?: boolean\n  FunctionDeclaration?: boolean\n  FunctionExpression?: boolean\n  IfStatement?: boolean\n  ImportDeclaration?: boolean\n  JSONArrayExpression?: boolean\n  JSONObjectExpression?: boolean\n  JSXOpeningElement?: boolean\n  NewExpression?: boolean\n  ObjectExpression?: boolean\n  ObjectPattern?: boolean\n  TSFunctionType?: boolean\n  TSInterfaceDeclaration?: boolean\n  TSTupleType?: boolean\n  TSTypeLiteral?: boolean\n  TSTypeParameterDeclaration?: boolean\n  TSTypeParameterInstantiation?: boolean\n}]\n// ----- antfu/indent-unindent -----\ntype AntfuIndentUnindent = []|[{\n  indent?: number\n  tags?: string[]\n}]\n// ----- import/consistent-type-specifier-style -----\ntype ImportConsistentTypeSpecifierStyle = []|[(\"prefer-top-level\" | \"prefer-inline\")]\n// ----- import/dynamic-import-chunkname -----\ntype ImportDynamicImportChunkname = []|[{\n  importFunctions?: string[]\n  allowEmpty?: boolean\n  webpackChunknameFormat?: string\n  [k: string]: unknown | undefined\n}]\n// ----- import/extensions -----\ntype ImportExtensions = ([]|[(\"always\" | \"ignorePackages\" | \"never\")] | []|[(\"always\" | \"ignorePackages\" | \"never\")]|[(\"always\" | \"ignorePackages\" | \"never\"), {\n  pattern?: {\n    [k: string]: (\"always\" | \"ignorePackages\" | \"never\")\n  }\n  ignorePackages?: boolean\n  checkTypeImports?: boolean\n  pathGroupOverrides?: {\n    pattern: string\n    patternOptions?: {\n      [k: string]: unknown | undefined\n    }\n    action: (\"enforce\" | \"ignore\")\n  }[]\n  fix?: boolean\n  [k: string]: unknown | undefined\n}] | []|[{\n  pattern?: {\n    [k: string]: (\"always\" | \"ignorePackages\" | \"never\")\n  }\n  ignorePackages?: boolean\n  checkTypeImports?: boolean\n  pathGroupOverrides?: {\n    pattern: string\n    patternOptions?: {\n      [k: string]: unknown | undefined\n    }\n    action: (\"enforce\" | \"ignore\")\n  }[]\n  fix?: boolean\n  [k: string]: unknown | undefined\n}] | []|[(\"always\" | \"ignorePackages\" | \"never\")]|[(\"always\" | \"ignorePackages\" | \"never\"), {\n  [k: string]: (\"always\" | \"ignorePackages\" | \"never\")\n}] | []|[{\n  [k: string]: (\"always\" | \"ignorePackages\" | \"never\")\n}])\n// ----- import/first -----\ntype ImportFirst = []|[(\"absolute-first\" | \"disable-absolute-first\")]\n// ----- import/imports-first -----\ntype ImportImportsFirst = []|[(\"absolute-first\" | \"disable-absolute-first\")]\n// ----- import/max-dependencies -----\ntype ImportMaxDependencies = []|[{\n  max?: number\n  ignoreTypeImports?: boolean\n}]\n// ----- import/named -----\ntype ImportNamed = []|[{\n  commonjs?: boolean\n}]\n// ----- import/namespace -----\ntype ImportNamespace = []|[{\n  \n  allowComputed?: boolean\n}]\n// ----- import/newline-after-import -----\ntype ImportNewlineAfterImport = []|[{\n  count?: number\n  exactCount?: boolean\n  considerComments?: boolean\n}]\n// ----- import/no-absolute-path -----\ntype ImportNoAbsolutePath = []|[{\n  commonjs?: boolean\n  amd?: boolean\n  esmodule?: boolean\n  \n  ignore?: [string, ...(string)[]]\n}]\n// ----- import/no-anonymous-default-export -----\ntype ImportNoAnonymousDefaultExport = []|[{\n  \n  allowArray?: boolean\n  \n  allowArrowFunction?: boolean\n  \n  allowCallExpression?: boolean\n  \n  allowAnonymousClass?: boolean\n  \n  allowAnonymousFunction?: boolean\n  \n  allowLiteral?: boolean\n  \n  allowObject?: boolean\n  \n  allowNew?: boolean\n}]\n// ----- import/no-commonjs -----\ntype ImportNoCommonjs = ([]|[\"allow-primitive-modules\"] | []|[{\n  allowPrimitiveModules?: boolean\n  allowRequire?: boolean\n  allowConditionalRequire?: boolean\n}])\n// ----- import/no-cycle -----\ntype ImportNoCycle = []|[{\n  commonjs?: boolean\n  amd?: boolean\n  esmodule?: boolean\n  \n  ignore?: [string, ...(string)[]]\n  maxDepth?: (number | \"∞\")\n  \n  ignoreExternal?: boolean\n  \n  allowUnsafeDynamicCyclicDependency?: boolean\n}]\n// ----- import/no-duplicates -----\ntype ImportNoDuplicates = []|[{\n  considerQueryString?: boolean\n  \"prefer-inline\"?: boolean\n}]\n// ----- import/no-dynamic-require -----\ntype ImportNoDynamicRequire = []|[{\n  esmodule?: boolean\n}]\n// ----- import/no-extraneous-dependencies -----\ntype ImportNoExtraneousDependencies = []|[{\n  devDependencies?: (boolean | unknown[])\n  optionalDependencies?: (boolean | unknown[])\n  peerDependencies?: (boolean | unknown[])\n  bundledDependencies?: (boolean | unknown[])\n  packageDir?: (string | unknown[])\n  includeInternal?: boolean\n  includeTypes?: boolean\n  whitelist?: unknown[]\n}]\n// ----- import/no-import-module-exports -----\ntype ImportNoImportModuleExports = []|[{\n  exceptions?: unknown[]\n}]\n// ----- import/no-internal-modules -----\ntype ImportNoInternalModules = []|[({\n  allow?: string[]\n} | {\n  forbid?: string[]\n})]\n// ----- import/no-namespace -----\ntype ImportNoNamespace = []|[{\n  ignore?: string[]\n  [k: string]: unknown | undefined\n}]\n// ----- import/no-nodejs-modules -----\ntype ImportNoNodejsModules = []|[{\n  allow?: string[]\n}]\n// ----- import/no-relative-packages -----\ntype ImportNoRelativePackages = []|[{\n  commonjs?: boolean\n  amd?: boolean\n  esmodule?: boolean\n  \n  ignore?: [string, ...(string)[]]\n}]\n// ----- import/no-relative-parent-imports -----\ntype ImportNoRelativeParentImports = []|[{\n  commonjs?: boolean\n  amd?: boolean\n  esmodule?: boolean\n  \n  ignore?: [string, ...(string)[]]\n}]\n// ----- import/no-rename-default -----\ntype ImportNoRenameDefault = []|[{\n  commonjs?: boolean\n  preventRenamingBindings?: boolean\n}]\n// ----- import/no-restricted-paths -----\ntype ImportNoRestrictedPaths = []|[{\n  \n  zones?: [{\n    target?: (string | [string, ...(string)[]])\n    from?: (string | [string, ...(string)[]])\n    except?: string[]\n    message?: string\n  }, ...({\n    target?: (string | [string, ...(string)[]])\n    from?: (string | [string, ...(string)[]])\n    except?: string[]\n    message?: string\n  })[]]\n  basePath?: string\n}]\n// ----- import/no-unassigned-import -----\ntype ImportNoUnassignedImport = []|[{\n  devDependencies?: (boolean | unknown[])\n  optionalDependencies?: (boolean | unknown[])\n  peerDependencies?: (boolean | unknown[])\n  allow?: string[]\n}]\n// ----- import/no-unresolved -----\ntype ImportNoUnresolved = []|[{\n  commonjs?: boolean\n  amd?: boolean\n  esmodule?: boolean\n  \n  ignore?: [string, ...(string)[]]\n  caseSensitive?: boolean\n  caseSensitiveStrict?: boolean\n}]\n// ----- import/no-unused-modules -----\ntype ImportNoUnusedModules = []|[({\n  unusedExports: true\n  \n  src?: [unknown, ...(unknown)[]]\n  [k: string]: unknown | undefined\n} | {\n  missingExports: true\n  [k: string]: unknown | undefined\n})]\n// ----- import/no-useless-path-segments -----\ntype ImportNoUselessPathSegments = []|[{\n  commonjs?: boolean\n  noUselessIndex?: boolean\n}]\n// ----- import/order -----\ntype ImportOrder = []|[{\n  groups?: unknown[]\n  pathGroupsExcludedImportTypes?: unknown[]\n  distinctGroup?: boolean\n  pathGroups?: {\n    pattern: string\n    patternOptions?: {\n      [k: string]: unknown | undefined\n    }\n    group: (\"builtin\" | \"external\" | \"internal\" | \"unknown\" | \"parent\" | \"sibling\" | \"index\" | \"object\" | \"type\")\n    position?: (\"after\" | \"before\")\n  }[]\n  \"newlines-between\"?: (\"ignore\" | \"always\" | \"always-and-inside-groups\" | \"never\")\n  \"newlines-between-types\"?: (\"ignore\" | \"always\" | \"always-and-inside-groups\" | \"never\")\n  consolidateIslands?: (\"inside-groups\" | \"never\")\n  sortTypesGroup?: boolean\n  named?: (boolean | {\n    enabled?: boolean\n    import?: boolean\n    export?: boolean\n    require?: boolean\n    cjsExports?: boolean\n    types?: (\"mixed\" | \"types-first\" | \"types-last\")\n  })\n  alphabetize?: {\n    caseInsensitive?: boolean\n    order?: (\"ignore\" | \"asc\" | \"desc\")\n    orderImportKind?: (\"ignore\" | \"asc\" | \"desc\")\n  }\n  warnOnUnassignedImports?: boolean\n}]\n// ----- import/prefer-default-export -----\ntype ImportPreferDefaultExport = []|[{\n  target?: (\"single\" | \"any\")\n}]\n// ----- import/prefer-namespace-import -----\ntype ImportPreferNamespaceImport = []|[{\n  patterns?: string[]\n}]"
  },
  {
    "path": "tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ESNext\",\n    \"lib\": [\"ESNext\"],\n    \"module\": \"ESNext\",\n    \"moduleResolution\": \"Bundler\",\n    \"resolveJsonModule\": true,\n    \"strict\": true,\n    \"strictNullChecks\": true,\n    \"esModuleInterop\": true,\n    \"skipDefaultLibCheck\": true,\n    \"skipLibCheck\": true\n  },\n  \"include\": [\"**/*.ts\"],\n  \"exclude\": [\"node_modules\", \"dist\"]\n\n}\n"
  },
  {
    "path": "tsdown.config.ts",
    "content": "import { defineConfig } from 'tsdown'\n\nexport default defineConfig({\n  entry: [\n    'src/index.ts',\n    'src/core.ts',\n  ],\n  format: ['esm'],\n  dts: true,\n  exports: true,\n  external: [\n    'eslint',\n  ],\n})\n"
  }
]