import { ConfigWithExtends, FlatConfigComposer } from "eslint-flat-config-utils";
import { ParserOptions } from "@typescript-eslint/parser";
import { Linter } from "eslint";
import { FlatGitignoreOptions } from "eslint-config-flat-gitignore";

//#region src/linters/eslint/typegen.d.ts
interface RuleOptions {
  /**
   * Exhaustive deps rule for useQuery
   * @see https://tanstack.com/query/latest/docs/eslint/exhaustive-deps
   */
  '@tanstack/query/exhaustive-deps'?: Linter.RuleEntry<TanstackQueryExhaustiveDeps>;
  /**
   * Ensure correct order of inference sensitive properties for infinite queries
   * @see https://tanstack.com/query/latest/docs/eslint/infinite-query-property-order
   */
  '@tanstack/query/infinite-query-property-order'?: Linter.RuleEntry<[]>;
  /**
   * Ensure correct order of inference-sensitive properties in useMutation()
   * @see https://tanstack.com/query/latest/docs/eslint/mutation-property-order
   */
  '@tanstack/query/mutation-property-order'?: Linter.RuleEntry<[]>;
  /**
   * Disallows rest destructuring in queries
   * @see https://tanstack.com/query/latest/docs/eslint/no-rest-destructuring
   */
  '@tanstack/query/no-rest-destructuring'?: Linter.RuleEntry<[]>;
  /**
   * Disallow putting the result of query hooks directly in a React hook dependency array
   * @see https://tanstack.com/query/latest/docs/eslint/no-unstable-deps
   */
  '@tanstack/query/no-unstable-deps'?: Linter.RuleEntry<[]>;
  /**
   * Ensures queryFn returns a non-undefined value
   * @see https://tanstack.com/query/latest/docs/eslint/no-void-query-fn
   */
  '@tanstack/query/no-void-query-fn'?: Linter.RuleEntry<[]>;
  /**
   * Prefer using queryOptions() to co-locate queryKey and queryFn
   * @see https://tanstack.com/query/latest/docs/eslint/prefer-query-options
   */
  '@tanstack/query/prefer-query-options'?: Linter.RuleEntry<[]>;
  /**
   * Makes sure that QueryClient is stable
   * @see https://tanstack.com/query/latest/docs/eslint/stable-query-client
   */
  '@tanstack/query/stable-query-client'?: Linter.RuleEntry<[]>;
  /**
   * Ensure correct order of inference sensitive properties for createRoute functions
   * @see https://tanstack.com/router/latest/docs/eslint/create-route-property-order
   */
  '@tanstack/router/create-route-property-order'?: Linter.RuleEntry<[]>;
  /**
   * Ensure route param names are valid JavaScript identifiers
   * @see https://tanstack.com/router/latest/docs/eslint/route-param-names
   */
  '@tanstack/router/route-param-names'?: Linter.RuleEntry<[]>;
  /**
   * Require that function overload signatures be consecutive
   * @see https://typescript-eslint.io/rules/adjacent-overload-signatures
   */
  '@typescript-eslint/adjacent-overload-signatures'?: Linter.RuleEntry<[]>;
  /**
   * Require consistently using either `T[]` or `Array<T>` for arrays
   * @see https://typescript-eslint.io/rules/array-type
   */
  '@typescript-eslint/array-type'?: Linter.RuleEntry<TypescriptEslintArrayType>;
  /**
   * Disallow awaiting a value that is not a Thenable
   * @see https://typescript-eslint.io/rules/await-thenable
   */
  '@typescript-eslint/await-thenable'?: Linter.RuleEntry<[]>;
  /**
   * Disallow `@ts-<directive>` comments or require descriptions after directives
   * @see https://typescript-eslint.io/rules/ban-ts-comment
   */
  '@typescript-eslint/ban-ts-comment'?: Linter.RuleEntry<TypescriptEslintBanTsComment>;
  /**
   * Disallow `// tslint:<rule-flag>` comments
   * @see https://typescript-eslint.io/rules/ban-tslint-comment
   */
  '@typescript-eslint/ban-tslint-comment'?: Linter.RuleEntry<[]>;
  /**
   * Enforce that literals on classes are exposed in a consistent style
   * @see https://typescript-eslint.io/rules/class-literal-property-style
   */
  '@typescript-eslint/class-literal-property-style'?: Linter.RuleEntry<TypescriptEslintClassLiteralPropertyStyle>;
  /**
   * Enforce that class methods utilize `this`
   * @see https://typescript-eslint.io/rules/class-methods-use-this
   */
  '@typescript-eslint/class-methods-use-this'?: Linter.RuleEntry<TypescriptEslintClassMethodsUseThis>;
  /**
   * Enforce specifying generic type arguments on type annotation or constructor name of a constructor call
   * @see https://typescript-eslint.io/rules/consistent-generic-constructors
   */
  '@typescript-eslint/consistent-generic-constructors'?: Linter.RuleEntry<TypescriptEslintConsistentGenericConstructors>;
  /**
   * Require or disallow the `Record` type
   * @see https://typescript-eslint.io/rules/consistent-indexed-object-style
   */
  '@typescript-eslint/consistent-indexed-object-style'?: Linter.RuleEntry<TypescriptEslintConsistentIndexedObjectStyle>;
  /**
   * Require `return` statements to either always or never specify values
   * @see https://typescript-eslint.io/rules/consistent-return
   */
  '@typescript-eslint/consistent-return'?: Linter.RuleEntry<TypescriptEslintConsistentReturn>;
  /**
   * Enforce consistent usage of type assertions
   * @see https://typescript-eslint.io/rules/consistent-type-assertions
   */
  '@typescript-eslint/consistent-type-assertions'?: Linter.RuleEntry<TypescriptEslintConsistentTypeAssertions>;
  /**
   * Enforce type definitions to consistently use either `interface` or `type`
   * @see https://typescript-eslint.io/rules/consistent-type-definitions
   */
  '@typescript-eslint/consistent-type-definitions'?: Linter.RuleEntry<TypescriptEslintConsistentTypeDefinitions>;
  /**
   * Enforce consistent usage of type exports
   * @see https://typescript-eslint.io/rules/consistent-type-exports
   */
  '@typescript-eslint/consistent-type-exports'?: Linter.RuleEntry<TypescriptEslintConsistentTypeExports>;
  /**
   * Enforce consistent usage of type imports
   * @see https://typescript-eslint.io/rules/consistent-type-imports
   */
  '@typescript-eslint/consistent-type-imports'?: Linter.RuleEntry<TypescriptEslintConsistentTypeImports>;
  /**
   * Enforce default parameters to be last
   * @see https://typescript-eslint.io/rules/default-param-last
   */
  '@typescript-eslint/default-param-last'?: Linter.RuleEntry<[]>;
  /**
   * Enforce dot notation whenever possible
   * @see https://typescript-eslint.io/rules/dot-notation
   */
  '@typescript-eslint/dot-notation'?: Linter.RuleEntry<TypescriptEslintDotNotation>;
  /**
   * Require explicit return types on functions and class methods
   * @see https://typescript-eslint.io/rules/explicit-function-return-type
   */
  '@typescript-eslint/explicit-function-return-type'?: Linter.RuleEntry<TypescriptEslintExplicitFunctionReturnType>;
  /**
   * Require explicit accessibility modifiers on class properties and methods
   * @see https://typescript-eslint.io/rules/explicit-member-accessibility
   */
  '@typescript-eslint/explicit-member-accessibility'?: Linter.RuleEntry<TypescriptEslintExplicitMemberAccessibility>;
  /**
   * Require explicit return and argument types on exported functions' and classes' public class methods
   * @see https://typescript-eslint.io/rules/explicit-module-boundary-types
   */
  '@typescript-eslint/explicit-module-boundary-types'?: Linter.RuleEntry<TypescriptEslintExplicitModuleBoundaryTypes>;
  /**
   * Require or disallow initialization in variable declarations
   * @see https://typescript-eslint.io/rules/init-declarations
   */
  '@typescript-eslint/init-declarations'?: Linter.RuleEntry<TypescriptEslintInitDeclarations>;
  /**
   * Enforce a maximum number of parameters in function definitions
   * @see https://typescript-eslint.io/rules/max-params
   */
  '@typescript-eslint/max-params'?: Linter.RuleEntry<TypescriptEslintMaxParams>;
  /**
   * Require a consistent member declaration order
   * @see https://typescript-eslint.io/rules/member-ordering
   */
  '@typescript-eslint/member-ordering'?: Linter.RuleEntry<TypescriptEslintMemberOrdering>;
  /**
   * Enforce using a particular method signature syntax
   * @see https://typescript-eslint.io/rules/method-signature-style
   */
  '@typescript-eslint/method-signature-style'?: Linter.RuleEntry<TypescriptEslintMethodSignatureStyle>;
  /**
   * Enforce naming conventions for everything across a codebase
   * @see https://typescript-eslint.io/rules/naming-convention
   */
  '@typescript-eslint/naming-convention'?: Linter.RuleEntry<TypescriptEslintNamingConvention>;
  /**
   * Disallow generic `Array` constructors
   * @see https://typescript-eslint.io/rules/no-array-constructor
   */
  '@typescript-eslint/no-array-constructor'?: Linter.RuleEntry<[]>;
  /**
   * Disallow using the `delete` operator on array values
   * @see https://typescript-eslint.io/rules/no-array-delete
   */
  '@typescript-eslint/no-array-delete'?: Linter.RuleEntry<[]>;
  /**
   * Require `.toString()` and `.toLocaleString()` to only be called on objects which provide useful information when stringified
   * @see https://typescript-eslint.io/rules/no-base-to-string
   */
  '@typescript-eslint/no-base-to-string'?: Linter.RuleEntry<TypescriptEslintNoBaseToString>;
  /**
   * Disallow non-null assertion in locations that may be confusing
   * @see https://typescript-eslint.io/rules/no-confusing-non-null-assertion
   */
  '@typescript-eslint/no-confusing-non-null-assertion'?: Linter.RuleEntry<[]>;
  /**
   * Require expressions of type void to appear in statement position
   * @see https://typescript-eslint.io/rules/no-confusing-void-expression
   */
  '@typescript-eslint/no-confusing-void-expression'?: Linter.RuleEntry<TypescriptEslintNoConfusingVoidExpression>;
  /**
   * Disallow using code marked as `@deprecated`
   * @see https://typescript-eslint.io/rules/no-deprecated
   */
  '@typescript-eslint/no-deprecated'?: Linter.RuleEntry<TypescriptEslintNoDeprecated>;
  /**
   * Disallow duplicate class members
   * @see https://typescript-eslint.io/rules/no-dupe-class-members
   */
  '@typescript-eslint/no-dupe-class-members'?: Linter.RuleEntry<[]>;
  /**
   * Disallow duplicate enum member values
   * @see https://typescript-eslint.io/rules/no-duplicate-enum-values
   */
  '@typescript-eslint/no-duplicate-enum-values'?: Linter.RuleEntry<[]>;
  /**
   * Disallow duplicate constituents of union or intersection types
   * @see https://typescript-eslint.io/rules/no-duplicate-type-constituents
   */
  '@typescript-eslint/no-duplicate-type-constituents'?: Linter.RuleEntry<TypescriptEslintNoDuplicateTypeConstituents>;
  /**
   * Disallow using the `delete` operator on computed key expressions
   * @see https://typescript-eslint.io/rules/no-dynamic-delete
   */
  '@typescript-eslint/no-dynamic-delete'?: Linter.RuleEntry<[]>;
  /**
   * Disallow empty functions
   * @see https://typescript-eslint.io/rules/no-empty-function
   */
  '@typescript-eslint/no-empty-function'?: Linter.RuleEntry<TypescriptEslintNoEmptyFunction>;
  /**
   * Disallow the declaration of empty interfaces
   * @see https://typescript-eslint.io/rules/no-empty-interface
   * @deprecated
   */
  '@typescript-eslint/no-empty-interface'?: Linter.RuleEntry<TypescriptEslintNoEmptyInterface>;
  /**
   * Disallow accidentally using the "empty object" type
   * @see https://typescript-eslint.io/rules/no-empty-object-type
   */
  '@typescript-eslint/no-empty-object-type'?: Linter.RuleEntry<TypescriptEslintNoEmptyObjectType>;
  /**
   * Disallow the `any` type
   * @see https://typescript-eslint.io/rules/no-explicit-any
   */
  '@typescript-eslint/no-explicit-any'?: Linter.RuleEntry<TypescriptEslintNoExplicitAny>;
  /**
   * Disallow extra non-null assertions
   * @see https://typescript-eslint.io/rules/no-extra-non-null-assertion
   */
  '@typescript-eslint/no-extra-non-null-assertion'?: Linter.RuleEntry<[]>;
  /**
   * Disallow classes used as namespaces
   * @see https://typescript-eslint.io/rules/no-extraneous-class
   */
  '@typescript-eslint/no-extraneous-class'?: Linter.RuleEntry<TypescriptEslintNoExtraneousClass>;
  /**
   * Require Promise-like statements to be handled appropriately
   * @see https://typescript-eslint.io/rules/no-floating-promises
   */
  '@typescript-eslint/no-floating-promises'?: Linter.RuleEntry<TypescriptEslintNoFloatingPromises>;
  /**
   * Disallow iterating over an array with a for-in loop
   * @see https://typescript-eslint.io/rules/no-for-in-array
   */
  '@typescript-eslint/no-for-in-array'?: Linter.RuleEntry<[]>;
  /**
   * Disallow the use of `eval()`-like functions
   * @see https://typescript-eslint.io/rules/no-implied-eval
   */
  '@typescript-eslint/no-implied-eval'?: Linter.RuleEntry<[]>;
  /**
   * Enforce the use of top-level import type qualifier when an import only has specifiers with inline type qualifiers
   * @see https://typescript-eslint.io/rules/no-import-type-side-effects
   */
  '@typescript-eslint/no-import-type-side-effects'?: Linter.RuleEntry<[]>;
  /**
   * Disallow explicit type declarations for variables or parameters initialized to a number, string, or boolean
   * @see https://typescript-eslint.io/rules/no-inferrable-types
   */
  '@typescript-eslint/no-inferrable-types'?: Linter.RuleEntry<TypescriptEslintNoInferrableTypes>;
  /**
   * Disallow `this` keywords outside of classes or class-like objects
   * @see https://typescript-eslint.io/rules/no-invalid-this
   */
  '@typescript-eslint/no-invalid-this'?: Linter.RuleEntry<TypescriptEslintNoInvalidThis>;
  /**
   * Disallow `void` type outside of generic or return types
   * @see https://typescript-eslint.io/rules/no-invalid-void-type
   */
  '@typescript-eslint/no-invalid-void-type'?: Linter.RuleEntry<TypescriptEslintNoInvalidVoidType>;
  /**
   * Disallow function declarations that contain unsafe references inside loop statements
   * @see https://typescript-eslint.io/rules/no-loop-func
   */
  '@typescript-eslint/no-loop-func'?: Linter.RuleEntry<[]>;
  /**
   * Disallow literal numbers that lose precision
   * @see https://typescript-eslint.io/rules/no-loss-of-precision
   * @deprecated
   */
  '@typescript-eslint/no-loss-of-precision'?: Linter.RuleEntry<[]>;
  /**
   * Disallow magic numbers
   * @see https://typescript-eslint.io/rules/no-magic-numbers
   */
  '@typescript-eslint/no-magic-numbers'?: Linter.RuleEntry<TypescriptEslintNoMagicNumbers>;
  /**
   * Disallow the `void` operator except when used to discard a value
   * @see https://typescript-eslint.io/rules/no-meaningless-void-operator
   */
  '@typescript-eslint/no-meaningless-void-operator'?: Linter.RuleEntry<TypescriptEslintNoMeaninglessVoidOperator>;
  /**
   * Enforce valid definition of `new` and `constructor`
   * @see https://typescript-eslint.io/rules/no-misused-new
   */
  '@typescript-eslint/no-misused-new'?: Linter.RuleEntry<[]>;
  /**
   * Disallow Promises in places not designed to handle them
   * @see https://typescript-eslint.io/rules/no-misused-promises
   */
  '@typescript-eslint/no-misused-promises'?: Linter.RuleEntry<TypescriptEslintNoMisusedPromises>;
  /**
   * Disallow using the spread operator when it might cause unexpected behavior
   * @see https://typescript-eslint.io/rules/no-misused-spread
   */
  '@typescript-eslint/no-misused-spread'?: Linter.RuleEntry<TypescriptEslintNoMisusedSpread>;
  /**
   * Disallow enums from having both number and string members
   * @see https://typescript-eslint.io/rules/no-mixed-enums
   */
  '@typescript-eslint/no-mixed-enums'?: Linter.RuleEntry<[]>;
  /**
   * Disallow TypeScript namespaces
   * @see https://typescript-eslint.io/rules/no-namespace
   */
  '@typescript-eslint/no-namespace'?: Linter.RuleEntry<TypescriptEslintNoNamespace>;
  /**
   * Disallow non-null assertions in the left operand of a nullish coalescing operator
   * @see https://typescript-eslint.io/rules/no-non-null-asserted-nullish-coalescing
   */
  '@typescript-eslint/no-non-null-asserted-nullish-coalescing'?: Linter.RuleEntry<[]>;
  /**
   * Disallow non-null assertions after an optional chain expression
   * @see https://typescript-eslint.io/rules/no-non-null-asserted-optional-chain
   */
  '@typescript-eslint/no-non-null-asserted-optional-chain'?: Linter.RuleEntry<[]>;
  /**
   * Disallow non-null assertions using the `!` postfix operator
   * @see https://typescript-eslint.io/rules/no-non-null-assertion
   */
  '@typescript-eslint/no-non-null-assertion'?: Linter.RuleEntry<[]>;
  /**
   * Disallow variable redeclaration
   * @see https://typescript-eslint.io/rules/no-redeclare
   */
  '@typescript-eslint/no-redeclare'?: Linter.RuleEntry<TypescriptEslintNoRedeclare>;
  /**
   * Disallow members of unions and intersections that do nothing or override type information
   * @see https://typescript-eslint.io/rules/no-redundant-type-constituents
   */
  '@typescript-eslint/no-redundant-type-constituents'?: Linter.RuleEntry<[]>;
  /**
   * Disallow invocation of `require()`
   * @see https://typescript-eslint.io/rules/no-require-imports
   */
  '@typescript-eslint/no-require-imports'?: Linter.RuleEntry<TypescriptEslintNoRequireImports>;
  /**
   * Disallow specified modules when loaded by `import`
   * @see https://typescript-eslint.io/rules/no-restricted-imports
   */
  '@typescript-eslint/no-restricted-imports'?: Linter.RuleEntry<TypescriptEslintNoRestrictedImports>;
  /**
   * Disallow certain types
   * @see https://typescript-eslint.io/rules/no-restricted-types
   */
  '@typescript-eslint/no-restricted-types'?: Linter.RuleEntry<TypescriptEslintNoRestrictedTypes>;
  /**
   * Disallow variable declarations from shadowing variables declared in the outer scope
   * @see https://typescript-eslint.io/rules/no-shadow
   */
  '@typescript-eslint/no-shadow'?: Linter.RuleEntry<TypescriptEslintNoShadow>;
  /**
   * Disallow aliasing `this`
   * @see https://typescript-eslint.io/rules/no-this-alias
   */
  '@typescript-eslint/no-this-alias'?: Linter.RuleEntry<TypescriptEslintNoThisAlias>;
  /**
   * Disallow type aliases
   * @see https://typescript-eslint.io/rules/no-type-alias
   * @deprecated
   */
  '@typescript-eslint/no-type-alias'?: Linter.RuleEntry<TypescriptEslintNoTypeAlias>;
  /**
   * Disallow unnecessary equality comparisons against boolean literals
   * @see https://typescript-eslint.io/rules/no-unnecessary-boolean-literal-compare
   */
  '@typescript-eslint/no-unnecessary-boolean-literal-compare'?: Linter.RuleEntry<TypescriptEslintNoUnnecessaryBooleanLiteralCompare>;
  /**
   * Disallow conditionals where the type is always truthy or always falsy
   * @see https://typescript-eslint.io/rules/no-unnecessary-condition
   */
  '@typescript-eslint/no-unnecessary-condition'?: Linter.RuleEntry<TypescriptEslintNoUnnecessaryCondition>;
  /**
   * Disallow unnecessary assignment of constructor property parameter
   * @see https://typescript-eslint.io/rules/no-unnecessary-parameter-property-assignment
   */
  '@typescript-eslint/no-unnecessary-parameter-property-assignment'?: Linter.RuleEntry<[]>;
  /**
   * Disallow unnecessary namespace qualifiers
   * @see https://typescript-eslint.io/rules/no-unnecessary-qualifier
   */
  '@typescript-eslint/no-unnecessary-qualifier'?: Linter.RuleEntry<[]>;
  /**
   * Disallow unnecessary template expressions
   * @see https://typescript-eslint.io/rules/no-unnecessary-template-expression
   */
  '@typescript-eslint/no-unnecessary-template-expression'?: Linter.RuleEntry<[]>;
  /**
   * Disallow type arguments that are equal to the default
   * @see https://typescript-eslint.io/rules/no-unnecessary-type-arguments
   */
  '@typescript-eslint/no-unnecessary-type-arguments'?: Linter.RuleEntry<[]>;
  /**
   * Disallow type assertions that do not change the type of an expression
   * @see https://typescript-eslint.io/rules/no-unnecessary-type-assertion
   */
  '@typescript-eslint/no-unnecessary-type-assertion'?: Linter.RuleEntry<TypescriptEslintNoUnnecessaryTypeAssertion>;
  /**
   * Disallow unnecessary constraints on generic types
   * @see https://typescript-eslint.io/rules/no-unnecessary-type-constraint
   */
  '@typescript-eslint/no-unnecessary-type-constraint'?: Linter.RuleEntry<[]>;
  /**
   * Disallow conversion idioms when they do not change the type or value of the expression
   * @see https://typescript-eslint.io/rules/no-unnecessary-type-conversion
   */
  '@typescript-eslint/no-unnecessary-type-conversion'?: Linter.RuleEntry<[]>;
  /**
   * Disallow type parameters that aren't used multiple times
   * @see https://typescript-eslint.io/rules/no-unnecessary-type-parameters
   */
  '@typescript-eslint/no-unnecessary-type-parameters'?: Linter.RuleEntry<[]>;
  /**
   * Disallow calling a function with a value with type `any`
   * @see https://typescript-eslint.io/rules/no-unsafe-argument
   */
  '@typescript-eslint/no-unsafe-argument'?: Linter.RuleEntry<[]>;
  /**
   * Disallow assigning a value with type `any` to variables and properties
   * @see https://typescript-eslint.io/rules/no-unsafe-assignment
   */
  '@typescript-eslint/no-unsafe-assignment'?: Linter.RuleEntry<[]>;
  /**
   * Disallow calling a value with type `any`
   * @see https://typescript-eslint.io/rules/no-unsafe-call
   */
  '@typescript-eslint/no-unsafe-call'?: Linter.RuleEntry<[]>;
  /**
   * Disallow unsafe declaration merging
   * @see https://typescript-eslint.io/rules/no-unsafe-declaration-merging
   */
  '@typescript-eslint/no-unsafe-declaration-merging'?: Linter.RuleEntry<[]>;
  /**
   * Disallow comparing an enum value with a non-enum value
   * @see https://typescript-eslint.io/rules/no-unsafe-enum-comparison
   */
  '@typescript-eslint/no-unsafe-enum-comparison'?: Linter.RuleEntry<[]>;
  /**
   * Disallow using the unsafe built-in Function type
   * @see https://typescript-eslint.io/rules/no-unsafe-function-type
   */
  '@typescript-eslint/no-unsafe-function-type'?: Linter.RuleEntry<[]>;
  /**
   * Disallow member access on a value with type `any`
   * @see https://typescript-eslint.io/rules/no-unsafe-member-access
   */
  '@typescript-eslint/no-unsafe-member-access'?: Linter.RuleEntry<TypescriptEslintNoUnsafeMemberAccess>;
  /**
   * Disallow returning a value with type `any` from a function
   * @see https://typescript-eslint.io/rules/no-unsafe-return
   */
  '@typescript-eslint/no-unsafe-return'?: Linter.RuleEntry<[]>;
  /**
   * Disallow type assertions that narrow a type
   * @see https://typescript-eslint.io/rules/no-unsafe-type-assertion
   */
  '@typescript-eslint/no-unsafe-type-assertion'?: Linter.RuleEntry<[]>;
  /**
   * Require unary negation to take a number
   * @see https://typescript-eslint.io/rules/no-unsafe-unary-minus
   */
  '@typescript-eslint/no-unsafe-unary-minus'?: Linter.RuleEntry<[]>;
  /**
   * Disallow unused expressions
   * @see https://typescript-eslint.io/rules/no-unused-expressions
   */
  '@typescript-eslint/no-unused-expressions'?: Linter.RuleEntry<TypescriptEslintNoUnusedExpressions>;
  /**
   * Disallow unused private class members
   * @see https://typescript-eslint.io/rules/no-unused-private-class-members
   */
  '@typescript-eslint/no-unused-private-class-members'?: Linter.RuleEntry<[]>;
  /**
   * Disallow unused variables
   * @see https://typescript-eslint.io/rules/no-unused-vars
   */
  '@typescript-eslint/no-unused-vars'?: Linter.RuleEntry<TypescriptEslintNoUnusedVars>;
  /**
   * Disallow the use of variables before they are defined
   * @see https://typescript-eslint.io/rules/no-use-before-define
   */
  '@typescript-eslint/no-use-before-define'?: Linter.RuleEntry<TypescriptEslintNoUseBeforeDefine>;
  /**
   * Disallow unnecessary constructors
   * @see https://typescript-eslint.io/rules/no-useless-constructor
   */
  '@typescript-eslint/no-useless-constructor'?: Linter.RuleEntry<[]>;
  /**
   * Disallow default values that will never be used
   * @see https://typescript-eslint.io/rules/no-useless-default-assignment
   */
  '@typescript-eslint/no-useless-default-assignment'?: Linter.RuleEntry<TypescriptEslintNoUselessDefaultAssignment>;
  /**
   * Disallow empty exports that don't change anything in a module file
   * @see https://typescript-eslint.io/rules/no-useless-empty-export
   */
  '@typescript-eslint/no-useless-empty-export'?: Linter.RuleEntry<[]>;
  /**
   * Disallow `require` statements except in import statements
   * @see https://typescript-eslint.io/rules/no-var-requires
   * @deprecated
   */
  '@typescript-eslint/no-var-requires'?: Linter.RuleEntry<TypescriptEslintNoVarRequires>;
  /**
   * Disallow using confusing built-in primitive class wrappers
   * @see https://typescript-eslint.io/rules/no-wrapper-object-types
   */
  '@typescript-eslint/no-wrapper-object-types'?: Linter.RuleEntry<[]>;
  /**
   * Enforce non-null assertions over explicit type assertions
   * @see https://typescript-eslint.io/rules/non-nullable-type-assertion-style
   */
  '@typescript-eslint/non-nullable-type-assertion-style'?: Linter.RuleEntry<[]>;
  /**
   * Disallow throwing non-`Error` values as exceptions
   * @see https://typescript-eslint.io/rules/only-throw-error
   */
  '@typescript-eslint/only-throw-error'?: Linter.RuleEntry<TypescriptEslintOnlyThrowError>;
  /**
   * Require or disallow parameter properties in class constructors
   * @see https://typescript-eslint.io/rules/parameter-properties
   */
  '@typescript-eslint/parameter-properties'?: Linter.RuleEntry<TypescriptEslintParameterProperties>;
  /**
   * Enforce the use of `as const` over literal type
   * @see https://typescript-eslint.io/rules/prefer-as-const
   */
  '@typescript-eslint/prefer-as-const'?: Linter.RuleEntry<[]>;
  /**
   * Require destructuring from arrays and/or objects
   * @see https://typescript-eslint.io/rules/prefer-destructuring
   */
  '@typescript-eslint/prefer-destructuring'?: Linter.RuleEntry<TypescriptEslintPreferDestructuring>;
  /**
   * Require each enum member value to be explicitly initialized
   * @see https://typescript-eslint.io/rules/prefer-enum-initializers
   */
  '@typescript-eslint/prefer-enum-initializers'?: Linter.RuleEntry<[]>;
  /**
   * Enforce the use of Array.prototype.find() over Array.prototype.filter() followed by [0] when looking for a single result
   * @see https://typescript-eslint.io/rules/prefer-find
   */
  '@typescript-eslint/prefer-find'?: Linter.RuleEntry<[]>;
  /**
   * Enforce the use of `for-of` loop over the standard `for` loop where possible
   * @see https://typescript-eslint.io/rules/prefer-for-of
   */
  '@typescript-eslint/prefer-for-of'?: Linter.RuleEntry<[]>;
  /**
   * Enforce using function types instead of interfaces with call signatures
   * @see https://typescript-eslint.io/rules/prefer-function-type
   */
  '@typescript-eslint/prefer-function-type'?: Linter.RuleEntry<[]>;
  /**
   * Enforce `includes` method over `indexOf` method
   * @see https://typescript-eslint.io/rules/prefer-includes
   */
  '@typescript-eslint/prefer-includes'?: Linter.RuleEntry<[]>;
  /**
   * Require all enum members to be literal values
   * @see https://typescript-eslint.io/rules/prefer-literal-enum-member
   */
  '@typescript-eslint/prefer-literal-enum-member'?: Linter.RuleEntry<TypescriptEslintPreferLiteralEnumMember>;
  /**
   * Require using `namespace` keyword over `module` keyword to declare custom TypeScript modules
   * @see https://typescript-eslint.io/rules/prefer-namespace-keyword
   */
  '@typescript-eslint/prefer-namespace-keyword'?: Linter.RuleEntry<[]>;
  /**
   * Enforce using the nullish coalescing operator instead of logical assignments or chaining
   * @see https://typescript-eslint.io/rules/prefer-nullish-coalescing
   */
  '@typescript-eslint/prefer-nullish-coalescing'?: Linter.RuleEntry<TypescriptEslintPreferNullishCoalescing>;
  /**
   * Enforce using concise optional chain expressions instead of chained logical ands, negated logical ors, or empty objects
   * @see https://typescript-eslint.io/rules/prefer-optional-chain
   */
  '@typescript-eslint/prefer-optional-chain'?: Linter.RuleEntry<TypescriptEslintPreferOptionalChain>;
  /**
   * Require using Error objects as Promise rejection reasons
   * @see https://typescript-eslint.io/rules/prefer-promise-reject-errors
   */
  '@typescript-eslint/prefer-promise-reject-errors'?: Linter.RuleEntry<TypescriptEslintPreferPromiseRejectErrors>;
  /**
   * Require private members to be marked as `readonly` if they're never modified outside of the constructor
   * @see https://typescript-eslint.io/rules/prefer-readonly
   */
  '@typescript-eslint/prefer-readonly'?: Linter.RuleEntry<TypescriptEslintPreferReadonly>;
  /**
   * Require function parameters to be typed as `readonly` to prevent accidental mutation of inputs
   * @see https://typescript-eslint.io/rules/prefer-readonly-parameter-types
   */
  '@typescript-eslint/prefer-readonly-parameter-types'?: Linter.RuleEntry<TypescriptEslintPreferReadonlyParameterTypes>;
  /**
   * Enforce using type parameter when calling `Array#reduce` instead of using a type assertion
   * @see https://typescript-eslint.io/rules/prefer-reduce-type-parameter
   */
  '@typescript-eslint/prefer-reduce-type-parameter'?: Linter.RuleEntry<[]>;
  /**
   * Enforce `RegExp#exec` over `String#match` if no global flag is provided
   * @see https://typescript-eslint.io/rules/prefer-regexp-exec
   */
  '@typescript-eslint/prefer-regexp-exec'?: Linter.RuleEntry<[]>;
  /**
   * Enforce that `this` is used when only `this` type is returned
   * @see https://typescript-eslint.io/rules/prefer-return-this-type
   */
  '@typescript-eslint/prefer-return-this-type'?: Linter.RuleEntry<[]>;
  /**
   * Enforce using `String#startsWith` and `String#endsWith` over other equivalent methods of checking substrings
   * @see https://typescript-eslint.io/rules/prefer-string-starts-ends-with
   */
  '@typescript-eslint/prefer-string-starts-ends-with'?: Linter.RuleEntry<TypescriptEslintPreferStringStartsEndsWith>;
  /**
   * Enforce using `@ts-expect-error` over `@ts-ignore`
   * @see https://typescript-eslint.io/rules/prefer-ts-expect-error
   * @deprecated
   */
  '@typescript-eslint/prefer-ts-expect-error'?: Linter.RuleEntry<[]>;
  /**
   * Require any function or method that returns a Promise to be marked async
   * @see https://typescript-eslint.io/rules/promise-function-async
   */
  '@typescript-eslint/promise-function-async'?: Linter.RuleEntry<TypescriptEslintPromiseFunctionAsync>;
  /**
   * Enforce that `get()` types should be assignable to their equivalent `set()` type
   * @see https://typescript-eslint.io/rules/related-getter-setter-pairs
   */
  '@typescript-eslint/related-getter-setter-pairs'?: Linter.RuleEntry<[]>;
  /**
   * Require `Array#sort` and `Array#toSorted` calls to always provide a `compareFunction`
   * @see https://typescript-eslint.io/rules/require-array-sort-compare
   */
  '@typescript-eslint/require-array-sort-compare'?: Linter.RuleEntry<TypescriptEslintRequireArraySortCompare>;
  /**
   * Disallow async functions which do not return promises and have no `await` expression
   * @see https://typescript-eslint.io/rules/require-await
   */
  '@typescript-eslint/require-await'?: Linter.RuleEntry<[]>;
  /**
   * Require both operands of addition to be the same type and be `bigint`, `number`, or `string`
   * @see https://typescript-eslint.io/rules/restrict-plus-operands
   */
  '@typescript-eslint/restrict-plus-operands'?: Linter.RuleEntry<TypescriptEslintRestrictPlusOperands>;
  /**
   * Enforce template literal expressions to be of `string` type
   * @see https://typescript-eslint.io/rules/restrict-template-expressions
   */
  '@typescript-eslint/restrict-template-expressions'?: Linter.RuleEntry<TypescriptEslintRestrictTemplateExpressions>;
  /**
   * Enforce consistent awaiting of returned promises
   * @see https://typescript-eslint.io/rules/return-await
   */
  '@typescript-eslint/return-await'?: Linter.RuleEntry<TypescriptEslintReturnAwait>;
  /**
   * Enforce constituents of a type union/intersection to be sorted alphabetically
   * @see https://typescript-eslint.io/rules/sort-type-constituents
   * @deprecated
   */
  '@typescript-eslint/sort-type-constituents'?: Linter.RuleEntry<TypescriptEslintSortTypeConstituents>;
  /**
   * Disallow certain types in boolean expressions
   * @see https://typescript-eslint.io/rules/strict-boolean-expressions
   */
  '@typescript-eslint/strict-boolean-expressions'?: Linter.RuleEntry<TypescriptEslintStrictBooleanExpressions>;
  /**
   * Disallow passing a value-returning function in a position accepting a void function
   * @see https://typescript-eslint.io/rules/strict-void-return
   */
  '@typescript-eslint/strict-void-return'?: Linter.RuleEntry<TypescriptEslintStrictVoidReturn>;
  /**
   * Require switch-case statements to be exhaustive
   * @see https://typescript-eslint.io/rules/switch-exhaustiveness-check
   */
  '@typescript-eslint/switch-exhaustiveness-check'?: Linter.RuleEntry<TypescriptEslintSwitchExhaustivenessCheck>;
  /**
   * Disallow certain triple slash directives in favor of ES6-style import declarations
   * @see https://typescript-eslint.io/rules/triple-slash-reference
   */
  '@typescript-eslint/triple-slash-reference'?: Linter.RuleEntry<TypescriptEslintTripleSlashReference>;
  /**
   * Require type annotations in certain places
   * @see https://typescript-eslint.io/rules/typedef
   * @deprecated
   */
  '@typescript-eslint/typedef'?: Linter.RuleEntry<TypescriptEslintTypedef>;
  /**
   * Enforce unbound methods are called with their expected scope
   * @see https://typescript-eslint.io/rules/unbound-method
   */
  '@typescript-eslint/unbound-method'?: Linter.RuleEntry<TypescriptEslintUnboundMethod>;
  /**
   * Disallow two overloads that could be unified into one with a union or an optional/rest parameter
   * @see https://typescript-eslint.io/rules/unified-signatures
   */
  '@typescript-eslint/unified-signatures'?: Linter.RuleEntry<TypescriptEslintUnifiedSignatures>;
  /**
   * Enforce typing arguments in Promise rejection callbacks as `unknown`
   * @see https://typescript-eslint.io/rules/use-unknown-in-catch-callback-variable
   */
  '@typescript-eslint/use-unknown-in-catch-callback-variable'?: Linter.RuleEntry<[]>;
  /**
   * Enforce getter and setter pairs in objects and classes
   * @see https://eslint.org/docs/latest/rules/accessor-pairs
   */
  'accessor-pairs'?: Linter.RuleEntry<AccessorPairs>;
  /**
   * Enforce linebreaks after opening and before closing array brackets
   * @see https://eslint.org/docs/latest/rules/array-bracket-newline
   * @deprecated
   */
  'array-bracket-newline'?: Linter.RuleEntry<ArrayBracketNewline>;
  /**
   * Enforce consistent spacing inside array brackets
   * @see https://eslint.org/docs/latest/rules/array-bracket-spacing
   * @deprecated
   */
  'array-bracket-spacing'?: Linter.RuleEntry<ArrayBracketSpacing>;
  /**
   * Enforce `return` statements in callbacks of array methods
   * @see https://eslint.org/docs/latest/rules/array-callback-return
   */
  'array-callback-return'?: Linter.RuleEntry<ArrayCallbackReturn>;
  /**
   * Enforce line breaks after each array element
   * @see https://eslint.org/docs/latest/rules/array-element-newline
   * @deprecated
   */
  'array-element-newline'?: Linter.RuleEntry<ArrayElementNewline>;
  /**
   * Require braces around arrow function bodies
   * @see https://eslint.org/docs/latest/rules/arrow-body-style
   */
  'arrow-body-style'?: Linter.RuleEntry<ArrowBodyStyle>;
  /**
   * Require parentheses around arrow function arguments
   * @see https://eslint.org/docs/latest/rules/arrow-parens
   * @deprecated
   */
  'arrow-parens'?: Linter.RuleEntry<ArrowParens>;
  /**
   * Enforce consistent spacing before and after the arrow in arrow functions
   * @see https://eslint.org/docs/latest/rules/arrow-spacing
   * @deprecated
   */
  'arrow-spacing'?: Linter.RuleEntry<ArrowSpacing>;
  /**
   * Enforce the use of variables within the scope they are defined
   * @see https://eslint.org/docs/latest/rules/block-scoped-var
   */
  'block-scoped-var'?: Linter.RuleEntry<[]>;
  /**
   * Disallow or enforce spaces inside of blocks after opening block and before closing block
   * @see https://eslint.org/docs/latest/rules/block-spacing
   * @deprecated
   */
  'block-spacing'?: Linter.RuleEntry<BlockSpacing>;
  /**
   * Enforce consistent brace style for blocks
   * @see https://eslint.org/docs/latest/rules/brace-style
   * @deprecated
   */
  'brace-style'?: Linter.RuleEntry<BraceStyle>;
  /**
   * Require `return` statements after callbacks
   * @see https://eslint.org/docs/latest/rules/callback-return
   * @deprecated
   */
  'callback-return'?: Linter.RuleEntry<CallbackReturn>;
  /**
   * Enforce camelcase naming convention
   * @see https://eslint.org/docs/latest/rules/camelcase
   */
  'camelcase'?: Linter.RuleEntry<Camelcase>;
  /**
   * Enforce or disallow capitalization of the first letter of a comment
   * @see https://eslint.org/docs/latest/rules/capitalized-comments
   */
  'capitalized-comments'?: Linter.RuleEntry<CapitalizedComments>;
  /**
   * Enforce that class methods utilize `this`
   * @see https://eslint.org/docs/latest/rules/class-methods-use-this
   */
  'class-methods-use-this'?: Linter.RuleEntry<ClassMethodsUseThis>;
  /**
   * Require or disallow trailing commas
   * @see https://eslint.org/docs/latest/rules/comma-dangle
   * @deprecated
   */
  'comma-dangle'?: Linter.RuleEntry<CommaDangle>;
  /**
   * Enforce consistent spacing before and after commas
   * @see https://eslint.org/docs/latest/rules/comma-spacing
   * @deprecated
   */
  'comma-spacing'?: Linter.RuleEntry<CommaSpacing>;
  /**
   * Enforce consistent comma style
   * @see https://eslint.org/docs/latest/rules/comma-style
   * @deprecated
   */
  'comma-style'?: Linter.RuleEntry<CommaStyle>;
  /**
   * Enforce a maximum cyclomatic complexity allowed in a program
   * @see https://eslint.org/docs/latest/rules/complexity
   */
  'complexity'?: Linter.RuleEntry<Complexity>;
  /**
   * Enforce consistent spacing inside computed property brackets
   * @see https://eslint.org/docs/latest/rules/computed-property-spacing
   * @deprecated
   */
  'computed-property-spacing'?: Linter.RuleEntry<ComputedPropertySpacing>;
  /**
   * Require `return` statements to either always or never specify values
   * @see https://eslint.org/docs/latest/rules/consistent-return
   */
  'consistent-return'?: Linter.RuleEntry<ConsistentReturn>;
  /**
   * Enforce consistent naming when capturing the current execution context
   * @see https://eslint.org/docs/latest/rules/consistent-this
   */
  'consistent-this'?: Linter.RuleEntry<ConsistentThis>;
  /**
   * Require `super()` calls in constructors
   * @see https://eslint.org/docs/latest/rules/constructor-super
   */
  'constructor-super'?: Linter.RuleEntry<[]>;
  /**
   * Enforce consistent brace style for all control statements
   * @see https://eslint.org/docs/latest/rules/curly
   */
  'curly'?: Linter.RuleEntry<Curly>;
  /**
   * Require `default` cases in `switch` statements
   * @see https://eslint.org/docs/latest/rules/default-case
   */
  'default-case'?: Linter.RuleEntry<DefaultCase>;
  /**
   * Enforce `default` clauses in `switch` statements to be last
   * @see https://eslint.org/docs/latest/rules/default-case-last
   */
  'default-case-last'?: Linter.RuleEntry<[]>;
  /**
   * Enforce default parameters to be last
   * @see https://eslint.org/docs/latest/rules/default-param-last
   */
  'default-param-last'?: Linter.RuleEntry<[]>;
  /**
   * Enforce consistent newlines before and after dots
   * @see https://eslint.org/docs/latest/rules/dot-location
   * @deprecated
   */
  'dot-location'?: Linter.RuleEntry<DotLocation>;
  /**
   * Enforce dot notation whenever possible
   * @see https://eslint.org/docs/latest/rules/dot-notation
   */
  'dot-notation'?: Linter.RuleEntry<DotNotation>;
  /**
   * Require or disallow newline at the end of files
   * @see https://eslint.org/docs/latest/rules/eol-last
   * @deprecated
   */
  'eol-last'?: Linter.RuleEntry<EolLast>;
  /**
   * Require the use of `===` and `!==`
   * @see https://eslint.org/docs/latest/rules/eqeqeq
   */
  'eqeqeq'?: Linter.RuleEntry<Eqeqeq>;
  /**
   * Enforce `for` loop update clause moving the counter in the right direction
   * @see https://eslint.org/docs/latest/rules/for-direction
   */
  'for-direction'?: Linter.RuleEntry<[]>;
  /**
   * Require or disallow spacing between function identifiers and their invocations
   * @see https://eslint.org/docs/latest/rules/func-call-spacing
   * @deprecated
   */
  'func-call-spacing'?: Linter.RuleEntry<FuncCallSpacing>;
  /**
   * Require function names to match the name of the variable or property to which they are assigned
   * @see https://eslint.org/docs/latest/rules/func-name-matching
   */
  'func-name-matching'?: Linter.RuleEntry<FuncNameMatching>;
  /**
   * Require or disallow named `function` expressions
   * @see https://eslint.org/docs/latest/rules/func-names
   */
  'func-names'?: Linter.RuleEntry<FuncNames>;
  /**
   * Enforce the consistent use of either `function` declarations or expressions assigned to variables
   * @see https://eslint.org/docs/latest/rules/func-style
   */
  'func-style'?: Linter.RuleEntry<FuncStyle>;
  /**
   * Enforce line breaks between arguments of a function call
   * @see https://eslint.org/docs/latest/rules/function-call-argument-newline
   * @deprecated
   */
  'function-call-argument-newline'?: Linter.RuleEntry<FunctionCallArgumentNewline>;
  /**
   * Enforce consistent line breaks inside function parentheses
   * @see https://eslint.org/docs/latest/rules/function-paren-newline
   * @deprecated
   */
  'function-paren-newline'?: Linter.RuleEntry<FunctionParenNewline>;
  /**
   * Enforce consistent spacing around `*` operators in generator functions
   * @see https://eslint.org/docs/latest/rules/generator-star-spacing
   * @deprecated
   */
  'generator-star-spacing'?: Linter.RuleEntry<GeneratorStarSpacing>;
  /**
   * Enforce `return` statements in getters
   * @see https://eslint.org/docs/latest/rules/getter-return
   */
  'getter-return'?: Linter.RuleEntry<GetterReturn>;
  /**
   * Require `require()` calls to be placed at top-level module scope
   * @see https://eslint.org/docs/latest/rules/global-require
   * @deprecated
   */
  'global-require'?: Linter.RuleEntry<[]>;
  /**
   * Require grouped accessor pairs in object literals and classes
   * @see https://eslint.org/docs/latest/rules/grouped-accessor-pairs
   */
  'grouped-accessor-pairs'?: Linter.RuleEntry<GroupedAccessorPairs>;
  /**
   * Require `for-in` loops to include an `if` statement
   * @see https://eslint.org/docs/latest/rules/guard-for-in
   */
  'guard-for-in'?: Linter.RuleEntry<[]>;
  /**
   * Require error handling in callbacks
   * @see https://eslint.org/docs/latest/rules/handle-callback-err
   * @deprecated
   */
  'handle-callback-err'?: Linter.RuleEntry<HandleCallbackErr>;
  /**
   * Disallow specified identifiers
   * @see https://eslint.org/docs/latest/rules/id-blacklist
   * @deprecated
   */
  'id-blacklist'?: Linter.RuleEntry<IdBlacklist>;
  /**
   * Disallow specified identifiers
   * @see https://eslint.org/docs/latest/rules/id-denylist
   */
  'id-denylist'?: Linter.RuleEntry<IdDenylist>;
  /**
   * Enforce minimum and maximum identifier lengths
   * @see https://eslint.org/docs/latest/rules/id-length
   */
  'id-length'?: Linter.RuleEntry<IdLength>;
  /**
   * Require identifiers to match a specified regular expression
   * @see https://eslint.org/docs/latest/rules/id-match
   */
  'id-match'?: Linter.RuleEntry<IdMatch>;
  /**
   * Enforce the location of arrow function bodies
   * @see https://eslint.org/docs/latest/rules/implicit-arrow-linebreak
   * @deprecated
   */
  'implicit-arrow-linebreak'?: Linter.RuleEntry<ImplicitArrowLinebreak>;
  /**
   * Enforce or ban the use of inline type-only markers for named imports.
   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.2/docs/rules/consistent-type-specifier-style.md
   */
  'import/consistent-type-specifier-style'?: Linter.RuleEntry<ImportConsistentTypeSpecifierStyle>;
  /**
   * Ensure a default export is present, given a default import.
   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.2/docs/rules/default.md
   */
  'import/default'?: Linter.RuleEntry<[]>;
  /**
   * Enforce a leading comment with the webpackChunkName for dynamic imports.
   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.2/docs/rules/dynamic-import-chunkname.md
   */
  'import/dynamic-import-chunkname'?: Linter.RuleEntry<ImportDynamicImportChunkname>;
  /**
   * Forbid any invalid exports, i.e. re-export of the same name.
   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.2/docs/rules/export.md
   */
  'import/export'?: Linter.RuleEntry<[]>;
  /**
   * Ensure all exports appear after other statements.
   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.2/docs/rules/exports-last.md
   */
  'import/exports-last'?: Linter.RuleEntry<[]>;
  /**
   * Ensure consistent use of file extension within the import path.
   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.2/docs/rules/extensions.md
   */
  'import/extensions'?: Linter.RuleEntry<ImportExtensions>;
  /**
   * Ensure all imports appear before other statements.
   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.2/docs/rules/first.md
   */
  'import/first'?: Linter.RuleEntry<ImportFirst>;
  /**
   * Prefer named exports to be grouped together in a single export declaration.
   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.2/docs/rules/group-exports.md
   */
  'import/group-exports'?: Linter.RuleEntry<[]>;
  /**
   * Replaced by `import-x/first`.
   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.2/docs/rules/imports-first.md
   * @deprecated
   */
  'import/imports-first'?: Linter.RuleEntry<ImportImportsFirst>;
  /**
   * Enforce the maximum number of dependencies a module can have.
   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.2/docs/rules/max-dependencies.md
   */
  'import/max-dependencies'?: Linter.RuleEntry<ImportMaxDependencies>;
  /**
   * Ensure named imports correspond to a named export in the remote file.
   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.2/docs/rules/named.md
   */
  'import/named'?: Linter.RuleEntry<ImportNamed>;
  /**
   * Ensure imported namespaces contain dereferenced properties as they are dereferenced.
   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.2/docs/rules/namespace.md
   */
  'import/namespace'?: Linter.RuleEntry<ImportNamespace>;
  /**
   * Enforce a newline after import statements.
   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.2/docs/rules/newline-after-import.md
   */
  'import/newline-after-import'?: Linter.RuleEntry<ImportNewlineAfterImport>;
  /**
   * Forbid import of modules using absolute paths.
   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.2/docs/rules/no-absolute-path.md
   */
  'import/no-absolute-path'?: Linter.RuleEntry<ImportNoAbsolutePath>;
  /**
   * Forbid AMD `require` and `define` calls.
   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.2/docs/rules/no-amd.md
   */
  'import/no-amd'?: Linter.RuleEntry<[]>;
  /**
   * Forbid anonymous values as default exports.
   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.2/docs/rules/no-anonymous-default-export.md
   */
  'import/no-anonymous-default-export'?: Linter.RuleEntry<ImportNoAnonymousDefaultExport>;
  /**
   * Forbid CommonJS `require` calls and `module.exports` or `exports.*`.
   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.2/docs/rules/no-commonjs.md
   */
  'import/no-commonjs'?: Linter.RuleEntry<ImportNoCommonjs>;
  /**
   * Forbid a module from importing a module with a dependency path back to itself.
   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.2/docs/rules/no-cycle.md
   */
  'import/no-cycle'?: Linter.RuleEntry<ImportNoCycle>;
  /**
   * Forbid default exports.
   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.2/docs/rules/no-default-export.md
   */
  'import/no-default-export'?: Linter.RuleEntry<[]>;
  /**
   * Forbid imported names marked with `@deprecated` documentation tag.
   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.2/docs/rules/no-deprecated.md
   */
  'import/no-deprecated'?: Linter.RuleEntry<[]>;
  /**
   * Forbid repeated import of the same module in multiple places.
   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.2/docs/rules/no-duplicates.md
   */
  'import/no-duplicates'?: Linter.RuleEntry<ImportNoDuplicates>;
  /**
   * Forbid `require()` calls with expressions.
   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.2/docs/rules/no-dynamic-require.md
   */
  'import/no-dynamic-require'?: Linter.RuleEntry<ImportNoDynamicRequire>;
  /**
   * Forbid empty named import blocks.
   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.2/docs/rules/no-empty-named-blocks.md
   */
  'import/no-empty-named-blocks'?: Linter.RuleEntry<[]>;
  /**
   * Forbid the use of extraneous packages.
   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.2/docs/rules/no-extraneous-dependencies.md
   */
  'import/no-extraneous-dependencies'?: Linter.RuleEntry<ImportNoExtraneousDependencies>;
  /**
   * Forbid import statements with CommonJS module.exports.
   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.2/docs/rules/no-import-module-exports.md
   */
  'import/no-import-module-exports'?: Linter.RuleEntry<ImportNoImportModuleExports>;
  /**
   * Forbid importing the submodules of other modules.
   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.2/docs/rules/no-internal-modules.md
   */
  'import/no-internal-modules'?: Linter.RuleEntry<ImportNoInternalModules>;
  /**
   * Forbid the use of mutable exports with `var` or `let`.
   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.2/docs/rules/no-mutable-exports.md
   */
  'import/no-mutable-exports'?: Linter.RuleEntry<[]>;
  /**
   * Forbid use of exported name as identifier of default export.
   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.2/docs/rules/no-named-as-default.md
   */
  'import/no-named-as-default'?: Linter.RuleEntry<[]>;
  /**
   * Forbid use of exported name as property of default export.
   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.2/docs/rules/no-named-as-default-member.md
   */
  'import/no-named-as-default-member'?: Linter.RuleEntry<[]>;
  /**
   * Forbid named default exports.
   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.2/docs/rules/no-named-default.md
   */
  'import/no-named-default'?: Linter.RuleEntry<[]>;
  /**
   * Forbid named exports.
   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.2/docs/rules/no-named-export.md
   */
  'import/no-named-export'?: Linter.RuleEntry<[]>;
  /**
   * Forbid namespace (a.k.a. "wildcard" `*`) imports.
   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.2/docs/rules/no-namespace.md
   */
  'import/no-namespace'?: Linter.RuleEntry<ImportNoNamespace>;
  /**
   * Forbid Node.js builtin modules.
   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.2/docs/rules/no-nodejs-modules.md
   */
  'import/no-nodejs-modules'?: Linter.RuleEntry<ImportNoNodejsModules>;
  /**
   * Forbid importing packages through relative paths.
   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.2/docs/rules/no-relative-packages.md
   */
  'import/no-relative-packages'?: Linter.RuleEntry<ImportNoRelativePackages>;
  /**
   * Forbid importing modules from parent directories.
   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.2/docs/rules/no-relative-parent-imports.md
   */
  'import/no-relative-parent-imports'?: Linter.RuleEntry<ImportNoRelativeParentImports>;
  /**
   * Forbid importing a default export by a different name.
   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.2/docs/rules/no-rename-default.md
   */
  'import/no-rename-default'?: Linter.RuleEntry<ImportNoRenameDefault>;
  /**
   * Enforce which files can be imported in a given folder.
   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.2/docs/rules/no-restricted-paths.md
   */
  'import/no-restricted-paths'?: Linter.RuleEntry<ImportNoRestrictedPaths>;
  /**
   * Forbid a module from importing itself.
   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.2/docs/rules/no-self-import.md
   */
  'import/no-self-import'?: Linter.RuleEntry<[]>;
  /**
   * Forbid unassigned imports.
   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.2/docs/rules/no-unassigned-import.md
   */
  'import/no-unassigned-import'?: Linter.RuleEntry<ImportNoUnassignedImport>;
  /**
   * Ensure imports point to a file/module that can be resolved.
   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.2/docs/rules/no-unresolved.md
   */
  'import/no-unresolved'?: Linter.RuleEntry<ImportNoUnresolved>;
  /**
   * Forbid modules without exports, or exports without matching import in another module.
   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.2/docs/rules/no-unused-modules.md
   */
  'import/no-unused-modules'?: Linter.RuleEntry<ImportNoUnusedModules>;
  /**
   * Forbid unnecessary path segments in import and require statements.
   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.2/docs/rules/no-useless-path-segments.md
   */
  'import/no-useless-path-segments'?: Linter.RuleEntry<ImportNoUselessPathSegments>;
  /**
   * Forbid webpack loader syntax in imports.
   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.2/docs/rules/no-webpack-loader-syntax.md
   */
  'import/no-webpack-loader-syntax'?: Linter.RuleEntry<[]>;
  /**
   * Enforce a convention in module import order.
   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.2/docs/rules/order.md
   */
  'import/order'?: Linter.RuleEntry<ImportOrder>;
  /**
   * Prefer a default export if module exports a single name or multiple names.
   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.2/docs/rules/prefer-default-export.md
   */
  'import/prefer-default-export'?: Linter.RuleEntry<ImportPreferDefaultExport>;
  /**
   * Enforce using namespace imports for specific modules, like `react`/`react-dom`, etc.
   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.2/docs/rules/prefer-namespace-import.md
   */
  'import/prefer-namespace-import'?: Linter.RuleEntry<ImportPreferNamespaceImport>;
  /**
   * Forbid potentially ambiguous parse goal (`script` vs. `module`).
   * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.16.2/docs/rules/unambiguous.md
   */
  'import/unambiguous'?: Linter.RuleEntry<[]>;
  /**
   * Enforce consistent indentation
   * @see https://eslint.org/docs/latest/rules/indent
   * @deprecated
   */
  'indent'?: Linter.RuleEntry<Indent>;
  /**
   * Enforce consistent indentation
   * @see https://eslint.org/docs/latest/rules/indent-legacy
   * @deprecated
   */
  'indent-legacy'?: Linter.RuleEntry<IndentLegacy>;
  /**
   * Require or disallow initialization in variable declarations
   * @see https://eslint.org/docs/latest/rules/init-declarations
   */
  'init-declarations'?: Linter.RuleEntry<InitDeclarations>;
  /**
   * Checks that `@access` tags have a valid value.
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-access.md#repos-sticky-header
   */
  'jsdoc/check-access'?: Linter.RuleEntry<[]>;
  /**
   * Reports invalid alignment of JSDoc block asterisks.
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-alignment.md#repos-sticky-header
   */
  'jsdoc/check-alignment'?: Linter.RuleEntry<JsdocCheckAlignment>;
  /**
   * @deprecated - Use `getJsdocProcessorPlugin` processor; ensures that (JavaScript) samples within `@example` tags adhere to ESLint rules.
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-examples.md#repos-sticky-header
   */
  'jsdoc/check-examples'?: Linter.RuleEntry<JsdocCheckExamples>;
  /**
   * Reports invalid padding inside JSDoc blocks.
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-indentation.md#repos-sticky-header
   */
  'jsdoc/check-indentation'?: Linter.RuleEntry<JsdocCheckIndentation>;
  /**
   * Reports invalid alignment of JSDoc block lines.
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-line-alignment.md#repos-sticky-header
   */
  'jsdoc/check-line-alignment'?: Linter.RuleEntry<JsdocCheckLineAlignment>;
  /**
   * Checks for dupe `@param` names, that nested param names have roots, and that parameter names in function declarations match JSDoc param names.
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-param-names.md#repos-sticky-header
   */
  'jsdoc/check-param-names'?: Linter.RuleEntry<JsdocCheckParamNames>;
  /**
   * Ensures that property names in JSDoc are not duplicated on the same block and that nested properties have defined roots.
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-property-names.md#repos-sticky-header
   */
  'jsdoc/check-property-names'?: Linter.RuleEntry<JsdocCheckPropertyNames>;
  /**
   * Reports against syntax not valid for the mode (e.g., Google Closure Compiler in non-Closure mode).
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-syntax.md#repos-sticky-header
   */
  'jsdoc/check-syntax'?: Linter.RuleEntry<[]>;
  /**
   * Reports invalid block tag names.
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-tag-names.md#repos-sticky-header
   */
  'jsdoc/check-tag-names'?: Linter.RuleEntry<JsdocCheckTagNames>;
  /**
   * Checks that any `@template` names are actually used in the connected `@typedef` or type alias.
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-template-names.md#repos-sticky-header
   */
  'jsdoc/check-template-names'?: Linter.RuleEntry<[]>;
  /**
   * Reports types deemed invalid (customizable and with defaults, for preventing and/or recommending replacements).
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-types.md#repos-sticky-header
   */
  'jsdoc/check-types'?: Linter.RuleEntry<JsdocCheckTypes>;
  /**
   * This rule checks the values for a handful of tags: `@version`, `@since`, `@license` and `@author`.
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-values.md#repos-sticky-header
   */
  'jsdoc/check-values'?: Linter.RuleEntry<JsdocCheckValues>;
  /**
   * Converts non-JSDoc comments preceding or following nodes into JSDoc ones
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/convert-to-jsdoc-comments.md#repos-sticky-header
   */
  'jsdoc/convert-to-jsdoc-comments'?: Linter.RuleEntry<JsdocConvertToJsdocComments>;
  /**
   * Checks tags that are expected to be empty (e.g., `@abstract` or `@async`), reporting if they have content
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/empty-tags.md#repos-sticky-header
   */
  'jsdoc/empty-tags'?: Linter.RuleEntry<JsdocEmptyTags>;
  /**
   * Reports use of JSDoc tags in non-tag positions (in the default "typescript" mode).
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/escape-inline-tags.md#repos-sticky-header
   */
  'jsdoc/escape-inline-tags'?: Linter.RuleEntry<JsdocEscapeInlineTags>;
  /**
   * Prohibits use of `@implements` on non-constructor functions (to enforce the tag only being used on classes/constructors).
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/implements-on-classes.md#repos-sticky-header
   */
  'jsdoc/implements-on-classes'?: Linter.RuleEntry<JsdocImplementsOnClasses>;
  /**
   * Reports if JSDoc `import()` statements point to a package which is not listed in `dependencies` or `devDependencies`
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/imports-as-dependencies.md#repos-sticky-header
   */
  'jsdoc/imports-as-dependencies'?: Linter.RuleEntry<[]>;
  /**
   * This rule reports doc comments that only restate their attached name.
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/informative-docs.md#repos-sticky-header
   */
  'jsdoc/informative-docs'?: Linter.RuleEntry<JsdocInformativeDocs>;
  /**
   * Enforces minimum number of newlines before JSDoc comment blocks
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/lines-before-block.md#repos-sticky-header
   */
  'jsdoc/lines-before-block'?: Linter.RuleEntry<JsdocLinesBeforeBlock>;
  /**
   * Enforces a regular expression pattern on descriptions.
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/match-description.md#repos-sticky-header
   */
  'jsdoc/match-description'?: Linter.RuleEntry<JsdocMatchDescription>;
  /**
   * Reports the name portion of a JSDoc tag if matching or not matching a given regular expression.
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/match-name.md#repos-sticky-header
   */
  'jsdoc/match-name'?: Linter.RuleEntry<JsdocMatchName>;
  /**
   * Controls how and whether JSDoc blocks can be expressed as single or multiple line blocks.
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/multiline-blocks.md#repos-sticky-header
   */
  'jsdoc/multiline-blocks'?: Linter.RuleEntry<JsdocMultilineBlocks>;
  /**
   * This rule checks for multi-line-style comments which fail to meet the criteria of a JSDoc block.
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-bad-blocks.md#repos-sticky-header
   */
  'jsdoc/no-bad-blocks'?: Linter.RuleEntry<JsdocNoBadBlocks>;
  /**
   * If tags are present, this rule will prevent empty lines in the block description. If no tags are present, this rule will prevent extra empty lines in the block description.
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-blank-block-descriptions.md#repos-sticky-header
   */
  'jsdoc/no-blank-block-descriptions'?: Linter.RuleEntry<[]>;
  /**
   * Removes empty blocks with nothing but possibly line breaks
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-blank-blocks.md#repos-sticky-header
   */
  'jsdoc/no-blank-blocks'?: Linter.RuleEntry<JsdocNoBlankBlocks>;
  /**
   * This rule reports defaults being used on the relevant portion of `@param` or `@default`.
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-defaults.md#repos-sticky-header
   */
  'jsdoc/no-defaults'?: Linter.RuleEntry<JsdocNoDefaults>;
  /**
   * Reports when certain comment structures are always expected.
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-missing-syntax.md#repos-sticky-header
   */
  'jsdoc/no-missing-syntax'?: Linter.RuleEntry<JsdocNoMissingSyntax>;
  /**
   * Prevents use of multiple asterisks at the beginning of lines.
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-multi-asterisks.md#repos-sticky-header
   */
  'jsdoc/no-multi-asterisks'?: Linter.RuleEntry<JsdocNoMultiAsterisks>;
  /**
   * Reports when certain comment structures are present.
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-restricted-syntax.md#repos-sticky-header
   */
  'jsdoc/no-restricted-syntax'?: Linter.RuleEntry<JsdocNoRestrictedSyntax>;
  /**
   * This rule reports types being used on `@param` or `@returns` (redundant with TypeScript).
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-types.md#repos-sticky-header
   */
  'jsdoc/no-types'?: Linter.RuleEntry<JsdocNoTypes>;
  /**
   * Besides some expected built-in types, prohibits any types not specified as globals or within `@typedef`.
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-undefined-types.md#repos-sticky-header
   */
  'jsdoc/no-undefined-types'?: Linter.RuleEntry<JsdocNoUndefinedTypes>;
  /**
   * Prefer `@import` tags to inline `import()` statements.
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/prefer-import-tag.md#repos-sticky-header
   */
  'jsdoc/prefer-import-tag'?: Linter.RuleEntry<JsdocPreferImportTag>;
  /**
   * Reports use of `any` or `*` type
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/reject-any-type.md#repos-sticky-header
   */
  'jsdoc/reject-any-type'?: Linter.RuleEntry<[]>;
  /**
   * Reports use of `Function` type
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/reject-function-type.md#repos-sticky-header
   */
  'jsdoc/reject-function-type'?: Linter.RuleEntry<[]>;
  /**
   * Requires that each JSDoc line starts with an `*`.
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-asterisk-prefix.md#repos-sticky-header
   */
  'jsdoc/require-asterisk-prefix'?: Linter.RuleEntry<JsdocRequireAsteriskPrefix>;
  /**
   * Requires that all functions (and potentially other contexts) have a description.
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-description.md#repos-sticky-header
   */
  'jsdoc/require-description'?: Linter.RuleEntry<JsdocRequireDescription>;
  /**
   * Requires that block description, explicit `@description`, and `@param`/`@returns` tag descriptions are written in complete sentences.
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-description-complete-sentence.md#repos-sticky-header
   */
  'jsdoc/require-description-complete-sentence'?: Linter.RuleEntry<JsdocRequireDescriptionCompleteSentence>;
  /**
   * Requires that all functions (and potentially other contexts) have examples.
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-example.md#repos-sticky-header
   */
  'jsdoc/require-example'?: Linter.RuleEntry<JsdocRequireExample>;
  /**
   * Checks that all files have one `@file`, `@fileoverview`, or `@overview` tag at the beginning of the file.
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-file-overview.md#repos-sticky-header
   */
  'jsdoc/require-file-overview'?: Linter.RuleEntry<JsdocRequireFileOverview>;
  /**
   * Requires a hyphen before the `@param` description (and optionally before `@property` descriptions).
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-hyphen-before-param-description.md#repos-sticky-header
   */
  'jsdoc/require-hyphen-before-param-description'?: Linter.RuleEntry<JsdocRequireHyphenBeforeParamDescription>;
  /**
   * Checks for presence of JSDoc comments, on functions and potentially other contexts (optionally limited to exports).
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-jsdoc.md#repos-sticky-header
   */
  'jsdoc/require-jsdoc'?: Linter.RuleEntry<JsdocRequireJsdoc>;
  /**
   * Requires a description for `@next` tags
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-next-description.md#repos-sticky-header
   */
  'jsdoc/require-next-description'?: Linter.RuleEntry<[]>;
  /**
   * Requires a type for `@next` tags
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-next-type.md#repos-sticky-header
   */
  'jsdoc/require-next-type'?: Linter.RuleEntry<[]>;
  /**
   * Requires that all function parameters are documented with a `@param` tag.
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-param.md#repos-sticky-header
   */
  'jsdoc/require-param'?: Linter.RuleEntry<JsdocRequireParam>;
  /**
   * Requires that each `@param` tag has a `description` value.
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-param-description.md#repos-sticky-header
   */
  'jsdoc/require-param-description'?: Linter.RuleEntry<JsdocRequireParamDescription>;
  /**
   * Requires that all `@param` tags have names.
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-param-name.md#repos-sticky-header
   */
  'jsdoc/require-param-name'?: Linter.RuleEntry<JsdocRequireParamName>;
  /**
   * Requires that each `@param` tag has a type value (in curly brackets).
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-param-type.md#repos-sticky-header
   */
  'jsdoc/require-param-type'?: Linter.RuleEntry<JsdocRequireParamType>;
  /**
   * Requires that all `@typedef` and `@namespace` tags have `@property` when their type is a plain `object`, `Object`, or `PlainObject`.
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-property.md#repos-sticky-header
   */
  'jsdoc/require-property'?: Linter.RuleEntry<[]>;
  /**
   * Requires that each `@property` tag has a `description` value.
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-property-description.md#repos-sticky-header
   */
  'jsdoc/require-property-description'?: Linter.RuleEntry<[]>;
  /**
   * Requires that all `@property` tags have names.
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-property-name.md#repos-sticky-header
   */
  'jsdoc/require-property-name'?: Linter.RuleEntry<[]>;
  /**
   * Requires that each `@property` tag has a type value (in curly brackets).
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-property-type.md#repos-sticky-header
   */
  'jsdoc/require-property-type'?: Linter.RuleEntry<[]>;
  /**
   * Requires that Promise rejections are documented with `@rejects` tags.
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-rejects.md#repos-sticky-header
   */
  'jsdoc/require-rejects'?: Linter.RuleEntry<JsdocRequireRejects>;
  /**
   * Requires that returns are documented with `@returns`.
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-returns.md#repos-sticky-header
   */
  'jsdoc/require-returns'?: Linter.RuleEntry<JsdocRequireReturns>;
  /**
   * Requires a return statement in function body if a `@returns` tag is specified in JSDoc comment(and reports if multiple `@returns` tags are present).
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-returns-check.md#repos-sticky-header
   */
  'jsdoc/require-returns-check'?: Linter.RuleEntry<JsdocRequireReturnsCheck>;
  /**
   * Requires that the `@returns` tag has a `description` value (not including `void`/`undefined` type returns).
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-returns-description.md#repos-sticky-header
   */
  'jsdoc/require-returns-description'?: Linter.RuleEntry<JsdocRequireReturnsDescription>;
  /**
   * Requires that `@returns` tag has type value (in curly brackets).
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-returns-type.md#repos-sticky-header
   */
  'jsdoc/require-returns-type'?: Linter.RuleEntry<JsdocRequireReturnsType>;
  /**
   * Requires tags be present, optionally for specific contexts
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-tags.md#repos-sticky-header
   */
  'jsdoc/require-tags'?: Linter.RuleEntry<JsdocRequireTags>;
  /**
   * Requires `@template` tags be present when type parameters are used.
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-template.md#repos-sticky-header
   */
  'jsdoc/require-template'?: Linter.RuleEntry<JsdocRequireTemplate>;
  /**
   * Requires a description for `@template` tags
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-template-description.md#repos-sticky-header
   */
  'jsdoc/require-template-description'?: Linter.RuleEntry<[]>;
  /**
   * Requires that throw statements are documented with `@throws` tags.
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-throws.md#repos-sticky-header
   */
  'jsdoc/require-throws'?: Linter.RuleEntry<JsdocRequireThrows>;
  /**
   * Requires a description for `@throws` tags
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-throws-description.md#repos-sticky-header
   */
  'jsdoc/require-throws-description'?: Linter.RuleEntry<[]>;
  /**
   * Requires a type for `@throws` tags
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-throws-type.md#repos-sticky-header
   */
  'jsdoc/require-throws-type'?: Linter.RuleEntry<[]>;
  /**
   * Requires yields are documented with `@yields` tags.
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-yields.md#repos-sticky-header
   */
  'jsdoc/require-yields'?: Linter.RuleEntry<JsdocRequireYields>;
  /**
   * Ensures that if a `@yields` is present that a `yield` (or `yield` with a value) is present in the function body (or that if a `@next` is present that there is a yield with a return value present).
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-yields-check.md#repos-sticky-header
   */
  'jsdoc/require-yields-check'?: Linter.RuleEntry<JsdocRequireYieldsCheck>;
  /**
   * Requires a description for `@yields` tags
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-yields-description.md#repos-sticky-header
   */
  'jsdoc/require-yields-description'?: Linter.RuleEntry<[]>;
  /**
   * Requires a type for `@yields` tags
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-yields-type.md#repos-sticky-header
   */
  'jsdoc/require-yields-type'?: Linter.RuleEntry<[]>;
  /**
   * Sorts tags by a specified sequence according to tag name, optionally adding line breaks between tag groups.
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/sort-tags.md#repos-sticky-header
   */
  'jsdoc/sort-tags'?: Linter.RuleEntry<JsdocSortTags>;
  /**
   * Enforces lines (or no lines) before, after, or between tags.
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/tag-lines.md#repos-sticky-header
   */
  'jsdoc/tag-lines'?: Linter.RuleEntry<JsdocTagLines>;
  /**
   * Auto-escape certain characters that are input within block and tag descriptions.
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/text-escaping.md#repos-sticky-header
   */
  'jsdoc/text-escaping'?: Linter.RuleEntry<JsdocTextEscaping>;
  /**
   * Prefers either function properties or method signatures
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/ts-method-signature-style.md#repos-sticky-header
   */
  'jsdoc/ts-method-signature-style'?: Linter.RuleEntry<JsdocTsMethodSignatureStyle>;
  /**
   * Warns against use of the empty object type
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/ts-no-empty-object-type.md#repos-sticky-header
   */
  'jsdoc/ts-no-empty-object-type'?: Linter.RuleEntry<[]>;
  /**
   * Catches unnecessary template expressions such as string expressions within a template literal.
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/ts-no-unnecessary-template-expression.md#repos-sticky-header
   */
  'jsdoc/ts-no-unnecessary-template-expression'?: Linter.RuleEntry<JsdocTsNoUnnecessaryTemplateExpression>;
  /**
   * Prefers function types over call signatures when there are no other properties.
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/ts-prefer-function-type.md#repos-sticky-header
   */
  'jsdoc/ts-prefer-function-type'?: Linter.RuleEntry<JsdocTsPreferFunctionType>;
  /**
   * Formats JSDoc type values.
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/type-formatting.md#repos-sticky-header
   */
  'jsdoc/type-formatting'?: Linter.RuleEntry<JsdocTypeFormatting>;
  /**
   * Requires all types/namepaths to be valid JSDoc, Closure compiler, or TypeScript types (configurable in settings).
   * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/valid-types.md#repos-sticky-header
   */
  'jsdoc/valid-types'?: Linter.RuleEntry<JsdocValidTypes>;
  /**
   * Enforce the consistent use of either double or single quotes in JSX attributes
   * @see https://eslint.org/docs/latest/rules/jsx-quotes
   * @deprecated
   */
  'jsx-quotes'?: Linter.RuleEntry<JsxQuotes>;
  /**
   * Enforce consistent spacing between keys and values in object literal properties
   * @see https://eslint.org/docs/latest/rules/key-spacing
   * @deprecated
   */
  'key-spacing'?: Linter.RuleEntry<KeySpacing>;
  /**
   * Enforce consistent spacing before and after keywords
   * @see https://eslint.org/docs/latest/rules/keyword-spacing
   * @deprecated
   */
  'keyword-spacing'?: Linter.RuleEntry<KeywordSpacing>;
  /**
   * Enforce position of line comments
   * @see https://eslint.org/docs/latest/rules/line-comment-position
   * @deprecated
   */
  'line-comment-position'?: Linter.RuleEntry<LineCommentPosition>;
  /**
   * Enforce consistent linebreak style
   * @see https://eslint.org/docs/latest/rules/linebreak-style
   * @deprecated
   */
  'linebreak-style'?: Linter.RuleEntry<LinebreakStyle>;
  /**
   * Require empty lines around comments
   * @see https://eslint.org/docs/latest/rules/lines-around-comment
   * @deprecated
   */
  'lines-around-comment'?: Linter.RuleEntry<LinesAroundComment>;
  /**
   * Require or disallow newlines around directives
   * @see https://eslint.org/docs/latest/rules/lines-around-directive
   * @deprecated
   */
  'lines-around-directive'?: Linter.RuleEntry<LinesAroundDirective>;
  /**
   * Require or disallow an empty line between class members
   * @see https://eslint.org/docs/latest/rules/lines-between-class-members
   * @deprecated
   */
  'lines-between-class-members'?: Linter.RuleEntry<LinesBetweenClassMembers>;
  /**
   * Require or disallow logical assignment operator shorthand
   * @see https://eslint.org/docs/latest/rules/logical-assignment-operators
   */
  'logical-assignment-operators'?: Linter.RuleEntry<LogicalAssignmentOperators>;
  /**
   * Enforce a maximum number of classes per file
   * @see https://eslint.org/docs/latest/rules/max-classes-per-file
   */
  'max-classes-per-file'?: Linter.RuleEntry<MaxClassesPerFile>;
  /**
   * Enforce a maximum depth that blocks can be nested
   * @see https://eslint.org/docs/latest/rules/max-depth
   */
  'max-depth'?: Linter.RuleEntry<MaxDepth>;
  /**
   * Enforce a maximum line length
   * @see https://eslint.org/docs/latest/rules/max-len
   * @deprecated
   */
  'max-len'?: Linter.RuleEntry<MaxLen>;
  /**
   * Enforce a maximum number of lines per file
   * @see https://eslint.org/docs/latest/rules/max-lines
   */
  'max-lines'?: Linter.RuleEntry<MaxLines>;
  /**
   * Enforce a maximum number of lines of code in a function
   * @see https://eslint.org/docs/latest/rules/max-lines-per-function
   */
  'max-lines-per-function'?: Linter.RuleEntry<MaxLinesPerFunction>;
  /**
   * Enforce a maximum depth that callbacks can be nested
   * @see https://eslint.org/docs/latest/rules/max-nested-callbacks
   */
  'max-nested-callbacks'?: Linter.RuleEntry<MaxNestedCallbacks>;
  /**
   * Enforce a maximum number of parameters in function definitions
   * @see https://eslint.org/docs/latest/rules/max-params
   */
  'max-params'?: Linter.RuleEntry<MaxParams>;
  /**
   * Enforce a maximum number of statements allowed in function blocks
   * @see https://eslint.org/docs/latest/rules/max-statements
   */
  'max-statements'?: Linter.RuleEntry<MaxStatements>;
  /**
   * Enforce a maximum number of statements allowed per line
   * @see https://eslint.org/docs/latest/rules/max-statements-per-line
   * @deprecated
   */
  'max-statements-per-line'?: Linter.RuleEntry<MaxStatementsPerLine>;
  /**
   * Enforce a particular style for multiline comments
   * @see https://eslint.org/docs/latest/rules/multiline-comment-style
   * @deprecated
   */
  'multiline-comment-style'?: Linter.RuleEntry<MultilineCommentStyle>;
  /**
   * Enforce newlines between operands of ternary expressions
   * @see https://eslint.org/docs/latest/rules/multiline-ternary
   * @deprecated
   */
  'multiline-ternary'?: Linter.RuleEntry<MultilineTernary>;
  /**
   * Require constructor names to begin with a capital letter
   * @see https://eslint.org/docs/latest/rules/new-cap
   */
  'new-cap'?: Linter.RuleEntry<NewCap>;
  /**
   * Enforce or disallow parentheses when invoking a constructor with no arguments
   * @see https://eslint.org/docs/latest/rules/new-parens
   * @deprecated
   */
  'new-parens'?: Linter.RuleEntry<NewParens>;
  /**
   * Require or disallow an empty line after variable declarations
   * @see https://eslint.org/docs/latest/rules/newline-after-var
   * @deprecated
   */
  'newline-after-var'?: Linter.RuleEntry<NewlineAfterVar>;
  /**
   * Require an empty line before `return` statements
   * @see https://eslint.org/docs/latest/rules/newline-before-return
   * @deprecated
   */
  'newline-before-return'?: Linter.RuleEntry<[]>;
  /**
   * Require a newline after each call in a method chain
   * @see https://eslint.org/docs/latest/rules/newline-per-chained-call
   * @deprecated
   */
  'newline-per-chained-call'?: Linter.RuleEntry<NewlinePerChainedCall>;
  /**
   * Disallow the use of `alert`, `confirm`, and `prompt`
   * @see https://eslint.org/docs/latest/rules/no-alert
   */
  'no-alert'?: Linter.RuleEntry<[]>;
  /**
   * Disallow `Array` constructors
   * @see https://eslint.org/docs/latest/rules/no-array-constructor
   */
  'no-array-constructor'?: Linter.RuleEntry<[]>;
  /**
   * Disallow using an async function as a Promise executor
   * @see https://eslint.org/docs/latest/rules/no-async-promise-executor
   */
  'no-async-promise-executor'?: Linter.RuleEntry<[]>;
  /**
   * Disallow `await` inside of loops
   * @see https://eslint.org/docs/latest/rules/no-await-in-loop
   */
  'no-await-in-loop'?: Linter.RuleEntry<[]>;
  /**
   * Disallow bitwise operators
   * @see https://eslint.org/docs/latest/rules/no-bitwise
   */
  'no-bitwise'?: Linter.RuleEntry<NoBitwise>;
  /**
   * Disallow use of the `Buffer()` constructor
   * @see https://eslint.org/docs/latest/rules/no-buffer-constructor
   * @deprecated
   */
  'no-buffer-constructor'?: Linter.RuleEntry<[]>;
  /**
   * Disallow the use of `arguments.caller` or `arguments.callee`
   * @see https://eslint.org/docs/latest/rules/no-caller
   */
  'no-caller'?: Linter.RuleEntry<[]>;
  /**
   * Disallow lexical declarations in case clauses
   * @see https://eslint.org/docs/latest/rules/no-case-declarations
   */
  'no-case-declarations'?: Linter.RuleEntry<[]>;
  /**
   * Disallow `catch` clause parameters from shadowing variables in the outer scope
   * @see https://eslint.org/docs/latest/rules/no-catch-shadow
   * @deprecated
   */
  'no-catch-shadow'?: Linter.RuleEntry<[]>;
  /**
   * Disallow reassigning class members
   * @see https://eslint.org/docs/latest/rules/no-class-assign
   */
  'no-class-assign'?: Linter.RuleEntry<[]>;
  /**
   * Disallow comparing against `-0`
   * @see https://eslint.org/docs/latest/rules/no-compare-neg-zero
   */
  'no-compare-neg-zero'?: Linter.RuleEntry<[]>;
  /**
   * Disallow assignment operators in conditional expressions
   * @see https://eslint.org/docs/latest/rules/no-cond-assign
   */
  'no-cond-assign'?: Linter.RuleEntry<NoCondAssign>;
  /**
   * Disallow arrow functions where they could be confused with comparisons
   * @see https://eslint.org/docs/latest/rules/no-confusing-arrow
   * @deprecated
   */
  'no-confusing-arrow'?: Linter.RuleEntry<NoConfusingArrow>;
  /**
   * Disallow the use of `console`
   * @see https://eslint.org/docs/latest/rules/no-console
   */
  'no-console'?: Linter.RuleEntry<NoConsole>;
  /**
   * Disallow reassigning `const`, `using`, and `await using` variables
   * @see https://eslint.org/docs/latest/rules/no-const-assign
   */
  'no-const-assign'?: Linter.RuleEntry<[]>;
  /**
   * Disallow expressions where the operation doesn't affect the value
   * @see https://eslint.org/docs/latest/rules/no-constant-binary-expression
   */
  'no-constant-binary-expression'?: Linter.RuleEntry<[]>;
  /**
   * Disallow constant expressions in conditions
   * @see https://eslint.org/docs/latest/rules/no-constant-condition
   */
  'no-constant-condition'?: Linter.RuleEntry<NoConstantCondition>;
  /**
   * Disallow returning value from constructor
   * @see https://eslint.org/docs/latest/rules/no-constructor-return
   */
  'no-constructor-return'?: Linter.RuleEntry<[]>;
  /**
   * Disallow `continue` statements
   * @see https://eslint.org/docs/latest/rules/no-continue
   */
  'no-continue'?: Linter.RuleEntry<[]>;
  /**
   * Disallow control characters in regular expressions
   * @see https://eslint.org/docs/latest/rules/no-control-regex
   */
  'no-control-regex'?: Linter.RuleEntry<[]>;
  /**
   * Disallow the use of `debugger`
   * @see https://eslint.org/docs/latest/rules/no-debugger
   */
  'no-debugger'?: Linter.RuleEntry<[]>;
  /**
   * Disallow deleting variables
   * @see https://eslint.org/docs/latest/rules/no-delete-var
   */
  'no-delete-var'?: Linter.RuleEntry<[]>;
  /**
   * Disallow equal signs explicitly at the beginning of regular expressions
   * @see https://eslint.org/docs/latest/rules/no-div-regex
   */
  'no-div-regex'?: Linter.RuleEntry<[]>;
  /**
   * Disallow duplicate arguments in `function` definitions
   * @see https://eslint.org/docs/latest/rules/no-dupe-args
   */
  'no-dupe-args'?: Linter.RuleEntry<[]>;
  /**
   * Disallow duplicate class members
   * @see https://eslint.org/docs/latest/rules/no-dupe-class-members
   */
  'no-dupe-class-members'?: Linter.RuleEntry<[]>;
  /**
   * Disallow duplicate conditions in if-else-if chains
   * @see https://eslint.org/docs/latest/rules/no-dupe-else-if
   */
  'no-dupe-else-if'?: Linter.RuleEntry<[]>;
  /**
   * Disallow duplicate keys in object literals
   * @see https://eslint.org/docs/latest/rules/no-dupe-keys
   */
  'no-dupe-keys'?: Linter.RuleEntry<[]>;
  /**
   * Disallow duplicate case labels
   * @see https://eslint.org/docs/latest/rules/no-duplicate-case
   */
  'no-duplicate-case'?: Linter.RuleEntry<[]>;
  /**
   * Disallow duplicate module imports
   * @see https://eslint.org/docs/latest/rules/no-duplicate-imports
   */
  'no-duplicate-imports'?: Linter.RuleEntry<NoDuplicateImports>;
  /**
   * Disallow `else` blocks after `return` statements in `if` statements
   * @see https://eslint.org/docs/latest/rules/no-else-return
   */
  'no-else-return'?: Linter.RuleEntry<NoElseReturn>;
  /**
   * Disallow empty block statements
   * @see https://eslint.org/docs/latest/rules/no-empty
   */
  'no-empty'?: Linter.RuleEntry<NoEmpty>;
  /**
   * Disallow empty character classes in regular expressions
   * @see https://eslint.org/docs/latest/rules/no-empty-character-class
   */
  'no-empty-character-class'?: Linter.RuleEntry<[]>;
  /**
   * Disallow empty functions
   * @see https://eslint.org/docs/latest/rules/no-empty-function
   */
  'no-empty-function'?: Linter.RuleEntry<NoEmptyFunction>;
  /**
   * Disallow empty destructuring patterns
   * @see https://eslint.org/docs/latest/rules/no-empty-pattern
   */
  'no-empty-pattern'?: Linter.RuleEntry<NoEmptyPattern>;
  /**
   * Disallow empty static blocks
   * @see https://eslint.org/docs/latest/rules/no-empty-static-block
   */
  'no-empty-static-block'?: Linter.RuleEntry<[]>;
  /**
   * Disallow `null` comparisons without type-checking operators
   * @see https://eslint.org/docs/latest/rules/no-eq-null
   */
  'no-eq-null'?: Linter.RuleEntry<[]>;
  /**
   * Disallow the use of `eval()`
   * @see https://eslint.org/docs/latest/rules/no-eval
   */
  'no-eval'?: Linter.RuleEntry<NoEval>;
  /**
   * Disallow reassigning exceptions in `catch` clauses
   * @see https://eslint.org/docs/latest/rules/no-ex-assign
   */
  'no-ex-assign'?: Linter.RuleEntry<[]>;
  /**
   * Disallow extending native types
   * @see https://eslint.org/docs/latest/rules/no-extend-native
   */
  'no-extend-native'?: Linter.RuleEntry<NoExtendNative>;
  /**
   * Disallow unnecessary calls to `.bind()`
   * @see https://eslint.org/docs/latest/rules/no-extra-bind
   */
  'no-extra-bind'?: Linter.RuleEntry<[]>;
  /**
   * Disallow unnecessary boolean casts
   * @see https://eslint.org/docs/latest/rules/no-extra-boolean-cast
   */
  'no-extra-boolean-cast'?: Linter.RuleEntry<NoExtraBooleanCast>;
  /**
   * Disallow unnecessary labels
   * @see https://eslint.org/docs/latest/rules/no-extra-label
   */
  'no-extra-label'?: Linter.RuleEntry<[]>;
  /**
   * Disallow unnecessary parentheses
   * @see https://eslint.org/docs/latest/rules/no-extra-parens
   * @deprecated
   */
  'no-extra-parens'?: Linter.RuleEntry<NoExtraParens>;
  /**
   * Disallow unnecessary semicolons
   * @see https://eslint.org/docs/latest/rules/no-extra-semi
   * @deprecated
   */
  'no-extra-semi'?: Linter.RuleEntry<[]>;
  /**
   * Disallow fallthrough of `case` statements
   * @see https://eslint.org/docs/latest/rules/no-fallthrough
   */
  'no-fallthrough'?: Linter.RuleEntry<NoFallthrough>;
  /**
   * Disallow leading or trailing decimal points in numeric literals
   * @see https://eslint.org/docs/latest/rules/no-floating-decimal
   * @deprecated
   */
  'no-floating-decimal'?: Linter.RuleEntry<[]>;
  /**
   * Disallow reassigning `function` declarations
   * @see https://eslint.org/docs/latest/rules/no-func-assign
   */
  'no-func-assign'?: Linter.RuleEntry<[]>;
  /**
   * Disallow assignments to native objects or read-only global variables
   * @see https://eslint.org/docs/latest/rules/no-global-assign
   */
  'no-global-assign'?: Linter.RuleEntry<NoGlobalAssign>;
  /**
   * Disallow shorthand type conversions
   * @see https://eslint.org/docs/latest/rules/no-implicit-coercion
   */
  'no-implicit-coercion'?: Linter.RuleEntry<NoImplicitCoercion>;
  /**
   * Disallow declarations in the global scope
   * @see https://eslint.org/docs/latest/rules/no-implicit-globals
   */
  'no-implicit-globals'?: Linter.RuleEntry<NoImplicitGlobals>;
  /**
   * Disallow the use of `eval()`-like methods
   * @see https://eslint.org/docs/latest/rules/no-implied-eval
   */
  'no-implied-eval'?: Linter.RuleEntry<[]>;
  /**
   * Disallow assigning to imported bindings
   * @see https://eslint.org/docs/latest/rules/no-import-assign
   */
  'no-import-assign'?: Linter.RuleEntry<[]>;
  /**
   * Disallow inline comments after code
   * @see https://eslint.org/docs/latest/rules/no-inline-comments
   */
  'no-inline-comments'?: Linter.RuleEntry<NoInlineComments>;
  /**
   * Disallow variable or `function` declarations in nested blocks
   * @see https://eslint.org/docs/latest/rules/no-inner-declarations
   */
  'no-inner-declarations'?: Linter.RuleEntry<NoInnerDeclarations>;
  /**
   * Disallow invalid regular expression strings in `RegExp` constructors
   * @see https://eslint.org/docs/latest/rules/no-invalid-regexp
   */
  'no-invalid-regexp'?: Linter.RuleEntry<NoInvalidRegexp>;
  /**
   * Disallow use of `this` in contexts where the value of `this` is `undefined`
   * @see https://eslint.org/docs/latest/rules/no-invalid-this
   */
  'no-invalid-this'?: Linter.RuleEntry<NoInvalidThis>;
  /**
   * Disallow irregular whitespace
   * @see https://eslint.org/docs/latest/rules/no-irregular-whitespace
   */
  'no-irregular-whitespace'?: Linter.RuleEntry<NoIrregularWhitespace>;
  /**
   * Disallow the use of the `__iterator__` property
   * @see https://eslint.org/docs/latest/rules/no-iterator
   */
  'no-iterator'?: Linter.RuleEntry<[]>;
  /**
   * Disallow labels that share a name with a variable
   * @see https://eslint.org/docs/latest/rules/no-label-var
   */
  'no-label-var'?: Linter.RuleEntry<[]>;
  /**
   * Disallow labeled statements
   * @see https://eslint.org/docs/latest/rules/no-labels
   */
  'no-labels'?: Linter.RuleEntry<NoLabels>;
  /**
   * Disallow unnecessary nested blocks
   * @see https://eslint.org/docs/latest/rules/no-lone-blocks
   */
  'no-lone-blocks'?: Linter.RuleEntry<[]>;
  /**
   * Disallow `if` statements as the only statement in `else` blocks
   * @see https://eslint.org/docs/latest/rules/no-lonely-if
   */
  'no-lonely-if'?: Linter.RuleEntry<[]>;
  /**
   * Disallow function declarations that contain unsafe references inside loop statements
   * @see https://eslint.org/docs/latest/rules/no-loop-func
   */
  'no-loop-func'?: Linter.RuleEntry<[]>;
  /**
   * Disallow literal numbers that lose precision
   * @see https://eslint.org/docs/latest/rules/no-loss-of-precision
   */
  'no-loss-of-precision'?: Linter.RuleEntry<[]>;
  /**
   * Disallow magic numbers
   * @see https://eslint.org/docs/latest/rules/no-magic-numbers
   */
  'no-magic-numbers'?: Linter.RuleEntry<NoMagicNumbers>;
  /**
   * Disallow characters which are made with multiple code points in character class syntax
   * @see https://eslint.org/docs/latest/rules/no-misleading-character-class
   */
  'no-misleading-character-class'?: Linter.RuleEntry<NoMisleadingCharacterClass>;
  /**
   * Disallow mixed binary operators
   * @see https://eslint.org/docs/latest/rules/no-mixed-operators
   * @deprecated
   */
  'no-mixed-operators'?: Linter.RuleEntry<NoMixedOperators>;
  /**
   * Disallow `require` calls to be mixed with regular variable declarations
   * @see https://eslint.org/docs/latest/rules/no-mixed-requires
   * @deprecated
   */
  'no-mixed-requires'?: Linter.RuleEntry<NoMixedRequires>;
  /**
   * Disallow mixed spaces and tabs for indentation
   * @see https://eslint.org/docs/latest/rules/no-mixed-spaces-and-tabs
   * @deprecated
   */
  'no-mixed-spaces-and-tabs'?: Linter.RuleEntry<NoMixedSpacesAndTabs>;
  /**
   * Disallow use of chained assignment expressions
   * @see https://eslint.org/docs/latest/rules/no-multi-assign
   */
  'no-multi-assign'?: Linter.RuleEntry<NoMultiAssign>;
  /**
   * Disallow multiple spaces
   * @see https://eslint.org/docs/latest/rules/no-multi-spaces
   * @deprecated
   */
  'no-multi-spaces'?: Linter.RuleEntry<NoMultiSpaces>;
  /**
   * Disallow multiline strings
   * @see https://eslint.org/docs/latest/rules/no-multi-str
   */
  'no-multi-str'?: Linter.RuleEntry<[]>;
  /**
   * Disallow multiple empty lines
   * @see https://eslint.org/docs/latest/rules/no-multiple-empty-lines
   * @deprecated
   */
  'no-multiple-empty-lines'?: Linter.RuleEntry<NoMultipleEmptyLines>;
  /**
   * Disallow assignments to native objects or read-only global variables
   * @see https://eslint.org/docs/latest/rules/no-native-reassign
   * @deprecated
   */
  'no-native-reassign'?: Linter.RuleEntry<NoNativeReassign>;
  /**
   * Disallow negated conditions
   * @see https://eslint.org/docs/latest/rules/no-negated-condition
   */
  'no-negated-condition'?: Linter.RuleEntry<[]>;
  /**
   * Disallow negating the left operand in `in` expressions
   * @see https://eslint.org/docs/latest/rules/no-negated-in-lhs
   * @deprecated
   */
  'no-negated-in-lhs'?: Linter.RuleEntry<[]>;
  /**
   * Disallow nested ternary expressions
   * @see https://eslint.org/docs/latest/rules/no-nested-ternary
   */
  'no-nested-ternary'?: Linter.RuleEntry<[]>;
  /**
   * Disallow `new` operators outside of assignments or comparisons
   * @see https://eslint.org/docs/latest/rules/no-new
   */
  'no-new'?: Linter.RuleEntry<[]>;
  /**
   * Disallow `new` operators with the `Function` object
   * @see https://eslint.org/docs/latest/rules/no-new-func
   */
  'no-new-func'?: Linter.RuleEntry<[]>;
  /**
   * Disallow `new` operators with global non-constructor functions
   * @see https://eslint.org/docs/latest/rules/no-new-native-nonconstructor
   */
  'no-new-native-nonconstructor'?: Linter.RuleEntry<[]>;
  /**
   * Disallow `Object` constructors
   * @see https://eslint.org/docs/latest/rules/no-new-object
   * @deprecated
   */
  'no-new-object'?: Linter.RuleEntry<[]>;
  /**
   * Disallow `new` operators with calls to `require`
   * @see https://eslint.org/docs/latest/rules/no-new-require
   * @deprecated
   */
  'no-new-require'?: Linter.RuleEntry<[]>;
  /**
   * Disallow `new` operators with the `Symbol` object
   * @see https://eslint.org/docs/latest/rules/no-new-symbol
   * @deprecated
   */
  'no-new-symbol'?: Linter.RuleEntry<[]>;
  /**
   * Disallow `new` operators with the `String`, `Number`, and `Boolean` objects
   * @see https://eslint.org/docs/latest/rules/no-new-wrappers
   */
  'no-new-wrappers'?: Linter.RuleEntry<[]>;
  /**
   * Disallow `\8` and `\9` escape sequences in string literals
   * @see https://eslint.org/docs/latest/rules/no-nonoctal-decimal-escape
   */
  'no-nonoctal-decimal-escape'?: Linter.RuleEntry<[]>;
  /**
   * Disallow calling global object properties as functions
   * @see https://eslint.org/docs/latest/rules/no-obj-calls
   */
  'no-obj-calls'?: Linter.RuleEntry<[]>;
  /**
   * Disallow calls to the `Object` constructor without an argument
   * @see https://eslint.org/docs/latest/rules/no-object-constructor
   */
  'no-object-constructor'?: Linter.RuleEntry<[]>;
  /**
   * Disallow octal literals
   * @see https://eslint.org/docs/latest/rules/no-octal
   */
  'no-octal'?: Linter.RuleEntry<[]>;
  /**
   * Disallow octal escape sequences in string literals
   * @see https://eslint.org/docs/latest/rules/no-octal-escape
   */
  'no-octal-escape'?: Linter.RuleEntry<[]>;
  /**
   * Disallow reassigning function parameters
   * @see https://eslint.org/docs/latest/rules/no-param-reassign
   */
  'no-param-reassign'?: Linter.RuleEntry<NoParamReassign>;
  /**
   * Disallow string concatenation with `__dirname` and `__filename`
   * @see https://eslint.org/docs/latest/rules/no-path-concat
   * @deprecated
   */
  'no-path-concat'?: Linter.RuleEntry<[]>;
  /**
   * Disallow the unary operators `++` and `--`
   * @see https://eslint.org/docs/latest/rules/no-plusplus
   */
  'no-plusplus'?: Linter.RuleEntry<NoPlusplus>;
  /**
   * Disallow the use of `process.env`
   * @see https://eslint.org/docs/latest/rules/no-process-env
   * @deprecated
   */
  'no-process-env'?: Linter.RuleEntry<[]>;
  /**
   * Disallow the use of `process.exit()`
   * @see https://eslint.org/docs/latest/rules/no-process-exit
   * @deprecated
   */
  'no-process-exit'?: Linter.RuleEntry<[]>;
  /**
   * Disallow returning values from Promise executor functions
   * @see https://eslint.org/docs/latest/rules/no-promise-executor-return
   */
  'no-promise-executor-return'?: Linter.RuleEntry<NoPromiseExecutorReturn>;
  /**
   * Disallow the use of the `__proto__` property
   * @see https://eslint.org/docs/latest/rules/no-proto
   */
  'no-proto'?: Linter.RuleEntry<[]>;
  /**
   * Disallow calling some `Object.prototype` methods directly on objects
   * @see https://eslint.org/docs/latest/rules/no-prototype-builtins
   */
  'no-prototype-builtins'?: Linter.RuleEntry<[]>;
  /**
   * Disallow variable redeclaration
   * @see https://eslint.org/docs/latest/rules/no-redeclare
   */
  'no-redeclare'?: Linter.RuleEntry<NoRedeclare>;
  /**
   * Disallow multiple spaces in regular expressions
   * @see https://eslint.org/docs/latest/rules/no-regex-spaces
   */
  'no-regex-spaces'?: Linter.RuleEntry<[]>;
  /**
   * Disallow specified names in exports
   * @see https://eslint.org/docs/latest/rules/no-restricted-exports
   */
  'no-restricted-exports'?: Linter.RuleEntry<NoRestrictedExports>;
  /**
   * Disallow specified global variables
   * @see https://eslint.org/docs/latest/rules/no-restricted-globals
   */
  'no-restricted-globals'?: Linter.RuleEntry<NoRestrictedGlobals>;
  /**
   * Disallow specified modules when loaded by `import`
   * @see https://eslint.org/docs/latest/rules/no-restricted-imports
   */
  'no-restricted-imports'?: Linter.RuleEntry<NoRestrictedImports>;
  /**
   * Disallow specified modules when loaded by `require`
   * @see https://eslint.org/docs/latest/rules/no-restricted-modules
   * @deprecated
   */
  'no-restricted-modules'?: Linter.RuleEntry<NoRestrictedModules>;
  /**
   * Disallow certain properties on certain objects
   * @see https://eslint.org/docs/latest/rules/no-restricted-properties
   */
  'no-restricted-properties'?: Linter.RuleEntry<NoRestrictedProperties>;
  /**
   * Disallow specified syntax
   * @see https://eslint.org/docs/latest/rules/no-restricted-syntax
   */
  'no-restricted-syntax'?: Linter.RuleEntry<NoRestrictedSyntax>;
  /**
   * Disallow assignment operators in `return` statements
   * @see https://eslint.org/docs/latest/rules/no-return-assign
   */
  'no-return-assign'?: Linter.RuleEntry<NoReturnAssign>;
  /**
   * Disallow unnecessary `return await`
   * @see https://eslint.org/docs/latest/rules/no-return-await
   * @deprecated
   */
  'no-return-await'?: Linter.RuleEntry<[]>;
  /**
   * Disallow `javascript:` URLs
   * @see https://eslint.org/docs/latest/rules/no-script-url
   */
  'no-script-url'?: Linter.RuleEntry<[]>;
  /**
   * Disallow assignments where both sides are exactly the same
   * @see https://eslint.org/docs/latest/rules/no-self-assign
   */
  'no-self-assign'?: Linter.RuleEntry<NoSelfAssign>;
  /**
   * Disallow comparisons where both sides are exactly the same
   * @see https://eslint.org/docs/latest/rules/no-self-compare
   */
  'no-self-compare'?: Linter.RuleEntry<[]>;
  /**
   * Disallow comma operators
   * @see https://eslint.org/docs/latest/rules/no-sequences
   */
  'no-sequences'?: Linter.RuleEntry<NoSequences>;
  /**
   * Disallow returning values from setters
   * @see https://eslint.org/docs/latest/rules/no-setter-return
   */
  'no-setter-return'?: Linter.RuleEntry<[]>;
  /**
   * Disallow variable declarations from shadowing variables declared in the outer scope
   * @see https://eslint.org/docs/latest/rules/no-shadow
   */
  'no-shadow'?: Linter.RuleEntry<NoShadow>;
  /**
   * Disallow identifiers from shadowing restricted names
   * @see https://eslint.org/docs/latest/rules/no-shadow-restricted-names
   */
  'no-shadow-restricted-names'?: Linter.RuleEntry<NoShadowRestrictedNames>;
  /**
   * Disallow spacing between function identifiers and their applications (deprecated)
   * @see https://eslint.org/docs/latest/rules/no-spaced-func
   * @deprecated
   */
  'no-spaced-func'?: Linter.RuleEntry<[]>;
  /**
   * Disallow sparse arrays
   * @see https://eslint.org/docs/latest/rules/no-sparse-arrays
   */
  'no-sparse-arrays'?: Linter.RuleEntry<[]>;
  /**
   * Disallow synchronous methods
   * @see https://eslint.org/docs/latest/rules/no-sync
   * @deprecated
   */
  'no-sync'?: Linter.RuleEntry<NoSync>;
  /**
   * Disallow all tabs
   * @see https://eslint.org/docs/latest/rules/no-tabs
   * @deprecated
   */
  'no-tabs'?: Linter.RuleEntry<NoTabs>;
  /**
   * Disallow template literal placeholder syntax in regular strings
   * @see https://eslint.org/docs/latest/rules/no-template-curly-in-string
   */
  'no-template-curly-in-string'?: Linter.RuleEntry<[]>;
  /**
   * Disallow ternary operators
   * @see https://eslint.org/docs/latest/rules/no-ternary
   */
  'no-ternary'?: Linter.RuleEntry<[]>;
  /**
   * Disallow `this`/`super` before calling `super()` in constructors
   * @see https://eslint.org/docs/latest/rules/no-this-before-super
   */
  'no-this-before-super'?: Linter.RuleEntry<[]>;
  /**
   * Disallow throwing literals as exceptions
   * @see https://eslint.org/docs/latest/rules/no-throw-literal
   */
  'no-throw-literal'?: Linter.RuleEntry<[]>;
  /**
   * Disallow trailing whitespace at the end of lines
   * @see https://eslint.org/docs/latest/rules/no-trailing-spaces
   * @deprecated
   */
  'no-trailing-spaces'?: Linter.RuleEntry<NoTrailingSpaces>;
  /**
   * Disallow `let` or `var` variables that are read but never assigned
   * @see https://eslint.org/docs/latest/rules/no-unassigned-vars
   */
  'no-unassigned-vars'?: Linter.RuleEntry<[]>;
  /**
   * Disallow the use of undeclared variables unless mentioned in `/*global *\/` comments
   * @see https://eslint.org/docs/latest/rules/no-undef
   */
  'no-undef'?: Linter.RuleEntry<NoUndef>;
  /**
   * Disallow initializing variables to `undefined`
   * @see https://eslint.org/docs/latest/rules/no-undef-init
   */
  'no-undef-init'?: Linter.RuleEntry<[]>;
  /**
   * Disallow the use of `undefined` as an identifier
   * @see https://eslint.org/docs/latest/rules/no-undefined
   */
  'no-undefined'?: Linter.RuleEntry<[]>;
  /**
   * Disallow dangling underscores in identifiers
   * @see https://eslint.org/docs/latest/rules/no-underscore-dangle
   */
  'no-underscore-dangle'?: Linter.RuleEntry<NoUnderscoreDangle>;
  /**
   * Disallow confusing multiline expressions
   * @see https://eslint.org/docs/latest/rules/no-unexpected-multiline
   */
  'no-unexpected-multiline'?: Linter.RuleEntry<[]>;
  /**
   * Disallow unmodified loop conditions
   * @see https://eslint.org/docs/latest/rules/no-unmodified-loop-condition
   */
  'no-unmodified-loop-condition'?: Linter.RuleEntry<[]>;
  /**
   * Disallow ternary operators when simpler alternatives exist
   * @see https://eslint.org/docs/latest/rules/no-unneeded-ternary
   */
  'no-unneeded-ternary'?: Linter.RuleEntry<NoUnneededTernary>;
  /**
   * Disallow unreachable code after `return`, `throw`, `continue`, and `break` statements
   * @see https://eslint.org/docs/latest/rules/no-unreachable
   */
  'no-unreachable'?: Linter.RuleEntry<[]>;
  /**
   * Disallow loops with a body that allows only one iteration
   * @see https://eslint.org/docs/latest/rules/no-unreachable-loop
   */
  'no-unreachable-loop'?: Linter.RuleEntry<NoUnreachableLoop>;
  /**
   * Disallow control flow statements in `finally` blocks
   * @see https://eslint.org/docs/latest/rules/no-unsafe-finally
   */
  'no-unsafe-finally'?: Linter.RuleEntry<[]>;
  /**
   * Disallow negating the left operand of relational operators
   * @see https://eslint.org/docs/latest/rules/no-unsafe-negation
   */
  'no-unsafe-negation'?: Linter.RuleEntry<NoUnsafeNegation>;
  /**
   * Disallow use of optional chaining in contexts where the `undefined` value is not allowed
   * @see https://eslint.org/docs/latest/rules/no-unsafe-optional-chaining
   */
  'no-unsafe-optional-chaining'?: Linter.RuleEntry<NoUnsafeOptionalChaining>;
  /**
   * Disallow unused expressions
   * @see https://eslint.org/docs/latest/rules/no-unused-expressions
   */
  'no-unused-expressions'?: Linter.RuleEntry<NoUnusedExpressions>;
  /**
   * Disallow unused labels
   * @see https://eslint.org/docs/latest/rules/no-unused-labels
   */
  'no-unused-labels'?: Linter.RuleEntry<[]>;
  /**
   * Disallow unused private class members
   * @see https://eslint.org/docs/latest/rules/no-unused-private-class-members
   */
  'no-unused-private-class-members'?: Linter.RuleEntry<[]>;
  /**
   * Disallow unused variables
   * @see https://eslint.org/docs/latest/rules/no-unused-vars
   */
  'no-unused-vars'?: Linter.RuleEntry<NoUnusedVars>;
  /**
   * Disallow the use of variables before they are defined
   * @see https://eslint.org/docs/latest/rules/no-use-before-define
   */
  'no-use-before-define'?: Linter.RuleEntry<NoUseBeforeDefine>;
  /**
   * Disallow variable assignments when the value is not used
   * @see https://eslint.org/docs/latest/rules/no-useless-assignment
   */
  'no-useless-assignment'?: Linter.RuleEntry<[]>;
  /**
   * Disallow useless backreferences in regular expressions
   * @see https://eslint.org/docs/latest/rules/no-useless-backreference
   */
  'no-useless-backreference'?: Linter.RuleEntry<[]>;
  /**
   * Disallow unnecessary calls to `.call()` and `.apply()`
   * @see https://eslint.org/docs/latest/rules/no-useless-call
   */
  'no-useless-call'?: Linter.RuleEntry<[]>;
  /**
   * Disallow unnecessary `catch` clauses
   * @see https://eslint.org/docs/latest/rules/no-useless-catch
   */
  'no-useless-catch'?: Linter.RuleEntry<[]>;
  /**
   * Disallow unnecessary computed property keys in objects and classes
   * @see https://eslint.org/docs/latest/rules/no-useless-computed-key
   */
  'no-useless-computed-key'?: Linter.RuleEntry<NoUselessComputedKey>;
  /**
   * Disallow unnecessary concatenation of literals or template literals
   * @see https://eslint.org/docs/latest/rules/no-useless-concat
   */
  'no-useless-concat'?: Linter.RuleEntry<[]>;
  /**
   * Disallow unnecessary constructors
   * @see https://eslint.org/docs/latest/rules/no-useless-constructor
   */
  'no-useless-constructor'?: Linter.RuleEntry<[]>;
  /**
   * Disallow unnecessary escape characters
   * @see https://eslint.org/docs/latest/rules/no-useless-escape
   */
  'no-useless-escape'?: Linter.RuleEntry<NoUselessEscape>;
  /**
   * Disallow renaming import, export, and destructured assignments to the same name
   * @see https://eslint.org/docs/latest/rules/no-useless-rename
   */
  'no-useless-rename'?: Linter.RuleEntry<NoUselessRename>;
  /**
   * Disallow redundant return statements
   * @see https://eslint.org/docs/latest/rules/no-useless-return
   */
  'no-useless-return'?: Linter.RuleEntry<[]>;
  /**
   * Require `let` or `const` instead of `var`
   * @see https://eslint.org/docs/latest/rules/no-var
   */
  'no-var'?: Linter.RuleEntry<[]>;
  /**
   * Disallow `void` operators
   * @see https://eslint.org/docs/latest/rules/no-void
   */
  'no-void'?: Linter.RuleEntry<NoVoid>;
  /**
   * Disallow specified warning terms in comments
   * @see https://eslint.org/docs/latest/rules/no-warning-comments
   */
  'no-warning-comments'?: Linter.RuleEntry<NoWarningComments>;
  /**
   * Disallow whitespace before properties
   * @see https://eslint.org/docs/latest/rules/no-whitespace-before-property
   * @deprecated
   */
  'no-whitespace-before-property'?: Linter.RuleEntry<[]>;
  /**
   * Disallow `with` statements
   * @see https://eslint.org/docs/latest/rules/no-with
   */
  'no-with'?: Linter.RuleEntry<[]>;
  /**
   * Enforce the location of single-line statements
   * @see https://eslint.org/docs/latest/rules/nonblock-statement-body-position
   * @deprecated
   */
  'nonblock-statement-body-position'?: Linter.RuleEntry<NonblockStatementBodyPosition>;
  /**
   * Enforce consistent line breaks after opening and before closing braces
   * @see https://eslint.org/docs/latest/rules/object-curly-newline
   * @deprecated
   */
  'object-curly-newline'?: Linter.RuleEntry<ObjectCurlyNewline>;
  /**
   * Enforce consistent spacing inside braces
   * @see https://eslint.org/docs/latest/rules/object-curly-spacing
   * @deprecated
   */
  'object-curly-spacing'?: Linter.RuleEntry<ObjectCurlySpacing>;
  /**
   * Enforce placing object properties on separate lines
   * @see https://eslint.org/docs/latest/rules/object-property-newline
   * @deprecated
   */
  'object-property-newline'?: Linter.RuleEntry<ObjectPropertyNewline>;
  /**
   * Require or disallow method and property shorthand syntax for object literals
   * @see https://eslint.org/docs/latest/rules/object-shorthand
   */
  'object-shorthand'?: Linter.RuleEntry<ObjectShorthand>;
  /**
   * Enforce variables to be declared either together or separately in functions
   * @see https://eslint.org/docs/latest/rules/one-var
   */
  'one-var'?: Linter.RuleEntry<OneVar>;
  /**
   * Require or disallow newlines around variable declarations
   * @see https://eslint.org/docs/latest/rules/one-var-declaration-per-line
   * @deprecated
   */
  'one-var-declaration-per-line'?: Linter.RuleEntry<OneVarDeclarationPerLine>;
  /**
   * Require or disallow assignment operator shorthand where possible
   * @see https://eslint.org/docs/latest/rules/operator-assignment
   */
  'operator-assignment'?: Linter.RuleEntry<OperatorAssignment>;
  /**
   * Enforce consistent linebreak style for operators
   * @see https://eslint.org/docs/latest/rules/operator-linebreak
   * @deprecated
   */
  'operator-linebreak'?: Linter.RuleEntry<OperatorLinebreak>;
  /**
   * Require or disallow padding within blocks
   * @see https://eslint.org/docs/latest/rules/padded-blocks
   * @deprecated
   */
  'padded-blocks'?: Linter.RuleEntry<PaddedBlocks>;
  /**
   * Require or disallow padding lines between statements
   * @see https://eslint.org/docs/latest/rules/padding-line-between-statements
   * @deprecated
   */
  'padding-line-between-statements'?: Linter.RuleEntry<PaddingLineBetweenStatements>;
  /**
   * Enforce sorted arrays before include method.
   * @see https://perfectionist.dev/rules/sort-array-includes
   */
  'perfectionist/sort-array-includes'?: Linter.RuleEntry<PerfectionistSortArrayIncludes>;
  /**
   * Enforce sorted arrays.
   * @see https://perfectionist.dev/rules/sort-arrays
   */
  'perfectionist/sort-arrays'?: Linter.RuleEntry<PerfectionistSortArrays>;
  /**
   * Enforce sorted classes.
   * @see https://perfectionist.dev/rules/sort-classes
   */
  'perfectionist/sort-classes'?: Linter.RuleEntry<PerfectionistSortClasses>;
  /**
   * Enforce sorted decorators.
   * @see https://perfectionist.dev/rules/sort-decorators
   */
  'perfectionist/sort-decorators'?: Linter.RuleEntry<PerfectionistSortDecorators>;
  /**
   * Enforce sorted TypeScript enums.
   * @see https://perfectionist.dev/rules/sort-enums
   */
  'perfectionist/sort-enums'?: Linter.RuleEntry<PerfectionistSortEnums>;
  /**
   * Enforce sorted export attributes.
   * @see https://perfectionist.dev/rules/sort-export-attributes
   */
  'perfectionist/sort-export-attributes'?: Linter.RuleEntry<PerfectionistSortExportAttributes>;
  /**
   * Enforce sorted exports.
   * @see https://perfectionist.dev/rules/sort-exports
   */
  'perfectionist/sort-exports'?: Linter.RuleEntry<PerfectionistSortExports>;
  /**
   * Enforce sorted heritage clauses.
   * @see https://perfectionist.dev/rules/sort-heritage-clauses
   */
  'perfectionist/sort-heritage-clauses'?: Linter.RuleEntry<PerfectionistSortHeritageClauses>;
  /**
   * Enforce sorted import attributes.
   * @see https://perfectionist.dev/rules/sort-import-attributes
   */
  'perfectionist/sort-import-attributes'?: Linter.RuleEntry<PerfectionistSortImportAttributes>;
  /**
   * Enforce sorted imports.
   * @see https://perfectionist.dev/rules/sort-imports
   */
  'perfectionist/sort-imports'?: Linter.RuleEntry<PerfectionistSortImports>;
  /**
   * Enforce sorted interface properties.
   * @see https://perfectionist.dev/rules/sort-interfaces
   */
  'perfectionist/sort-interfaces'?: Linter.RuleEntry<PerfectionistSortInterfaces>;
  /**
   * Enforce sorted intersection types.
   * @see https://perfectionist.dev/rules/sort-intersection-types
   */
  'perfectionist/sort-intersection-types'?: Linter.RuleEntry<PerfectionistSortIntersectionTypes>;
  /**
   * Enforce sorted JSX props.
   * @see https://perfectionist.dev/rules/sort-jsx-props
   */
  'perfectionist/sort-jsx-props'?: Linter.RuleEntry<PerfectionistSortJsxProps>;
  /**
   * Enforce sorted Map elements.
   * @see https://perfectionist.dev/rules/sort-maps
   */
  'perfectionist/sort-maps'?: Linter.RuleEntry<PerfectionistSortMaps>;
  /**
   * Enforce sorted modules.
   * @see https://perfectionist.dev/rules/sort-modules
   */
  'perfectionist/sort-modules'?: Linter.RuleEntry<PerfectionistSortModules>;
  /**
   * Enforce sorted named exports.
   * @see https://perfectionist.dev/rules/sort-named-exports
   */
  'perfectionist/sort-named-exports'?: Linter.RuleEntry<PerfectionistSortNamedExports>;
  /**
   * Enforce sorted named imports.
   * @see https://perfectionist.dev/rules/sort-named-imports
   */
  'perfectionist/sort-named-imports'?: Linter.RuleEntry<PerfectionistSortNamedImports>;
  /**
   * Enforce sorted object types.
   * @see https://perfectionist.dev/rules/sort-object-types
   */
  'perfectionist/sort-object-types'?: Linter.RuleEntry<PerfectionistSortObjectTypes>;
  /**
   * Enforce sorted objects.
   * @see https://perfectionist.dev/rules/sort-objects
   */
  'perfectionist/sort-objects'?: Linter.RuleEntry<PerfectionistSortObjects>;
  /**
   * Enforce sorted sets.
   * @see https://perfectionist.dev/rules/sort-sets
   */
  'perfectionist/sort-sets'?: Linter.RuleEntry<PerfectionistSortSets>;
  /**
   * Enforce sorted switch cases.
   * @see https://perfectionist.dev/rules/sort-switch-case
   */
  'perfectionist/sort-switch-case'?: Linter.RuleEntry<PerfectionistSortSwitchCase>;
  /**
   * Enforce sorted union types.
   * @see https://perfectionist.dev/rules/sort-union-types
   */
  'perfectionist/sort-union-types'?: Linter.RuleEntry<PerfectionistSortUnionTypes>;
  /**
   * Enforce sorted variable declarations.
   * @see https://perfectionist.dev/rules/sort-variable-declarations
   */
  'perfectionist/sort-variable-declarations'?: Linter.RuleEntry<PerfectionistSortVariableDeclarations>;
  /**
   * Require using arrow functions for callbacks
   * @see https://eslint.org/docs/latest/rules/prefer-arrow-callback
   */
  'prefer-arrow-callback'?: Linter.RuleEntry<PreferArrowCallback>;
  /**
   * Require `const` declarations for variables that are never reassigned after declared
   * @see https://eslint.org/docs/latest/rules/prefer-const
   */
  'prefer-const'?: Linter.RuleEntry<PreferConst>;
  /**
   * Require destructuring from arrays and/or objects
   * @see https://eslint.org/docs/latest/rules/prefer-destructuring
   */
  'prefer-destructuring'?: Linter.RuleEntry<PreferDestructuring>;
  /**
   * Disallow the use of `Math.pow` in favor of the `**` operator
   * @see https://eslint.org/docs/latest/rules/prefer-exponentiation-operator
   */
  'prefer-exponentiation-operator'?: Linter.RuleEntry<[]>;
  /**
   * Enforce using named capture group in regular expression
   * @see https://eslint.org/docs/latest/rules/prefer-named-capture-group
   */
  'prefer-named-capture-group'?: Linter.RuleEntry<[]>;
  /**
   * Disallow `parseInt()` and `Number.parseInt()` in favor of binary, octal, and hexadecimal literals
   * @see https://eslint.org/docs/latest/rules/prefer-numeric-literals
   */
  'prefer-numeric-literals'?: Linter.RuleEntry<[]>;
  /**
   * Disallow use of `Object.prototype.hasOwnProperty.call()` and prefer use of `Object.hasOwn()`
   * @see https://eslint.org/docs/latest/rules/prefer-object-has-own
   */
  'prefer-object-has-own'?: Linter.RuleEntry<[]>;
  /**
   * Disallow using `Object.assign` with an object literal as the first argument and prefer the use of object spread instead
   * @see https://eslint.org/docs/latest/rules/prefer-object-spread
   */
  'prefer-object-spread'?: Linter.RuleEntry<[]>;
  /**
   * Require using Error objects as Promise rejection reasons
   * @see https://eslint.org/docs/latest/rules/prefer-promise-reject-errors
   */
  'prefer-promise-reject-errors'?: Linter.RuleEntry<PreferPromiseRejectErrors>;
  /**
   * Require `Reflect` methods where applicable
   * @see https://eslint.org/docs/latest/rules/prefer-reflect
   * @deprecated
   */
  'prefer-reflect'?: Linter.RuleEntry<PreferReflect>;
  /**
   * Disallow use of the `RegExp` constructor in favor of regular expression literals
   * @see https://eslint.org/docs/latest/rules/prefer-regex-literals
   */
  'prefer-regex-literals'?: Linter.RuleEntry<PreferRegexLiterals>;
  /**
   * Require rest parameters instead of `arguments`
   * @see https://eslint.org/docs/latest/rules/prefer-rest-params
   */
  'prefer-rest-params'?: Linter.RuleEntry<[]>;
  /**
   * Require spread operators instead of `.apply()`
   * @see https://eslint.org/docs/latest/rules/prefer-spread
   */
  'prefer-spread'?: Linter.RuleEntry<[]>;
  /**
   * Require template literals instead of string concatenation
   * @see https://eslint.org/docs/latest/rules/prefer-template
   */
  'prefer-template'?: Linter.RuleEntry<[]>;
  /**
   * Disallow losing originally caught error when re-throwing custom errors
   * @see https://eslint.org/docs/latest/rules/preserve-caught-error
   */
  'preserve-caught-error'?: Linter.RuleEntry<PreserveCaughtError>;
  /**
   * Require quotes around object literal property names
   * @see https://eslint.org/docs/latest/rules/quote-props
   * @deprecated
   */
  'quote-props'?: Linter.RuleEntry<QuoteProps>;
  /**
   * Enforce the consistent use of either backticks, double, or single quotes
   * @see https://eslint.org/docs/latest/rules/quotes
   * @deprecated
   */
  'quotes'?: Linter.RuleEntry<Quotes>;
  /**
   * Enforce the use of the radix argument when using `parseInt()`
   * @see https://eslint.org/docs/latest/rules/radix
   */
  'radix'?: Linter.RuleEntry<Radix>;
  'react-refresh/only-export-components'?: Linter.RuleEntry<ReactRefreshOnlyExportComponents>;
  /**
   * Disallows DOM elements from using 'dangerouslySetInnerHTML'.
   * @see https://eslint-react.xyz/docs/rules/dom-no-dangerously-set-innerhtml
   */
  'react/dom-no-dangerously-set-innerhtml'?: Linter.RuleEntry<[]>;
  /**
   * Disallows DOM elements from using 'dangerouslySetInnerHTML' and 'children' at the same time.
   * @see https://eslint-react.xyz/docs/rules/dom-no-dangerously-set-innerhtml-with-children
   */
  'react/dom-no-dangerously-set-innerhtml-with-children'?: Linter.RuleEntry<[]>;
  /**
   * Disallows 'findDOMNode'.
   * @see https://eslint-react.xyz/docs/rules/dom-no-find-dom-node
   */
  'react/dom-no-find-dom-node'?: Linter.RuleEntry<[]>;
  /**
   * Disallows 'flushSync'.
   * @see https://eslint-react.xyz/docs/rules/dom-no-flush-sync
   */
  'react/dom-no-flush-sync'?: Linter.RuleEntry<[]>;
  /**
   * Replaces usage of 'ReactDOM.hydrate()' with 'hydrateRoot()'.
   * @see https://eslint-react.xyz/docs/rules/dom-no-hydrate
   */
  'react/dom-no-hydrate'?: Linter.RuleEntry<[]>;
  /**
   * Enforces an explicit 'type' attribute for 'button' elements.
   * @see https://eslint-react.xyz/docs/rules/dom-no-missing-button-type
   */
  'react/dom-no-missing-button-type'?: Linter.RuleEntry<[]>;
  /**
   * Enforces an explicit 'sandbox' attribute for 'iframe' elements.
   * @see https://eslint-react.xyz/docs/rules/dom-no-missing-iframe-sandbox
   */
  'react/dom-no-missing-iframe-sandbox'?: Linter.RuleEntry<[]>;
  /**
   * Replaces usage of 'ReactDOM.render()' with 'createRoot(node).render()'.
   * @see https://eslint-react.xyz/docs/rules/dom-no-render
   */
  'react/dom-no-render'?: Linter.RuleEntry<[]>;
  /**
   * Disallows the return value of 'ReactDOM.render'.
   * @see https://eslint-react.xyz/docs/rules/dom-no-render-return-value
   */
  'react/dom-no-render-return-value'?: Linter.RuleEntry<[]>;
  /**
   * Disallows 'javascript:' URLs as attribute values.
   * @see https://eslint-react.xyz/docs/rules/dom-no-script-url
   */
  'react/dom-no-script-url'?: Linter.RuleEntry<[]>;
  /**
   * Disallows the use of string style prop in JSX. Use an object instead.
   * @see https://eslint-react.xyz/docs/rules/dom-no-string-style-prop
   */
  'react/dom-no-string-style-prop'?: Linter.RuleEntry<[]>;
  /**
   * Disallows unknown 'DOM' properties.
   * @see https://eslint-react.xyz/docs/rules/dom-no-unknown-property
   */
  'react/dom-no-unknown-property'?: Linter.RuleEntry<ReactDomNoUnknownProperty>;
  /**
   * Enforces that the 'sandbox' attribute for 'iframe' elements is not set to unsafe combinations.
   * @see https://eslint-react.xyz/docs/rules/dom-no-unsafe-iframe-sandbox
   */
  'react/dom-no-unsafe-iframe-sandbox'?: Linter.RuleEntry<[]>;
  /**
   * Disallows 'target="_blank"' without 'rel="noreferrer noopener"'.
   * @see https://eslint-react.xyz/docs/rules/dom-no-unsafe-target-blank
   */
  'react/dom-no-unsafe-target-blank'?: Linter.RuleEntry<[]>;
  /**
   * Replaces usage of 'useFormState' with 'useActionState'.
   * @see https://eslint-react.xyz/docs/rules/dom-no-use-form-state
   */
  'react/dom-no-use-form-state'?: Linter.RuleEntry<[]>;
  /**
   * Disallows 'children' in void DOM elements.
   * @see https://eslint-react.xyz/docs/rules/dom-no-void-elements-with-children
   */
  'react/dom-no-void-elements-with-children'?: Linter.RuleEntry<[]>;
  /**
   * Validates usage of Error Boundaries instead of try/catch for errors in child components.
   * @see https://eslint-react.xyz/docs/rules/error-boundaries
   */
  'react/error-boundaries'?: Linter.RuleEntry<[]>;
  /**
   * Verifies the list of dependencies for Hooks like 'useEffect' and similar.
   * @see https://github.com/facebook/react/issues/14920
   */
  'react/exhaustive-deps'?: Linter.RuleEntry<ReactExhaustiveDeps>;
  /**
   * Validates against assignment/mutation of globals during render, part of ensuring that side effects must run outside of render.
   * @see https://eslint-react.xyz/docs/rules/globals
   */
  'react/globals'?: Linter.RuleEntry<[]>;
  /**
   * Validates against mutating props, state, and other values that are immutable.
   * @see https://eslint-react.xyz/docs/rules/immutability
   */
  'react/immutability'?: Linter.RuleEntry<[]>;
  /**
   * Disallows passing 'children' as a prop.
   * @see https://eslint-react.xyz/docs/rules/no-children-prop
   */
  'react/jsx-no-children-prop'?: Linter.RuleEntry<[]>;
  /**
   * Disallows passing 'children' as a prop when children are also passed as nested content.
   * @see https://eslint-react.xyz/docs/rules/no-children-prop-with-children
   */
  'react/jsx-no-children-prop-with-children'?: Linter.RuleEntry<[]>;
  /**
   * Prevents comment strings from being accidentally inserted into a JSX element's text nodes.
   * @see https://eslint-react.xyz/docs/rules/no-comment-textnodes
   */
  'react/jsx-no-comment-textnodes'?: Linter.RuleEntry<[]>;
  /**
   * Prevent patterns that cause deoptimization when using the automatic JSX runtime.
   * @see https://eslint-react.xyz/docs/rules/no-key-after-spread
   */
  'react/jsx-no-key-after-spread'?: Linter.RuleEntry<[]>;
  /**
   * Catches `$` before `{expr}` in JSX — typically from template literal `${expr}` being copy-pasted into JSX without removing the `$`. The `$` "leaks" into the rendered output.
   * @see https://eslint-react.xyz/docs/rules/no-leaked-dollar
   */
  'react/jsx-no-leaked-dollar'?: Linter.RuleEntry<[]>;
  /**
   * Catches `;` at the start of JSX text nodes — typically from accidentally placing a statement-ending `;` inside JSX. The `;` "leaks" into the rendered output.
   * @see https://eslint-react.xyz/docs/rules/no-leaked-semicolon
   */
  'react/jsx-no-leaked-semicolon'?: Linter.RuleEntry<[]>;
  /**
   * Disallow JSX namespace syntax, as React does not support them.
   * @see https://eslint-react.xyz/docs/rules/no-namespace
   */
  'react/jsx-no-namespace'?: Linter.RuleEntry<[]>;
  /**
   * Disallows useless fragment elements.
   * @see https://eslint-react.xyz/docs/rules/no-useless-fragment
   */
  'react/jsx-no-useless-fragment'?: Linter.RuleEntry<ReactJsxNoUselessFragment>;
  /**
   * Enforces the context name to be a valid component name with the suffix 'Context'.
   * @see https://eslint-react.xyz/docs/rules/naming-convention-context-name
   */
  'react/naming-convention-context-name'?: Linter.RuleEntry<[]>;
  /**
   * Enforces identifier names assigned from 'useId' calls to be either 'id' or end with 'Id'.
   * @see https://eslint-react.xyz/docs/rules/naming-convention-id-name
   */
  'react/naming-convention-id-name'?: Linter.RuleEntry<[]>;
  /**
   * Enforces identifier names assigned from 'useRef' calls to be either 'ref' or end with 'Ref'.
   * @see https://eslint-react.xyz/docs/rules/naming-convention-ref-name
   */
  'react/naming-convention-ref-name'?: Linter.RuleEntry<[]>;
  /**
   * Disallows accessing 'this.state' inside 'setState' calls.
   * @see https://eslint-react.xyz/docs/rules/no-access-state-in-setstate
   */
  'react/no-access-state-in-setstate'?: Linter.RuleEntry<[]>;
  /**
   * Disallows using an item's index in the array as its key.
   * @see https://eslint-react.xyz/docs/rules/no-array-index-key
   */
  'react/no-array-index-key'?: Linter.RuleEntry<[]>;
  /**
   * Disallows the use of 'Children.count' from the 'react' package.
   * @see https://eslint-react.xyz/docs/rules/no-children-count
   */
  'react/no-children-count'?: Linter.RuleEntry<[]>;
  /**
   * Disallows the use of 'Children.forEach' from the 'react' package.
   * @see https://eslint-react.xyz/docs/rules/no-children-for-each
   */
  'react/no-children-for-each'?: Linter.RuleEntry<[]>;
  /**
   * Disallows the use of 'Children.map' from the 'react' package.
   * @see https://eslint-react.xyz/docs/rules/no-children-map
   */
  'react/no-children-map'?: Linter.RuleEntry<[]>;
  /**
   * Disallows the use of 'Children.only' from the 'react' package.
   * @see https://eslint-react.xyz/docs/rules/no-children-only
   */
  'react/no-children-only'?: Linter.RuleEntry<[]>;
  /**
   * Disallows the use of 'Children.toArray' from the 'react' package.
   * @see https://eslint-react.xyz/docs/rules/no-children-to-array
   */
  'react/no-children-to-array'?: Linter.RuleEntry<[]>;
  /**
   * Disallows class components except for error boundaries.
   * @see https://eslint-react.xyz/docs/rules/no-class-component
   */
  'react/no-class-component'?: Linter.RuleEntry<[]>;
  /**
   * Disallows 'cloneElement'.
   * @see https://eslint-react.xyz/docs/rules/no-clone-element
   */
  'react/no-clone-element'?: Linter.RuleEntry<[]>;
  /**
   * Replaces usage of 'componentWillMount' with 'UNSAFE_componentWillMount'.
   * @see https://eslint-react.xyz/docs/rules/no-component-will-mount
   */
  'react/no-component-will-mount'?: Linter.RuleEntry<[]>;
  /**
   * Replaces usage of 'componentWillReceiveProps' with 'UNSAFE_componentWillReceiveProps'.
   * @see https://eslint-react.xyz/docs/rules/no-component-will-receive-props
   */
  'react/no-component-will-receive-props'?: Linter.RuleEntry<[]>;
  /**
   * Replaces usage of 'componentWillUpdate' with 'UNSAFE_componentWillUpdate'.
   * @see https://eslint-react.xyz/docs/rules/no-component-will-update
   */
  'react/no-component-will-update'?: Linter.RuleEntry<[]>;
  /**
   * Replaces usage of '<Context.Provider>' with '<Context>'.
   * @see https://eslint-react.xyz/docs/rules/no-context-provider
   */
  'react/no-context-provider'?: Linter.RuleEntry<[]>;
  /**
   * Disallows 'createRef' in function components.
   * @see https://eslint-react.xyz/docs/rules/no-create-ref
   */
  'react/no-create-ref'?: Linter.RuleEntry<[]>;
  /**
   * Disallows direct mutation of 'this.state'.
   * @see https://eslint-react.xyz/docs/rules/no-direct-mutation-state
   */
  'react/no-direct-mutation-state'?: Linter.RuleEntry<[]>;
  /**
   * Prevents duplicate 'key' props on sibling elements when rendering lists.
   * @see https://eslint-react.xyz/docs/rules/no-duplicate-key
   */
  'react/no-duplicate-key'?: Linter.RuleEntry<[]>;
  /**
   * Replaces usage of 'forwardRef' with passing 'ref' as a prop.
   * @see https://eslint-react.xyz/docs/rules/no-forward-ref
   */
  'react/no-forward-ref'?: Linter.RuleEntry<[]>;
  /**
   * Prevents implicitly passing the 'children' prop to components.
   * @see https://eslint-react.xyz/docs/rules/no-implicit-children
   */
  'react/no-implicit-children'?: Linter.RuleEntry<[]>;
  /**
   * Prevents implicitly passing the 'key' prop to components.
   * @see https://eslint-react.xyz/docs/rules/no-implicit-key
   */
  'react/no-implicit-key'?: Linter.RuleEntry<[]>;
  /**
   * Prevents implicitly passing the 'ref' prop to components.
   * @see https://eslint-react.xyz/docs/rules/no-implicit-ref
   */
  'react/no-implicit-ref'?: Linter.RuleEntry<[]>;
  /**
   * Prevents problematic leaked values from being rendered.
   * @see https://eslint-react.xyz/docs/rules/no-leaked-conditional-rendering
   */
  'react/no-leaked-conditional-rendering'?: Linter.RuleEntry<[]>;
  /**
   * Enforces that all components have a 'displayName' that can be used in DevTools.
   * @see https://eslint-react.xyz/docs/rules/no-missing-component-display-name
   */
  'react/no-missing-component-display-name'?: Linter.RuleEntry<[]>;
  /**
   * Enforces that all contexts have a 'displayName' that can be used in DevTools.
   * @see https://eslint-react.xyz/docs/rules/no-missing-context-display-name
   */
  'react/no-missing-context-display-name'?: Linter.RuleEntry<[]>;
  /**
   * Disallows missing 'key' on items in list rendering.
   * @see https://eslint-react.xyz/docs/rules/no-missing-key
   */
  'react/no-missing-key'?: Linter.RuleEntry<[]>;
  /**
   * Prevents incorrect usage of 'captureOwnerStack'.
   * @see https://eslint-react.xyz/docs/rules/no-misused-capture-owner-stack
   */
  'react/no-misused-capture-owner-stack'?: Linter.RuleEntry<[]>;
  /**
   * Disallows nesting component definitions inside other components.
   * @see https://eslint-react.xyz/docs/rules/no-nested-component-definitions
   */
  'react/no-nested-component-definitions'?: Linter.RuleEntry<[]>;
  /**
   * Disallows nesting lazy component declarations inside other components or hooks.
   * @see https://eslint-react.xyz/docs/rules/no-nested-lazy-component-declarations
   */
  'react/no-nested-lazy-component-declarations'?: Linter.RuleEntry<[]>;
  /**
   * Disallows calling 'this.setState' in 'componentDidMount' outside functions such as callbacks.
   * @see https://eslint-react.xyz/docs/rules/no-set-state-in-component-did-mount
   */
  'react/no-set-state-in-component-did-mount'?: Linter.RuleEntry<[]>;
  /**
   * Disallows calling 'this.setState' in 'componentDidUpdate' outside functions such as callbacks.
   * @see https://eslint-react.xyz/docs/rules/no-set-state-in-component-did-update
   */
  'react/no-set-state-in-component-did-update'?: Linter.RuleEntry<[]>;
  /**
   * Disallows calling 'this.setState' in 'componentWillUpdate' outside functions such as callbacks.
   * @see https://eslint-react.xyz/docs/rules/no-set-state-in-component-will-update
   */
  'react/no-set-state-in-component-will-update'?: Linter.RuleEntry<[]>;
  /**
   * Enforces that a function with the 'use' prefix uses at least one Hook inside it.
   * @see https://eslint-react.xyz/docs/rules/no-unnecessary-use-prefix
   */
  'react/no-unnecessary-use-prefix'?: Linter.RuleEntry<[]>;
  /**
   * Warns about the use of 'UNSAFE_componentWillMount' in class components.
   * @see https://eslint-react.xyz/docs/rules/no-unsafe-component-will-mount
   */
  'react/no-unsafe-component-will-mount'?: Linter.RuleEntry<[]>;
  /**
   * Warns about the use of 'UNSAFE_componentWillReceiveProps' in class components.
   * @see https://eslint-react.xyz/docs/rules/no-unsafe-component-will-receive-props
   */
  'react/no-unsafe-component-will-receive-props'?: Linter.RuleEntry<[]>;
  /**
   * Warns about the use of 'UNSAFE_componentWillUpdate' in class components.
   * @see https://eslint-react.xyz/docs/rules/no-unsafe-component-will-update
   */
  'react/no-unsafe-component-will-update'?: Linter.RuleEntry<[]>;
  /**
   * Prevents non-stable values (i.e., object literals) from being used as a value for 'Context.Provider'.
   * @see https://eslint-react.xyz/docs/rules/no-unstable-context-value
   */
  'react/no-unstable-context-value'?: Linter.RuleEntry<[]>;
  /**
   * Prevents using referential-type values as default props in object destructuring.
   * @see https://eslint-react.xyz/docs/rules/no-unstable-default-props
   */
  'react/no-unstable-default-props'?: Linter.RuleEntry<ReactNoUnstableDefaultProps>;
  /**
   * Warns about unused class component methods and properties.
   * @see https://eslint-react.xyz/docs/rules/no-unused-class-component-members
   */
  'react/no-unused-class-component-members'?: Linter.RuleEntry<[]>;
  /**
   * Warns about component props that are defined but never used.
   * @see https://eslint-react.xyz/docs/rules/no-unused-props
   */
  'react/no-unused-props'?: Linter.RuleEntry<[]>;
  /**
   * Warns about state variables that are defined but never used, or only used in effects.
   * @see https://eslint-react.xyz/docs/rules/no-unused-state
   */
  'react/no-unused-state'?: Linter.RuleEntry<[]>;
  /**
   * Replaces usage of 'useContext' with 'use'.
   * @see https://eslint-react.xyz/docs/rules/no-use-context
   */
  'react/no-use-context'?: Linter.RuleEntry<[]>;
  /**
   * Validates that components and hooks are pure by checking that they do not call known-impure functions during render.
   * @see https://eslint-react.xyz/docs/rules/purity
   */
  'react/purity'?: Linter.RuleEntry<[]>;
  /**
   * Validates correct usage of refs by checking that 'ref.current' is not read or written during render.
   * @see https://eslint-react.xyz/docs/rules/refs
   */
  'react/refs'?: Linter.RuleEntry<[]>;
  /**
   * Validates and transforms React Client/Server Function definitions.
   * @see https://eslint-react.xyz/docs/rules/function-definition
   */
  'react/rsc-function-definition'?: Linter.RuleEntry<[]>;
  /**
   * Enforces the Rules of Hooks.
   * @see https://react.dev/reference/rules/rules-of-hooks
   */
  'react/rules-of-hooks'?: Linter.RuleEntry<ReactRulesOfHooks>;
  /**
   * Validates against setting state synchronously in an effect, which can lead to re-renders that degrade performance.
   * @see https://eslint-react.xyz/docs/rules/set-state-in-effect
   */
  'react/set-state-in-effect'?: Linter.RuleEntry<[]>;
  /**
   * Validates against unconditionally setting state during render, which can trigger additional renders and potential infinite render loops.
   * @see https://eslint-react.xyz/docs/rules/set-state-in-render
   */
  'react/set-state-in-render'?: Linter.RuleEntry<[]>;
  /**
   * Validates that components are static, not recreated every render.
   * @see https://eslint-react.xyz/docs/rules/static-components
   */
  'react/static-components'?: Linter.RuleEntry<[]>;
  /**
   * Validates against syntax that React Compiler does not support.
   * @see https://eslint-react.xyz/docs/rules/unsupported-syntax
   */
  'react/unsupported-syntax'?: Linter.RuleEntry<[]>;
  /**
   * Validates that 'useMemo' is called with a callback that returns a value.
   * @see https://eslint-react.xyz/docs/rules/use-memo
   */
  'react/use-memo'?: Linter.RuleEntry<[]>;
  /**
   * Enforces correct usage of 'useState', including destructuring, symmetric naming of the value and setter, and wrapping expensive initializers in a lazy initializer function.
   * @see https://eslint-react.xyz/docs/rules/use-state
   */
  'react/use-state'?: Linter.RuleEntry<ReactUseState>;
  /**
   * Enforces that every 'addEventListener' in a component or custom hook has a corresponding 'removeEventListener'.
   * @see https://eslint-react.xyz/docs/rules/web-api-no-leaked-event-listener
   */
  'react/web-api-no-leaked-event-listener'?: Linter.RuleEntry<[]>;
  /**
   * Enforces that every 'fetch' in a component or custom hook has a corresponding 'AbortController' abort in the cleanup function.
   * @see https://eslint-react.xyz/docs/rules/web-api-no-leaked-fetch
   */
  'react/web-api-no-leaked-fetch'?: Linter.RuleEntry<[]>;
  /**
   * Enforces that every 'setInterval' in a component or custom hook has a corresponding 'clearInterval'.
   * @see https://eslint-react.xyz/docs/rules/web-api-no-leaked-interval
   */
  'react/web-api-no-leaked-interval'?: Linter.RuleEntry<[]>;
  /**
   * Enforces that every 'ResizeObserver' created in a component or custom hook has a corresponding 'ResizeObserver.disconnect()'.
   * @see https://eslint-react.xyz/docs/rules/web-api-no-leaked-resize-observer
   */
  'react/web-api-no-leaked-resize-observer'?: Linter.RuleEntry<[]>;
  /**
   * Enforces that every 'setTimeout' in a component or custom hook has a corresponding 'clearTimeout'.
   * @see https://eslint-react.xyz/docs/rules/web-api-no-leaked-timeout
   */
  'react/web-api-no-leaked-timeout'?: Linter.RuleEntry<[]>;
  /**
   * Validates usage of Error Boundaries instead of try/catch for errors in child components.
   * @see https://eslint-react.xyz/docs/rules/error-boundaries
   */
  'react/x-error-boundaries'?: Linter.RuleEntry<[]>;
  /**
   * Verifies the list of dependencies for Hooks like 'useEffect' and similar.
   * @see https://github.com/facebook/react/issues/14920
   */
  'react/x-exhaustive-deps'?: Linter.RuleEntry<ReactXExhaustiveDeps>;
  /**
   * Validates against assignment/mutation of globals during render, part of ensuring that side effects must run outside of render.
   * @see https://eslint-react.xyz/docs/rules/globals
   */
  'react/x-globals'?: Linter.RuleEntry<[]>;
  /**
   * Validates against mutating props, state, and other values that are immutable.
   * @see https://eslint-react.xyz/docs/rules/immutability
   */
  'react/x-immutability'?: Linter.RuleEntry<[]>;
  /**
   * Disallows accessing 'this.state' inside 'setState' calls.
   * @see https://eslint-react.xyz/docs/rules/no-access-state-in-setstate
   */
  'react/x-no-access-state-in-setstate'?: Linter.RuleEntry<[]>;
  /**
   * Disallows using an item's index in the array as its key.
   * @see https://eslint-react.xyz/docs/rules/no-array-index-key
   */
  'react/x-no-array-index-key'?: Linter.RuleEntry<[]>;
  /**
   * Disallows the use of 'Children.count' from the 'react' package.
   * @see https://eslint-react.xyz/docs/rules/no-children-count
   */
  'react/x-no-children-count'?: Linter.RuleEntry<[]>;
  /**
   * Disallows the use of 'Children.forEach' from the 'react' package.
   * @see https://eslint-react.xyz/docs/rules/no-children-for-each
   */
  'react/x-no-children-for-each'?: Linter.RuleEntry<[]>;
  /**
   * Disallows the use of 'Children.map' from the 'react' package.
   * @see https://eslint-react.xyz/docs/rules/no-children-map
   */
  'react/x-no-children-map'?: Linter.RuleEntry<[]>;
  /**
   * Disallows the use of 'Children.only' from the 'react' package.
   * @see https://eslint-react.xyz/docs/rules/no-children-only
   */
  'react/x-no-children-only'?: Linter.RuleEntry<[]>;
  /**
   * Disallows the use of 'Children.toArray' from the 'react' package.
   * @see https://eslint-react.xyz/docs/rules/no-children-to-array
   */
  'react/x-no-children-to-array'?: Linter.RuleEntry<[]>;
  /**
   * Disallows class components except for error boundaries.
   * @see https://eslint-react.xyz/docs/rules/no-class-component
   */
  'react/x-no-class-component'?: Linter.RuleEntry<[]>;
  /**
   * Disallows 'cloneElement'.
   * @see https://eslint-react.xyz/docs/rules/no-clone-element
   */
  'react/x-no-clone-element'?: Linter.RuleEntry<[]>;
  /**
   * Replaces usage of 'componentWillMount' with 'UNSAFE_componentWillMount'.
   * @see https://eslint-react.xyz/docs/rules/no-component-will-mount
   */
  'react/x-no-component-will-mount'?: Linter.RuleEntry<[]>;
  /**
   * Replaces usage of 'componentWillReceiveProps' with 'UNSAFE_componentWillReceiveProps'.
   * @see https://eslint-react.xyz/docs/rules/no-component-will-receive-props
   */
  'react/x-no-component-will-receive-props'?: Linter.RuleEntry<[]>;
  /**
   * Replaces usage of 'componentWillUpdate' with 'UNSAFE_componentWillUpdate'.
   * @see https://eslint-react.xyz/docs/rules/no-component-will-update
   */
  'react/x-no-component-will-update'?: Linter.RuleEntry<[]>;
  /**
   * Replaces usage of '<Context.Provider>' with '<Context>'.
   * @see https://eslint-react.xyz/docs/rules/no-context-provider
   */
  'react/x-no-context-provider'?: Linter.RuleEntry<[]>;
  /**
   * Disallows 'createRef' in function components.
   * @see https://eslint-react.xyz/docs/rules/no-create-ref
   */
  'react/x-no-create-ref'?: Linter.RuleEntry<[]>;
  /**
   * Disallows direct mutation of 'this.state'.
   * @see https://eslint-react.xyz/docs/rules/no-direct-mutation-state
   */
  'react/x-no-direct-mutation-state'?: Linter.RuleEntry<[]>;
  /**
   * Prevents duplicate 'key' props on sibling elements when rendering lists.
   * @see https://eslint-react.xyz/docs/rules/no-duplicate-key
   */
  'react/x-no-duplicate-key'?: Linter.RuleEntry<[]>;
  /**
   * Replaces usage of 'forwardRef' with passing 'ref' as a prop.
   * @see https://eslint-react.xyz/docs/rules/no-forward-ref
   */
  'react/x-no-forward-ref'?: Linter.RuleEntry<[]>;
  /**
   * Prevents implicitly passing the 'children' prop to components.
   * @see https://eslint-react.xyz/docs/rules/no-implicit-children
   */
  'react/x-no-implicit-children'?: Linter.RuleEntry<[]>;
  /**
   * Prevents implicitly passing the 'key' prop to components.
   * @see https://eslint-react.xyz/docs/rules/no-implicit-key
   */
  'react/x-no-implicit-key'?: Linter.RuleEntry<[]>;
  /**
   * Prevents implicitly passing the 'ref' prop to components.
   * @see https://eslint-react.xyz/docs/rules/no-implicit-ref
   */
  'react/x-no-implicit-ref'?: Linter.RuleEntry<[]>;
  /**
   * Prevents problematic leaked values from being rendered.
   * @see https://eslint-react.xyz/docs/rules/no-leaked-conditional-rendering
   */
  'react/x-no-leaked-conditional-rendering'?: Linter.RuleEntry<[]>;
  /**
   * Enforces that all components have a 'displayName' that can be used in DevTools.
   * @see https://eslint-react.xyz/docs/rules/no-missing-component-display-name
   */
  'react/x-no-missing-component-display-name'?: Linter.RuleEntry<[]>;
  /**
   * Enforces that all contexts have a 'displayName' that can be used in DevTools.
   * @see https://eslint-react.xyz/docs/rules/no-missing-context-display-name
   */
  'react/x-no-missing-context-display-name'?: Linter.RuleEntry<[]>;
  /**
   * Disallows missing 'key' on items in list rendering.
   * @see https://eslint-react.xyz/docs/rules/no-missing-key
   */
  'react/x-no-missing-key'?: Linter.RuleEntry<[]>;
  /**
   * Prevents incorrect usage of 'captureOwnerStack'.
   * @see https://eslint-react.xyz/docs/rules/no-misused-capture-owner-stack
   */
  'react/x-no-misused-capture-owner-stack'?: Linter.RuleEntry<[]>;
  /**
   * Disallows nesting component definitions inside other components.
   * @see https://eslint-react.xyz/docs/rules/no-nested-component-definitions
   */
  'react/x-no-nested-component-definitions'?: Linter.RuleEntry<[]>;
  /**
   * Disallows nesting lazy component declarations inside other components or hooks.
   * @see https://eslint-react.xyz/docs/rules/no-nested-lazy-component-declarations
   */
  'react/x-no-nested-lazy-component-declarations'?: Linter.RuleEntry<[]>;
  /**
   * Disallows calling 'this.setState' in 'componentDidMount' outside functions such as callbacks.
   * @see https://eslint-react.xyz/docs/rules/no-set-state-in-component-did-mount
   */
  'react/x-no-set-state-in-component-did-mount'?: Linter.RuleEntry<[]>;
  /**
   * Disallows calling 'this.setState' in 'componentDidUpdate' outside functions such as callbacks.
   * @see https://eslint-react.xyz/docs/rules/no-set-state-in-component-did-update
   */
  'react/x-no-set-state-in-component-did-update'?: Linter.RuleEntry<[]>;
  /**
   * Disallows calling 'this.setState' in 'componentWillUpdate' outside functions such as callbacks.
   * @see https://eslint-react.xyz/docs/rules/no-set-state-in-component-will-update
   */
  'react/x-no-set-state-in-component-will-update'?: Linter.RuleEntry<[]>;
  /**
   * Enforces that a function with the 'use' prefix uses at least one Hook inside it.
   * @see https://eslint-react.xyz/docs/rules/no-unnecessary-use-prefix
   */
  'react/x-no-unnecessary-use-prefix'?: Linter.RuleEntry<[]>;
  /**
   * Warns about the use of 'UNSAFE_componentWillMount' in class components.
   * @see https://eslint-react.xyz/docs/rules/no-unsafe-component-will-mount
   */
  'react/x-no-unsafe-component-will-mount'?: Linter.RuleEntry<[]>;
  /**
   * Warns about the use of 'UNSAFE_componentWillReceiveProps' in class components.
   * @see https://eslint-react.xyz/docs/rules/no-unsafe-component-will-receive-props
   */
  'react/x-no-unsafe-component-will-receive-props'?: Linter.RuleEntry<[]>;
  /**
   * Warns about the use of 'UNSAFE_componentWillUpdate' in class components.
   * @see https://eslint-react.xyz/docs/rules/no-unsafe-component-will-update
   */
  'react/x-no-unsafe-component-will-update'?: Linter.RuleEntry<[]>;
  /**
   * Prevents non-stable values (i.e., object literals) from being used as a value for 'Context.Provider'.
   * @see https://eslint-react.xyz/docs/rules/no-unstable-context-value
   */
  'react/x-no-unstable-context-value'?: Linter.RuleEntry<[]>;
  /**
   * Prevents using referential-type values as default props in object destructuring.
   * @see https://eslint-react.xyz/docs/rules/no-unstable-default-props
   */
  'react/x-no-unstable-default-props'?: Linter.RuleEntry<ReactXNoUnstableDefaultProps>;
  /**
   * Warns about unused class component methods and properties.
   * @see https://eslint-react.xyz/docs/rules/no-unused-class-component-members
   */
  'react/x-no-unused-class-component-members'?: Linter.RuleEntry<[]>;
  /**
   * Warns about component props that are defined but never used.
   * @see https://eslint-react.xyz/docs/rules/no-unused-props
   */
  'react/x-no-unused-props'?: Linter.RuleEntry<[]>;
  /**
   * Warns about state variables that are defined but never used, or only used in effects.
   * @see https://eslint-react.xyz/docs/rules/no-unused-state
   */
  'react/x-no-unused-state'?: Linter.RuleEntry<[]>;
  /**
   * Replaces usage of 'useContext' with 'use'.
   * @see https://eslint-react.xyz/docs/rules/no-use-context
   */
  'react/x-no-use-context'?: Linter.RuleEntry<[]>;
  /**
   * Validates that components and hooks are pure by checking that they do not call known-impure functions during render.
   * @see https://eslint-react.xyz/docs/rules/purity
   */
  'react/x-purity'?: Linter.RuleEntry<[]>;
  /**
   * Validates correct usage of refs by checking that 'ref.current' is not read or written during render.
   * @see https://eslint-react.xyz/docs/rules/refs
   */
  'react/x-refs'?: Linter.RuleEntry<[]>;
  /**
   * Enforces the Rules of Hooks.
   * @see https://react.dev/reference/rules/rules-of-hooks
   */
  'react/x-rules-of-hooks'?: Linter.RuleEntry<ReactXRulesOfHooks>;
  /**
   * Validates against setting state synchronously in an effect, which can lead to re-renders that degrade performance.
   * @see https://eslint-react.xyz/docs/rules/set-state-in-effect
   */
  'react/x-set-state-in-effect'?: Linter.RuleEntry<[]>;
  /**
   * Validates against unconditionally setting state during render, which can trigger additional renders and potential infinite render loops.
   * @see https://eslint-react.xyz/docs/rules/set-state-in-render
   */
  'react/x-set-state-in-render'?: Linter.RuleEntry<[]>;
  /**
   * Validates that components are static, not recreated every render.
   * @see https://eslint-react.xyz/docs/rules/static-components
   */
  'react/x-static-components'?: Linter.RuleEntry<[]>;
  /**
   * Validates against syntax that React Compiler does not support.
   * @see https://eslint-react.xyz/docs/rules/unsupported-syntax
   */
  'react/x-unsupported-syntax'?: Linter.RuleEntry<[]>;
  /**
   * Validates that 'useMemo' is called with a callback that returns a value.
   * @see https://eslint-react.xyz/docs/rules/use-memo
   */
  'react/x-use-memo'?: Linter.RuleEntry<[]>;
  /**
   * Enforces correct usage of 'useState', including destructuring, symmetric naming of the value and setter, and wrapping expensive initializers in a lazy initializer function.
   * @see https://eslint-react.xyz/docs/rules/use-state
   */
  'react/x-use-state'?: Linter.RuleEntry<ReactXUseState>;
  /**
   * Disallow assignments that can lead to race conditions due to usage of `await` or `yield`
   * @see https://eslint.org/docs/latest/rules/require-atomic-updates
   */
  'require-atomic-updates'?: Linter.RuleEntry<RequireAtomicUpdates>;
  /**
   * Disallow async functions which have no `await` expression
   * @see https://eslint.org/docs/latest/rules/require-await
   */
  'require-await'?: Linter.RuleEntry<[]>;
  /**
   * Enforce the use of `u` or `v` flag on regular expressions
   * @see https://eslint.org/docs/latest/rules/require-unicode-regexp
   */
  'require-unicode-regexp'?: Linter.RuleEntry<RequireUnicodeRegexp>;
  /**
   * Require generator functions to contain `yield`
   * @see https://eslint.org/docs/latest/rules/require-yield
   */
  'require-yield'?: Linter.RuleEntry<[]>;
  /**
   * Enforce spacing between rest and spread operators and their expressions
   * @see https://eslint.org/docs/latest/rules/rest-spread-spacing
   * @deprecated
   */
  'rest-spread-spacing'?: Linter.RuleEntry<RestSpreadSpacing>;
  /**
   * Require or disallow semicolons instead of ASI
   * @see https://eslint.org/docs/latest/rules/semi
   * @deprecated
   */
  'semi'?: Linter.RuleEntry<Semi>;
  /**
   * Enforce consistent spacing before and after semicolons
   * @see https://eslint.org/docs/latest/rules/semi-spacing
   * @deprecated
   */
  'semi-spacing'?: Linter.RuleEntry<SemiSpacing>;
  /**
   * Enforce location of semicolons
   * @see https://eslint.org/docs/latest/rules/semi-style
   * @deprecated
   */
  'semi-style'?: Linter.RuleEntry<SemiStyle>;
  /**
   * Enforce sorted `import` declarations within modules
   * @see https://eslint.org/docs/latest/rules/sort-imports
   */
  'sort-imports'?: Linter.RuleEntry<SortImports>;
  /**
   * Require object keys to be sorted
   * @see https://eslint.org/docs/latest/rules/sort-keys
   */
  'sort-keys'?: Linter.RuleEntry<SortKeys>;
  /**
   * Require variables within the same declaration block to be sorted
   * @see https://eslint.org/docs/latest/rules/sort-vars
   */
  'sort-vars'?: Linter.RuleEntry<SortVars>;
  /**
   * Enforce consistent spacing before blocks
   * @see https://eslint.org/docs/latest/rules/space-before-blocks
   * @deprecated
   */
  'space-before-blocks'?: Linter.RuleEntry<SpaceBeforeBlocks>;
  /**
   * Enforce consistent spacing before `function` definition opening parenthesis
   * @see https://eslint.org/docs/latest/rules/space-before-function-paren
   * @deprecated
   */
  'space-before-function-paren'?: Linter.RuleEntry<SpaceBeforeFunctionParen>;
  /**
   * Enforce consistent spacing inside parentheses
   * @see https://eslint.org/docs/latest/rules/space-in-parens
   * @deprecated
   */
  'space-in-parens'?: Linter.RuleEntry<SpaceInParens>;
  /**
   * Require spacing around infix operators
   * @see https://eslint.org/docs/latest/rules/space-infix-ops
   * @deprecated
   */
  'space-infix-ops'?: Linter.RuleEntry<SpaceInfixOps>;
  /**
   * Enforce consistent spacing before or after unary operators
   * @see https://eslint.org/docs/latest/rules/space-unary-ops
   * @deprecated
   */
  'space-unary-ops'?: Linter.RuleEntry<SpaceUnaryOps>;
  /**
   * Enforce consistent spacing after the `//` or `/*` in a comment
   * @see https://eslint.org/docs/latest/rules/spaced-comment
   * @deprecated
   */
  'spaced-comment'?: Linter.RuleEntry<SpacedComment>;
  /**
   * Require or disallow strict mode directives
   * @see https://eslint.org/docs/latest/rules/strict
   */
  'strict'?: Linter.RuleEntry<Strict>;
  /**
   * Enforce spacing around colons of switch statements
   * @see https://eslint.org/docs/latest/rules/switch-colon-spacing
   * @deprecated
   */
  'switch-colon-spacing'?: Linter.RuleEntry<SwitchColonSpacing>;
  /**
   * Require symbol descriptions
   * @see https://eslint.org/docs/latest/rules/symbol-description
   */
  'symbol-description'?: Linter.RuleEntry<[]>;
  /**
   * Require or disallow spacing around embedded expressions of template strings
   * @see https://eslint.org/docs/latest/rules/template-curly-spacing
   * @deprecated
   */
  'template-curly-spacing'?: Linter.RuleEntry<TemplateCurlySpacing>;
  /**
   * Require or disallow spacing between template tags and their literals
   * @see https://eslint.org/docs/latest/rules/template-tag-spacing
   * @deprecated
   */
  'template-tag-spacing'?: Linter.RuleEntry<TemplateTagSpacing>;
  /**
   * Require or disallow Unicode byte order mark (BOM)
   * @see https://eslint.org/docs/latest/rules/unicode-bom
   */
  'unicode-bom'?: Linter.RuleEntry<UnicodeBom>;
  /**
   * Improve regexes by making them shorter, consistent, and safer.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/better-regex.md
   */
  'unicorn/better-regex'?: Linter.RuleEntry<UnicornBetterRegex>;
  /**
   * Enforce a specific parameter name in catch clauses.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/catch-error-name.md
   */
  'unicorn/catch-error-name'?: Linter.RuleEntry<UnicornCatchErrorName>;
  /**
   * Enforce consistent assertion style with `node:assert`.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/consistent-assert.md
   */
  'unicorn/consistent-assert'?: Linter.RuleEntry<[]>;
  /**
   * Prefer passing `Date` directly to the constructor when cloning.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/consistent-date-clone.md
   */
  'unicorn/consistent-date-clone'?: Linter.RuleEntry<[]>;
  /**
   * Use destructured variables over properties.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/consistent-destructuring.md
   */
  'unicorn/consistent-destructuring'?: Linter.RuleEntry<[]>;
  /**
   * Prefer consistent types when spreading a ternary in an array literal.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/consistent-empty-array-spread.md
   */
  'unicorn/consistent-empty-array-spread'?: Linter.RuleEntry<[]>;
  /**
   * Enforce consistent style for element existence checks with `indexOf()`, `lastIndexOf()`, `findIndex()`, and `findLastIndex()`.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/consistent-existence-index-check.md
   */
  'unicorn/consistent-existence-index-check'?: Linter.RuleEntry<[]>;
  /**
   * Move function definitions to the highest possible scope.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/consistent-function-scoping.md
   */
  'unicorn/consistent-function-scoping'?: Linter.RuleEntry<UnicornConsistentFunctionScoping>;
  /**
   * Enforce consistent style for escaping `${` in template literals.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/consistent-template-literal-escape.md
   */
  'unicorn/consistent-template-literal-escape'?: Linter.RuleEntry<[]>;
  /**
   * Enforce correct `Error` subclassing.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/custom-error-definition.md
   */
  'unicorn/custom-error-definition'?: Linter.RuleEntry<[]>;
  /**
   * Enforce no spaces between braces.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/empty-brace-spaces.md
   */
  'unicorn/empty-brace-spaces'?: Linter.RuleEntry<[]>;
  /**
   * Enforce passing a `message` value when creating a built-in error.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/error-message.md
   */
  'unicorn/error-message'?: Linter.RuleEntry<[]>;
  /**
   * Require escape sequences to use uppercase or lowercase values.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/escape-case.md
   */
  'unicorn/escape-case'?: Linter.RuleEntry<UnicornEscapeCase>;
  /**
   * Add expiration conditions to TODO comments.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/expiring-todo-comments.md
   */
  'unicorn/expiring-todo-comments'?: Linter.RuleEntry<UnicornExpiringTodoComments>;
  /**
   * Enforce explicitly comparing the `length` or `size` property of a value.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/explicit-length-check.md
   */
  'unicorn/explicit-length-check'?: Linter.RuleEntry<UnicornExplicitLengthCheck>;
  /**
   * Enforce a case style for filenames.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/filename-case.md
   */
  'unicorn/filename-case'?: Linter.RuleEntry<UnicornFilenameCase>;
  /**
   * Enforce specific import styles per module.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/import-style.md
   */
  'unicorn/import-style'?: Linter.RuleEntry<UnicornImportStyle>;
  /**
   * Prevent usage of variables from outside the scope of isolated functions.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/isolated-functions.md
   */
  'unicorn/isolated-functions'?: Linter.RuleEntry<UnicornIsolatedFunctions>;
  /**
   * Enforce the use of `new` for all builtins, except `String`, `Number`, `Boolean`, `Symbol` and `BigInt`.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/new-for-builtins.md
   */
  'unicorn/new-for-builtins'?: Linter.RuleEntry<[]>;
  /**
   * Enforce specifying rules to disable in `eslint-disable` comments.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/no-abusive-eslint-disable.md
   */
  'unicorn/no-abusive-eslint-disable'?: Linter.RuleEntry<[]>;
  /**
   * Disallow recursive access to `this` within getters and setters.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/no-accessor-recursion.md
   */
  'unicorn/no-accessor-recursion'?: Linter.RuleEntry<[]>;
  /**
   * Disallow anonymous functions and classes as the default export.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/no-anonymous-default-export.md
   */
  'unicorn/no-anonymous-default-export'?: Linter.RuleEntry<[]>;
  /**
   * Prevent passing a function reference directly to iterator methods.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/no-array-callback-reference.md
   */
  'unicorn/no-array-callback-reference'?: Linter.RuleEntry<[]>;
  /**
   * Prefer `for…of` over the `forEach` method.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/no-array-for-each.md
   */
  'unicorn/no-array-for-each'?: Linter.RuleEntry<[]>;
  /**
   * Disallow using the `this` argument in array methods.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/no-array-method-this-argument.md
   */
  'unicorn/no-array-method-this-argument'?: Linter.RuleEntry<[]>;
  /**
   * Replaced by `unicorn/prefer-single-call` which covers more cases.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/deleted-and-deprecated-rules.md#no-array-push-push
   * @deprecated
   */
  'unicorn/no-array-push-push'?: Linter.RuleEntry<[]>;
  /**
   * Disallow `Array#reduce()` and `Array#reduceRight()`.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/no-array-reduce.md
   */
  'unicorn/no-array-reduce'?: Linter.RuleEntry<UnicornNoArrayReduce>;
  /**
   * Prefer `Array#toReversed()` over `Array#reverse()`.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/no-array-reverse.md
   */
  'unicorn/no-array-reverse'?: Linter.RuleEntry<UnicornNoArrayReverse>;
  /**
   * Prefer `Array#toSorted()` over `Array#sort()`.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/no-array-sort.md
   */
  'unicorn/no-array-sort'?: Linter.RuleEntry<UnicornNoArraySort>;
  /**
   * Disallow member access from await expression.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/no-await-expression-member.md
   */
  'unicorn/no-await-expression-member'?: Linter.RuleEntry<[]>;
  /**
   * Disallow using `await` in `Promise` method parameters.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/no-await-in-promise-methods.md
   */
  'unicorn/no-await-in-promise-methods'?: Linter.RuleEntry<[]>;
  /**
   * Do not use leading/trailing space between `console.log` parameters.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/no-console-spaces.md
   */
  'unicorn/no-console-spaces'?: Linter.RuleEntry<[]>;
  /**
   * Do not use `document.cookie` directly.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/no-document-cookie.md
   */
  'unicorn/no-document-cookie'?: Linter.RuleEntry<[]>;
  /**
   * Disallow empty files.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/no-empty-file.md
   */
  'unicorn/no-empty-file'?: Linter.RuleEntry<[]>;
  /**
   * Do not use a `for` loop that can be replaced with a `for-of` loop.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/no-for-loop.md
   */
  'unicorn/no-for-loop'?: Linter.RuleEntry<[]>;
  /**
   * Enforce the use of Unicode escapes instead of hexadecimal escapes.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/no-hex-escape.md
   */
  'unicorn/no-hex-escape'?: Linter.RuleEntry<[]>;
  /**
   * Disallow immediate mutation after variable assignment.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/no-immediate-mutation.md
   */
  'unicorn/no-immediate-mutation'?: Linter.RuleEntry<[]>;
  /**
   * Replaced by `unicorn/no-instanceof-builtins` which covers more cases.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/deleted-and-deprecated-rules.md#no-instanceof-array
   * @deprecated
   */
  'unicorn/no-instanceof-array'?: Linter.RuleEntry<[]>;
  /**
   * Disallow `instanceof` with built-in objects
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/no-instanceof-builtins.md
   */
  'unicorn/no-instanceof-builtins'?: Linter.RuleEntry<UnicornNoInstanceofBuiltins>;
  /**
   * Disallow invalid options in `fetch()` and `new Request()`.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/no-invalid-fetch-options.md
   */
  'unicorn/no-invalid-fetch-options'?: Linter.RuleEntry<[]>;
  /**
   * Prevent calling `EventTarget#removeEventListener()` with the result of an expression.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/no-invalid-remove-event-listener.md
   */
  'unicorn/no-invalid-remove-event-listener'?: Linter.RuleEntry<[]>;
  /**
   * Disallow identifiers starting with `new` or `class`.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/no-keyword-prefix.md
   */
  'unicorn/no-keyword-prefix'?: Linter.RuleEntry<UnicornNoKeywordPrefix>;
  /**
   * Replaced by `unicorn/no-unnecessary-slice-end` which covers more cases.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/deleted-and-deprecated-rules.md#no-length-as-slice-end
   * @deprecated
   */
  'unicorn/no-length-as-slice-end'?: Linter.RuleEntry<[]>;
  /**
   * Disallow `if` statements as the only statement in `if` blocks without `else`.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/no-lonely-if.md
   */
  'unicorn/no-lonely-if'?: Linter.RuleEntry<[]>;
  /**
   * Disallow a magic number as the `depth` argument in `Array#flat(…).`
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/no-magic-array-flat-depth.md
   */
  'unicorn/no-magic-array-flat-depth'?: Linter.RuleEntry<[]>;
  /**
   * Disallow named usage of default import and export.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/no-named-default.md
   */
  'unicorn/no-named-default'?: Linter.RuleEntry<[]>;
  /**
   * Disallow negated conditions.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/no-negated-condition.md
   */
  'unicorn/no-negated-condition'?: Linter.RuleEntry<[]>;
  /**
   * Disallow negated expression in equality check.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/no-negation-in-equality-check.md
   */
  'unicorn/no-negation-in-equality-check'?: Linter.RuleEntry<[]>;
  /**
   * Disallow nested ternary expressions.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/no-nested-ternary.md
   */
  'unicorn/no-nested-ternary'?: Linter.RuleEntry<[]>;
  /**
   * Disallow `new Array()`.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/no-new-array.md
   */
  'unicorn/no-new-array'?: Linter.RuleEntry<[]>;
  /**
   * Enforce the use of `Buffer.from()` and `Buffer.alloc()` instead of the deprecated `new Buffer()`.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/no-new-buffer.md
   */
  'unicorn/no-new-buffer'?: Linter.RuleEntry<[]>;
  /**
   * Disallow the use of the `null` literal.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/no-null.md
   */
  'unicorn/no-null'?: Linter.RuleEntry<UnicornNoNull>;
  /**
   * Disallow the use of objects as default parameters.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/no-object-as-default-parameter.md
   */
  'unicorn/no-object-as-default-parameter'?: Linter.RuleEntry<[]>;
  /**
   * Disallow `process.exit()`.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/no-process-exit.md
   */
  'unicorn/no-process-exit'?: Linter.RuleEntry<[]>;
  /**
   * Disallow passing single-element arrays to `Promise` methods.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/no-single-promise-in-promise-methods.md
   */
  'unicorn/no-single-promise-in-promise-methods'?: Linter.RuleEntry<[]>;
  /**
   * Disallow classes that only have static members.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/no-static-only-class.md
   */
  'unicorn/no-static-only-class'?: Linter.RuleEntry<[]>;
  /**
   * Disallow `then` property.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/no-thenable.md
   */
  'unicorn/no-thenable'?: Linter.RuleEntry<[]>;
  /**
   * Disallow assigning `this` to a variable.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/no-this-assignment.md
   */
  'unicorn/no-this-assignment'?: Linter.RuleEntry<[]>;
  /**
   * Disallow comparing `undefined` using `typeof`.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/no-typeof-undefined.md
   */
  'unicorn/no-typeof-undefined'?: Linter.RuleEntry<UnicornNoTypeofUndefined>;
  /**
   * Disallow using `1` as the `depth` argument of `Array#flat()`.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/no-unnecessary-array-flat-depth.md
   */
  'unicorn/no-unnecessary-array-flat-depth'?: Linter.RuleEntry<[]>;
  /**
   * Disallow using `.length` or `Infinity` as the `deleteCount` or `skipCount` argument of `Array#{splice,toSpliced}()`.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/no-unnecessary-array-splice-count.md
   */
  'unicorn/no-unnecessary-array-splice-count'?: Linter.RuleEntry<[]>;
  /**
   * Disallow awaiting non-promise values.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/no-unnecessary-await.md
   */
  'unicorn/no-unnecessary-await'?: Linter.RuleEntry<[]>;
  /**
   * Enforce the use of built-in methods instead of unnecessary polyfills.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/no-unnecessary-polyfills.md
   */
  'unicorn/no-unnecessary-polyfills'?: Linter.RuleEntry<UnicornNoUnnecessaryPolyfills>;
  /**
   * Disallow using `.length` or `Infinity` as the `end` argument of `{Array,String,TypedArray}#slice()`.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/no-unnecessary-slice-end.md
   */
  'unicorn/no-unnecessary-slice-end'?: Linter.RuleEntry<[]>;
  /**
   * Disallow unreadable array destructuring.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/no-unreadable-array-destructuring.md
   */
  'unicorn/no-unreadable-array-destructuring'?: Linter.RuleEntry<[]>;
  /**
   * Disallow unreadable IIFEs.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/no-unreadable-iife.md
   */
  'unicorn/no-unreadable-iife'?: Linter.RuleEntry<[]>;
  /**
   * Disallow unused object properties.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/no-unused-properties.md
   */
  'unicorn/no-unused-properties'?: Linter.RuleEntry<[]>;
  /**
   * Disallow useless values or fallbacks in `Set`, `Map`, `WeakSet`, or `WeakMap`.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/no-useless-collection-argument.md
   */
  'unicorn/no-useless-collection-argument'?: Linter.RuleEntry<[]>;
  /**
   * Disallow unnecessary `Error.captureStackTrace(…)`.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/no-useless-error-capture-stack-trace.md
   */
  'unicorn/no-useless-error-capture-stack-trace'?: Linter.RuleEntry<[]>;
  /**
   * Disallow useless fallback when spreading in object literals.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/no-useless-fallback-in-spread.md
   */
  'unicorn/no-useless-fallback-in-spread'?: Linter.RuleEntry<[]>;
  /**
   * Disallow unnecessary `.toArray()` on iterators.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/no-useless-iterator-to-array.md
   */
  'unicorn/no-useless-iterator-to-array'?: Linter.RuleEntry<[]>;
  /**
   * Disallow useless array length check.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/no-useless-length-check.md
   */
  'unicorn/no-useless-length-check'?: Linter.RuleEntry<[]>;
  /**
   * Disallow returning/yielding `Promise.resolve/reject()` in async functions or promise callbacks
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/no-useless-promise-resolve-reject.md
   */
  'unicorn/no-useless-promise-resolve-reject'?: Linter.RuleEntry<[]>;
  /**
   * Disallow unnecessary spread.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/no-useless-spread.md
   */
  'unicorn/no-useless-spread'?: Linter.RuleEntry<[]>;
  /**
   * Disallow useless case in switch statements.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/no-useless-switch-case.md
   */
  'unicorn/no-useless-switch-case'?: Linter.RuleEntry<[]>;
  /**
   * Disallow useless `undefined`.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/no-useless-undefined.md
   */
  'unicorn/no-useless-undefined'?: Linter.RuleEntry<UnicornNoUselessUndefined>;
  /**
   * Disallow number literals with zero fractions or dangling dots.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/no-zero-fractions.md
   */
  'unicorn/no-zero-fractions'?: Linter.RuleEntry<[]>;
  /**
   * Enforce proper case for numeric literals.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/number-literal-case.md
   */
  'unicorn/number-literal-case'?: Linter.RuleEntry<UnicornNumberLiteralCase>;
  /**
   * Enforce the style of numeric separators by correctly grouping digits.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/numeric-separators-style.md
   */
  'unicorn/numeric-separators-style'?: Linter.RuleEntry<UnicornNumericSeparatorsStyle>;
  /**
   * Prefer `.addEventListener()` and `.removeEventListener()` over `on`-functions.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/prefer-add-event-listener.md
   */
  'unicorn/prefer-add-event-listener'?: Linter.RuleEntry<UnicornPreferAddEventListener>;
  /**
   * Prefer `.find(…)` and `.findLast(…)` over the first or last element from `.filter(…)`.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/prefer-array-find.md
   */
  'unicorn/prefer-array-find'?: Linter.RuleEntry<UnicornPreferArrayFind>;
  /**
   * Prefer `Array#flat()` over legacy techniques to flatten arrays.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/prefer-array-flat.md
   */
  'unicorn/prefer-array-flat'?: Linter.RuleEntry<UnicornPreferArrayFlat>;
  /**
   * Prefer `.flatMap(…)` over `.map(…).flat()`.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/prefer-array-flat-map.md
   */
  'unicorn/prefer-array-flat-map'?: Linter.RuleEntry<[]>;
  /**
   * Prefer `Array#{indexOf,lastIndexOf}()` over `Array#{findIndex,findLastIndex}()` when looking for the index of an item.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/prefer-array-index-of.md
   */
  'unicorn/prefer-array-index-of'?: Linter.RuleEntry<[]>;
  /**
   * Prefer `.some(…)` over `.filter(…).length` check and `.{find,findLast,findIndex,findLastIndex}(…)`.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/prefer-array-some.md
   */
  'unicorn/prefer-array-some'?: Linter.RuleEntry<[]>;
  /**
   * Prefer `.at()` method for index access and `String#charAt()`.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/prefer-at.md
   */
  'unicorn/prefer-at'?: Linter.RuleEntry<UnicornPreferAt>;
  /**
   * Prefer `BigInt` literals over the constructor.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/prefer-bigint-literals.md
   */
  'unicorn/prefer-bigint-literals'?: Linter.RuleEntry<[]>;
  /**
   * Prefer `Blob#arrayBuffer()` over `FileReader#readAsArrayBuffer(…)` and `Blob#text()` over `FileReader#readAsText(…)`.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/prefer-blob-reading-methods.md
   */
  'unicorn/prefer-blob-reading-methods'?: Linter.RuleEntry<[]>;
  /**
   * Prefer class field declarations over `this` assignments in constructors.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/prefer-class-fields.md
   */
  'unicorn/prefer-class-fields'?: Linter.RuleEntry<[]>;
  /**
   * Prefer using `Element#classList.toggle()` to toggle class names.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/prefer-classlist-toggle.md
   */
  'unicorn/prefer-classlist-toggle'?: Linter.RuleEntry<[]>;
  /**
   * Prefer `String#codePointAt(…)` over `String#charCodeAt(…)` and `String.fromCodePoint(…)` over `String.fromCharCode(…)`.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/prefer-code-point.md
   */
  'unicorn/prefer-code-point'?: Linter.RuleEntry<[]>;
  /**
   * Prefer `Date.now()` to get the number of milliseconds since the Unix Epoch.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/prefer-date-now.md
   */
  'unicorn/prefer-date-now'?: Linter.RuleEntry<[]>;
  /**
   * Prefer default parameters over reassignment.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/prefer-default-parameters.md
   */
  'unicorn/prefer-default-parameters'?: Linter.RuleEntry<[]>;
  /**
   * Prefer `Node#append()` over `Node#appendChild()`.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/prefer-dom-node-append.md
   */
  'unicorn/prefer-dom-node-append'?: Linter.RuleEntry<[]>;
  /**
   * Prefer using `.dataset` on DOM elements over calling attribute methods.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/prefer-dom-node-dataset.md
   */
  'unicorn/prefer-dom-node-dataset'?: Linter.RuleEntry<[]>;
  /**
   * Prefer `childNode.remove()` over `parentNode.removeChild(childNode)`.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/prefer-dom-node-remove.md
   */
  'unicorn/prefer-dom-node-remove'?: Linter.RuleEntry<[]>;
  /**
   * Prefer `.textContent` over `.innerText`.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/prefer-dom-node-text-content.md
   */
  'unicorn/prefer-dom-node-text-content'?: Linter.RuleEntry<[]>;
  /**
   * Prefer `EventTarget` over `EventEmitter`.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/prefer-event-target.md
   */
  'unicorn/prefer-event-target'?: Linter.RuleEntry<[]>;
  /**
   * Prefer `export…from` when re-exporting.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/prefer-export-from.md
   */
  'unicorn/prefer-export-from'?: Linter.RuleEntry<UnicornPreferExportFrom>;
  /**
   * Prefer `globalThis` over `window`, `self`, and `global`.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/prefer-global-this.md
   */
  'unicorn/prefer-global-this'?: Linter.RuleEntry<[]>;
  /**
   * Prefer `import.meta.{dirname,filename}` over legacy techniques for getting file paths.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/prefer-import-meta-properties.md
   */
  'unicorn/prefer-import-meta-properties'?: Linter.RuleEntry<[]>;
  /**
   * Prefer `.includes()` over `.indexOf()`, `.lastIndexOf()`, and `Array#some()` when checking for existence or non-existence.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/prefer-includes.md
   */
  'unicorn/prefer-includes'?: Linter.RuleEntry<[]>;
  /**
   * Prefer reading a JSON file as a buffer.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/prefer-json-parse-buffer.md
   */
  'unicorn/prefer-json-parse-buffer'?: Linter.RuleEntry<[]>;
  /**
   * Prefer `KeyboardEvent#key` over `KeyboardEvent#keyCode`.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/prefer-keyboard-event-key.md
   */
  'unicorn/prefer-keyboard-event-key'?: Linter.RuleEntry<[]>;
  /**
   * Prefer using a logical operator over a ternary.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/prefer-logical-operator-over-ternary.md
   */
  'unicorn/prefer-logical-operator-over-ternary'?: Linter.RuleEntry<[]>;
  /**
   * Prefer `Math.min()` and `Math.max()` over ternaries for simple comparisons.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/prefer-math-min-max.md
   */
  'unicorn/prefer-math-min-max'?: Linter.RuleEntry<[]>;
  /**
   * Enforce the use of `Math.trunc` instead of bitwise operators.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/prefer-math-trunc.md
   */
  'unicorn/prefer-math-trunc'?: Linter.RuleEntry<[]>;
  /**
   * Prefer `.before()` over `.insertBefore()`, `.replaceWith()` over `.replaceChild()`, prefer one of `.before()`, `.after()`, `.append()` or `.prepend()` over `insertAdjacentText()` and `insertAdjacentElement()`.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/prefer-modern-dom-apis.md
   */
  'unicorn/prefer-modern-dom-apis'?: Linter.RuleEntry<[]>;
  /**
   * Prefer modern `Math` APIs over legacy patterns.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/prefer-modern-math-apis.md
   */
  'unicorn/prefer-modern-math-apis'?: Linter.RuleEntry<[]>;
  /**
   * Prefer JavaScript modules (ESM) over CommonJS.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/prefer-module.md
   */
  'unicorn/prefer-module'?: Linter.RuleEntry<[]>;
  /**
   * Prefer using `String`, `Number`, `BigInt`, `Boolean`, and `Symbol` directly.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/prefer-native-coercion-functions.md
   */
  'unicorn/prefer-native-coercion-functions'?: Linter.RuleEntry<[]>;
  /**
   * Prefer negative index over `.length - index` when possible.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/prefer-negative-index.md
   */
  'unicorn/prefer-negative-index'?: Linter.RuleEntry<[]>;
  /**
   * Prefer using the `node:` protocol when importing Node.js builtin modules.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/prefer-node-protocol.md
   */
  'unicorn/prefer-node-protocol'?: Linter.RuleEntry<[]>;
  /**
   * Prefer `Number` static properties over global ones.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/prefer-number-properties.md
   */
  'unicorn/prefer-number-properties'?: Linter.RuleEntry<UnicornPreferNumberProperties>;
  /**
   * Prefer using `Object.fromEntries(…)` to transform a list of key-value pairs into an object.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/prefer-object-from-entries.md
   */
  'unicorn/prefer-object-from-entries'?: Linter.RuleEntry<UnicornPreferObjectFromEntries>;
  /**
   * Prefer omitting the `catch` binding parameter.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/prefer-optional-catch-binding.md
   */
  'unicorn/prefer-optional-catch-binding'?: Linter.RuleEntry<[]>;
  /**
   * Prefer borrowing methods from the prototype instead of the instance.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/prefer-prototype-methods.md
   */
  'unicorn/prefer-prototype-methods'?: Linter.RuleEntry<[]>;
  /**
   * Prefer `.querySelector()` over `.getElementById()`, `.querySelectorAll()` over `.getElementsByClassName()` and `.getElementsByTagName()` and `.getElementsByName()`.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/prefer-query-selector.md
   */
  'unicorn/prefer-query-selector'?: Linter.RuleEntry<[]>;
  /**
   * Prefer `Reflect.apply()` over `Function#apply()`.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/prefer-reflect-apply.md
   */
  'unicorn/prefer-reflect-apply'?: Linter.RuleEntry<[]>;
  /**
   * Prefer `RegExp#test()` over `String#match()` and `RegExp#exec()`.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/prefer-regexp-test.md
   */
  'unicorn/prefer-regexp-test'?: Linter.RuleEntry<[]>;
  /**
   * Prefer `Response.json()` over `new Response(JSON.stringify())`.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/prefer-response-static-json.md
   */
  'unicorn/prefer-response-static-json'?: Linter.RuleEntry<[]>;
  /**
   * Prefer `Set#has()` over `Array#includes()` when checking for existence or non-existence.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/prefer-set-has.md
   */
  'unicorn/prefer-set-has'?: Linter.RuleEntry<[]>;
  /**
   * Prefer using `Set#size` instead of `Array#length`.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/prefer-set-size.md
   */
  'unicorn/prefer-set-size'?: Linter.RuleEntry<[]>;
  /**
   * Prefer simple conditions first in logical expressions.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/prefer-simple-condition-first.md
   */
  'unicorn/prefer-simple-condition-first'?: Linter.RuleEntry<[]>;
  /**
   * Enforce combining multiple `Array#push()`, `Element#classList.{add,remove}()`, and `importScripts()` into one call.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/prefer-single-call.md
   */
  'unicorn/prefer-single-call'?: Linter.RuleEntry<UnicornPreferSingleCall>;
  /**
   * Prefer the spread operator over `Array.from(…)`, `Array#concat(…)`, `Array#{slice,toSpliced}()` and `String#split('')`.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/prefer-spread.md
   */
  'unicorn/prefer-spread'?: Linter.RuleEntry<[]>;
  /**
   * Prefer using the `String.raw` tag to avoid escaping `\`.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/prefer-string-raw.md
   */
  'unicorn/prefer-string-raw'?: Linter.RuleEntry<[]>;
  /**
   * Prefer `String#replaceAll()` over regex searches with the global flag.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/prefer-string-replace-all.md
   */
  'unicorn/prefer-string-replace-all'?: Linter.RuleEntry<[]>;
  /**
   * Prefer `String#slice()` over `String#substr()` and `String#substring()`.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/prefer-string-slice.md
   */
  'unicorn/prefer-string-slice'?: Linter.RuleEntry<[]>;
  /**
   * Prefer `String#startsWith()` & `String#endsWith()` over `RegExp#test()`.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/prefer-string-starts-ends-with.md
   */
  'unicorn/prefer-string-starts-ends-with'?: Linter.RuleEntry<[]>;
  /**
   * Prefer `String#trimStart()` / `String#trimEnd()` over `String#trimLeft()` / `String#trimRight()`.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/prefer-string-trim-start-end.md
   */
  'unicorn/prefer-string-trim-start-end'?: Linter.RuleEntry<[]>;
  /**
   * Prefer using `structuredClone` to create a deep clone.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/prefer-structured-clone.md
   */
  'unicorn/prefer-structured-clone'?: Linter.RuleEntry<UnicornPreferStructuredClone>;
  /**
   * Prefer `switch` over multiple `else-if`.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/prefer-switch.md
   */
  'unicorn/prefer-switch'?: Linter.RuleEntry<UnicornPreferSwitch>;
  /**
   * Prefer ternary expressions over simple `if-else` statements.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/prefer-ternary.md
   */
  'unicorn/prefer-ternary'?: Linter.RuleEntry<UnicornPreferTernary>;
  /**
   * Prefer top-level await over top-level promises and async function calls.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/prefer-top-level-await.md
   */
  'unicorn/prefer-top-level-await'?: Linter.RuleEntry<[]>;
  /**
   * Enforce throwing `TypeError` in type checking conditions.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/prefer-type-error.md
   */
  'unicorn/prefer-type-error'?: Linter.RuleEntry<[]>;
  /**
   * Prevent abbreviations.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/prevent-abbreviations.md
   */
  'unicorn/prevent-abbreviations'?: Linter.RuleEntry<UnicornPreventAbbreviations>;
  /**
   * Enforce consistent relative URL style.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/relative-url-style.md
   */
  'unicorn/relative-url-style'?: Linter.RuleEntry<UnicornRelativeUrlStyle>;
  /**
   * Enforce using the separator argument with `Array#join()`.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/require-array-join-separator.md
   */
  'unicorn/require-array-join-separator'?: Linter.RuleEntry<[]>;
  /**
   * Require non-empty module attributes for imports and exports
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/require-module-attributes.md
   */
  'unicorn/require-module-attributes'?: Linter.RuleEntry<[]>;
  /**
   * Require non-empty specifier list in import and export statements.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/require-module-specifiers.md
   */
  'unicorn/require-module-specifiers'?: Linter.RuleEntry<[]>;
  /**
   * Enforce using the digits argument with `Number#toFixed()`.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/require-number-to-fixed-digits-argument.md
   */
  'unicorn/require-number-to-fixed-digits-argument'?: Linter.RuleEntry<[]>;
  /**
   * Enforce using the `targetOrigin` argument with `window.postMessage()`.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/require-post-message-target-origin.md
   */
  'unicorn/require-post-message-target-origin'?: Linter.RuleEntry<[]>;
  /**
   * Enforce better string content.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/string-content.md
   */
  'unicorn/string-content'?: Linter.RuleEntry<UnicornStringContent>;
  /**
   * Enforce consistent brace style for `case` clauses.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/switch-case-braces.md
   */
  'unicorn/switch-case-braces'?: Linter.RuleEntry<UnicornSwitchCaseBraces>;
  /**
   * Enforce consistent `break`/`return`/`continue`/`throw` position in `case` clauses.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/switch-case-break-position.md
   */
  'unicorn/switch-case-break-position'?: Linter.RuleEntry<[]>;
  /**
   * Fix whitespace-insensitive template indentation.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/template-indent.md
   */
  'unicorn/template-indent'?: Linter.RuleEntry<UnicornTemplateIndent>;
  /**
   * Enforce consistent case for text encoding identifiers.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/text-encoding-identifier-case.md
   */
  'unicorn/text-encoding-identifier-case'?: Linter.RuleEntry<UnicornTextEncodingIdentifierCase>;
  /**
   * Require `new` when creating an error.
   * @see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v64.0.0/docs/rules/throw-new-error.md
   */
  'unicorn/throw-new-error'?: Linter.RuleEntry<[]>;
  /**
   * Disallow unused variables
   * @see https://github.com/sweepline/eslint-plugin-unused-imports/blob/master/docs/rules/no-unused-imports.md
   */
  'unused-imports/no-unused-imports'?: Linter.RuleEntry<UnusedImportsNoUnusedImports>;
  /**
   * Disallow unused variables
   * @see https://github.com/sweepline/eslint-plugin-unused-imports/blob/master/docs/rules/no-unused-vars.md
   */
  'unused-imports/no-unused-vars'?: Linter.RuleEntry<UnusedImportsNoUnusedVars>;
  /**
   * Require calls to `isNaN()` when checking for `NaN`
   * @see https://eslint.org/docs/latest/rules/use-isnan
   */
  'use-isnan'?: Linter.RuleEntry<UseIsnan>;
  /**
   * Enforce comparing `typeof` expressions against valid strings
   * @see https://eslint.org/docs/latest/rules/valid-typeof
   */
  'valid-typeof'?: Linter.RuleEntry<ValidTypeof>;
  /**
   * Require `var` declarations be placed at the top of their containing scope
   * @see https://eslint.org/docs/latest/rules/vars-on-top
   */
  'vars-on-top'?: Linter.RuleEntry<[]>;
  /**
   * enforce using `.each` or `.for` consistently
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/consistent-each-for.md
   */
  'vitest/consistent-each-for'?: Linter.RuleEntry<VitestConsistentEachFor>;
  /**
   * require test file pattern
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/consistent-test-filename.md
   */
  'vitest/consistent-test-filename'?: Linter.RuleEntry<VitestConsistentTestFilename>;
  /**
   * enforce using test or it but not both
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/consistent-test-it.md
   */
  'vitest/consistent-test-it'?: Linter.RuleEntry<VitestConsistentTestIt>;
  /**
   * enforce using vitest or vi but not both
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/consistent-vitest-vi.md
   */
  'vitest/consistent-vitest-vi'?: Linter.RuleEntry<VitestConsistentVitestVi>;
  /**
   * enforce having expectation in test body
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/expect-expect.md
   */
  'vitest/expect-expect'?: Linter.RuleEntry<VitestExpectExpect>;
  /**
   * enforce hoisted APIs to be on top of the file
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/hoisted-apis-on-top.md
   */
  'vitest/hoisted-apis-on-top'?: Linter.RuleEntry<[]>;
  /**
   * enforce a maximum number of expect per test
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/max-expects.md
   */
  'vitest/max-expects'?: Linter.RuleEntry<VitestMaxExpects>;
  /**
   * require describe block to be less than set max value or default value
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/max-nested-describe.md
   */
  'vitest/max-nested-describe'?: Linter.RuleEntry<VitestMaxNestedDescribe>;
  /**
   * disallow alias methods
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-alias-methods.md
   */
  'vitest/no-alias-methods'?: Linter.RuleEntry<[]>;
  /**
   * disallow commented out tests
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-commented-out-tests.md
   */
  'vitest/no-commented-out-tests'?: Linter.RuleEntry<[]>;
  /**
   * disallow conditional expects
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-conditional-expect.md
   */
  'vitest/no-conditional-expect'?: Linter.RuleEntry<VitestNoConditionalExpect>;
  /**
   * disallow conditional tests
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-conditional-in-test.md
   */
  'vitest/no-conditional-in-test'?: Linter.RuleEntry<[]>;
  /**
   * disallow conditional tests
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-conditional-tests.md
   */
  'vitest/no-conditional-tests'?: Linter.RuleEntry<[]>;
  /**
   * disallow disabled tests
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-disabled-tests.md
   */
  'vitest/no-disabled-tests'?: Linter.RuleEntry<[]>;
  /**
   * disallow using a callback in asynchronous tests and hooks
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-done-callback.md
   * @deprecated
   */
  'vitest/no-done-callback'?: Linter.RuleEntry<[]>;
  /**
   * disallow duplicate hooks and teardown hooks
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-duplicate-hooks.md
   */
  'vitest/no-duplicate-hooks'?: Linter.RuleEntry<[]>;
  /**
   * disallow focused tests
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-focused-tests.md
   */
  'vitest/no-focused-tests'?: Linter.RuleEntry<VitestNoFocusedTests>;
  /**
   * disallow setup and teardown hooks
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-hooks.md
   */
  'vitest/no-hooks'?: Linter.RuleEntry<VitestNoHooks>;
  /**
   * disallow identical titles
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-identical-title.md
   */
  'vitest/no-identical-title'?: Linter.RuleEntry<[]>;
  /**
   * disallow importing `node:test`
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-import-node-test.md
   */
  'vitest/no-import-node-test'?: Linter.RuleEntry<[]>;
  /**
   * disallow importing Vitest globals
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-importing-vitest-globals.md
   */
  'vitest/no-importing-vitest-globals'?: Linter.RuleEntry<[]>;
  /**
   * disallow string interpolation in snapshots
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-interpolation-in-snapshots.md
   */
  'vitest/no-interpolation-in-snapshots'?: Linter.RuleEntry<[]>;
  /**
   * disallow large snapshots
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-large-snapshots.md
   */
  'vitest/no-large-snapshots'?: Linter.RuleEntry<VitestNoLargeSnapshots>;
  /**
   * disallow importing from __mocks__ directory
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-mocks-import.md
   */
  'vitest/no-mocks-import'?: Linter.RuleEntry<[]>;
  /**
   * disallow the use of certain matchers
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-restricted-matchers.md
   */
  'vitest/no-restricted-matchers'?: Linter.RuleEntry<VitestNoRestrictedMatchers>;
  /**
   * disallow specific `vi.` methods
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-restricted-vi-methods.md
   */
  'vitest/no-restricted-vi-methods'?: Linter.RuleEntry<VitestNoRestrictedViMethods>;
  /**
   * disallow using `expect` outside of `it` or `test` blocks
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-standalone-expect.md
   */
  'vitest/no-standalone-expect'?: Linter.RuleEntry<VitestNoStandaloneExpect>;
  /**
   * disallow using the `f` and `x` prefixes in favour of `.only` and `.skip`
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-test-prefixes.md
   */
  'vitest/no-test-prefixes'?: Linter.RuleEntry<[]>;
  /**
   * disallow return statements in tests
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-test-return-statement.md
   */
  'vitest/no-test-return-statement'?: Linter.RuleEntry<[]>;
  /**
   * Disallow unnecessary async function wrapper for expected promises
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-unneeded-async-expect-function.md
   */
  'vitest/no-unneeded-async-expect-function'?: Linter.RuleEntry<[]>;
  /**
   * Enforce padding around `afterAll` blocks
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-after-all-blocks.md
   */
  'vitest/padding-around-after-all-blocks'?: Linter.RuleEntry<[]>;
  /**
   * Enforce padding around `afterEach` blocks
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-after-each-blocks.md
   */
  'vitest/padding-around-after-each-blocks'?: Linter.RuleEntry<[]>;
  /**
   * Enforce padding around vitest functions
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-all.md
   */
  'vitest/padding-around-all'?: Linter.RuleEntry<[]>;
  /**
   * Enforce padding around `beforeAll` blocks
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-before-all-blocks.md
   */
  'vitest/padding-around-before-all-blocks'?: Linter.RuleEntry<[]>;
  /**
   * Enforce padding around `beforeEach` blocks
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-before-each-blocks.md
   */
  'vitest/padding-around-before-each-blocks'?: Linter.RuleEntry<[]>;
  /**
   * Enforce padding around `describe` blocks
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-describe-blocks.md
   */
  'vitest/padding-around-describe-blocks'?: Linter.RuleEntry<[]>;
  /**
   * Enforce padding around `expect` groups
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-expect-groups.md
   */
  'vitest/padding-around-expect-groups'?: Linter.RuleEntry<[]>;
  /**
   * Enforce padding around `test` blocks
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-test-blocks.md
   */
  'vitest/padding-around-test-blocks'?: Linter.RuleEntry<[]>;
  /**
   * Prefer `toHaveBeenCalledExactlyOnceWith` over `toHaveBeenCalledOnce` and `toHaveBeenCalledWith`
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-called-exactly-once-with.md
   */
  'vitest/prefer-called-exactly-once-with'?: Linter.RuleEntry<[]>;
  /**
   * enforce using `toBeCalledOnce()` or `toHaveBeenCalledOnce()`
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-called-once.md
   */
  'vitest/prefer-called-once'?: Linter.RuleEntry<[]>;
  /**
   * enforce using `toBeCalledTimes(1)` or `toHaveBeenCalledTimes(1)`
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-called-times.md
   */
  'vitest/prefer-called-times'?: Linter.RuleEntry<[]>;
  /**
   * enforce using `toBeCalledWith()` or `toHaveBeenCalledWith()`
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-called-with.md
   */
  'vitest/prefer-called-with'?: Linter.RuleEntry<[]>;
  /**
   * enforce using the built-in comparison matchers
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-comparison-matcher.md
   */
  'vitest/prefer-comparison-matcher'?: Linter.RuleEntry<[]>;
  /**
   * enforce using a function as a describe title over an equivalent string
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-describe-function-title.md
   */
  'vitest/prefer-describe-function-title'?: Linter.RuleEntry<[]>;
  /**
   * enforce using `each` rather than manual loops
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-each.md
   */
  'vitest/prefer-each'?: Linter.RuleEntry<[]>;
  /**
   * enforce using the built-in equality matchers
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-equality-matcher.md
   */
  'vitest/prefer-equality-matcher'?: Linter.RuleEntry<[]>;
  /**
   * enforce using expect assertions instead of callbacks
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-expect-assertions.md
   */
  'vitest/prefer-expect-assertions'?: Linter.RuleEntry<VitestPreferExpectAssertions>;
  /**
   * enforce using `expect().resolves` over `expect(await ...)` syntax
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-expect-resolves.md
   */
  'vitest/prefer-expect-resolves'?: Linter.RuleEntry<[]>;
  /**
   * enforce using `expectTypeOf` instead of `expect(typeof ...)`
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-expect-type-of.md
   */
  'vitest/prefer-expect-type-of'?: Linter.RuleEntry<[]>;
  /**
   * enforce having hooks in consistent order
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-hooks-in-order.md
   */
  'vitest/prefer-hooks-in-order'?: Linter.RuleEntry<[]>;
  /**
   * enforce having hooks before any test cases
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-hooks-on-top.md
   */
  'vitest/prefer-hooks-on-top'?: Linter.RuleEntry<[]>;
  /**
   * prefer dynamic import in mock
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-import-in-mock.md
   */
  'vitest/prefer-import-in-mock'?: Linter.RuleEntry<VitestPreferImportInMock>;
  /**
   * enforce importing Vitest globals
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-importing-vitest-globals.md
   */
  'vitest/prefer-importing-vitest-globals'?: Linter.RuleEntry<[]>;
  /**
   * enforce lowercase titles
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-lowercase-title.md
   */
  'vitest/prefer-lowercase-title'?: Linter.RuleEntry<VitestPreferLowercaseTitle>;
  /**
   * enforce mock resolved/rejected shorthands for promises
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-mock-promise-shorthand.md
   */
  'vitest/prefer-mock-promise-shorthand'?: Linter.RuleEntry<[]>;
  /**
   * Prefer mock return shorthands
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-mock-return-shorthand.md
   */
  'vitest/prefer-mock-return-shorthand'?: Linter.RuleEntry<[]>;
  /**
   * enforce including a hint with external snapshots
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-snapshot-hint.md
   */
  'vitest/prefer-snapshot-hint'?: Linter.RuleEntry<VitestPreferSnapshotHint>;
  /**
   * enforce using `vi.spyOn`
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-spy-on.md
   */
  'vitest/prefer-spy-on'?: Linter.RuleEntry<[]>;
  /**
   * enforce using `toBe(true)` and `toBe(false)` over matchers that coerce types to boolean
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-strict-boolean-matchers.md
   */
  'vitest/prefer-strict-boolean-matchers'?: Linter.RuleEntry<[]>;
  /**
   * enforce strict equal over equal
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-strict-equal.md
   */
  'vitest/prefer-strict-equal'?: Linter.RuleEntry<[]>;
  /**
   * enforce using toBe()
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-be.md
   */
  'vitest/prefer-to-be'?: Linter.RuleEntry<[]>;
  /**
   * enforce using toBeFalsy()
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-be-falsy.md
   */
  'vitest/prefer-to-be-falsy'?: Linter.RuleEntry<[]>;
  /**
   * enforce using toBeObject()
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-be-object.md
   */
  'vitest/prefer-to-be-object'?: Linter.RuleEntry<[]>;
  /**
   * enforce using `toBeTruthy`
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-be-truthy.md
   */
  'vitest/prefer-to-be-truthy'?: Linter.RuleEntry<[]>;
  /**
   * enforce using toContain()
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-contain.md
   */
  'vitest/prefer-to-contain'?: Linter.RuleEntry<[]>;
  /**
   * Suggest using `toHaveBeenCalledTimes()`
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-have-been-called-times.md
   */
  'vitest/prefer-to-have-been-called-times'?: Linter.RuleEntry<[]>;
  /**
   * enforce using toHaveLength()
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-to-have-length.md
   */
  'vitest/prefer-to-have-length'?: Linter.RuleEntry<[]>;
  /**
   * enforce using `test.todo`
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-todo.md
   */
  'vitest/prefer-todo'?: Linter.RuleEntry<[]>;
  /**
   * require `vi.mocked()` over `fn as Mock`
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-vi-mocked.md
   */
  'vitest/prefer-vi-mocked'?: Linter.RuleEntry<[]>;
  /**
   * ensure that every `expect.poll` call is awaited
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/require-awaited-expect-poll.md
   */
  'vitest/require-awaited-expect-poll'?: Linter.RuleEntry<[]>;
  /**
   * require setup and teardown to be within a hook
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/require-hook.md
   */
  'vitest/require-hook'?: Linter.RuleEntry<VitestRequireHook>;
  /**
   * require local Test Context for concurrent snapshot tests
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/require-local-test-context-for-concurrent-snapshots.md
   */
  'vitest/require-local-test-context-for-concurrent-snapshots'?: Linter.RuleEntry<[]>;
  /**
   * enforce using type parameters with vitest mock functions
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/require-mock-type-parameters.md
   */
  'vitest/require-mock-type-parameters'?: Linter.RuleEntry<VitestRequireMockTypeParameters>;
  /**
   * require tests to declare a timeout
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/require-test-timeout.md
   */
  'vitest/require-test-timeout'?: Linter.RuleEntry<[]>;
  /**
   * require toThrow() to be called with an error message
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/require-to-throw-message.md
   */
  'vitest/require-to-throw-message'?: Linter.RuleEntry<[]>;
  /**
   * enforce that all tests are in a top-level describe
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/require-top-level-describe.md
   */
  'vitest/require-top-level-describe'?: Linter.RuleEntry<VitestRequireTopLevelDescribe>;
  /**
   * enforce unbound methods are called with their expected scope
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/unbound-method.md
   */
  'vitest/unbound-method'?: Linter.RuleEntry<VitestUnboundMethod>;
  /**
   * enforce valid describe callback
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/valid-describe-callback.md
   */
  'vitest/valid-describe-callback'?: Linter.RuleEntry<[]>;
  /**
   * enforce valid `expect()` usage
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/valid-expect.md
   */
  'vitest/valid-expect'?: Linter.RuleEntry<VitestValidExpect>;
  /**
   * require promises that have expectations in their chain to be valid
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/valid-expect-in-promise.md
   */
  'vitest/valid-expect-in-promise'?: Linter.RuleEntry<[]>;
  /**
   * enforce valid titles
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/valid-title.md
   */
  'vitest/valid-title'?: Linter.RuleEntry<VitestValidTitle>;
  /**
   * disallow `.todo` usage
   * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/warn-todo.md
   */
  'vitest/warn-todo'?: Linter.RuleEntry<[]>;
  /**
   * Require parentheses around immediate `function` invocations
   * @see https://eslint.org/docs/latest/rules/wrap-iife
   * @deprecated
   */
  'wrap-iife'?: Linter.RuleEntry<WrapIife>;
  /**
   * Require parenthesis around regex literals
   * @see https://eslint.org/docs/latest/rules/wrap-regex
   * @deprecated
   */
  'wrap-regex'?: Linter.RuleEntry<[]>;
  /**
   * Require or disallow spacing around the `*` in `yield*` expressions
   * @see https://eslint.org/docs/latest/rules/yield-star-spacing
   * @deprecated
   */
  'yield-star-spacing'?: Linter.RuleEntry<YieldStarSpacing>;
  /**
   * Require or disallow "Yoda" conditions
   * @see https://eslint.org/docs/latest/rules/yoda
   */
  'yoda'?: Linter.RuleEntry<Yoda>;
}
/* ======= Declarations ======= */
// ----- @tanstack/query/exhaustive-deps -----
type TanstackQueryExhaustiveDeps = [] | [{
  allowlist?: {
    variables?: string[];
    types?: string[];
  };
}]; // ----- @typescript-eslint/array-type -----
type TypescriptEslintArrayType = [] | [{
  default?: ("array" | "generic" | "array-simple");
  readonly?: ("array" | "generic" | "array-simple");
}]; // ----- @typescript-eslint/ban-ts-comment -----
type TypescriptEslintBanTsComment = [] | [{
  minimumDescriptionLength?: number;
  "ts-check"?: (boolean | "allow-with-description" | {
    descriptionFormat?: string;
  });
  "ts-expect-error"?: (boolean | "allow-with-description" | {
    descriptionFormat?: string;
  });
  "ts-ignore"?: (boolean | "allow-with-description" | {
    descriptionFormat?: string;
  });
  "ts-nocheck"?: (boolean | "allow-with-description" | {
    descriptionFormat?: string;
  });
}]; // ----- @typescript-eslint/class-literal-property-style -----
type TypescriptEslintClassLiteralPropertyStyle = [] | [("fields" | "getters")]; // ----- @typescript-eslint/class-methods-use-this -----
type TypescriptEslintClassMethodsUseThis = [] | [{
  enforceForClassFields?: boolean;
  exceptMethods?: string[];
  ignoreClassesThatImplementAnInterface?: (boolean | "public-fields");
  ignoreOverrideMethods?: boolean;
}]; // ----- @typescript-eslint/consistent-generic-constructors -----
type TypescriptEslintConsistentGenericConstructors = [] | [("type-annotation" | "constructor")]; // ----- @typescript-eslint/consistent-indexed-object-style -----
type TypescriptEslintConsistentIndexedObjectStyle = [] | [("record" | "index-signature")]; // ----- @typescript-eslint/consistent-return -----
type TypescriptEslintConsistentReturn = [] | [{
  treatUndefinedAsUnspecified?: boolean;
}]; // ----- @typescript-eslint/consistent-type-assertions -----
type TypescriptEslintConsistentTypeAssertions = [] | [({
  assertionStyle: "never";
} | {
  arrayLiteralTypeAssertions?: ("allow" | "allow-as-parameter" | "never");
  assertionStyle?: ("as" | "angle-bracket");
  objectLiteralTypeAssertions?: ("allow" | "allow-as-parameter" | "never");
})]; // ----- @typescript-eslint/consistent-type-definitions -----
type TypescriptEslintConsistentTypeDefinitions = [] | [("interface" | "type")]; // ----- @typescript-eslint/consistent-type-exports -----
type TypescriptEslintConsistentTypeExports = [] | [{
  fixMixedExportsWithInlineTypeSpecifier?: boolean;
}]; // ----- @typescript-eslint/consistent-type-imports -----
type TypescriptEslintConsistentTypeImports = [] | [{
  disallowTypeAnnotations?: boolean;
  fixStyle?: ("separate-type-imports" | "inline-type-imports");
  prefer?: ("type-imports" | "no-type-imports");
}]; // ----- @typescript-eslint/dot-notation -----
type TypescriptEslintDotNotation = [] | [{
  allowIndexSignaturePropertyAccess?: boolean;
  allowKeywords?: boolean;
  allowPattern?: string;
  allowPrivateClassPropertyAccess?: boolean;
  allowProtectedClassPropertyAccess?: boolean;
}]; // ----- @typescript-eslint/explicit-function-return-type -----
type TypescriptEslintExplicitFunctionReturnType = [] | [{
  allowConciseArrowFunctionExpressionsStartingWithVoid?: boolean;
  allowDirectConstAssertionInArrowFunctions?: boolean;
  allowedNames?: string[];
  allowExpressions?: boolean;
  allowFunctionsWithoutTypeParameters?: boolean;
  allowHigherOrderFunctions?: boolean;
  allowIIFEs?: boolean;
  allowTypedFunctionExpressions?: boolean;
}]; // ----- @typescript-eslint/explicit-member-accessibility -----
type TypescriptEslintExplicitMemberAccessibility = [] | [{
  accessibility?: ("explicit" | "no-public" | "off");
  ignoredMethodNames?: string[];
  overrides?: {
    accessors?: ("explicit" | "no-public" | "off");
    constructors?: ("explicit" | "no-public" | "off");
    methods?: ("explicit" | "no-public" | "off");
    parameterProperties?: ("explicit" | "no-public" | "off");
    properties?: ("explicit" | "no-public" | "off");
  };
}]; // ----- @typescript-eslint/explicit-module-boundary-types -----
type TypescriptEslintExplicitModuleBoundaryTypes = [] | [{
  allowArgumentsExplicitlyTypedAsAny?: boolean;
  allowDirectConstAssertionInArrowFunctions?: boolean;
  allowedNames?: string[];
  allowHigherOrderFunctions?: boolean;
  allowOverloadFunctions?: boolean;
  allowTypedFunctionExpressions?: boolean;
}]; // ----- @typescript-eslint/init-declarations -----
type TypescriptEslintInitDeclarations = ([] | ["always"] | [] | ["never"] | ["never", {
  ignoreForLoopInit?: boolean;
}]); // ----- @typescript-eslint/max-params -----
type TypescriptEslintMaxParams = [] | [{
  countVoidThis?: boolean;
  max?: number;
  maximum?: number;
}]; // ----- @typescript-eslint/member-ordering -----
type TypescriptEslintMemberOrdering = [] | [{
  classes?: ("never" | (("readonly-signature" | "signature" | "readonly-field" | "public-readonly-field" | "public-decorated-readonly-field" | "decorated-readonly-field" | "static-readonly-field" | "public-static-readonly-field" | "instance-readonly-field" | "public-instance-readonly-field" | "abstract-readonly-field" | "public-abstract-readonly-field" | "protected-readonly-field" | "protected-decorated-readonly-field" | "protected-static-readonly-field" | "protected-instance-readonly-field" | "protected-abstract-readonly-field" | "private-readonly-field" | "private-decorated-readonly-field" | "private-static-readonly-field" | "private-instance-readonly-field" | "#private-readonly-field" | "#private-static-readonly-field" | "#private-instance-readonly-field" | "field" | "public-field" | "public-decorated-field" | "decorated-field" | "static-field" | "public-static-field" | "instance-field" | "public-instance-field" | "abstract-field" | "public-abstract-field" | "protected-field" | "protected-decorated-field" | "protected-static-field" | "protected-instance-field" | "protected-abstract-field" | "private-field" | "private-decorated-field" | "private-static-field" | "private-instance-field" | "#private-field" | "#private-static-field" | "#private-instance-field" | "method" | "public-method" | "public-decorated-method" | "decorated-method" | "static-method" | "public-static-method" | "instance-method" | "public-instance-method" | "abstract-method" | "public-abstract-method" | "protected-method" | "protected-decorated-method" | "protected-static-method" | "protected-instance-method" | "protected-abstract-method" | "private-method" | "private-decorated-method" | "private-static-method" | "private-instance-method" | "#private-method" | "#private-static-method" | "#private-instance-method" | "call-signature" | "constructor" | "public-constructor" | "protected-constructor" | "private-constructor" | "accessor" | "public-accessor" | "public-decorated-accessor" | "decorated-accessor" | "static-accessor" | "public-static-accessor" | "instance-accessor" | "public-instance-accessor" | "abstract-accessor" | "public-abstract-accessor" | "protected-accessor" | "protected-decorated-accessor" | "protected-static-accessor" | "protected-instance-accessor" | "protected-abstract-accessor" | "private-accessor" | "private-decorated-accessor" | "private-static-accessor" | "private-instance-accessor" | "#private-accessor" | "#private-static-accessor" | "#private-instance-accessor" | "get" | "public-get" | "public-decorated-get" | "decorated-get" | "static-get" | "public-static-get" | "instance-get" | "public-instance-get" | "abstract-get" | "public-abstract-get" | "protected-get" | "protected-decorated-get" | "protected-static-get" | "protected-instance-get" | "protected-abstract-get" | "private-get" | "private-decorated-get" | "private-static-get" | "private-instance-get" | "#private-get" | "#private-static-get" | "#private-instance-get" | "set" | "public-set" | "public-decorated-set" | "decorated-set" | "static-set" | "public-static-set" | "instance-set" | "public-instance-set" | "abstract-set" | "public-abstract-set" | "protected-set" | "protected-decorated-set" | "protected-static-set" | "protected-instance-set" | "protected-abstract-set" | "private-set" | "private-decorated-set" | "private-static-set" | "private-instance-set" | "#private-set" | "#private-static-set" | "#private-instance-set" | "static-initialization" | "static-static-initialization" | "public-static-static-initialization" | "instance-static-initialization" | "public-instance-static-initialization" | "abstract-static-initialization" | "public-abstract-static-initialization" | "protected-static-static-initialization" | "protected-instance-static-initialization" | "protected-abstract-static-initialization" | "private-static-static-initialization" | "private-instance-static-initialization" | "#private-static-static-initialization" | "#private-instance-static-initialization") | ("readonly-signature" | "signature" | "readonly-field" | "public-readonly-field" | "public-decorated-readonly-field" | "decorated-readonly-field" | "static-readonly-field" | "public-static-readonly-field" | "instance-readonly-field" | "public-instance-readonly-field" | "abstract-readonly-field" | "public-abstract-readonly-field" | "protected-readonly-field" | "protected-decorated-readonly-field" | "protected-static-readonly-field" | "protected-instance-readonly-field" | "protected-abstract-readonly-field" | "private-readonly-field" | "private-decorated-readonly-field" | "private-static-readonly-field" | "private-instance-readonly-field" | "#private-readonly-field" | "#private-static-readonly-field" | "#private-instance-readonly-field" | "field" | "public-field" | "public-decorated-field" | "decorated-field" | "static-field" | "public-static-field" | "instance-field" | "public-instance-field" | "abstract-field" | "public-abstract-field" | "protected-field" | "protected-decorated-field" | "protected-static-field" | "protected-instance-field" | "protected-abstract-field" | "private-field" | "private-decorated-field" | "private-static-field" | "private-instance-field" | "#private-field" | "#private-static-field" | "#private-instance-field" | "method" | "public-method" | "public-decorated-method" | "decorated-method" | "static-method" | "public-static-method" | "instance-method" | "public-instance-method" | "abstract-method" | "public-abstract-method" | "protected-method" | "protected-decorated-method" | "protected-static-method" | "protected-instance-method" | "protected-abstract-method" | "private-method" | "private-decorated-method" | "private-static-method" | "private-instance-method" | "#private-method" | "#private-static-method" | "#private-instance-method" | "call-signature" | "constructor" | "public-constructor" | "protected-constructor" | "private-constructor" | "accessor" | "public-accessor" | "public-decorated-accessor" | "decorated-accessor" | "static-accessor" | "public-static-accessor" | "instance-accessor" | "public-instance-accessor" | "abstract-accessor" | "public-abstract-accessor" | "protected-accessor" | "protected-decorated-accessor" | "protected-static-accessor" | "protected-instance-accessor" | "protected-abstract-accessor" | "private-accessor" | "private-decorated-accessor" | "private-static-accessor" | "private-instance-accessor" | "#private-accessor" | "#private-static-accessor" | "#private-instance-accessor" | "get" | "public-get" | "public-decorated-get" | "decorated-get" | "static-get" | "public-static-get" | "instance-get" | "public-instance-get" | "abstract-get" | "public-abstract-get" | "protected-get" | "protected-decorated-get" | "protected-static-get" | "protected-instance-get" | "protected-abstract-get" | "private-get" | "private-decorated-get" | "private-static-get" | "private-instance-get" | "#private-get" | "#private-static-get" | "#private-instance-get" | "set" | "public-set" | "public-decorated-set" | "decorated-set" | "static-set" | "public-static-set" | "instance-set" | "public-instance-set" | "abstract-set" | "public-abstract-set" | "protected-set" | "protected-decorated-set" | "protected-static-set" | "protected-instance-set" | "protected-abstract-set" | "private-set" | "private-decorated-set" | "private-static-set" | "private-instance-set" | "#private-set" | "#private-static-set" | "#private-instance-set" | "static-initialization" | "static-static-initialization" | "public-static-static-initialization" | "instance-static-initialization" | "public-instance-static-initialization" | "abstract-static-initialization" | "public-abstract-static-initialization" | "protected-static-static-initialization" | "protected-instance-static-initialization" | "protected-abstract-static-initialization" | "private-static-static-initialization" | "private-instance-static-initialization" | "#private-static-static-initialization" | "#private-instance-static-initialization")[])[] | {
    memberTypes?: ((("readonly-signature" | "signature" | "readonly-field" | "public-readonly-field" | "public-decorated-readonly-field" | "decorated-readonly-field" | "static-readonly-field" | "public-static-readonly-field" | "instance-readonly-field" | "public-instance-readonly-field" | "abstract-readonly-field" | "public-abstract-readonly-field" | "protected-readonly-field" | "protected-decorated-readonly-field" | "protected-static-readonly-field" | "protected-instance-readonly-field" | "protected-abstract-readonly-field" | "private-readonly-field" | "private-decorated-readonly-field" | "private-static-readonly-field" | "private-instance-readonly-field" | "#private-readonly-field" | "#private-static-readonly-field" | "#private-instance-readonly-field" | "field" | "public-field" | "public-decorated-field" | "decorated-field" | "static-field" | "public-static-field" | "instance-field" | "public-instance-field" | "abstract-field" | "public-abstract-field" | "protected-field" | "protected-decorated-field" | "protected-static-field" | "protected-instance-field" | "protected-abstract-field" | "private-field" | "private-decorated-field" | "private-static-field" | "private-instance-field" | "#private-field" | "#private-static-field" | "#private-instance-field" | "method" | "public-method" | "public-decorated-method" | "decorated-method" | "static-method" | "public-static-method" | "instance-method" | "public-instance-method" | "abstract-method" | "public-abstract-method" | "protected-method" | "protected-decorated-method" | "protected-static-method" | "protected-instance-method" | "protected-abstract-method" | "private-method" | "private-decorated-method" | "private-static-method" | "private-instance-method" | "#private-method" | "#private-static-method" | "#private-instance-method" | "call-signature" | "constructor" | "public-constructor" | "protected-constructor" | "private-constructor" | "accessor" | "public-accessor" | "public-decorated-accessor" | "decorated-accessor" | "static-accessor" | "public-static-accessor" | "instance-accessor" | "public-instance-accessor" | "abstract-accessor" | "public-abstract-accessor" | "protected-accessor" | "protected-decorated-accessor" | "protected-static-accessor" | "protected-instance-accessor" | "protected-abstract-accessor" | "private-accessor" | "private-decorated-accessor" | "private-static-accessor" | "private-instance-accessor" | "#private-accessor" | "#private-static-accessor" | "#private-instance-accessor" | "get" | "public-get" | "public-decorated-get" | "decorated-get" | "static-get" | "public-static-get" | "instance-get" | "public-instance-get" | "abstract-get" | "public-abstract-get" | "protected-get" | "protected-decorated-get" | "protected-static-get" | "protected-instance-get" | "protected-abstract-get" | "private-get" | "private-decorated-get" | "private-static-get" | "private-instance-get" | "#private-get" | "#private-static-get" | "#private-instance-get" | "set" | "public-set" | "public-decorated-set" | "decorated-set" | "static-set" | "public-static-set" | "instance-set" | "public-instance-set" | "abstract-set" | "public-abstract-set" | "protected-set" | "protected-decorated-set" | "protected-static-set" | "protected-instance-set" | "protected-abstract-set" | "private-set" | "private-decorated-set" | "private-static-set" | "private-instance-set" | "#private-set" | "#private-static-set" | "#private-instance-set" | "static-initialization" | "static-static-initialization" | "public-static-static-initialization" | "instance-static-initialization" | "public-instance-static-initialization" | "abstract-static-initialization" | "public-abstract-static-initialization" | "protected-static-static-initialization" | "protected-instance-static-initialization" | "protected-abstract-static-initialization" | "private-static-static-initialization" | "private-instance-static-initialization" | "#private-static-static-initialization" | "#private-instance-static-initialization") | ("readonly-signature" | "signature" | "readonly-field" | "public-readonly-field" | "public-decorated-readonly-field" | "decorated-readonly-field" | "static-readonly-field" | "public-static-readonly-field" | "instance-readonly-field" | "public-instance-readonly-field" | "abstract-readonly-field" | "public-abstract-readonly-field" | "protected-readonly-field" | "protected-decorated-readonly-field" | "protected-static-readonly-field" | "protected-instance-readonly-field" | "protected-abstract-readonly-field" | "private-readonly-field" | "private-decorated-readonly-field" | "private-static-readonly-field" | "private-instance-readonly-field" | "#private-readonly-field" | "#private-static-readonly-field" | "#private-instance-readonly-field" | "field" | "public-field" | "public-decorated-field" | "decorated-field" | "static-field" | "public-static-field" | "instance-field" | "public-instance-field" | "abstract-field" | "public-abstract-field" | "protected-field" | "protected-decorated-field" | "protected-static-field" | "protected-instance-field" | "protected-abstract-field" | "private-field" | "private-decorated-field" | "private-static-field" | "private-instance-field" | "#private-field" | "#private-static-field" | "#private-instance-field" | "method" | "public-method" | "public-decorated-method" | "decorated-method" | "static-method" | "public-static-method" | "instance-method" | "public-instance-method" | "abstract-method" | "public-abstract-method" | "protected-method" | "protected-decorated-method" | "protected-static-method" | "protected-instance-method" | "protected-abstract-method" | "private-method" | "private-decorated-method" | "private-static-method" | "private-instance-method" | "#private-method" | "#private-static-method" | "#private-instance-method" | "call-signature" | "constructor" | "public-constructor" | "protected-constructor" | "private-constructor" | "accessor" | "public-accessor" | "public-decorated-accessor" | "decorated-accessor" | "static-accessor" | "public-static-accessor" | "instance-accessor" | "public-instance-accessor" | "abstract-accessor" | "public-abstract-accessor" | "protected-accessor" | "protected-decorated-accessor" | "protected-static-accessor" | "protected-instance-accessor" | "protected-abstract-accessor" | "private-accessor" | "private-decorated-accessor" | "private-static-accessor" | "private-instance-accessor" | "#private-accessor" | "#private-static-accessor" | "#private-instance-accessor" | "get" | "public-get" | "public-decorated-get" | "decorated-get" | "static-get" | "public-static-get" | "instance-get" | "public-instance-get" | "abstract-get" | "public-abstract-get" | "protected-get" | "protected-decorated-get" | "protected-static-get" | "protected-instance-get" | "protected-abstract-get" | "private-get" | "private-decorated-get" | "private-static-get" | "private-instance-get" | "#private-get" | "#private-static-get" | "#private-instance-get" | "set" | "public-set" | "public-decorated-set" | "decorated-set" | "static-set" | "public-static-set" | "instance-set" | "public-instance-set" | "abstract-set" | "public-abstract-set" | "protected-set" | "protected-decorated-set" | "protected-static-set" | "protected-instance-set" | "protected-abstract-set" | "private-set" | "private-decorated-set" | "private-static-set" | "private-instance-set" | "#private-set" | "#private-static-set" | "#private-instance-set" | "static-initialization" | "static-static-initialization" | "public-static-static-initialization" | "instance-static-initialization" | "public-instance-static-initialization" | "abstract-static-initialization" | "public-abstract-static-initialization" | "protected-static-static-initialization" | "protected-instance-static-initialization" | "protected-abstract-static-initialization" | "private-static-static-initialization" | "private-instance-static-initialization" | "#private-static-static-initialization" | "#private-instance-static-initialization")[])[] | "never");
    optionalityOrder?: ("optional-first" | "required-first");
    order?: ("alphabetically" | "alphabetically-case-insensitive" | "as-written" | "natural" | "natural-case-insensitive");
  });
  classExpressions?: ("never" | (("readonly-signature" | "signature" | "readonly-field" | "public-readonly-field" | "public-decorated-readonly-field" | "decorated-readonly-field" | "static-readonly-field" | "public-static-readonly-field" | "instance-readonly-field" | "public-instance-readonly-field" | "abstract-readonly-field" | "public-abstract-readonly-field" | "protected-readonly-field" | "protected-decorated-readonly-field" | "protected-static-readonly-field" | "protected-instance-readonly-field" | "protected-abstract-readonly-field" | "private-readonly-field" | "private-decorated-readonly-field" | "private-static-readonly-field" | "private-instance-readonly-field" | "#private-readonly-field" | "#private-static-readonly-field" | "#private-instance-readonly-field" | "field" | "public-field" | "public-decorated-field" | "decorated-field" | "static-field" | "public-static-field" | "instance-field" | "public-instance-field" | "abstract-field" | "public-abstract-field" | "protected-field" | "protected-decorated-field" | "protected-static-field" | "protected-instance-field" | "protected-abstract-field" | "private-field" | "private-decorated-field" | "private-static-field" | "private-instance-field" | "#private-field" | "#private-static-field" | "#private-instance-field" | "method" | "public-method" | "public-decorated-method" | "decorated-method" | "static-method" | "public-static-method" | "instance-method" | "public-instance-method" | "abstract-method" | "public-abstract-method" | "protected-method" | "protected-decorated-method" | "protected-static-method" | "protected-instance-method" | "protected-abstract-method" | "private-method" | "private-decorated-method" | "private-static-method" | "private-instance-method" | "#private-method" | "#private-static-method" | "#private-instance-method" | "call-signature" | "constructor" | "public-constructor" | "protected-constructor" | "private-constructor" | "accessor" | "public-accessor" | "public-decorated-accessor" | "decorated-accessor" | "static-accessor" | "public-static-accessor" | "instance-accessor" | "public-instance-accessor" | "abstract-accessor" | "public-abstract-accessor" | "protected-accessor" | "protected-decorated-accessor" | "protected-static-accessor" | "protected-instance-accessor" | "protected-abstract-accessor" | "private-accessor" | "private-decorated-accessor" | "private-static-accessor" | "private-instance-accessor" | "#private-accessor" | "#private-static-accessor" | "#private-instance-accessor" | "get" | "public-get" | "public-decorated-get" | "decorated-get" | "static-get" | "public-static-get" | "instance-get" | "public-instance-get" | "abstract-get" | "public-abstract-get" | "protected-get" | "protected-decorated-get" | "protected-static-get" | "protected-instance-get" | "protected-abstract-get" | "private-get" | "private-decorated-get" | "private-static-get" | "private-instance-get" | "#private-get" | "#private-static-get" | "#private-instance-get" | "set" | "public-set" | "public-decorated-set" | "decorated-set" | "static-set" | "public-static-set" | "instance-set" | "public-instance-set" | "abstract-set" | "public-abstract-set" | "protected-set" | "protected-decorated-set" | "protected-static-set" | "protected-instance-set" | "protected-abstract-set" | "private-set" | "private-decorated-set" | "private-static-set" | "private-instance-set" | "#private-set" | "#private-static-set" | "#private-instance-set" | "static-initialization" | "static-static-initialization" | "public-static-static-initialization" | "instance-static-initialization" | "public-instance-static-initialization" | "abstract-static-initialization" | "public-abstract-static-initialization" | "protected-static-static-initialization" | "protected-instance-static-initialization" | "protected-abstract-static-initialization" | "private-static-static-initialization" | "private-instance-static-initialization" | "#private-static-static-initialization" | "#private-instance-static-initialization") | ("readonly-signature" | "signature" | "readonly-field" | "public-readonly-field" | "public-decorated-readonly-field" | "decorated-readonly-field" | "static-readonly-field" | "public-static-readonly-field" | "instance-readonly-field" | "public-instance-readonly-field" | "abstract-readonly-field" | "public-abstract-readonly-field" | "protected-readonly-field" | "protected-decorated-readonly-field" | "protected-static-readonly-field" | "protected-instance-readonly-field" | "protected-abstract-readonly-field" | "private-readonly-field" | "private-decorated-readonly-field" | "private-static-readonly-field" | "private-instance-readonly-field" | "#private-readonly-field" | "#private-static-readonly-field" | "#private-instance-readonly-field" | "field" | "public-field" | "public-decorated-field" | "decorated-field" | "static-field" | "public-static-field" | "instance-field" | "public-instance-field" | "abstract-field" | "public-abstract-field" | "protected-field" | "protected-decorated-field" | "protected-static-field" | "protected-instance-field" | "protected-abstract-field" | "private-field" | "private-decorated-field" | "private-static-field" | "private-instance-field" | "#private-field" | "#private-static-field" | "#private-instance-field" | "method" | "public-method" | "public-decorated-method" | "decorated-method" | "static-method" | "public-static-method" | "instance-method" | "public-instance-method" | "abstract-method" | "public-abstract-method" | "protected-method" | "protected-decorated-method" | "protected-static-method" | "protected-instance-method" | "protected-abstract-method" | "private-method" | "private-decorated-method" | "private-static-method" | "private-instance-method" | "#private-method" | "#private-static-method" | "#private-instance-method" | "call-signature" | "constructor" | "public-constructor" | "protected-constructor" | "private-constructor" | "accessor" | "public-accessor" | "public-decorated-accessor" | "decorated-accessor" | "static-accessor" | "public-static-accessor" | "instance-accessor" | "public-instance-accessor" | "abstract-accessor" | "public-abstract-accessor" | "protected-accessor" | "protected-decorated-accessor" | "protected-static-accessor" | "protected-instance-accessor" | "protected-abstract-accessor" | "private-accessor" | "private-decorated-accessor" | "private-static-accessor" | "private-instance-accessor" | "#private-accessor" | "#private-static-accessor" | "#private-instance-accessor" | "get" | "public-get" | "public-decorated-get" | "decorated-get" | "static-get" | "public-static-get" | "instance-get" | "public-instance-get" | "abstract-get" | "public-abstract-get" | "protected-get" | "protected-decorated-get" | "protected-static-get" | "protected-instance-get" | "protected-abstract-get" | "private-get" | "private-decorated-get" | "private-static-get" | "private-instance-get" | "#private-get" | "#private-static-get" | "#private-instance-get" | "set" | "public-set" | "public-decorated-set" | "decorated-set" | "static-set" | "public-static-set" | "instance-set" | "public-instance-set" | "abstract-set" | "public-abstract-set" | "protected-set" | "protected-decorated-set" | "protected-static-set" | "protected-instance-set" | "protected-abstract-set" | "private-set" | "private-decorated-set" | "private-static-set" | "private-instance-set" | "#private-set" | "#private-static-set" | "#private-instance-set" | "static-initialization" | "static-static-initialization" | "public-static-static-initialization" | "instance-static-initialization" | "public-instance-static-initialization" | "abstract-static-initialization" | "public-abstract-static-initialization" | "protected-static-static-initialization" | "protected-instance-static-initialization" | "protected-abstract-static-initialization" | "private-static-static-initialization" | "private-instance-static-initialization" | "#private-static-static-initialization" | "#private-instance-static-initialization")[])[] | {
    memberTypes?: ((("readonly-signature" | "signature" | "readonly-field" | "public-readonly-field" | "public-decorated-readonly-field" | "decorated-readonly-field" | "static-readonly-field" | "public-static-readonly-field" | "instance-readonly-field" | "public-instance-readonly-field" | "abstract-readonly-field" | "public-abstract-readonly-field" | "protected-readonly-field" | "protected-decorated-readonly-field" | "protected-static-readonly-field" | "protected-instance-readonly-field" | "protected-abstract-readonly-field" | "private-readonly-field" | "private-decorated-readonly-field" | "private-static-readonly-field" | "private-instance-readonly-field" | "#private-readonly-field" | "#private-static-readonly-field" | "#private-instance-readonly-field" | "field" | "public-field" | "public-decorated-field" | "decorated-field" | "static-field" | "public-static-field" | "instance-field" | "public-instance-field" | "abstract-field" | "public-abstract-field" | "protected-field" | "protected-decorated-field" | "protected-static-field" | "protected-instance-field" | "protected-abstract-field" | "private-field" | "private-decorated-field" | "private-static-field" | "private-instance-field" | "#private-field" | "#private-static-field" | "#private-instance-field" | "method" | "public-method" | "public-decorated-method" | "decorated-method" | "static-method" | "public-static-method" | "instance-method" | "public-instance-method" | "abstract-method" | "public-abstract-method" | "protected-method" | "protected-decorated-method" | "protected-static-method" | "protected-instance-method" | "protected-abstract-method" | "private-method" | "private-decorated-method" | "private-static-method" | "private-instance-method" | "#private-method" | "#private-static-method" | "#private-instance-method" | "call-signature" | "constructor" | "public-constructor" | "protected-constructor" | "private-constructor" | "accessor" | "public-accessor" | "public-decorated-accessor" | "decorated-accessor" | "static-accessor" | "public-static-accessor" | "instance-accessor" | "public-instance-accessor" | "abstract-accessor" | "public-abstract-accessor" | "protected-accessor" | "protected-decorated-accessor" | "protected-static-accessor" | "protected-instance-accessor" | "protected-abstract-accessor" | "private-accessor" | "private-decorated-accessor" | "private-static-accessor" | "private-instance-accessor" | "#private-accessor" | "#private-static-accessor" | "#private-instance-accessor" | "get" | "public-get" | "public-decorated-get" | "decorated-get" | "static-get" | "public-static-get" | "instance-get" | "public-instance-get" | "abstract-get" | "public-abstract-get" | "protected-get" | "protected-decorated-get" | "protected-static-get" | "protected-instance-get" | "protected-abstract-get" | "private-get" | "private-decorated-get" | "private-static-get" | "private-instance-get" | "#private-get" | "#private-static-get" | "#private-instance-get" | "set" | "public-set" | "public-decorated-set" | "decorated-set" | "static-set" | "public-static-set" | "instance-set" | "public-instance-set" | "abstract-set" | "public-abstract-set" | "protected-set" | "protected-decorated-set" | "protected-static-set" | "protected-instance-set" | "protected-abstract-set" | "private-set" | "private-decorated-set" | "private-static-set" | "private-instance-set" | "#private-set" | "#private-static-set" | "#private-instance-set" | "static-initialization" | "static-static-initialization" | "public-static-static-initialization" | "instance-static-initialization" | "public-instance-static-initialization" | "abstract-static-initialization" | "public-abstract-static-initialization" | "protected-static-static-initialization" | "protected-instance-static-initialization" | "protected-abstract-static-initialization" | "private-static-static-initialization" | "private-instance-static-initialization" | "#private-static-static-initialization" | "#private-instance-static-initialization") | ("readonly-signature" | "signature" | "readonly-field" | "public-readonly-field" | "public-decorated-readonly-field" | "decorated-readonly-field" | "static-readonly-field" | "public-static-readonly-field" | "instance-readonly-field" | "public-instance-readonly-field" | "abstract-readonly-field" | "public-abstract-readonly-field" | "protected-readonly-field" | "protected-decorated-readonly-field" | "protected-static-readonly-field" | "protected-instance-readonly-field" | "protected-abstract-readonly-field" | "private-readonly-field" | "private-decorated-readonly-field" | "private-static-readonly-field" | "private-instance-readonly-field" | "#private-readonly-field" | "#private-static-readonly-field" | "#private-instance-readonly-field" | "field" | "public-field" | "public-decorated-field" | "decorated-field" | "static-field" | "public-static-field" | "instance-field" | "public-instance-field" | "abstract-field" | "public-abstract-field" | "protected-field" | "protected-decorated-field" | "protected-static-field" | "protected-instance-field" | "protected-abstract-field" | "private-field" | "private-decorated-field" | "private-static-field" | "private-instance-field" | "#private-field" | "#private-static-field" | "#private-instance-field" | "method" | "public-method" | "public-decorated-method" | "decorated-method" | "static-method" | "public-static-method" | "instance-method" | "public-instance-method" | "abstract-method" | "public-abstract-method" | "protected-method" | "protected-decorated-method" | "protected-static-method" | "protected-instance-method" | "protected-abstract-method" | "private-method" | "private-decorated-method" | "private-static-method" | "private-instance-method" | "#private-method" | "#private-static-method" | "#private-instance-method" | "call-signature" | "constructor" | "public-constructor" | "protected-constructor" | "private-constructor" | "accessor" | "public-accessor" | "public-decorated-accessor" | "decorated-accessor" | "static-accessor" | "public-static-accessor" | "instance-accessor" | "public-instance-accessor" | "abstract-accessor" | "public-abstract-accessor" | "protected-accessor" | "protected-decorated-accessor" | "protected-static-accessor" | "protected-instance-accessor" | "protected-abstract-accessor" | "private-accessor" | "private-decorated-accessor" | "private-static-accessor" | "private-instance-accessor" | "#private-accessor" | "#private-static-accessor" | "#private-instance-accessor" | "get" | "public-get" | "public-decorated-get" | "decorated-get" | "static-get" | "public-static-get" | "instance-get" | "public-instance-get" | "abstract-get" | "public-abstract-get" | "protected-get" | "protected-decorated-get" | "protected-static-get" | "protected-instance-get" | "protected-abstract-get" | "private-get" | "private-decorated-get" | "private-static-get" | "private-instance-get" | "#private-get" | "#private-static-get" | "#private-instance-get" | "set" | "public-set" | "public-decorated-set" | "decorated-set" | "static-set" | "public-static-set" | "instance-set" | "public-instance-set" | "abstract-set" | "public-abstract-set" | "protected-set" | "protected-decorated-set" | "protected-static-set" | "protected-instance-set" | "protected-abstract-set" | "private-set" | "private-decorated-set" | "private-static-set" | "private-instance-set" | "#private-set" | "#private-static-set" | "#private-instance-set" | "static-initialization" | "static-static-initialization" | "public-static-static-initialization" | "instance-static-initialization" | "public-instance-static-initialization" | "abstract-static-initialization" | "public-abstract-static-initialization" | "protected-static-static-initialization" | "protected-instance-static-initialization" | "protected-abstract-static-initialization" | "private-static-static-initialization" | "private-instance-static-initialization" | "#private-static-static-initialization" | "#private-instance-static-initialization")[])[] | "never");
    optionalityOrder?: ("optional-first" | "required-first");
    order?: ("alphabetically" | "alphabetically-case-insensitive" | "as-written" | "natural" | "natural-case-insensitive");
  });
  default?: ("never" | (("readonly-signature" | "signature" | "readonly-field" | "public-readonly-field" | "public-decorated-readonly-field" | "decorated-readonly-field" | "static-readonly-field" | "public-static-readonly-field" | "instance-readonly-field" | "public-instance-readonly-field" | "abstract-readonly-field" | "public-abstract-readonly-field" | "protected-readonly-field" | "protected-decorated-readonly-field" | "protected-static-readonly-field" | "protected-instance-readonly-field" | "protected-abstract-readonly-field" | "private-readonly-field" | "private-decorated-readonly-field" | "private-static-readonly-field" | "private-instance-readonly-field" | "#private-readonly-field" | "#private-static-readonly-field" | "#private-instance-readonly-field" | "field" | "public-field" | "public-decorated-field" | "decorated-field" | "static-field" | "public-static-field" | "instance-field" | "public-instance-field" | "abstract-field" | "public-abstract-field" | "protected-field" | "protected-decorated-field" | "protected-static-field" | "protected-instance-field" | "protected-abstract-field" | "private-field" | "private-decorated-field" | "private-static-field" | "private-instance-field" | "#private-field" | "#private-static-field" | "#private-instance-field" | "method" | "public-method" | "public-decorated-method" | "decorated-method" | "static-method" | "public-static-method" | "instance-method" | "public-instance-method" | "abstract-method" | "public-abstract-method" | "protected-method" | "protected-decorated-method" | "protected-static-method" | "protected-instance-method" | "protected-abstract-method" | "private-method" | "private-decorated-method" | "private-static-method" | "private-instance-method" | "#private-method" | "#private-static-method" | "#private-instance-method" | "call-signature" | "constructor" | "public-constructor" | "protected-constructor" | "private-constructor" | "accessor" | "public-accessor" | "public-decorated-accessor" | "decorated-accessor" | "static-accessor" | "public-static-accessor" | "instance-accessor" | "public-instance-accessor" | "abstract-accessor" | "public-abstract-accessor" | "protected-accessor" | "protected-decorated-accessor" | "protected-static-accessor" | "protected-instance-accessor" | "protected-abstract-accessor" | "private-accessor" | "private-decorated-accessor" | "private-static-accessor" | "private-instance-accessor" | "#private-accessor" | "#private-static-accessor" | "#private-instance-accessor" | "get" | "public-get" | "public-decorated-get" | "decorated-get" | "static-get" | "public-static-get" | "instance-get" | "public-instance-get" | "abstract-get" | "public-abstract-get" | "protected-get" | "protected-decorated-get" | "protected-static-get" | "protected-instance-get" | "protected-abstract-get" | "private-get" | "private-decorated-get" | "private-static-get" | "private-instance-get" | "#private-get" | "#private-static-get" | "#private-instance-get" | "set" | "public-set" | "public-decorated-set" | "decorated-set" | "static-set" | "public-static-set" | "instance-set" | "public-instance-set" | "abstract-set" | "public-abstract-set" | "protected-set" | "protected-decorated-set" | "protected-static-set" | "protected-instance-set" | "protected-abstract-set" | "private-set" | "private-decorated-set" | "private-static-set" | "private-instance-set" | "#private-set" | "#private-static-set" | "#private-instance-set" | "static-initialization" | "static-static-initialization" | "public-static-static-initialization" | "instance-static-initialization" | "public-instance-static-initialization" | "abstract-static-initialization" | "public-abstract-static-initialization" | "protected-static-static-initialization" | "protected-instance-static-initialization" | "protected-abstract-static-initialization" | "private-static-static-initialization" | "private-instance-static-initialization" | "#private-static-static-initialization" | "#private-instance-static-initialization") | ("readonly-signature" | "signature" | "readonly-field" | "public-readonly-field" | "public-decorated-readonly-field" | "decorated-readonly-field" | "static-readonly-field" | "public-static-readonly-field" | "instance-readonly-field" | "public-instance-readonly-field" | "abstract-readonly-field" | "public-abstract-readonly-field" | "protected-readonly-field" | "protected-decorated-readonly-field" | "protected-static-readonly-field" | "protected-instance-readonly-field" | "protected-abstract-readonly-field" | "private-readonly-field" | "private-decorated-readonly-field" | "private-static-readonly-field" | "private-instance-readonly-field" | "#private-readonly-field" | "#private-static-readonly-field" | "#private-instance-readonly-field" | "field" | "public-field" | "public-decorated-field" | "decorated-field" | "static-field" | "public-static-field" | "instance-field" | "public-instance-field" | "abstract-field" | "public-abstract-field" | "protected-field" | "protected-decorated-field" | "protected-static-field" | "protected-instance-field" | "protected-abstract-field" | "private-field" | "private-decorated-field" | "private-static-field" | "private-instance-field" | "#private-field" | "#private-static-field" | "#private-instance-field" | "method" | "public-method" | "public-decorated-method" | "decorated-method" | "static-method" | "public-static-method" | "instance-method" | "public-instance-method" | "abstract-method" | "public-abstract-method" | "protected-method" | "protected-decorated-method" | "protected-static-method" | "protected-instance-method" | "protected-abstract-method" | "private-method" | "private-decorated-method" | "private-static-method" | "private-instance-method" | "#private-method" | "#private-static-method" | "#private-instance-method" | "call-signature" | "constructor" | "public-constructor" | "protected-constructor" | "private-constructor" | "accessor" | "public-accessor" | "public-decorated-accessor" | "decorated-accessor" | "static-accessor" | "public-static-accessor" | "instance-accessor" | "public-instance-accessor" | "abstract-accessor" | "public-abstract-accessor" | "protected-accessor" | "protected-decorated-accessor" | "protected-static-accessor" | "protected-instance-accessor" | "protected-abstract-accessor" | "private-accessor" | "private-decorated-accessor" | "private-static-accessor" | "private-instance-accessor" | "#private-accessor" | "#private-static-accessor" | "#private-instance-accessor" | "get" | "public-get" | "public-decorated-get" | "decorated-get" | "static-get" | "public-static-get" | "instance-get" | "public-instance-get" | "abstract-get" | "public-abstract-get" | "protected-get" | "protected-decorated-get" | "protected-static-get" | "protected-instance-get" | "protected-abstract-get" | "private-get" | "private-decorated-get" | "private-static-get" | "private-instance-get" | "#private-get" | "#private-static-get" | "#private-instance-get" | "set" | "public-set" | "public-decorated-set" | "decorated-set" | "static-set" | "public-static-set" | "instance-set" | "public-instance-set" | "abstract-set" | "public-abstract-set" | "protected-set" | "protected-decorated-set" | "protected-static-set" | "protected-instance-set" | "protected-abstract-set" | "private-set" | "private-decorated-set" | "private-static-set" | "private-instance-set" | "#private-set" | "#private-static-set" | "#private-instance-set" | "static-initialization" | "static-static-initialization" | "public-static-static-initialization" | "instance-static-initialization" | "public-instance-static-initialization" | "abstract-static-initialization" | "public-abstract-static-initialization" | "protected-static-static-initialization" | "protected-instance-static-initialization" | "protected-abstract-static-initialization" | "private-static-static-initialization" | "private-instance-static-initialization" | "#private-static-static-initialization" | "#private-instance-static-initialization")[])[] | {
    memberTypes?: ((("readonly-signature" | "signature" | "readonly-field" | "public-readonly-field" | "public-decorated-readonly-field" | "decorated-readonly-field" | "static-readonly-field" | "public-static-readonly-field" | "instance-readonly-field" | "public-instance-readonly-field" | "abstract-readonly-field" | "public-abstract-readonly-field" | "protected-readonly-field" | "protected-decorated-readonly-field" | "protected-static-readonly-field" | "protected-instance-readonly-field" | "protected-abstract-readonly-field" | "private-readonly-field" | "private-decorated-readonly-field" | "private-static-readonly-field" | "private-instance-readonly-field" | "#private-readonly-field" | "#private-static-readonly-field" | "#private-instance-readonly-field" | "field" | "public-field" | "public-decorated-field" | "decorated-field" | "static-field" | "public-static-field" | "instance-field" | "public-instance-field" | "abstract-field" | "public-abstract-field" | "protected-field" | "protected-decorated-field" | "protected-static-field" | "protected-instance-field" | "protected-abstract-field" | "private-field" | "private-decorated-field" | "private-static-field" | "private-instance-field" | "#private-field" | "#private-static-field" | "#private-instance-field" | "method" | "public-method" | "public-decorated-method" | "decorated-method" | "static-method" | "public-static-method" | "instance-method" | "public-instance-method" | "abstract-method" | "public-abstract-method" | "protected-method" | "protected-decorated-method" | "protected-static-method" | "protected-instance-method" | "protected-abstract-method" | "private-method" | "private-decorated-method" | "private-static-method" | "private-instance-method" | "#private-method" | "#private-static-method" | "#private-instance-method" | "call-signature" | "constructor" | "public-constructor" | "protected-constructor" | "private-constructor" | "accessor" | "public-accessor" | "public-decorated-accessor" | "decorated-accessor" | "static-accessor" | "public-static-accessor" | "instance-accessor" | "public-instance-accessor" | "abstract-accessor" | "public-abstract-accessor" | "protected-accessor" | "protected-decorated-accessor" | "protected-static-accessor" | "protected-instance-accessor" | "protected-abstract-accessor" | "private-accessor" | "private-decorated-accessor" | "private-static-accessor" | "private-instance-accessor" | "#private-accessor" | "#private-static-accessor" | "#private-instance-accessor" | "get" | "public-get" | "public-decorated-get" | "decorated-get" | "static-get" | "public-static-get" | "instance-get" | "public-instance-get" | "abstract-get" | "public-abstract-get" | "protected-get" | "protected-decorated-get" | "protected-static-get" | "protected-instance-get" | "protected-abstract-get" | "private-get" | "private-decorated-get" | "private-static-get" | "private-instance-get" | "#private-get" | "#private-static-get" | "#private-instance-get" | "set" | "public-set" | "public-decorated-set" | "decorated-set" | "static-set" | "public-static-set" | "instance-set" | "public-instance-set" | "abstract-set" | "public-abstract-set" | "protected-set" | "protected-decorated-set" | "protected-static-set" | "protected-instance-set" | "protected-abstract-set" | "private-set" | "private-decorated-set" | "private-static-set" | "private-instance-set" | "#private-set" | "#private-static-set" | "#private-instance-set" | "static-initialization" | "static-static-initialization" | "public-static-static-initialization" | "instance-static-initialization" | "public-instance-static-initialization" | "abstract-static-initialization" | "public-abstract-static-initialization" | "protected-static-static-initialization" | "protected-instance-static-initialization" | "protected-abstract-static-initialization" | "private-static-static-initialization" | "private-instance-static-initialization" | "#private-static-static-initialization" | "#private-instance-static-initialization") | ("readonly-signature" | "signature" | "readonly-field" | "public-readonly-field" | "public-decorated-readonly-field" | "decorated-readonly-field" | "static-readonly-field" | "public-static-readonly-field" | "instance-readonly-field" | "public-instance-readonly-field" | "abstract-readonly-field" | "public-abstract-readonly-field" | "protected-readonly-field" | "protected-decorated-readonly-field" | "protected-static-readonly-field" | "protected-instance-readonly-field" | "protected-abstract-readonly-field" | "private-readonly-field" | "private-decorated-readonly-field" | "private-static-readonly-field" | "private-instance-readonly-field" | "#private-readonly-field" | "#private-static-readonly-field" | "#private-instance-readonly-field" | "field" | "public-field" | "public-decorated-field" | "decorated-field" | "static-field" | "public-static-field" | "instance-field" | "public-instance-field" | "abstract-field" | "public-abstract-field" | "protected-field" | "protected-decorated-field" | "protected-static-field" | "protected-instance-field" | "protected-abstract-field" | "private-field" | "private-decorated-field" | "private-static-field" | "private-instance-field" | "#private-field" | "#private-static-field" | "#private-instance-field" | "method" | "public-method" | "public-decorated-method" | "decorated-method" | "static-method" | "public-static-method" | "instance-method" | "public-instance-method" | "abstract-method" | "public-abstract-method" | "protected-method" | "protected-decorated-method" | "protected-static-method" | "protected-instance-method" | "protected-abstract-method" | "private-method" | "private-decorated-method" | "private-static-method" | "private-instance-method" | "#private-method" | "#private-static-method" | "#private-instance-method" | "call-signature" | "constructor" | "public-constructor" | "protected-constructor" | "private-constructor" | "accessor" | "public-accessor" | "public-decorated-accessor" | "decorated-accessor" | "static-accessor" | "public-static-accessor" | "instance-accessor" | "public-instance-accessor" | "abstract-accessor" | "public-abstract-accessor" | "protected-accessor" | "protected-decorated-accessor" | "protected-static-accessor" | "protected-instance-accessor" | "protected-abstract-accessor" | "private-accessor" | "private-decorated-accessor" | "private-static-accessor" | "private-instance-accessor" | "#private-accessor" | "#private-static-accessor" | "#private-instance-accessor" | "get" | "public-get" | "public-decorated-get" | "decorated-get" | "static-get" | "public-static-get" | "instance-get" | "public-instance-get" | "abstract-get" | "public-abstract-get" | "protected-get" | "protected-decorated-get" | "protected-static-get" | "protected-instance-get" | "protected-abstract-get" | "private-get" | "private-decorated-get" | "private-static-get" | "private-instance-get" | "#private-get" | "#private-static-get" | "#private-instance-get" | "set" | "public-set" | "public-decorated-set" | "decorated-set" | "static-set" | "public-static-set" | "instance-set" | "public-instance-set" | "abstract-set" | "public-abstract-set" | "protected-set" | "protected-decorated-set" | "protected-static-set" | "protected-instance-set" | "protected-abstract-set" | "private-set" | "private-decorated-set" | "private-static-set" | "private-instance-set" | "#private-set" | "#private-static-set" | "#private-instance-set" | "static-initialization" | "static-static-initialization" | "public-static-static-initialization" | "instance-static-initialization" | "public-instance-static-initialization" | "abstract-static-initialization" | "public-abstract-static-initialization" | "protected-static-static-initialization" | "protected-instance-static-initialization" | "protected-abstract-static-initialization" | "private-static-static-initialization" | "private-instance-static-initialization" | "#private-static-static-initialization" | "#private-instance-static-initialization")[])[] | "never");
    optionalityOrder?: ("optional-first" | "required-first");
    order?: ("alphabetically" | "alphabetically-case-insensitive" | "as-written" | "natural" | "natural-case-insensitive");
  });
  interfaces?: ("never" | (("readonly-signature" | "signature" | "readonly-field" | "field" | "method" | "constructor") | ("readonly-signature" | "signature" | "readonly-field" | "field" | "method" | "constructor")[])[] | {
    memberTypes?: ((("readonly-signature" | "signature" | "readonly-field" | "field" | "method" | "constructor") | ("readonly-signature" | "signature" | "readonly-field" | "field" | "method" | "constructor")[])[] | "never");
    optionalityOrder?: ("optional-first" | "required-first");
    order?: ("alphabetically" | "alphabetically-case-insensitive" | "as-written" | "natural" | "natural-case-insensitive");
  });
  typeLiterals?: ("never" | (("readonly-signature" | "signature" | "readonly-field" | "field" | "method" | "constructor") | ("readonly-signature" | "signature" | "readonly-field" | "field" | "method" | "constructor")[])[] | {
    memberTypes?: ((("readonly-signature" | "signature" | "readonly-field" | "field" | "method" | "constructor") | ("readonly-signature" | "signature" | "readonly-field" | "field" | "method" | "constructor")[])[] | "never");
    optionalityOrder?: ("optional-first" | "required-first");
    order?: ("alphabetically" | "alphabetically-case-insensitive" | "as-written" | "natural" | "natural-case-insensitive");
  });
}]; // ----- @typescript-eslint/method-signature-style -----
type TypescriptEslintMethodSignatureStyle = [] | [("property" | "method")]; // ----- @typescript-eslint/naming-convention -----
type _TypescriptEslintNamingConventionFormatOptionsConfig = (_TypescriptEslintNamingConventionPredefinedFormats[] | null);
type _TypescriptEslintNamingConventionPredefinedFormats = ("camelCase" | "strictCamelCase" | "PascalCase" | "StrictPascalCase" | "snake_case" | "UPPER_CASE");
type _TypescriptEslintNamingConventionUnderscoreOptions = ("forbid" | "allow" | "require" | "requireDouble" | "allowDouble" | "allowSingleOrDouble");
type _TypescriptEslintNamingConvention_PrefixSuffixConfig = string[];
type _TypescriptEslintNamingConventionTypeModifiers = ("boolean" | "string" | "number" | "function" | "array");
type TypescriptEslintNamingConvention = ({
  custom?: _TypescriptEslintNamingConvention_MatchRegexConfig;
  failureMessage?: string;
  format: _TypescriptEslintNamingConventionFormatOptionsConfig;
  leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions;
  prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig;
  suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig;
  trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions;
  filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig);
  modifiers?: ("const" | "readonly" | "static" | "public" | "protected" | "private" | "#private" | "abstract" | "destructured" | "global" | "exported" | "unused" | "requiresQuotes" | "override" | "async" | "default" | "namespace")[];
  selector: ("default" | "variableLike" | "memberLike" | "typeLike" | "method" | "property" | "accessor" | "variable" | "function" | "parameter" | "parameterProperty" | "classicAccessor" | "enumMember" | "classMethod" | "objectLiteralMethod" | "typeMethod" | "classProperty" | "objectLiteralProperty" | "typeProperty" | "autoAccessor" | "class" | "interface" | "typeAlias" | "enum" | "typeParameter" | "import")[];
  types?: _TypescriptEslintNamingConventionTypeModifiers[];
} | {
  custom?: _TypescriptEslintNamingConvention_MatchRegexConfig;
  failureMessage?: string;
  format: _TypescriptEslintNamingConventionFormatOptionsConfig;
  leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions;
  prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig;
  suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig;
  trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions;
  filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig);
  selector: "default";
  modifiers?: ("const" | "readonly" | "static" | "public" | "protected" | "private" | "#private" | "abstract" | "destructured" | "global" | "exported" | "unused" | "requiresQuotes" | "override" | "async" | "default" | "namespace")[];
} | {
  custom?: _TypescriptEslintNamingConvention_MatchRegexConfig;
  failureMessage?: string;
  format: _TypescriptEslintNamingConventionFormatOptionsConfig;
  leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions;
  prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig;
  suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig;
  trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions;
  filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig);
  selector: "variableLike";
  modifiers?: ("unused" | "async")[];
} | {
  custom?: _TypescriptEslintNamingConvention_MatchRegexConfig;
  failureMessage?: string;
  format: _TypescriptEslintNamingConventionFormatOptionsConfig;
  leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions;
  prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig;
  suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig;
  trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions;
  filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig);
  selector: "variable";
  modifiers?: ("const" | "destructured" | "exported" | "global" | "unused" | "async")[];
  types?: _TypescriptEslintNamingConventionTypeModifiers[];
} | {
  custom?: _TypescriptEslintNamingConvention_MatchRegexConfig;
  failureMessage?: string;
  format: _TypescriptEslintNamingConventionFormatOptionsConfig;
  leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions;
  prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig;
  suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig;
  trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions;
  filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig);
  selector: "function";
  modifiers?: ("exported" | "global" | "unused" | "async")[];
} | {
  custom?: _TypescriptEslintNamingConvention_MatchRegexConfig;
  failureMessage?: string;
  format: _TypescriptEslintNamingConventionFormatOptionsConfig;
  leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions;
  prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig;
  suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig;
  trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions;
  filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig);
  selector: "parameter";
  modifiers?: ("destructured" | "unused")[];
  types?: _TypescriptEslintNamingConventionTypeModifiers[];
} | {
  custom?: _TypescriptEslintNamingConvention_MatchRegexConfig;
  failureMessage?: string;
  format: _TypescriptEslintNamingConventionFormatOptionsConfig;
  leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions;
  prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig;
  suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig;
  trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions;
  filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig);
  selector: "memberLike";
  modifiers?: ("abstract" | "private" | "#private" | "protected" | "public" | "readonly" | "requiresQuotes" | "static" | "override" | "async")[];
} | {
  custom?: _TypescriptEslintNamingConvention_MatchRegexConfig;
  failureMessage?: string;
  format: _TypescriptEslintNamingConventionFormatOptionsConfig;
  leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions;
  prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig;
  suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig;
  trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions;
  filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig);
  selector: "classProperty";
  modifiers?: ("abstract" | "private" | "#private" | "protected" | "public" | "readonly" | "requiresQuotes" | "static" | "override")[];
  types?: _TypescriptEslintNamingConventionTypeModifiers[];
} | {
  custom?: _TypescriptEslintNamingConvention_MatchRegexConfig;
  failureMessage?: string;
  format: _TypescriptEslintNamingConventionFormatOptionsConfig;
  leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions;
  prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig;
  suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig;
  trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions;
  filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig);
  selector: "objectLiteralProperty";
  modifiers?: ("public" | "requiresQuotes")[];
  types?: _TypescriptEslintNamingConventionTypeModifiers[];
} | {
  custom?: _TypescriptEslintNamingConvention_MatchRegexConfig;
  failureMessage?: string;
  format: _TypescriptEslintNamingConventionFormatOptionsConfig;
  leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions;
  prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig;
  suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig;
  trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions;
  filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig);
  selector: "typeProperty";
  modifiers?: ("public" | "readonly" | "requiresQuotes")[];
  types?: _TypescriptEslintNamingConventionTypeModifiers[];
} | {
  custom?: _TypescriptEslintNamingConvention_MatchRegexConfig;
  failureMessage?: string;
  format: _TypescriptEslintNamingConventionFormatOptionsConfig;
  leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions;
  prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig;
  suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig;
  trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions;
  filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig);
  selector: "parameterProperty";
  modifiers?: ("private" | "protected" | "public" | "readonly")[];
  types?: _TypescriptEslintNamingConventionTypeModifiers[];
} | {
  custom?: _TypescriptEslintNamingConvention_MatchRegexConfig;
  failureMessage?: string;
  format: _TypescriptEslintNamingConventionFormatOptionsConfig;
  leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions;
  prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig;
  suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig;
  trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions;
  filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig);
  selector: "property";
  modifiers?: ("abstract" | "private" | "#private" | "protected" | "public" | "readonly" | "requiresQuotes" | "static" | "override" | "async")[];
  types?: _TypescriptEslintNamingConventionTypeModifiers[];
} | {
  custom?: _TypescriptEslintNamingConvention_MatchRegexConfig;
  failureMessage?: string;
  format: _TypescriptEslintNamingConventionFormatOptionsConfig;
  leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions;
  prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig;
  suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig;
  trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions;
  filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig);
  selector: "classMethod";
  modifiers?: ("abstract" | "private" | "#private" | "protected" | "public" | "requiresQuotes" | "static" | "override" | "async")[];
} | {
  custom?: _TypescriptEslintNamingConvention_MatchRegexConfig;
  failureMessage?: string;
  format: _TypescriptEslintNamingConventionFormatOptionsConfig;
  leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions;
  prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig;
  suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig;
  trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions;
  filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig);
  selector: "objectLiteralMethod";
  modifiers?: ("public" | "requiresQuotes" | "async")[];
} | {
  custom?: _TypescriptEslintNamingConvention_MatchRegexConfig;
  failureMessage?: string;
  format: _TypescriptEslintNamingConventionFormatOptionsConfig;
  leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions;
  prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig;
  suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig;
  trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions;
  filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig);
  selector: "typeMethod";
  modifiers?: ("public" | "requiresQuotes")[];
} | {
  custom?: _TypescriptEslintNamingConvention_MatchRegexConfig;
  failureMessage?: string;
  format: _TypescriptEslintNamingConventionFormatOptionsConfig;
  leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions;
  prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig;
  suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig;
  trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions;
  filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig);
  selector: "method";
  modifiers?: ("abstract" | "private" | "#private" | "protected" | "public" | "requiresQuotes" | "static" | "override" | "async")[];
} | {
  custom?: _TypescriptEslintNamingConvention_MatchRegexConfig;
  failureMessage?: string;
  format: _TypescriptEslintNamingConventionFormatOptionsConfig;
  leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions;
  prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig;
  suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig;
  trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions;
  filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig);
  selector: "classicAccessor";
  modifiers?: ("abstract" | "private" | "protected" | "public" | "requiresQuotes" | "static" | "override")[];
  types?: _TypescriptEslintNamingConventionTypeModifiers[];
} | {
  custom?: _TypescriptEslintNamingConvention_MatchRegexConfig;
  failureMessage?: string;
  format: _TypescriptEslintNamingConventionFormatOptionsConfig;
  leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions;
  prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig;
  suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig;
  trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions;
  filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig);
  selector: "autoAccessor";
  modifiers?: ("abstract" | "private" | "protected" | "public" | "requiresQuotes" | "static" | "override")[];
  types?: _TypescriptEslintNamingConventionTypeModifiers[];
} | {
  custom?: _TypescriptEslintNamingConvention_MatchRegexConfig;
  failureMessage?: string;
  format: _TypescriptEslintNamingConventionFormatOptionsConfig;
  leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions;
  prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig;
  suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig;
  trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions;
  filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig);
  selector: "accessor";
  modifiers?: ("abstract" | "private" | "protected" | "public" | "requiresQuotes" | "static" | "override")[];
  types?: _TypescriptEslintNamingConventionTypeModifiers[];
} | {
  custom?: _TypescriptEslintNamingConvention_MatchRegexConfig;
  failureMessage?: string;
  format: _TypescriptEslintNamingConventionFormatOptionsConfig;
  leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions;
  prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig;
  suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig;
  trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions;
  filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig);
  selector: "enumMember";
  modifiers?: ("requiresQuotes")[];
} | {
  custom?: _TypescriptEslintNamingConvention_MatchRegexConfig;
  failureMessage?: string;
  format: _TypescriptEslintNamingConventionFormatOptionsConfig;
  leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions;
  prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig;
  suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig;
  trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions;
  filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig);
  selector: "typeLike";
  modifiers?: ("abstract" | "exported" | "unused")[];
} | {
  custom?: _TypescriptEslintNamingConvention_MatchRegexConfig;
  failureMessage?: string;
  format: _TypescriptEslintNamingConventionFormatOptionsConfig;
  leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions;
  prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig;
  suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig;
  trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions;
  filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig);
  selector: "class";
  modifiers?: ("abstract" | "exported" | "unused")[];
} | {
  custom?: _TypescriptEslintNamingConvention_MatchRegexConfig;
  failureMessage?: string;
  format: _TypescriptEslintNamingConventionFormatOptionsConfig;
  leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions;
  prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig;
  suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig;
  trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions;
  filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig);
  selector: "interface";
  modifiers?: ("exported" | "unused")[];
} | {
  custom?: _TypescriptEslintNamingConvention_MatchRegexConfig;
  failureMessage?: string;
  format: _TypescriptEslintNamingConventionFormatOptionsConfig;
  leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions;
  prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig;
  suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig;
  trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions;
  filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig);
  selector: "typeAlias";
  modifiers?: ("exported" | "unused")[];
} | {
  custom?: _TypescriptEslintNamingConvention_MatchRegexConfig;
  failureMessage?: string;
  format: _TypescriptEslintNamingConventionFormatOptionsConfig;
  leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions;
  prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig;
  suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig;
  trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions;
  filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig);
  selector: "enum";
  modifiers?: ("exported" | "unused")[];
} | {
  custom?: _TypescriptEslintNamingConvention_MatchRegexConfig;
  failureMessage?: string;
  format: _TypescriptEslintNamingConventionFormatOptionsConfig;
  leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions;
  prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig;
  suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig;
  trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions;
  filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig);
  selector: "typeParameter";
  modifiers?: ("unused")[];
} | {
  custom?: _TypescriptEslintNamingConvention_MatchRegexConfig;
  failureMessage?: string;
  format: _TypescriptEslintNamingConventionFormatOptionsConfig;
  leadingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions;
  prefix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig;
  suffix?: _TypescriptEslintNamingConvention_PrefixSuffixConfig;
  trailingUnderscore?: _TypescriptEslintNamingConventionUnderscoreOptions;
  filter?: (string | _TypescriptEslintNamingConvention_MatchRegexConfig);
  selector: "import";
  modifiers?: ("default" | "namespace")[];
})[];
interface _TypescriptEslintNamingConvention_MatchRegexConfig {
  match: boolean;
  regex: string;
} // ----- @typescript-eslint/no-base-to-string -----
type TypescriptEslintNoBaseToString = [] | [{
  checkUnknown?: boolean;
  ignoredTypeNames?: string[];
}]; // ----- @typescript-eslint/no-confusing-void-expression -----
type TypescriptEslintNoConfusingVoidExpression = [] | [{
  ignoreArrowShorthand?: boolean;
  ignoreVoidOperator?: boolean;
  ignoreVoidReturningFunctions?: boolean;
}]; // ----- @typescript-eslint/no-deprecated -----
type TypescriptEslintNoDeprecated = [] | [{
  allow?: (string | {
    from: "file";
    name: (string | [string, ...(string)[]]);
    path?: string;
  } | {
    from: "lib";
    name: (string | [string, ...(string)[]]);
  } | {
    from: "package";
    name: (string | [string, ...(string)[]]);
    package: string;
  })[];
}]; // ----- @typescript-eslint/no-duplicate-type-constituents -----
type TypescriptEslintNoDuplicateTypeConstituents = [] | [{
  ignoreIntersections?: boolean;
  ignoreUnions?: boolean;
}]; // ----- @typescript-eslint/no-empty-function -----
type TypescriptEslintNoEmptyFunction = [] | [{
  allow?: ("functions" | "arrowFunctions" | "generatorFunctions" | "methods" | "generatorMethods" | "getters" | "setters" | "constructors" | "private-constructors" | "protected-constructors" | "asyncFunctions" | "asyncMethods" | "decoratedFunctions" | "overrideMethods")[];
}]; // ----- @typescript-eslint/no-empty-interface -----
type TypescriptEslintNoEmptyInterface = [] | [{
  allowSingleExtends?: boolean;
}]; // ----- @typescript-eslint/no-empty-object-type -----
type TypescriptEslintNoEmptyObjectType = [] | [{
  allowInterfaces?: ("always" | "never" | "with-single-extends");
  allowObjectTypes?: ("always" | "never");
  allowWithName?: string;
}]; // ----- @typescript-eslint/no-explicit-any -----
type TypescriptEslintNoExplicitAny = [] | [{
  fixToUnknown?: boolean;
  ignoreRestArgs?: boolean;
}]; // ----- @typescript-eslint/no-extraneous-class -----
type TypescriptEslintNoExtraneousClass = [] | [{
  allowConstructorOnly?: boolean;
  allowEmpty?: boolean;
  allowStaticOnly?: boolean;
  allowWithDecorator?: boolean;
}]; // ----- @typescript-eslint/no-floating-promises -----
type TypescriptEslintNoFloatingPromises = [] | [{
  allowForKnownSafeCalls?: (string | {
    from: "file";
    name: (string | [string, ...(string)[]]);
    path?: string;
  } | {
    from: "lib";
    name: (string | [string, ...(string)[]]);
  } | {
    from: "package";
    name: (string | [string, ...(string)[]]);
    package: string;
  })[];
  allowForKnownSafePromises?: (string | {
    from: "file";
    name: (string | [string, ...(string)[]]);
    path?: string;
  } | {
    from: "lib";
    name: (string | [string, ...(string)[]]);
  } | {
    from: "package";
    name: (string | [string, ...(string)[]]);
    package: string;
  })[];
  checkThenables?: boolean;
  ignoreIIFE?: boolean;
  ignoreVoid?: boolean;
}]; // ----- @typescript-eslint/no-inferrable-types -----
type TypescriptEslintNoInferrableTypes = [] | [{
  ignoreParameters?: boolean;
  ignoreProperties?: boolean;
}]; // ----- @typescript-eslint/no-invalid-this -----
type TypescriptEslintNoInvalidThis = [] | [{
  capIsConstructor?: boolean;
}]; // ----- @typescript-eslint/no-invalid-void-type -----
type TypescriptEslintNoInvalidVoidType = [] | [{
  allowAsThisParameter?: boolean;
  allowInGenericTypeArguments?: (boolean | [string, ...(string)[]]);
}]; // ----- @typescript-eslint/no-magic-numbers -----
type TypescriptEslintNoMagicNumbers = [] | [{
  detectObjects?: boolean;
  enforceConst?: boolean;
  ignore?: (number | string)[];
  ignoreArrayIndexes?: boolean;
  ignoreDefaultValues?: boolean;
  ignoreClassFieldInitialValues?: boolean;
  ignoreEnums?: boolean;
  ignoreNumericLiteralTypes?: boolean;
  ignoreReadonlyClassProperties?: boolean;
  ignoreTypeIndexes?: boolean;
}]; // ----- @typescript-eslint/no-meaningless-void-operator -----
type TypescriptEslintNoMeaninglessVoidOperator = [] | [{
  checkNever?: boolean;
}]; // ----- @typescript-eslint/no-misused-promises -----
type TypescriptEslintNoMisusedPromises = [] | [{
  checksConditionals?: boolean;
  checksSpreads?: boolean;
  checksVoidReturn?: (boolean | {
    arguments?: boolean;
    attributes?: boolean;
    inheritedMethods?: boolean;
    properties?: boolean;
    returns?: boolean;
    variables?: boolean;
  });
}]; // ----- @typescript-eslint/no-misused-spread -----
type TypescriptEslintNoMisusedSpread = [] | [{
  allow?: (string | {
    from: "file";
    name: (string | [string, ...(string)[]]);
    path?: string;
  } | {
    from: "lib";
    name: (string | [string, ...(string)[]]);
  } | {
    from: "package";
    name: (string | [string, ...(string)[]]);
    package: string;
  })[];
}]; // ----- @typescript-eslint/no-namespace -----
type TypescriptEslintNoNamespace = [] | [{
  allowDeclarations?: boolean;
  allowDefinitionFiles?: boolean;
}]; // ----- @typescript-eslint/no-redeclare -----
type TypescriptEslintNoRedeclare = [] | [{
  builtinGlobals?: boolean;
  ignoreDeclarationMerge?: boolean;
}]; // ----- @typescript-eslint/no-require-imports -----
type TypescriptEslintNoRequireImports = [] | [{
  allow?: string[];
  allowAsImport?: boolean;
}]; // ----- @typescript-eslint/no-restricted-imports -----
type TypescriptEslintNoRestrictedImports = ((string | {
  name: string;
  message?: string;
  importNames?: string[];
  allowImportNames?: string[];
  allowTypeImports?: boolean;
})[] | [] | [{
  paths?: (string | {
    name: string;
    message?: string;
    importNames?: string[];
    allowImportNames?: string[];
    allowTypeImports?: boolean;
  })[];
  patterns?: (string[] | {
    importNames?: [string, ...(string)[]];
    allowImportNames?: [string, ...(string)[]];
    group?: [string, ...(string)[]];
    regex?: string;
    importNamePattern?: string;
    allowImportNamePattern?: string;
    message?: string;
    caseSensitive?: boolean;
    allowTypeImports?: boolean;
  }[]);
}]); // ----- @typescript-eslint/no-restricted-types -----
type TypescriptEslintNoRestrictedTypes = [] | [{
  types?: {
    [k: string]: (true | string | {
      fixWith?: string;
      message?: string;
      suggest?: string[];
    }) | undefined;
  };
}]; // ----- @typescript-eslint/no-shadow -----
type TypescriptEslintNoShadow = [] | [{
  allow?: string[];
  builtinGlobals?: boolean;
  hoist?: ("all" | "functions" | "functions-and-types" | "never" | "types");
  ignoreFunctionTypeParameterNameValueShadow?: boolean;
  ignoreOnInitialization?: boolean;
  ignoreTypeValueShadow?: boolean;
}]; // ----- @typescript-eslint/no-this-alias -----
type TypescriptEslintNoThisAlias = [] | [{
  allowDestructuring?: boolean;
  allowedNames?: string[];
}]; // ----- @typescript-eslint/no-type-alias -----
type TypescriptEslintNoTypeAlias = [] | [{
  allowAliases?: ("always" | "never" | "in-unions" | "in-intersections" | "in-unions-and-intersections");
  allowCallbacks?: ("always" | "never");
  allowConditionalTypes?: ("always" | "never");
  allowConstructors?: ("always" | "never");
  allowGenerics?: ("always" | "never");
  allowLiterals?: ("always" | "never" | "in-unions" | "in-intersections" | "in-unions-and-intersections");
  allowMappedTypes?: ("always" | "never" | "in-unions" | "in-intersections" | "in-unions-and-intersections");
  allowTupleTypes?: ("always" | "never" | "in-unions" | "in-intersections" | "in-unions-and-intersections");
}]; // ----- @typescript-eslint/no-unnecessary-boolean-literal-compare -----
type TypescriptEslintNoUnnecessaryBooleanLiteralCompare = [] | [{
  allowComparingNullableBooleansToFalse?: boolean;
  allowComparingNullableBooleansToTrue?: boolean;
  allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing?: boolean;
}]; // ----- @typescript-eslint/no-unnecessary-condition -----
type TypescriptEslintNoUnnecessaryCondition = [] | [{
  allowConstantLoopConditions?: (boolean | ("always" | "never" | "only-allowed-literals"));
  allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing?: boolean;
  checkTypePredicates?: boolean;
}]; // ----- @typescript-eslint/no-unnecessary-type-assertion -----
type TypescriptEslintNoUnnecessaryTypeAssertion = [] | [{
  checkLiteralConstAssertions?: boolean;
  typesToIgnore?: string[];
}]; // ----- @typescript-eslint/no-unsafe-member-access -----
type TypescriptEslintNoUnsafeMemberAccess = [] | [{
  allowOptionalChaining?: boolean;
}]; // ----- @typescript-eslint/no-unused-expressions -----
type TypescriptEslintNoUnusedExpressions = [] | [{
  allowShortCircuit?: boolean;
  allowTernary?: boolean;
  allowTaggedTemplates?: boolean;
  enforceForJSX?: boolean;
  ignoreDirectives?: boolean;
}]; // ----- @typescript-eslint/no-unused-vars -----
type TypescriptEslintNoUnusedVars = [] | [(("all" | "local") | {
  args?: ("all" | "after-used" | "none");
  argsIgnorePattern?: string;
  caughtErrors?: ("all" | "none");
  caughtErrorsIgnorePattern?: string;
  destructuredArrayIgnorePattern?: string;
  enableAutofixRemoval?: {
    imports?: boolean;
  };
  ignoreClassWithStaticInitBlock?: boolean;
  ignoreRestSiblings?: boolean;
  ignoreUsingDeclarations?: boolean;
  reportUsedIgnorePattern?: boolean;
  vars?: ("all" | "local");
  varsIgnorePattern?: string;
})]; // ----- @typescript-eslint/no-use-before-define -----
type TypescriptEslintNoUseBeforeDefine = [] | [("nofunc" | {
  allowNamedExports?: boolean;
  classes?: boolean;
  enums?: boolean;
  functions?: boolean;
  ignoreTypeReferences?: boolean;
  typedefs?: boolean;
  variables?: boolean;
})]; // ----- @typescript-eslint/no-useless-default-assignment -----
type TypescriptEslintNoUselessDefaultAssignment = [] | [{
  allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing?: boolean;
}]; // ----- @typescript-eslint/no-var-requires -----
type TypescriptEslintNoVarRequires = [] | [{
  allow?: string[];
}]; // ----- @typescript-eslint/only-throw-error -----
type TypescriptEslintOnlyThrowError = [] | [{
  allow?: (string | {
    from: "file";
    name: (string | [string, ...(string)[]]);
    path?: string;
  } | {
    from: "lib";
    name: (string | [string, ...(string)[]]);
  } | {
    from: "package";
    name: (string | [string, ...(string)[]]);
    package: string;
  })[];
  allowRethrowing?: boolean;
  allowThrowingAny?: boolean;
  allowThrowingUnknown?: boolean;
}]; // ----- @typescript-eslint/parameter-properties -----
type TypescriptEslintParameterProperties = [] | [{
  allow?: ("readonly" | "private" | "protected" | "public" | "private readonly" | "protected readonly" | "public readonly")[];
  prefer?: ("class-property" | "parameter-property");
}]; // ----- @typescript-eslint/prefer-destructuring -----
type TypescriptEslintPreferDestructuring = [] | [({
  AssignmentExpression?: {
    array?: boolean;
    object?: boolean;
  };
  VariableDeclarator?: {
    array?: boolean;
    object?: boolean;
  };
} | {
  array?: boolean;
  object?: boolean;
})] | [({
  AssignmentExpression?: {
    array?: boolean;
    object?: boolean;
  };
  VariableDeclarator?: {
    array?: boolean;
    object?: boolean;
  };
} | {
  array?: boolean;
  object?: boolean;
}), {
  enforceForDeclarationWithTypeAnnotation?: boolean;
  enforceForRenamedProperties?: boolean;
}]; // ----- @typescript-eslint/prefer-literal-enum-member -----
type TypescriptEslintPreferLiteralEnumMember = [] | [{
  allowBitwiseExpressions?: boolean;
}]; // ----- @typescript-eslint/prefer-nullish-coalescing -----
type TypescriptEslintPreferNullishCoalescing = [] | [{
  allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing?: boolean;
  ignoreBooleanCoercion?: boolean;
  ignoreConditionalTests?: boolean;
  ignoreIfStatements?: boolean;
  ignoreMixedLogicalExpressions?: boolean;
  ignorePrimitives?: ({
    bigint?: boolean;
    boolean?: boolean;
    number?: boolean;
    string?: boolean;
  } | true);
  ignoreTernaryTests?: boolean;
}]; // ----- @typescript-eslint/prefer-optional-chain -----
type TypescriptEslintPreferOptionalChain = [] | [{
  allowPotentiallyUnsafeFixesThatModifyTheReturnTypeIKnowWhatImDoing?: boolean;
  checkAny?: boolean;
  checkBigInt?: boolean;
  checkBoolean?: boolean;
  checkNumber?: boolean;
  checkString?: boolean;
  checkUnknown?: boolean;
  requireNullish?: boolean;
}]; // ----- @typescript-eslint/prefer-promise-reject-errors -----
type TypescriptEslintPreferPromiseRejectErrors = [] | [{
  allow?: (string | {
    from: "file";
    name: (string | [string, ...(string)[]]);
    path?: string;
  } | {
    from: "lib";
    name: (string | [string, ...(string)[]]);
  } | {
    from: "package";
    name: (string | [string, ...(string)[]]);
    package: string;
  })[];
  allowEmptyReject?: boolean;
  allowThrowingAny?: boolean;
  allowThrowingUnknown?: boolean;
}]; // ----- @typescript-eslint/prefer-readonly -----
type TypescriptEslintPreferReadonly = [] | [{
  onlyInlineLambdas?: boolean;
}]; // ----- @typescript-eslint/prefer-readonly-parameter-types -----
type TypescriptEslintPreferReadonlyParameterTypes = [] | [{
  allow?: (string | {
    from: "file";
    name: (string | [string, ...(string)[]]);
    path?: string;
  } | {
    from: "lib";
    name: (string | [string, ...(string)[]]);
  } | {
    from: "package";
    name: (string | [string, ...(string)[]]);
    package: string;
  })[];
  checkParameterProperties?: boolean;
  ignoreInferredTypes?: boolean;
  treatMethodsAsReadonly?: boolean;
}]; // ----- @typescript-eslint/prefer-string-starts-ends-with -----
type TypescriptEslintPreferStringStartsEndsWith = [] | [{
  allowSingleElementEquality?: ("always" | "never");
}]; // ----- @typescript-eslint/promise-function-async -----
type TypescriptEslintPromiseFunctionAsync = [] | [{
  allowAny?: boolean;
  allowedPromiseNames?: string[];
  checkArrowFunctions?: boolean;
  checkFunctionDeclarations?: boolean;
  checkFunctionExpressions?: boolean;
  checkMethodDeclarations?: boolean;
}]; // ----- @typescript-eslint/require-array-sort-compare -----
type TypescriptEslintRequireArraySortCompare = [] | [{
  ignoreStringArrays?: boolean;
}]; // ----- @typescript-eslint/restrict-plus-operands -----
type TypescriptEslintRestrictPlusOperands = [] | [{
  allowAny?: boolean;
  allowBoolean?: boolean;
  allowNullish?: boolean;
  allowNumberAndString?: boolean;
  allowRegExp?: boolean;
  skipCompoundAssignments?: boolean;
}]; // ----- @typescript-eslint/restrict-template-expressions -----
type TypescriptEslintRestrictTemplateExpressions = [] | [{
  allowAny?: boolean;
  allowArray?: boolean;
  allowBoolean?: boolean;
  allowNullish?: boolean;
  allowNumber?: boolean;
  allowRegExp?: boolean;
  allowNever?: boolean;
  allow?: (string | {
    from: "file";
    name: (string | [string, ...(string)[]]);
    path?: string;
  } | {
    from: "lib";
    name: (string | [string, ...(string)[]]);
  } | {
    from: "package";
    name: (string | [string, ...(string)[]]);
    package: string;
  })[];
}]; // ----- @typescript-eslint/return-await -----
type TypescriptEslintReturnAwait = [] | [(("always" | "error-handling-correctness-only" | "in-try-catch" | "never") & string)]; // ----- @typescript-eslint/sort-type-constituents -----
type TypescriptEslintSortTypeConstituents = [] | [{
  caseSensitive?: boolean;
  checkIntersections?: boolean;
  checkUnions?: boolean;
  groupOrder?: ("conditional" | "function" | "import" | "intersection" | "keyword" | "nullish" | "literal" | "named" | "object" | "operator" | "tuple" | "union")[];
}]; // ----- @typescript-eslint/strict-boolean-expressions -----
type TypescriptEslintStrictBooleanExpressions = [] | [{
  allowAny?: boolean;
  allowNullableBoolean?: boolean;
  allowNullableEnum?: boolean;
  allowNullableNumber?: boolean;
  allowNullableObject?: boolean;
  allowNullableString?: boolean;
  allowNumber?: boolean;
  allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing?: boolean;
  allowString?: boolean;
}]; // ----- @typescript-eslint/strict-void-return -----
type TypescriptEslintStrictVoidReturn = [] | [{
  allowReturnAny?: boolean;
}]; // ----- @typescript-eslint/switch-exhaustiveness-check -----
type TypescriptEslintSwitchExhaustivenessCheck = [] | [{
  allowDefaultCaseForExhaustiveSwitch?: boolean;
  considerDefaultExhaustiveForUnions?: boolean;
  defaultCaseCommentPattern?: string;
  requireDefaultForNonUnion?: boolean;
}]; // ----- @typescript-eslint/triple-slash-reference -----
type TypescriptEslintTripleSlashReference = [] | [{
  lib?: ("always" | "never");
  path?: ("always" | "never");
  types?: ("always" | "never" | "prefer-import");
}]; // ----- @typescript-eslint/typedef -----
type TypescriptEslintTypedef = [] | [{
  arrayDestructuring?: boolean;
  arrowParameter?: boolean;
  memberVariableDeclaration?: boolean;
  objectDestructuring?: boolean;
  parameter?: boolean;
  propertyDeclaration?: boolean;
  variableDeclaration?: boolean;
  variableDeclarationIgnoreFunction?: boolean;
}]; // ----- @typescript-eslint/unbound-method -----
type TypescriptEslintUnboundMethod = [] | [{
  ignoreStatic?: boolean;
}]; // ----- @typescript-eslint/unified-signatures -----
type TypescriptEslintUnifiedSignatures = [] | [{
  ignoreDifferentlyNamedParameters?: boolean;
  ignoreOverloadsWithDifferentJSDoc?: boolean;
}]; // ----- accessor-pairs -----
type AccessorPairs = [] | [{
  getWithoutSet?: boolean;
  setWithoutGet?: boolean;
  enforceForClassMembers?: boolean;
  enforceForTSTypes?: boolean;
}]; // ----- array-bracket-newline -----
type ArrayBracketNewline = [] | [(("always" | "never" | "consistent") | {
  multiline?: boolean;
  minItems?: (number | null);
})]; // ----- array-bracket-spacing -----
type ArrayBracketSpacing = [] | [("always" | "never")] | [("always" | "never"), {
  singleValue?: boolean;
  objectsInArrays?: boolean;
  arraysInArrays?: boolean;
}]; // ----- array-callback-return -----
type ArrayCallbackReturn = [] | [{
  allowImplicit?: boolean;
  checkForEach?: boolean;
  allowVoid?: boolean;
}]; // ----- array-element-newline -----
type ArrayElementNewline = [] | [(_ArrayElementNewlineBasicConfig | {
  ArrayExpression?: _ArrayElementNewlineBasicConfig;
  ArrayPattern?: _ArrayElementNewlineBasicConfig;
})];
type _ArrayElementNewlineBasicConfig = (("always" | "never" | "consistent") | {
  multiline?: boolean;
  minItems?: (number | null);
}); // ----- arrow-body-style -----
type ArrowBodyStyle = ([] | [("always" | "never")] | [] | ["as-needed"] | ["as-needed", {
  requireReturnForObjectLiteral?: boolean;
}]); // ----- arrow-parens -----
type ArrowParens = [] | [("always" | "as-needed")] | [("always" | "as-needed"), {
  requireForBlockBody?: boolean;
}]; // ----- arrow-spacing -----
type ArrowSpacing = [] | [{
  before?: boolean;
  after?: boolean;
}]; // ----- block-spacing -----
type BlockSpacing = [] | [("always" | "never")]; // ----- brace-style -----
type BraceStyle = [] | [("1tbs" | "stroustrup" | "allman")] | [("1tbs" | "stroustrup" | "allman"), {
  allowSingleLine?: boolean;
}]; // ----- callback-return -----
type CallbackReturn = [] | [string[]]; // ----- camelcase -----
type Camelcase = [] | [{
  ignoreDestructuring?: boolean;
  ignoreImports?: boolean;
  ignoreGlobals?: boolean;
  properties?: ("always" | "never");
  allow?: string[];
}]; // ----- capitalized-comments -----
type CapitalizedComments = [] | [("always" | "never")] | [("always" | "never"), ({
  ignorePattern?: string;
  ignoreInlineComments?: boolean;
  ignoreConsecutiveComments?: boolean;
} | {
  line?: {
    ignorePattern?: string;
    ignoreInlineComments?: boolean;
    ignoreConsecutiveComments?: boolean;
  };
  block?: {
    ignorePattern?: string;
    ignoreInlineComments?: boolean;
    ignoreConsecutiveComments?: boolean;
  };
})]; // ----- class-methods-use-this -----
type ClassMethodsUseThis = [] | [{
  exceptMethods?: string[];
  enforceForClassFields?: boolean;
  ignoreOverrideMethods?: boolean;
  ignoreClassesWithImplements?: ("all" | "public-fields");
}]; // ----- comma-dangle -----
type CommaDangle = [] | [(_CommaDangleValue | {
  arrays?: _CommaDangleValueWithIgnore;
  objects?: _CommaDangleValueWithIgnore;
  imports?: _CommaDangleValueWithIgnore;
  exports?: _CommaDangleValueWithIgnore;
  functions?: _CommaDangleValueWithIgnore;
})];
type _CommaDangleValue = ("always-multiline" | "always" | "never" | "only-multiline");
type _CommaDangleValueWithIgnore = ("always-multiline" | "always" | "ignore" | "never" | "only-multiline"); // ----- comma-spacing -----
type CommaSpacing = [] | [{
  before?: boolean;
  after?: boolean;
}]; // ----- comma-style -----
type CommaStyle = [] | [("first" | "last")] | [("first" | "last"), {
  exceptions?: {
    [k: string]: boolean | undefined;
  };
}]; // ----- complexity -----
type Complexity = [] | [(number | {
  maximum?: number;
  max?: number;
  variant?: ("classic" | "modified");
})]; // ----- computed-property-spacing -----
type ComputedPropertySpacing = [] | [("always" | "never")] | [("always" | "never"), {
  enforceForClassMembers?: boolean;
}]; // ----- consistent-return -----
type ConsistentReturn = [] | [{
  treatUndefinedAsUnspecified?: boolean;
}]; // ----- consistent-this -----
type ConsistentThis = string[]; // ----- curly -----
type Curly = ([] | ["all"] | [] | [("multi" | "multi-line" | "multi-or-nest")] | [("multi" | "multi-line" | "multi-or-nest"), "consistent"]); // ----- default-case -----
type DefaultCase = [] | [{
  commentPattern?: string;
}]; // ----- dot-location -----
type DotLocation = [] | [("object" | "property")]; // ----- dot-notation -----
type DotNotation = [] | [{
  allowKeywords?: boolean;
  allowPattern?: string;
}]; // ----- eol-last -----
type EolLast = [] | [("always" | "never" | "unix" | "windows")]; // ----- eqeqeq -----
type Eqeqeq = ([] | ["always"] | ["always", {
  null?: ("always" | "never" | "ignore");
}] | [] | [("smart" | "allow-null")]); // ----- func-call-spacing -----
type FuncCallSpacing = ([] | ["never"] | [] | ["always"] | ["always", {
  allowNewlines?: boolean;
}]); // ----- func-name-matching -----
type FuncNameMatching = ([] | [("always" | "never")] | [("always" | "never"), {
  considerPropertyDescriptor?: boolean;
  includeCommonJSModuleExports?: boolean;
}] | [] | [{
  considerPropertyDescriptor?: boolean;
  includeCommonJSModuleExports?: boolean;
}]); // ----- func-names -----
type FuncNames = [] | [_FuncNamesValue] | [_FuncNamesValue, {
  generators?: _FuncNamesValue;
}];
type _FuncNamesValue = ("always" | "as-needed" | "never"); // ----- func-style -----
type FuncStyle = [] | [("declaration" | "expression")] | [("declaration" | "expression"), {
  allowArrowFunctions?: boolean;
  allowTypeAnnotation?: boolean;
  overrides?: {
    namedExports?: ("declaration" | "expression" | "ignore");
  };
}]; // ----- function-call-argument-newline -----
type FunctionCallArgumentNewline = [] | [("always" | "never" | "consistent")]; // ----- function-paren-newline -----
type FunctionParenNewline = [] | [(("always" | "never" | "consistent" | "multiline" | "multiline-arguments") | {
  minItems?: number;
})]; // ----- generator-star-spacing -----
type GeneratorStarSpacing = [] | [(("before" | "after" | "both" | "neither") | {
  before?: boolean;
  after?: boolean;
  named?: (("before" | "after" | "both" | "neither") | {
    before?: boolean;
    after?: boolean;
  });
  anonymous?: (("before" | "after" | "both" | "neither") | {
    before?: boolean;
    after?: boolean;
  });
  method?: (("before" | "after" | "both" | "neither") | {
    before?: boolean;
    after?: boolean;
  });
})]; // ----- getter-return -----
type GetterReturn = [] | [{
  allowImplicit?: boolean;
}]; // ----- grouped-accessor-pairs -----
type GroupedAccessorPairs = [] | [("anyOrder" | "getBeforeSet" | "setBeforeGet")] | [("anyOrder" | "getBeforeSet" | "setBeforeGet"), {
  enforceForTSTypes?: boolean;
}]; // ----- handle-callback-err -----
type HandleCallbackErr = [] | [string]; // ----- id-blacklist -----
type IdBlacklist = string[]; // ----- id-denylist -----
type IdDenylist = string[]; // ----- id-length -----
type IdLength = [] | [{
  min?: number;
  max?: number;
  exceptions?: string[];
  exceptionPatterns?: string[];
  properties?: ("always" | "never");
}]; // ----- id-match -----
type IdMatch = [] | [string] | [string, {
  properties?: boolean;
  classFields?: boolean;
  onlyDeclarations?: boolean;
  ignoreDestructuring?: boolean;
}]; // ----- implicit-arrow-linebreak -----
type ImplicitArrowLinebreak = [] | [("beside" | "below")]; // ----- import/consistent-type-specifier-style -----
type ImportConsistentTypeSpecifierStyle = [] | [("prefer-top-level" | "prefer-inline")]; // ----- import/dynamic-import-chunkname -----
type ImportDynamicImportChunkname = [] | [{
  importFunctions?: string[];
  allowEmpty?: boolean;
  webpackChunknameFormat?: string;
  [k: string]: unknown | undefined;
}]; // ----- import/extensions -----
type ImportExtensions = ([] | [("always" | "ignorePackages" | "never")] | [] | [("always" | "ignorePackages" | "never")] | [("always" | "ignorePackages" | "never"), {
  pattern?: {
    [k: string]: ("always" | "ignorePackages" | "never");
  };
  ignorePackages?: boolean;
  checkTypeImports?: boolean;
  pathGroupOverrides?: {
    pattern: string;
    patternOptions?: {
      [k: string]: unknown | undefined;
    };
    action: ("enforce" | "ignore");
  }[];
  fix?: boolean;
  [k: string]: unknown | undefined;
}] | [] | [{
  pattern?: {
    [k: string]: ("always" | "ignorePackages" | "never");
  };
  ignorePackages?: boolean;
  checkTypeImports?: boolean;
  pathGroupOverrides?: {
    pattern: string;
    patternOptions?: {
      [k: string]: unknown | undefined;
    };
    action: ("enforce" | "ignore");
  }[];
  fix?: boolean;
  [k: string]: unknown | undefined;
}] | [] | [("always" | "ignorePackages" | "never")] | [("always" | "ignorePackages" | "never"), {
  [k: string]: ("always" | "ignorePackages" | "never");
}] | [] | [{
  [k: string]: ("always" | "ignorePackages" | "never");
}]); // ----- import/first -----
type ImportFirst = [] | [("absolute-first" | "disable-absolute-first")]; // ----- import/imports-first -----
type ImportImportsFirst = [] | [("absolute-first" | "disable-absolute-first")]; // ----- import/max-dependencies -----
type ImportMaxDependencies = [] | [{
  max?: number;
  ignoreTypeImports?: boolean;
}]; // ----- import/named -----
type ImportNamed = [] | [{
  commonjs?: boolean;
}]; // ----- import/namespace -----
type ImportNamespace = [] | [{
  allowComputed?: boolean;
}]; // ----- import/newline-after-import -----
type ImportNewlineAfterImport = [] | [{
  count?: number;
  exactCount?: boolean;
  considerComments?: boolean;
}]; // ----- import/no-absolute-path -----
type ImportNoAbsolutePath = [] | [{
  commonjs?: boolean;
  amd?: boolean;
  esmodule?: boolean;
  ignore?: [string, ...(string)[]];
}]; // ----- import/no-anonymous-default-export -----
type ImportNoAnonymousDefaultExport = [] | [{
  allowArray?: boolean;
  allowArrowFunction?: boolean;
  allowCallExpression?: boolean;
  allowAnonymousClass?: boolean;
  allowAnonymousFunction?: boolean;
  allowLiteral?: boolean;
  allowObject?: boolean;
  allowNew?: boolean;
}]; // ----- import/no-commonjs -----
type ImportNoCommonjs = ([] | ["allow-primitive-modules"] | [] | [{
  allowPrimitiveModules?: boolean;
  allowRequire?: boolean;
  allowConditionalRequire?: boolean;
}]); // ----- import/no-cycle -----
type ImportNoCycle = [] | [{
  commonjs?: boolean;
  amd?: boolean;
  esmodule?: boolean;
  ignore?: [string, ...(string)[]];
  maxDepth?: (number | "∞");
  ignoreExternal?: boolean;
  allowUnsafeDynamicCyclicDependency?: boolean;
}]; // ----- import/no-duplicates -----
type ImportNoDuplicates = [] | [{
  considerQueryString?: boolean;
  "prefer-inline"?: boolean;
}]; // ----- import/no-dynamic-require -----
type ImportNoDynamicRequire = [] | [{
  esmodule?: boolean;
}]; // ----- import/no-extraneous-dependencies -----
type ImportNoExtraneousDependencies = [] | [{
  devDependencies?: (boolean | unknown[]);
  optionalDependencies?: (boolean | unknown[]);
  peerDependencies?: (boolean | unknown[]);
  bundledDependencies?: (boolean | unknown[]);
  packageDir?: (string | unknown[]);
  includeInternal?: boolean;
  includeTypes?: boolean;
  whitelist?: unknown[];
}]; // ----- import/no-import-module-exports -----
type ImportNoImportModuleExports = [] | [{
  exceptions?: unknown[];
}]; // ----- import/no-internal-modules -----
type ImportNoInternalModules = [] | [({
  allow?: string[];
} | {
  forbid?: string[];
})]; // ----- import/no-namespace -----
type ImportNoNamespace = [] | [{
  ignore?: string[];
  [k: string]: unknown | undefined;
}]; // ----- import/no-nodejs-modules -----
type ImportNoNodejsModules = [] | [{
  allow?: string[];
}]; // ----- import/no-relative-packages -----
type ImportNoRelativePackages = [] | [{
  commonjs?: boolean;
  amd?: boolean;
  esmodule?: boolean;
  ignore?: [string, ...(string)[]];
}]; // ----- import/no-relative-parent-imports -----
type ImportNoRelativeParentImports = [] | [{
  commonjs?: boolean;
  amd?: boolean;
  esmodule?: boolean;
  ignore?: [string, ...(string)[]];
}]; // ----- import/no-rename-default -----
type ImportNoRenameDefault = [] | [{
  commonjs?: boolean;
  preventRenamingBindings?: boolean;
}]; // ----- import/no-restricted-paths -----
type ImportNoRestrictedPaths = [] | [{
  zones?: [{
    target?: (string | [string, ...(string)[]]);
    from?: (string | [string, ...(string)[]]);
    except?: string[];
    message?: string;
  }, ...({
    target?: (string | [string, ...(string)[]]);
    from?: (string | [string, ...(string)[]]);
    except?: string[];
    message?: string;
  })[]];
  basePath?: string;
}]; // ----- import/no-unassigned-import -----
type ImportNoUnassignedImport = [] | [{
  devDependencies?: (boolean | unknown[]);
  optionalDependencies?: (boolean | unknown[]);
  peerDependencies?: (boolean | unknown[]);
  allow?: string[];
}]; // ----- import/no-unresolved -----
type ImportNoUnresolved = [] | [{
  commonjs?: boolean;
  amd?: boolean;
  esmodule?: boolean;
  ignore?: [string, ...(string)[]];
  caseSensitive?: boolean;
  caseSensitiveStrict?: boolean;
}]; // ----- import/no-unused-modules -----
type ImportNoUnusedModules = [] | [({
  unusedExports: true;
  src?: [unknown, ...(unknown)[]];
  [k: string]: unknown | undefined;
} | {
  missingExports: true;
  [k: string]: unknown | undefined;
})]; // ----- import/no-useless-path-segments -----
type ImportNoUselessPathSegments = [] | [{
  commonjs?: boolean;
  noUselessIndex?: boolean;
}]; // ----- import/order -----
type ImportOrder = [] | [{
  groups?: unknown[];
  pathGroupsExcludedImportTypes?: unknown[];
  distinctGroup?: boolean;
  pathGroups?: {
    pattern: string;
    patternOptions?: {
      [k: string]: unknown | undefined;
    };
    group: ("builtin" | "external" | "internal" | "unknown" | "parent" | "sibling" | "index" | "object" | "type");
    position?: ("after" | "before");
  }[];
  "newlines-between"?: ("ignore" | "always" | "always-and-inside-groups" | "never");
  "newlines-between-types"?: ("ignore" | "always" | "always-and-inside-groups" | "never");
  consolidateIslands?: ("inside-groups" | "never");
  sortTypesGroup?: boolean;
  named?: (boolean | {
    enabled?: boolean;
    import?: boolean;
    export?: boolean;
    require?: boolean;
    cjsExports?: boolean;
    types?: ("mixed" | "types-first" | "types-last");
  });
  alphabetize?: {
    caseInsensitive?: boolean;
    order?: ("ignore" | "asc" | "desc");
    orderImportKind?: ("ignore" | "asc" | "desc");
  };
  warnOnUnassignedImports?: boolean;
}]; // ----- import/prefer-default-export -----
type ImportPreferDefaultExport = [] | [{
  target?: ("single" | "any");
}]; // ----- import/prefer-namespace-import -----
type ImportPreferNamespaceImport = [] | [{
  patterns?: string[];
}]; // ----- indent -----
type Indent = [] | [("tab" | number)] | [("tab" | number), {
  SwitchCase?: number;
  VariableDeclarator?: ((number | ("first" | "off")) | {
    var?: (number | ("first" | "off"));
    let?: (number | ("first" | "off"));
    const?: (number | ("first" | "off"));
  });
  outerIIFEBody?: (number | "off");
  MemberExpression?: (number | "off");
  FunctionDeclaration?: {
    parameters?: (number | ("first" | "off"));
    body?: number;
  };
  FunctionExpression?: {
    parameters?: (number | ("first" | "off"));
    body?: number;
  };
  StaticBlock?: {
    body?: number;
  };
  CallExpression?: {
    arguments?: (number | ("first" | "off"));
  };
  ArrayExpression?: (number | ("first" | "off"));
  ObjectExpression?: (number | ("first" | "off"));
  ImportDeclaration?: (number | ("first" | "off"));
  flatTernaryExpressions?: boolean;
  offsetTernaryExpressions?: boolean;
  ignoredNodes?: string[];
  ignoreComments?: boolean;
}]; // ----- indent-legacy -----
type IndentLegacy = [] | [("tab" | number)] | [("tab" | number), {
  SwitchCase?: number;
  VariableDeclarator?: (number | {
    var?: number;
    let?: number;
    const?: number;
    [k: string]: unknown | undefined;
  });
  outerIIFEBody?: number;
  MemberExpression?: number;
  FunctionDeclaration?: {
    parameters?: (number | "first");
    body?: number;
    [k: string]: unknown | undefined;
  };
  FunctionExpression?: {
    parameters?: (number | "first");
    body?: number;
    [k: string]: unknown | undefined;
  };
  CallExpression?: {
    parameters?: (number | "first");
    [k: string]: unknown | undefined;
  };
  ArrayExpression?: (number | "first");
  ObjectExpression?: (number | "first");
}]; // ----- init-declarations -----
type InitDeclarations = ([] | ["always"] | [] | ["never"] | ["never", {
  ignoreForLoopInit?: boolean;
}]); // ----- jsdoc/check-alignment -----
type JsdocCheckAlignment = [] | [{
  innerIndent?: number;
}]; // ----- jsdoc/check-examples -----
type JsdocCheckExamples = [] | [{
  allowInlineConfig?: boolean;
  baseConfig?: {
    [k: string]: unknown | undefined;
  };
  captionRequired?: boolean;
  checkDefaults?: boolean;
  checkEslintrc?: boolean;
  checkParams?: boolean;
  checkProperties?: boolean;
  configFile?: string;
  exampleCodeRegex?: string;
  matchingFileName?: string;
  matchingFileNameDefaults?: string;
  matchingFileNameParams?: string;
  matchingFileNameProperties?: string;
  noDefaultExampleRules?: boolean;
  paddedIndent?: number;
  rejectExampleCodeRegex?: string;
  reportUnusedDisableDirectives?: boolean;
}]; // ----- jsdoc/check-indentation -----
type JsdocCheckIndentation = [] | [{
  allowIndentedSections?: boolean;
  excludeTags?: string[];
}]; // ----- jsdoc/check-line-alignment -----
type JsdocCheckLineAlignment = [] | [("always" | "never" | "any")] | [("always" | "never" | "any"), {
  customSpacings?: {
    postDelimiter?: number;
    postHyphen?: number;
    postName?: number;
    postTag?: number;
    postType?: number;
  };
  disableWrapIndent?: boolean;
  preserveMainDescriptionPostDelimiter?: boolean;
  tags?: string[];
  wrapIndent?: string;
}]; // ----- jsdoc/check-param-names -----
type JsdocCheckParamNames = [] | [{
  allowExtraTrailingParamDocs?: boolean;
  checkDestructured?: boolean;
  checkRestProperty?: boolean;
  checkTypesPattern?: string;
  disableExtraPropertyReporting?: boolean;
  disableMissingParamChecks?: boolean;
  enableFixer?: boolean;
  useDefaultObjectProperties?: boolean;
}]; // ----- jsdoc/check-property-names -----
type JsdocCheckPropertyNames = [] | [{
  enableFixer?: boolean;
}]; // ----- jsdoc/check-tag-names -----
type JsdocCheckTagNames = [] | [{
  definedTags?: string[];
  enableFixer?: boolean;
  inlineTags?: string[];
  jsxTags?: boolean;
  typed?: boolean;
}]; // ----- jsdoc/check-types -----
type JsdocCheckTypes = [] | [{
  exemptTagContexts?: {
    tag?: string;
    types?: (boolean | string[]);
  }[];
  noDefaults?: boolean;
  unifyParentAndChildTypeChecks?: boolean;
}]; // ----- jsdoc/check-values -----
type JsdocCheckValues = [] | [{
  allowedAuthors?: string[];
  allowedLicenses?: (string[] | boolean);
  licensePattern?: string;
  numericOnlyVariation?: boolean;
}]; // ----- jsdoc/convert-to-jsdoc-comments -----
type JsdocConvertToJsdocComments = [] | [{
  allowedPrefixes?: string[];
  contexts?: (string | {
    context?: string;
    inlineCommentBlock?: boolean;
  })[];
  contextsAfter?: (string | {
    context?: string;
    inlineCommentBlock?: boolean;
  })[];
  contextsBeforeAndAfter?: (string | {
    context?: string;
    inlineCommentBlock?: boolean;
  })[];
  enableFixer?: boolean;
  enforceJsdocLineStyle?: ("multi" | "single");
  lineOrBlockStyle?: ("block" | "line" | "both");
}]; // ----- jsdoc/empty-tags -----
type JsdocEmptyTags = [] | [{
  tags?: string[];
}]; // ----- jsdoc/escape-inline-tags -----
type JsdocEscapeInlineTags = [] | [{
  allowedInlineTags?: string[];
  enableFixer?: boolean;
  fixType?: ("backticks" | "backslash");
}]; // ----- jsdoc/implements-on-classes -----
type JsdocImplementsOnClasses = [] | [{
  contexts?: (string | {
    comment?: string;
    context?: string;
  })[];
}]; // ----- jsdoc/informative-docs -----
type JsdocInformativeDocs = [] | [{
  aliases?: {
    [k: string]: string[];
  };
  excludedTags?: string[];
  uselessWords?: string[];
}]; // ----- jsdoc/lines-before-block -----
type JsdocLinesBeforeBlock = [] | [{
  checkBlockStarts?: boolean;
  excludedTags?: string[];
  ignoreSameLine?: boolean;
  ignoreSingleLines?: boolean;
  lines?: number;
}]; // ----- jsdoc/match-description -----
type JsdocMatchDescription = [] | [{
  contexts?: (string | {
    comment?: string;
    context?: string;
  })[];
  mainDescription?: (string | boolean | {
    match?: (string | boolean);
    message?: string;
  });
  matchDescription?: string;
  message?: string;
  nonemptyTags?: boolean;
  tags?: {
    [k: string]: (string | true | {
      match?: (string | true);
      message?: string;
    });
  };
}]; // ----- jsdoc/match-name -----
type JsdocMatchName = [] | [{
  match: {
    allowName?: string;
    comment?: string;
    context?: string;
    disallowName?: string;
    message?: string;
    replacement?: string;
    tags?: string[];
  }[];
}]; // ----- jsdoc/multiline-blocks -----
type JsdocMultilineBlocks = [] | [{
  allowMultipleTags?: boolean;
  minimumLengthForMultiline?: number;
  multilineTags?: ("*" | string[]);
  noFinalLineText?: boolean;
  noMultilineBlocks?: boolean;
  noSingleLineBlocks?: boolean;
  noZeroLineText?: boolean;
  requireSingleLineUnderCount?: number;
  singleLineTags?: string[];
}]; // ----- jsdoc/no-bad-blocks -----
type JsdocNoBadBlocks = [] | [{
  ignore?: string[];
  preventAllMultiAsteriskBlocks?: boolean;
}]; // ----- jsdoc/no-blank-blocks -----
type JsdocNoBlankBlocks = [] | [{
  enableFixer?: boolean;
}]; // ----- jsdoc/no-defaults -----
type JsdocNoDefaults = [] | [{
  contexts?: (string | {
    comment?: string;
    context?: string;
  })[];
  noOptionalParamNames?: boolean;
}]; // ----- jsdoc/no-missing-syntax -----
type JsdocNoMissingSyntax = [] | [{
  contexts?: (string | {
    comment?: string;
    context?: string;
    message?: string;
    minimum?: number;
  })[];
}]; // ----- jsdoc/no-multi-asterisks -----
type JsdocNoMultiAsterisks = [] | [{
  allowWhitespace?: boolean;
  preventAtEnd?: boolean;
  preventAtMiddleLines?: boolean;
}]; // ----- jsdoc/no-restricted-syntax -----
type JsdocNoRestrictedSyntax = [] | [{
  contexts: (string | {
    comment?: string;
    context?: string;
    message?: string;
  })[];
}]; // ----- jsdoc/no-types -----
type JsdocNoTypes = [] | [{
  contexts?: (string | {
    comment?: string;
    context?: string;
  })[];
}]; // ----- jsdoc/no-undefined-types -----
type JsdocNoUndefinedTypes = [] | [{
  checkUsedTypedefs?: boolean;
  definedTypes?: string[];
  disableReporting?: boolean;
  markVariablesAsUsed?: boolean;
}]; // ----- jsdoc/prefer-import-tag -----
type JsdocPreferImportTag = [] | [{
  enableFixer?: boolean;
  exemptTypedefs?: boolean;
  outputType?: ("named-import" | "namespaced-import");
}]; // ----- jsdoc/require-asterisk-prefix -----
type JsdocRequireAsteriskPrefix = [] | [("always" | "never" | "any")] | [("always" | "never" | "any"), {
  tags?: {
    always?: string[];
    any?: string[];
    never?: string[];
  };
}]; // ----- jsdoc/require-description -----
type JsdocRequireDescription = [] | [{
  checkConstructors?: boolean;
  checkGetters?: boolean;
  checkSetters?: boolean;
  contexts?: (string | {
    comment?: string;
    context?: string;
  })[];
  descriptionStyle?: ("body" | "tag" | "any");
  exemptedBy?: string[];
}]; // ----- jsdoc/require-description-complete-sentence -----
type JsdocRequireDescriptionCompleteSentence = [] | [{
  abbreviations?: string[];
  newlineBeforeCapsAssumesBadSentenceEnd?: boolean;
  tags?: string[];
}]; // ----- jsdoc/require-example -----
type JsdocRequireExample = [] | [{
  checkConstructors?: boolean;
  checkGetters?: boolean;
  checkSetters?: boolean;
  contexts?: (string | {
    comment?: string;
    context?: string;
  })[];
  enableFixer?: boolean;
  exemptedBy?: string[];
  exemptNoArguments?: boolean;
}]; // ----- jsdoc/require-file-overview -----
type JsdocRequireFileOverview = [] | [{
  tags?: {
    [k: string]: {
      initialCommentsOnly?: boolean;
      mustExist?: boolean;
      preventDuplicates?: boolean;
    };
  };
}]; // ----- jsdoc/require-hyphen-before-param-description -----
type JsdocRequireHyphenBeforeParamDescription = [] | [("always" | "never")] | [("always" | "never"), {
  tags?: ({
    [k: string]: ("always" | "never");
  } | "any");
}]; // ----- jsdoc/require-jsdoc -----
type JsdocRequireJsdoc = [] | [{
  checkAllFunctionExpressions?: boolean;
  checkConstructors?: boolean;
  checkGetters?: (boolean | "no-setter");
  checkSetters?: (boolean | "no-getter");
  contexts?: (string | {
    context?: string;
    inlineCommentBlock?: boolean;
    minLineCount?: number;
  })[];
  enableFixer?: boolean;
  exemptEmptyConstructors?: boolean;
  exemptEmptyFunctions?: boolean;
  exemptOverloadedImplementations?: boolean;
  fixerMessage?: string;
  minLineCount?: number;
  publicOnly?: (boolean | {
    ancestorsOnly?: boolean;
    cjs?: boolean;
    esm?: boolean;
    window?: boolean;
  });
  require?: {
    ArrowFunctionExpression?: boolean;
    ClassDeclaration?: boolean;
    ClassExpression?: boolean;
    FunctionDeclaration?: boolean;
    FunctionExpression?: boolean;
    MethodDefinition?: boolean;
  };
  skipInterveningOverloadedDeclarations?: boolean;
}]; // ----- jsdoc/require-param -----
type JsdocRequireParam = [] | [{
  autoIncrementBase?: number;
  checkConstructors?: boolean;
  checkDestructured?: boolean;
  checkDestructuredRoots?: boolean;
  checkGetters?: boolean;
  checkRestProperty?: boolean;
  checkSetters?: boolean;
  checkTypesPattern?: string;
  contexts?: (string | {
    comment?: string;
    context?: string;
  })[];
  enableFixer?: boolean;
  enableRestElementFixer?: boolean;
  enableRootFixer?: boolean;
  exemptedBy?: string[];
  ignoreWhenAllParamsMissing?: boolean;
  interfaceExemptsParamsCheck?: boolean;
  unnamedRootBase?: string[];
  useDefaultObjectProperties?: boolean;
}]; // ----- jsdoc/require-param-description -----
type JsdocRequireParamDescription = [] | [{
  contexts?: (string | {
    comment?: string;
    context?: string;
  })[];
  defaultDestructuredRootDescription?: string;
  setDefaultDestructuredRootDescription?: boolean;
}]; // ----- jsdoc/require-param-name -----
type JsdocRequireParamName = [] | [{
  contexts?: (string | {
    comment?: string;
    context?: string;
  })[];
}]; // ----- jsdoc/require-param-type -----
type JsdocRequireParamType = [] | [{
  contexts?: (string | {
    comment?: string;
    context?: string;
  })[];
  defaultDestructuredRootType?: string;
  setDefaultDestructuredRootType?: boolean;
}]; // ----- jsdoc/require-rejects -----
type JsdocRequireRejects = [] | [{
  contexts?: (string | {
    comment?: string;
    context?: string;
  })[];
  exemptedBy?: string[];
}]; // ----- jsdoc/require-returns -----
type JsdocRequireReturns = [] | [{
  checkConstructors?: boolean;
  checkGetters?: boolean;
  contexts?: (string | {
    comment?: string;
    context?: string;
    forceRequireReturn?: boolean;
  })[];
  enableFixer?: boolean;
  exemptedBy?: string[];
  forceRequireReturn?: boolean;
  forceReturnsWithAsync?: boolean;
  publicOnly?: (boolean | {
    ancestorsOnly?: boolean;
    cjs?: boolean;
    esm?: boolean;
    window?: boolean;
  });
}]; // ----- jsdoc/require-returns-check -----
type JsdocRequireReturnsCheck = [] | [{
  exemptAsync?: boolean;
  exemptGenerators?: boolean;
  noNativeTypes?: boolean;
  reportMissingReturnForUndefinedTypes?: boolean;
}]; // ----- jsdoc/require-returns-description -----
type JsdocRequireReturnsDescription = [] | [{
  contexts?: (string | {
    comment?: string;
    context?: string;
  })[];
}]; // ----- jsdoc/require-returns-type -----
type JsdocRequireReturnsType = [] | [{
  contexts?: (string | {
    comment?: string;
    context?: string;
  })[];
}]; // ----- jsdoc/require-tags -----
type JsdocRequireTags = [] | [{
  tags?: (string | {
    context?: string;
    tag?: string;
    [k: string]: unknown | undefined;
  })[];
}]; // ----- jsdoc/require-template -----
type JsdocRequireTemplate = [] | [{
  exemptedBy?: string[];
  requireSeparateTemplates?: boolean;
}]; // ----- jsdoc/require-throws -----
type JsdocRequireThrows = [] | [{
  contexts?: (string | {
    comment?: string;
    context?: string;
  })[];
  exemptedBy?: string[];
}]; // ----- jsdoc/require-yields -----
type JsdocRequireYields = [] | [{
  contexts?: (string | {
    comment?: string;
    context?: string;
  })[];
  exemptedBy?: string[];
  forceRequireNext?: boolean;
  forceRequireYields?: boolean;
  next?: boolean;
  nextWithGeneratorTag?: boolean;
  withGeneratorTag?: boolean;
}]; // ----- jsdoc/require-yields-check -----
type JsdocRequireYieldsCheck = [] | [{
  checkGeneratorsOnly?: boolean;
  contexts?: (string | {
    comment?: string;
    context?: string;
  })[];
  next?: boolean;
}]; // ----- jsdoc/sort-tags -----
type JsdocSortTags = [] | [{
  alphabetizeExtras?: boolean;
  linesBetween?: number;
  reportIntraTagGroupSpacing?: boolean;
  reportTagGroupSpacing?: boolean;
  tagExceptions?: {
    [k: string]: number;
  };
  tagSequence?: {
    tags?: string[];
  }[];
}]; // ----- jsdoc/tag-lines -----
type JsdocTagLines = [] | [("always" | "any" | "never")] | [("always" | "any" | "never"), {
  applyToEndTag?: boolean;
  count?: number;
  endLines?: (number | null);
  maxBlockLines?: (number | null);
  startLines?: (number | null);
  startLinesWithNoTags?: number;
  tags?: {
    [k: string]: {
      count?: number;
      lines?: ("always" | "never" | "any");
    };
  };
}]; // ----- jsdoc/text-escaping -----
type JsdocTextEscaping = [] | [{
  escapeHTML?: boolean;
  escapeMarkdown?: boolean;
}]; // ----- jsdoc/ts-method-signature-style -----
type JsdocTsMethodSignatureStyle = [] | [("method" | "property")] | [("method" | "property"), {
  enableFixer?: boolean;
}]; // ----- jsdoc/ts-no-unnecessary-template-expression -----
type JsdocTsNoUnnecessaryTemplateExpression = [] | [{
  enableFixer?: boolean;
}]; // ----- jsdoc/ts-prefer-function-type -----
type JsdocTsPreferFunctionType = [] | [{
  enableFixer?: boolean;
}]; // ----- jsdoc/type-formatting -----
type JsdocTypeFormatting = [] | [{
  arrayBrackets?: ("angle" | "square");
  arrowFunctionPostReturnMarkerSpacing?: string;
  arrowFunctionPreReturnMarkerSpacing?: string;
  enableFixer?: boolean;
  functionOrClassParameterSpacing?: string;
  functionOrClassPostGenericSpacing?: string;
  functionOrClassPostReturnMarkerSpacing?: string;
  functionOrClassPreReturnMarkerSpacing?: string;
  functionOrClassTypeParameterSpacing?: string;
  genericAndTupleElementSpacing?: string;
  genericDot?: boolean;
  keyValuePostColonSpacing?: string;
  keyValuePostKeySpacing?: string;
  keyValuePostOptionalSpacing?: string;
  keyValuePostVariadicSpacing?: string;
  methodQuotes?: ("double" | "single");
  objectFieldIndent?: string;
  objectFieldQuote?: ("double" | "single" | null);
  objectFieldSeparator?: ("comma" | "comma-and-linebreak" | "linebreak" | "semicolon" | "semicolon-and-linebreak");
  objectFieldSeparatorOptionalLinebreak?: boolean;
  objectFieldSeparatorTrailingPunctuation?: boolean;
  objectTypeBracketSpacing?: string;
  parameterDefaultValueSpacing?: string;
  postMethodNameSpacing?: string;
  postNewSpacing?: string;
  separatorForSingleObjectField?: boolean;
  stringQuotes?: ("double" | "single");
  trailingPunctuationMultilineOnly?: boolean;
  typeBracketSpacing?: string;
  unionSpacing?: string;
}]; // ----- jsdoc/valid-types -----
type JsdocValidTypes = [] | [{
  allowEmptyNamepaths?: boolean;
}]; // ----- jsx-quotes -----
type JsxQuotes = [] | [("prefer-single" | "prefer-double")]; // ----- key-spacing -----
type KeySpacing = [] | [({
  align?: (("colon" | "value") | {
    mode?: ("strict" | "minimum");
    on?: ("colon" | "value");
    beforeColon?: boolean;
    afterColon?: boolean;
  });
  mode?: ("strict" | "minimum");
  beforeColon?: boolean;
  afterColon?: boolean;
} | {
  singleLine?: {
    mode?: ("strict" | "minimum");
    beforeColon?: boolean;
    afterColon?: boolean;
  };
  multiLine?: {
    align?: (("colon" | "value") | {
      mode?: ("strict" | "minimum");
      on?: ("colon" | "value");
      beforeColon?: boolean;
      afterColon?: boolean;
    });
    mode?: ("strict" | "minimum");
    beforeColon?: boolean;
    afterColon?: boolean;
  };
} | {
  singleLine?: {
    mode?: ("strict" | "minimum");
    beforeColon?: boolean;
    afterColon?: boolean;
  };
  multiLine?: {
    mode?: ("strict" | "minimum");
    beforeColon?: boolean;
    afterColon?: boolean;
  };
  align?: {
    mode?: ("strict" | "minimum");
    on?: ("colon" | "value");
    beforeColon?: boolean;
    afterColon?: boolean;
  };
})]; // ----- keyword-spacing -----
type KeywordSpacing = [] | [{
  before?: boolean;
  after?: boolean;
  overrides?: {
    abstract?: {
      before?: boolean;
      after?: boolean;
    };
    as?: {
      before?: boolean;
      after?: boolean;
    };
    async?: {
      before?: boolean;
      after?: boolean;
    };
    await?: {
      before?: boolean;
      after?: boolean;
    };
    boolean?: {
      before?: boolean;
      after?: boolean;
    };
    break?: {
      before?: boolean;
      after?: boolean;
    };
    byte?: {
      before?: boolean;
      after?: boolean;
    };
    case?: {
      before?: boolean;
      after?: boolean;
    };
    catch?: {
      before?: boolean;
      after?: boolean;
    };
    char?: {
      before?: boolean;
      after?: boolean;
    };
    class?: {
      before?: boolean;
      after?: boolean;
    };
    const?: {
      before?: boolean;
      after?: boolean;
    };
    continue?: {
      before?: boolean;
      after?: boolean;
    };
    debugger?: {
      before?: boolean;
      after?: boolean;
    };
    default?: {
      before?: boolean;
      after?: boolean;
    };
    delete?: {
      before?: boolean;
      after?: boolean;
    };
    do?: {
      before?: boolean;
      after?: boolean;
    };
    double?: {
      before?: boolean;
      after?: boolean;
    };
    else?: {
      before?: boolean;
      after?: boolean;
    };
    enum?: {
      before?: boolean;
      after?: boolean;
    };
    export?: {
      before?: boolean;
      after?: boolean;
    };
    extends?: {
      before?: boolean;
      after?: boolean;
    };
    false?: {
      before?: boolean;
      after?: boolean;
    };
    final?: {
      before?: boolean;
      after?: boolean;
    };
    finally?: {
      before?: boolean;
      after?: boolean;
    };
    float?: {
      before?: boolean;
      after?: boolean;
    };
    for?: {
      before?: boolean;
      after?: boolean;
    };
    from?: {
      before?: boolean;
      after?: boolean;
    };
    function?: {
      before?: boolean;
      after?: boolean;
    };
    get?: {
      before?: boolean;
      after?: boolean;
    };
    goto?: {
      before?: boolean;
      after?: boolean;
    };
    if?: {
      before?: boolean;
      after?: boolean;
    };
    implements?: {
      before?: boolean;
      after?: boolean;
    };
    import?: {
      before?: boolean;
      after?: boolean;
    };
    in?: {
      before?: boolean;
      after?: boolean;
    };
    instanceof?: {
      before?: boolean;
      after?: boolean;
    };
    int?: {
      before?: boolean;
      after?: boolean;
    };
    interface?: {
      before?: boolean;
      after?: boolean;
    };
    let?: {
      before?: boolean;
      after?: boolean;
    };
    long?: {
      before?: boolean;
      after?: boolean;
    };
    native?: {
      before?: boolean;
      after?: boolean;
    };
    new?: {
      before?: boolean;
      after?: boolean;
    };
    null?: {
      before?: boolean;
      after?: boolean;
    };
    of?: {
      before?: boolean;
      after?: boolean;
    };
    package?: {
      before?: boolean;
      after?: boolean;
    };
    private?: {
      before?: boolean;
      after?: boolean;
    };
    protected?: {
      before?: boolean;
      after?: boolean;
    };
    public?: {
      before?: boolean;
      after?: boolean;
    };
    return?: {
      before?: boolean;
      after?: boolean;
    };
    set?: {
      before?: boolean;
      after?: boolean;
    };
    short?: {
      before?: boolean;
      after?: boolean;
    };
    static?: {
      before?: boolean;
      after?: boolean;
    };
    super?: {
      before?: boolean;
      after?: boolean;
    };
    switch?: {
      before?: boolean;
      after?: boolean;
    };
    synchronized?: {
      before?: boolean;
      after?: boolean;
    };
    this?: {
      before?: boolean;
      after?: boolean;
    };
    throw?: {
      before?: boolean;
      after?: boolean;
    };
    throws?: {
      before?: boolean;
      after?: boolean;
    };
    transient?: {
      before?: boolean;
      after?: boolean;
    };
    true?: {
      before?: boolean;
      after?: boolean;
    };
    try?: {
      before?: boolean;
      after?: boolean;
    };
    typeof?: {
      before?: boolean;
      after?: boolean;
    };
    var?: {
      before?: boolean;
      after?: boolean;
    };
    void?: {
      before?: boolean;
      after?: boolean;
    };
    volatile?: {
      before?: boolean;
      after?: boolean;
    };
    while?: {
      before?: boolean;
      after?: boolean;
    };
    with?: {
      before?: boolean;
      after?: boolean;
    };
    yield?: {
      before?: boolean;
      after?: boolean;
    };
  };
}]; // ----- line-comment-position -----
type LineCommentPosition = [] | [(("above" | "beside") | {
  position?: ("above" | "beside");
  ignorePattern?: string;
  applyDefaultPatterns?: boolean;
  applyDefaultIgnorePatterns?: boolean;
})]; // ----- linebreak-style -----
type LinebreakStyle = [] | [("unix" | "windows")]; // ----- lines-around-comment -----
type LinesAroundComment = [] | [{
  beforeBlockComment?: boolean;
  afterBlockComment?: boolean;
  beforeLineComment?: boolean;
  afterLineComment?: boolean;
  allowBlockStart?: boolean;
  allowBlockEnd?: boolean;
  allowClassStart?: boolean;
  allowClassEnd?: boolean;
  allowObjectStart?: boolean;
  allowObjectEnd?: boolean;
  allowArrayStart?: boolean;
  allowArrayEnd?: boolean;
  ignorePattern?: string;
  applyDefaultIgnorePatterns?: boolean;
  afterHashbangComment?: boolean;
}]; // ----- lines-around-directive -----
type LinesAroundDirective = [] | [(("always" | "never") | {
  before?: ("always" | "never");
  after?: ("always" | "never");
})]; // ----- lines-between-class-members -----
type LinesBetweenClassMembers = [] | [({
  enforce: [{
    blankLine: ("always" | "never");
    prev: ("method" | "field" | "*");
    next: ("method" | "field" | "*");
  }, ...({
    blankLine: ("always" | "never");
    prev: ("method" | "field" | "*");
    next: ("method" | "field" | "*");
  })[]];
} | ("always" | "never"))] | [({
  enforce: [{
    blankLine: ("always" | "never");
    prev: ("method" | "field" | "*");
    next: ("method" | "field" | "*");
  }, ...({
    blankLine: ("always" | "never");
    prev: ("method" | "field" | "*");
    next: ("method" | "field" | "*");
  })[]];
} | ("always" | "never")), {
  exceptAfterSingleLine?: boolean;
}]; // ----- logical-assignment-operators -----
type LogicalAssignmentOperators = (([] | ["always"] | ["always", {
  enforceForIfStatements?: boolean;
}] | ["never"]) & unknown[]); // ----- max-classes-per-file -----
type MaxClassesPerFile = [] | [(number | {
  ignoreExpressions?: boolean;
  max?: number;
})]; // ----- max-depth -----
type MaxDepth = [] | [(number | {
  maximum?: number;
  max?: number;
})]; // ----- max-len -----
type MaxLen = [] | [({
  code?: number;
  comments?: number;
  tabWidth?: number;
  ignorePattern?: string;
  ignoreComments?: boolean;
  ignoreStrings?: boolean;
  ignoreUrls?: boolean;
  ignoreTemplateLiterals?: boolean;
  ignoreRegExpLiterals?: boolean;
  ignoreTrailingComments?: boolean;
} | number)] | [({
  code?: number;
  comments?: number;
  tabWidth?: number;
  ignorePattern?: string;
  ignoreComments?: boolean;
  ignoreStrings?: boolean;
  ignoreUrls?: boolean;
  ignoreTemplateLiterals?: boolean;
  ignoreRegExpLiterals?: boolean;
  ignoreTrailingComments?: boolean;
} | number), ({
  code?: number;
  comments?: number;
  tabWidth?: number;
  ignorePattern?: string;
  ignoreComments?: boolean;
  ignoreStrings?: boolean;
  ignoreUrls?: boolean;
  ignoreTemplateLiterals?: boolean;
  ignoreRegExpLiterals?: boolean;
  ignoreTrailingComments?: boolean;
} | number)] | [({
  code?: number;
  comments?: number;
  tabWidth?: number;
  ignorePattern?: string;
  ignoreComments?: boolean;
  ignoreStrings?: boolean;
  ignoreUrls?: boolean;
  ignoreTemplateLiterals?: boolean;
  ignoreRegExpLiterals?: boolean;
  ignoreTrailingComments?: boolean;
} | number), ({
  code?: number;
  comments?: number;
  tabWidth?: number;
  ignorePattern?: string;
  ignoreComments?: boolean;
  ignoreStrings?: boolean;
  ignoreUrls?: boolean;
  ignoreTemplateLiterals?: boolean;
  ignoreRegExpLiterals?: boolean;
  ignoreTrailingComments?: boolean;
} | number), {
  code?: number;
  comments?: number;
  tabWidth?: number;
  ignorePattern?: string;
  ignoreComments?: boolean;
  ignoreStrings?: boolean;
  ignoreUrls?: boolean;
  ignoreTemplateLiterals?: boolean;
  ignoreRegExpLiterals?: boolean;
  ignoreTrailingComments?: boolean;
}]; // ----- max-lines -----
type MaxLines = [] | [(number | {
  max?: number;
  skipComments?: boolean;
  skipBlankLines?: boolean;
})]; // ----- max-lines-per-function -----
type MaxLinesPerFunction = [] | [({
  max?: number;
  skipComments?: boolean;
  skipBlankLines?: boolean;
  IIFEs?: boolean;
} | number)]; // ----- max-nested-callbacks -----
type MaxNestedCallbacks = [] | [(number | {
  maximum?: number;
  max?: number;
})]; // ----- max-params -----
type MaxParams = [] | [(number | {
  maximum?: number;
  max?: number;
  countVoidThis?: boolean;
  countThis?: ("never" | "except-void" | "always");
})]; // ----- max-statements -----
type MaxStatements = [] | [(number | {
  maximum?: number;
  max?: number;
})] | [(number | {
  maximum?: number;
  max?: number;
}), {
  ignoreTopLevelFunctions?: boolean;
}]; // ----- max-statements-per-line -----
type MaxStatementsPerLine = [] | [{
  max?: number;
}]; // ----- multiline-comment-style -----
type MultilineCommentStyle = ([] | [("starred-block" | "bare-block")] | [] | ["separate-lines"] | ["separate-lines", {
  checkJSDoc?: boolean;
}]); // ----- multiline-ternary -----
type MultilineTernary = [] | [("always" | "always-multiline" | "never")]; // ----- new-cap -----
type NewCap = [] | [{
  newIsCap?: boolean;
  capIsNew?: boolean;
  newIsCapExceptions?: string[];
  newIsCapExceptionPattern?: string;
  capIsNewExceptions?: string[];
  capIsNewExceptionPattern?: string;
  properties?: boolean;
}]; // ----- new-parens -----
type NewParens = [] | [("always" | "never")]; // ----- newline-after-var -----
type NewlineAfterVar = [] | [("never" | "always")]; // ----- newline-per-chained-call -----
type NewlinePerChainedCall = [] | [{
  ignoreChainWithDepth?: number;
}]; // ----- no-bitwise -----
type NoBitwise = [] | [{
  allow?: ("^" | "|" | "&" | "<<" | ">>" | ">>>" | "^=" | "|=" | "&=" | "<<=" | ">>=" | ">>>=" | "~")[];
  int32Hint?: boolean;
}]; // ----- no-cond-assign -----
type NoCondAssign = [] | [("except-parens" | "always")]; // ----- no-confusing-arrow -----
type NoConfusingArrow = [] | [{
  allowParens?: boolean;
  onlyOneSimpleParam?: boolean;
}]; // ----- no-console -----
type NoConsole = [] | [{
  allow?: [string, ...(string)[]];
}]; // ----- no-constant-condition -----
type NoConstantCondition = [] | [{
  checkLoops?: ("all" | "allExceptWhileTrue" | "none" | true | false);
}]; // ----- no-duplicate-imports -----
type NoDuplicateImports = [] | [{
  includeExports?: boolean;
  allowSeparateTypeImports?: boolean;
}]; // ----- no-else-return -----
type NoElseReturn = [] | [{
  allowElseIf?: boolean;
}]; // ----- no-empty -----
type NoEmpty = [] | [{
  allowEmptyCatch?: boolean;
}]; // ----- no-empty-function -----
type NoEmptyFunction = [] | [{
  allow?: ("functions" | "arrowFunctions" | "generatorFunctions" | "methods" | "generatorMethods" | "getters" | "setters" | "constructors" | "asyncFunctions" | "asyncMethods" | "privateConstructors" | "protectedConstructors" | "decoratedFunctions" | "overrideMethods")[];
}]; // ----- no-empty-pattern -----
type NoEmptyPattern = [] | [{
  allowObjectPatternsAsParameters?: boolean;
}]; // ----- no-eval -----
type NoEval = [] | [{
  allowIndirect?: boolean;
}]; // ----- no-extend-native -----
type NoExtendNative = [] | [{
  exceptions?: string[];
}]; // ----- no-extra-boolean-cast -----
type NoExtraBooleanCast = [] | [({
  enforceForInnerExpressions?: boolean;
} | {
  enforceForLogicalOperands?: boolean;
})]; // ----- no-extra-parens -----
type NoExtraParens = ([] | ["functions"] | [] | ["all"] | ["all", {
  conditionalAssign?: boolean;
  ternaryOperandBinaryExpressions?: boolean;
  nestedBinaryExpressions?: boolean;
  returnAssign?: boolean;
  ignoreJSX?: ("none" | "all" | "single-line" | "multi-line");
  enforceForArrowConditionals?: boolean;
  enforceForSequenceExpressions?: boolean;
  enforceForNewInMemberExpressions?: boolean;
  enforceForFunctionPrototypeMethods?: boolean;
  allowParensAfterCommentPattern?: string;
}]); // ----- no-fallthrough -----
type NoFallthrough = [] | [{
  commentPattern?: string;
  allowEmptyCase?: boolean;
  reportUnusedFallthroughComment?: boolean;
}]; // ----- no-global-assign -----
type NoGlobalAssign = [] | [{
  exceptions?: string[];
}]; // ----- no-implicit-coercion -----
type NoImplicitCoercion = [] | [{
  boolean?: boolean;
  number?: boolean;
  string?: boolean;
  disallowTemplateShorthand?: boolean;
  allow?: ("~" | "!!" | "+" | "- -" | "-" | "*")[];
}]; // ----- no-implicit-globals -----
type NoImplicitGlobals = [] | [{
  lexicalBindings?: boolean;
}]; // ----- no-inline-comments -----
type NoInlineComments = [] | [{
  ignorePattern?: string;
}]; // ----- no-inner-declarations -----
type NoInnerDeclarations = [] | [("functions" | "both")] | [("functions" | "both"), {
  blockScopedFunctions?: ("allow" | "disallow");
}]; // ----- no-invalid-regexp -----
type NoInvalidRegexp = [] | [{
  allowConstructorFlags?: string[];
}]; // ----- no-invalid-this -----
type NoInvalidThis = [] | [{
  capIsConstructor?: boolean;
}]; // ----- no-irregular-whitespace -----
type NoIrregularWhitespace = [] | [{
  skipComments?: boolean;
  skipStrings?: boolean;
  skipTemplates?: boolean;
  skipRegExps?: boolean;
  skipJSXText?: boolean;
}]; // ----- no-labels -----
type NoLabels = [] | [{
  allowLoop?: boolean;
  allowSwitch?: boolean;
}]; // ----- no-magic-numbers -----
type NoMagicNumbers = [] | [{
  detectObjects?: boolean;
  enforceConst?: boolean;
  ignore?: (number | string)[];
  ignoreArrayIndexes?: boolean;
  ignoreDefaultValues?: boolean;
  ignoreClassFieldInitialValues?: boolean;
  ignoreEnums?: boolean;
  ignoreNumericLiteralTypes?: boolean;
  ignoreReadonlyClassProperties?: boolean;
  ignoreTypeIndexes?: boolean;
}]; // ----- no-misleading-character-class -----
type NoMisleadingCharacterClass = [] | [{
  allowEscape?: boolean;
}]; // ----- no-mixed-operators -----
type NoMixedOperators = [] | [{
  groups?: [("+" | "-" | "*" | "/" | "%" | "**" | "&" | "|" | "^" | "~" | "<<" | ">>" | ">>>" | "==" | "!=" | "===" | "!==" | ">" | ">=" | "<" | "<=" | "&&" | "||" | "in" | "instanceof" | "?:" | "??"), ("+" | "-" | "*" | "/" | "%" | "**" | "&" | "|" | "^" | "~" | "<<" | ">>" | ">>>" | "==" | "!=" | "===" | "!==" | ">" | ">=" | "<" | "<=" | "&&" | "||" | "in" | "instanceof" | "?:" | "??"), ...(("+" | "-" | "*" | "/" | "%" | "**" | "&" | "|" | "^" | "~" | "<<" | ">>" | ">>>" | "==" | "!=" | "===" | "!==" | ">" | ">=" | "<" | "<=" | "&&" | "||" | "in" | "instanceof" | "?:" | "??"))[]][];
  allowSamePrecedence?: boolean;
}]; // ----- no-mixed-requires -----
type NoMixedRequires = [] | [(boolean | {
  grouping?: boolean;
  allowCall?: boolean;
})]; // ----- no-mixed-spaces-and-tabs -----
type NoMixedSpacesAndTabs = [] | [("smart-tabs" | true | false)]; // ----- no-multi-assign -----
type NoMultiAssign = [] | [{
  ignoreNonDeclaration?: boolean;
}]; // ----- no-multi-spaces -----
type NoMultiSpaces = [] | [{
  exceptions?: {
    [k: string]: boolean;
  };
  ignoreEOLComments?: boolean;
}]; // ----- no-multiple-empty-lines -----
type NoMultipleEmptyLines = [] | [{
  max: number;
  maxEOF?: number;
  maxBOF?: number;
}]; // ----- no-native-reassign -----
type NoNativeReassign = [] | [{
  exceptions?: string[];
}]; // ----- no-param-reassign -----
type NoParamReassign = [] | [({
  props?: false;
} | {
  props?: true;
  ignorePropertyModificationsFor?: string[];
  ignorePropertyModificationsForRegex?: string[];
})]; // ----- no-plusplus -----
type NoPlusplus = [] | [{
  allowForLoopAfterthoughts?: boolean;
}]; // ----- no-promise-executor-return -----
type NoPromiseExecutorReturn = [] | [{
  allowVoid?: boolean;
}]; // ----- no-redeclare -----
type NoRedeclare = [] | [{
  builtinGlobals?: boolean;
}]; // ----- no-restricted-exports -----
type NoRestrictedExports = [] | [({
  restrictedNamedExports?: string[];
  restrictedNamedExportsPattern?: string;
} | {
  restrictedNamedExports?: string[];
  restrictedNamedExportsPattern?: string;
  restrictDefaultExports?: {
    direct?: boolean;
    named?: boolean;
    defaultFrom?: boolean;
    namedFrom?: boolean;
    namespaceFrom?: boolean;
  };
})]; // ----- no-restricted-globals -----
type NoRestrictedGlobals = ((string | {
  name: string;
  message?: string;
})[] | [] | [{
  globals: (string | {
    name: string;
    message?: string;
  })[];
  checkGlobalObject?: boolean;
  globalObjects?: string[];
}]); // ----- no-restricted-imports -----
type NoRestrictedImports = ((string | {
  name: string;
  message?: string;
  importNames?: string[];
  allowImportNames?: string[];
  allowTypeImports?: boolean;
})[] | [] | [{
  paths?: (string | {
    name: string;
    message?: string;
    importNames?: string[];
    allowImportNames?: string[];
    allowTypeImports?: boolean;
  })[];
  patterns?: (string[] | ({
    [k: string]: unknown | undefined;
  } | {
    [k: string]: unknown | undefined;
  })[]);
}]); // ----- no-restricted-modules -----
type NoRestrictedModules = ((string | {
  name: string;
  message?: string;
})[] | {
  paths?: (string | {
    name: string;
    message?: string;
  })[];
  patterns?: string[];
}[]); // ----- no-restricted-properties -----
type NoRestrictedProperties = ({
  [k: string]: unknown | undefined;
} | {
  [k: string]: unknown | undefined;
})[]; // ----- no-restricted-syntax -----
type NoRestrictedSyntax = (string | {
  selector: string;
  message?: string;
})[]; // ----- no-return-assign -----
type NoReturnAssign = [] | [("except-parens" | "always")]; // ----- no-self-assign -----
type NoSelfAssign = [] | [{
  props?: boolean;
}]; // ----- no-sequences -----
type NoSequences = [] | [{
  allowInParentheses?: boolean;
}]; // ----- no-shadow -----
type NoShadow = [] | [{
  builtinGlobals?: boolean;
  hoist?: ("all" | "functions" | "never" | "types" | "functions-and-types");
  allow?: string[];
  ignoreOnInitialization?: boolean;
  ignoreTypeValueShadow?: boolean;
  ignoreFunctionTypeParameterNameValueShadow?: boolean;
}]; // ----- no-shadow-restricted-names -----
type NoShadowRestrictedNames = [] | [{
  reportGlobalThis?: boolean;
}]; // ----- no-sync -----
type NoSync = [] | [{
  allowAtRootLevel?: boolean;
}]; // ----- no-tabs -----
type NoTabs = [] | [{
  allowIndentationTabs?: boolean;
}]; // ----- no-trailing-spaces -----
type NoTrailingSpaces = [] | [{
  skipBlankLines?: boolean;
  ignoreComments?: boolean;
}]; // ----- no-undef -----
type NoUndef = [] | [{
  typeof?: boolean;
}]; // ----- no-underscore-dangle -----
type NoUnderscoreDangle = [] | [{
  allow?: string[];
  allowAfterThis?: boolean;
  allowAfterSuper?: boolean;
  allowAfterThisConstructor?: boolean;
  enforceInMethodNames?: boolean;
  allowFunctionParams?: boolean;
  enforceInClassFields?: boolean;
  allowInArrayDestructuring?: boolean;
  allowInObjectDestructuring?: boolean;
}]; // ----- no-unneeded-ternary -----
type NoUnneededTernary = [] | [{
  defaultAssignment?: boolean;
}]; // ----- no-unreachable-loop -----
type NoUnreachableLoop = [] | [{
  ignore?: ("WhileStatement" | "DoWhileStatement" | "ForStatement" | "ForInStatement" | "ForOfStatement")[];
}]; // ----- no-unsafe-negation -----
type NoUnsafeNegation = [] | [{
  enforceForOrderingRelations?: boolean;
}]; // ----- no-unsafe-optional-chaining -----
type NoUnsafeOptionalChaining = [] | [{
  disallowArithmeticOperators?: boolean;
}]; // ----- no-unused-expressions -----
type NoUnusedExpressions = [] | [{
  allowShortCircuit?: boolean;
  allowTernary?: boolean;
  allowTaggedTemplates?: boolean;
  enforceForJSX?: boolean;
  ignoreDirectives?: boolean;
}]; // ----- no-unused-vars -----
type NoUnusedVars = [] | [(("all" | "local") | {
  vars?: ("all" | "local");
  varsIgnorePattern?: string;
  args?: ("all" | "after-used" | "none");
  ignoreRestSiblings?: boolean;
  argsIgnorePattern?: string;
  caughtErrors?: ("all" | "none");
  caughtErrorsIgnorePattern?: string;
  destructuredArrayIgnorePattern?: string;
  ignoreClassWithStaticInitBlock?: boolean;
  ignoreUsingDeclarations?: boolean;
  reportUsedIgnorePattern?: boolean;
})]; // ----- no-use-before-define -----
type NoUseBeforeDefine = [] | [("nofunc" | {
  functions?: boolean;
  classes?: boolean;
  variables?: boolean;
  allowNamedExports?: boolean;
  enums?: boolean;
  typedefs?: boolean;
  ignoreTypeReferences?: boolean;
})]; // ----- no-useless-computed-key -----
type NoUselessComputedKey = [] | [{
  enforceForClassMembers?: boolean;
}]; // ----- no-useless-escape -----
type NoUselessEscape = [] | [{
  allowRegexCharacters?: string[];
}]; // ----- no-useless-rename -----
type NoUselessRename = [] | [{
  ignoreDestructuring?: boolean;
  ignoreImport?: boolean;
  ignoreExport?: boolean;
}]; // ----- no-void -----
type NoVoid = [] | [{
  allowAsStatement?: boolean;
}]; // ----- no-warning-comments -----
type NoWarningComments = [] | [{
  terms?: string[];
  location?: ("start" | "anywhere");
  decoration?: [string, ...(string)[]];
}]; // ----- nonblock-statement-body-position -----
type NonblockStatementBodyPosition = [] | [("beside" | "below" | "any")] | [("beside" | "below" | "any"), {
  overrides?: {
    if?: ("beside" | "below" | "any");
    else?: ("beside" | "below" | "any");
    while?: ("beside" | "below" | "any");
    do?: ("beside" | "below" | "any");
    for?: ("beside" | "below" | "any");
  };
}]; // ----- object-curly-newline -----
type ObjectCurlyNewline = [] | [((("always" | "never") | {
  multiline?: boolean;
  minProperties?: number;
  consistent?: boolean;
}) | {
  ObjectExpression?: (("always" | "never") | {
    multiline?: boolean;
    minProperties?: number;
    consistent?: boolean;
  });
  ObjectPattern?: (("always" | "never") | {
    multiline?: boolean;
    minProperties?: number;
    consistent?: boolean;
  });
  ImportDeclaration?: (("always" | "never") | {
    multiline?: boolean;
    minProperties?: number;
    consistent?: boolean;
  });
  ExportDeclaration?: (("always" | "never") | {
    multiline?: boolean;
    minProperties?: number;
    consistent?: boolean;
  });
})]; // ----- object-curly-spacing -----
type ObjectCurlySpacing = [] | [("always" | "never")] | [("always" | "never"), {
  arraysInObjects?: boolean;
  objectsInObjects?: boolean;
}]; // ----- object-property-newline -----
type ObjectPropertyNewline = [] | [{
  allowAllPropertiesOnSameLine?: boolean;
  allowMultiplePropertiesPerLine?: boolean;
}]; // ----- object-shorthand -----
type ObjectShorthand = ([] | [("always" | "methods" | "properties" | "never" | "consistent" | "consistent-as-needed")] | [] | [("always" | "methods" | "properties")] | [("always" | "methods" | "properties"), {
  avoidQuotes?: boolean;
}] | [] | [("always" | "methods")] | [("always" | "methods"), {
  ignoreConstructors?: boolean;
  methodsIgnorePattern?: string;
  avoidQuotes?: boolean;
  avoidExplicitReturnArrows?: boolean;
}]); // ----- one-var -----
type OneVar = [] | [(("always" | "never" | "consecutive") | {
  separateRequires?: boolean;
  var?: ("always" | "never" | "consecutive");
  let?: ("always" | "never" | "consecutive");
  const?: ("always" | "never" | "consecutive");
  using?: ("always" | "never" | "consecutive");
  awaitUsing?: ("always" | "never" | "consecutive");
} | {
  initialized?: ("always" | "never" | "consecutive");
  uninitialized?: ("always" | "never" | "consecutive");
})]; // ----- one-var-declaration-per-line -----
type OneVarDeclarationPerLine = [] | [("always" | "initializations")]; // ----- operator-assignment -----
type OperatorAssignment = [] | [("always" | "never")]; // ----- operator-linebreak -----
type OperatorLinebreak = [] | [("after" | "before" | "none" | null)] | [("after" | "before" | "none" | null), {
  overrides?: {
    [k: string]: ("after" | "before" | "none" | "ignore") | undefined;
  };
}]; // ----- padded-blocks -----
type PaddedBlocks = [] | [(("always" | "never") | {
  blocks?: ("always" | "never");
  switches?: ("always" | "never");
  classes?: ("always" | "never");
})] | [(("always" | "never") | {
  blocks?: ("always" | "never");
  switches?: ("always" | "never");
  classes?: ("always" | "never");
}), {
  allowSingleLineBlocks?: boolean;
}]; // ----- padding-line-between-statements -----
type _PaddingLineBetweenStatementsPaddingType = ("any" | "never" | "always");
type _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"))[]]);
type PaddingLineBetweenStatements = {
  blankLine: _PaddingLineBetweenStatementsPaddingType;
  prev: _PaddingLineBetweenStatementsStatementType;
  next: _PaddingLineBetweenStatementsStatementType;
}[]; // ----- perfectionist/sort-array-includes -----
type PerfectionistSortArrayIncludes = {
  fallbackSort?: {
    type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    order?: ("asc" | "desc");
  };
  type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
  specialCharacters?: ("remove" | "trim" | "keep");
  ignoreCase?: boolean;
  alphabet?: string;
  locales?: (string | string[]);
  order?: ("asc" | "desc");
  customGroups?: ({
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
    };
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    groupName: string;
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
    anyOf: [{
      elementNamePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
      selector?: "literal";
    }, ...({
      elementNamePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
      selector?: "literal";
    })[]];
  } | {
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
    };
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    groupName: string;
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
    elementNamePattern?: (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string));
    selector?: "literal";
  })[];
  newlinesInside?: (("ignore" | number) | "newlinesBetween");
  groups?: (string | [string, ...(string)[]] | {
    newlinesBetween: ("ignore" | number);
  } | {
    group: (string | [string, ...(string)[]]);
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
    };
    commentAbove?: string;
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
  })[];
  newlinesBetween?: ("ignore" | number);
  useConfigurationIf?: {
    allNamesMatchPattern?: (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string));
    matchesAstSelector?: string;
  };
  partitionByComment?: (boolean | (({
    pattern: string;
    flags?: string;
  } | string)[] | ({
    pattern: string;
    flags?: string;
  } | string)) | {
    block?: (boolean | (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string)));
    line?: (boolean | (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string)));
  });
  partitionByNewLine?: boolean;
}[]; // ----- perfectionist/sort-arrays -----
type PerfectionistSortArrays = {
  fallbackSort?: {
    type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    order?: ("asc" | "desc");
  };
  type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
  specialCharacters?: ("remove" | "trim" | "keep");
  ignoreCase?: boolean;
  alphabet?: string;
  locales?: (string | string[]);
  order?: ("asc" | "desc");
  customGroups?: ({
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
    };
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    groupName: string;
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
    anyOf: [{
      elementNamePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
      selector?: "literal";
    }, ...({
      elementNamePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
      selector?: "literal";
    })[]];
  } | {
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
    };
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    groupName: string;
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
    elementNamePattern?: (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string));
    selector?: "literal";
  })[];
  newlinesInside?: (("ignore" | number) | "newlinesBetween");
  groups?: (string | [string, ...(string)[]] | {
    newlinesBetween: ("ignore" | number);
  } | {
    group: (string | [string, ...(string)[]]);
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
    };
    commentAbove?: string;
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
  })[];
  newlinesBetween?: ("ignore" | number);
  useConfigurationIf: {
    allNamesMatchPattern?: (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string));
    matchesAstSelector?: string;
  };
  partitionByComment?: (boolean | (({
    pattern: string;
    flags?: string;
  } | string)[] | ({
    pattern: string;
    flags?: string;
  } | string)) | {
    block?: (boolean | (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string)));
    line?: (boolean | (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string)));
  });
  partitionByNewLine?: boolean;
}[]; // ----- perfectionist/sort-classes -----
type PerfectionistSortClasses = {
  fallbackSort?: {
    type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    order?: ("asc" | "desc");
  };
  type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
  specialCharacters?: ("remove" | "trim" | "keep");
  ignoreCase?: boolean;
  alphabet?: string;
  locales?: (string | string[]);
  order?: ("asc" | "desc");
  customGroups?: ({
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
    };
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    groupName: string;
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
    anyOf: [{
      elementNamePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
      modifiers?: ("async" | "protected" | "private" | "public" | "static" | "abstract" | "override" | "readonly" | "decorated" | "declare" | "optional")[];
      selector?: ("accessor-property" | "index-signature" | "constructor" | "static-block" | "get-method" | "set-method" | "function-property" | "property" | "method");
      decoratorNamePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
      elementValuePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
    }, ...({
      elementNamePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
      modifiers?: ("async" | "protected" | "private" | "public" | "static" | "abstract" | "override" | "readonly" | "decorated" | "declare" | "optional")[];
      selector?: ("accessor-property" | "index-signature" | "constructor" | "static-block" | "get-method" | "set-method" | "function-property" | "property" | "method");
      decoratorNamePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
      elementValuePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
    })[]];
  } | {
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
    };
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    groupName: string;
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
    elementNamePattern?: (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string));
    modifiers?: ("async" | "protected" | "private" | "public" | "static" | "abstract" | "override" | "readonly" | "decorated" | "declare" | "optional")[];
    selector?: ("accessor-property" | "index-signature" | "constructor" | "static-block" | "get-method" | "set-method" | "function-property" | "property" | "method");
    decoratorNamePattern?: (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string));
    elementValuePattern?: (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string));
  })[];
  newlinesInside?: (("ignore" | number) | "newlinesBetween");
  groups?: (string | [string, ...(string)[]] | {
    newlinesBetween: ("ignore" | number);
  } | {
    group: (string | [string, ...(string)[]]);
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
    };
    commentAbove?: string;
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
  })[];
  newlinesBetween?: ("ignore" | number);
  useConfigurationIf?: {
    allNamesMatchPattern?: (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string));
    matchesAstSelector?: string;
  };
  useExperimentalDependencyDetection?: boolean;
  newlinesBetweenOverloadSignatures?: ("ignore" | number);
  ignoreCallbackDependenciesPatterns?: (({
    pattern: string;
    flags?: string;
  } | string)[] | ({
    pattern: string;
    flags?: string;
  } | string));
  partitionByComment?: (boolean | (({
    pattern: string;
    flags?: string;
  } | string)[] | ({
    pattern: string;
    flags?: string;
  } | string)) | {
    block?: (boolean | (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string)));
    line?: (boolean | (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string)));
  });
  partitionByNewLine?: boolean;
}[]; // ----- perfectionist/sort-decorators -----
type PerfectionistSortDecorators = {
  fallbackSort?: {
    type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    order?: ("asc" | "desc");
  };
  type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
  specialCharacters?: ("remove" | "trim" | "keep");
  ignoreCase?: boolean;
  alphabet?: string;
  locales?: (string | string[]);
  order?: ("asc" | "desc");
  customGroups?: ({
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
    };
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    groupName: string;
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
    anyOf: [{
      elementNamePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
    }, ...({
      elementNamePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
    })[]];
  } | {
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
    };
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    groupName: string;
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
    elementNamePattern?: (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string));
  })[];
  newlinesInside?: (("ignore" | number) | "newlinesBetween");
  groups?: (string | [string, ...(string)[]] | {
    newlinesBetween: ("ignore" | number);
  } | {
    group: (string | [string, ...(string)[]]);
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
    };
    commentAbove?: string;
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
  })[];
  newlinesBetween?: ("ignore" | number);
  sortOnParameters?: boolean;
  sortOnProperties?: boolean;
  sortOnAccessors?: boolean;
  sortOnMethods?: boolean;
  sortOnClasses?: boolean;
  partitionByComment?: (boolean | (({
    pattern: string;
    flags?: string;
  } | string)[] | ({
    pattern: string;
    flags?: string;
  } | string)) | {
    block?: (boolean | (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string)));
    line?: (boolean | (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string)));
  });
  partitionByNewLine?: boolean;
}[]; // ----- perfectionist/sort-enums -----
type PerfectionistSortEnums = {
  fallbackSort?: {
    type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    order?: ("asc" | "desc");
  };
  type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
  specialCharacters?: ("remove" | "trim" | "keep");
  ignoreCase?: boolean;
  alphabet?: string;
  locales?: (string | string[]);
  order?: ("asc" | "desc");
  customGroups?: ({
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
    };
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    groupName: string;
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
    anyOf: [{
      elementNamePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
      elementValuePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
    }, ...({
      elementNamePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
      elementValuePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
    })[]];
  } | {
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
    };
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    groupName: string;
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
    elementNamePattern?: (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string));
    elementValuePattern?: (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string));
  })[];
  newlinesInside?: (("ignore" | number) | "newlinesBetween");
  groups?: (string | [string, ...(string)[]] | {
    newlinesBetween: ("ignore" | number);
  } | {
    group: (string | [string, ...(string)[]]);
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
    };
    commentAbove?: string;
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
  })[];
  newlinesBetween?: ("ignore" | number);
  useConfigurationIf?: {
    allNamesMatchPattern?: (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string));
    matchesAstSelector?: string;
  };
  sortByValue?: ("always" | "ifNumericEnum" | "never");
  useExperimentalDependencyDetection?: boolean;
  partitionByComment?: (boolean | (({
    pattern: string;
    flags?: string;
  } | string)[] | ({
    pattern: string;
    flags?: string;
  } | string)) | {
    block?: (boolean | (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string)));
    line?: (boolean | (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string)));
  });
  partitionByNewLine?: boolean;
}[]; // ----- perfectionist/sort-export-attributes -----
type PerfectionistSortExportAttributes = {
  fallbackSort?: {
    type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    order?: ("asc" | "desc");
  };
  type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
  specialCharacters?: ("remove" | "trim" | "keep");
  ignoreCase?: boolean;
  alphabet?: string;
  locales?: (string | string[]);
  order?: ("asc" | "desc");
  customGroups?: ({
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
    };
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    groupName: string;
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
    anyOf: [{
      elementNamePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
    }, ...({
      elementNamePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
    })[]];
  } | {
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
    };
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    groupName: string;
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
    elementNamePattern?: (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string));
  })[];
  newlinesInside?: (("ignore" | number) | "newlinesBetween");
  groups?: (string | [string, ...(string)[]] | {
    newlinesBetween: ("ignore" | number);
  } | {
    group: (string | [string, ...(string)[]]);
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
    };
    commentAbove?: string;
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
  })[];
  newlinesBetween?: ("ignore" | number);
  useConfigurationIf?: {
    allNamesMatchPattern?: (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string));
    matchesAstSelector?: string;
  };
  partitionByComment?: (boolean | (({
    pattern: string;
    flags?: string;
  } | string)[] | ({
    pattern: string;
    flags?: string;
  } | string)) | {
    block?: (boolean | (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string)));
    line?: (boolean | (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string)));
  });
  partitionByNewLine?: boolean;
}[]; // ----- perfectionist/sort-exports -----
type PerfectionistSortExports = {
  fallbackSort?: {
    type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    order?: ("asc" | "desc");
  };
  type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
  specialCharacters?: ("remove" | "trim" | "keep");
  ignoreCase?: boolean;
  alphabet?: string;
  locales?: (string | string[]);
  order?: ("asc" | "desc");
  customGroups?: ({
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
    };
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    groupName: string;
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
    anyOf: [{
      elementNamePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
      modifiers?: ("value" | "type" | "named" | "wildcard" | "multiline" | "singleline")[];
      selector?: "export";
    }, ...({
      elementNamePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
      modifiers?: ("value" | "type" | "named" | "wildcard" | "multiline" | "singleline")[];
      selector?: "export";
    })[]];
  } | {
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
    };
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    groupName: string;
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
    elementNamePattern?: (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string));
    modifiers?: ("value" | "type" | "named" | "wildcard" | "multiline" | "singleline")[];
    selector?: "export";
  })[];
  newlinesInside?: (("ignore" | number) | "newlinesBetween");
  groups?: (string | [string, ...(string)[]] | {
    newlinesBetween: ("ignore" | number);
  } | {
    group: (string | [string, ...(string)[]]);
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
    };
    commentAbove?: string;
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
  })[];
  newlinesBetween?: ("ignore" | number);
  partitionByComment?: (boolean | (({
    pattern: string;
    flags?: string;
  } | string)[] | ({
    pattern: string;
    flags?: string;
  } | string)) | {
    block?: (boolean | (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string)));
    line?: (boolean | (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string)));
  });
  partitionByNewLine?: boolean;
}[]; // ----- perfectionist/sort-heritage-clauses -----
type PerfectionistSortHeritageClauses = {
  fallbackSort?: {
    type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    order?: ("asc" | "desc");
  };
  type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
  specialCharacters?: ("remove" | "trim" | "keep");
  ignoreCase?: boolean;
  alphabet?: string;
  locales?: (string | string[]);
  order?: ("asc" | "desc");
  customGroups?: ({
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
    };
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    groupName: string;
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
    anyOf: [{
      elementNamePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
    }, ...({
      elementNamePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
    })[]];
  } | {
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
    };
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    groupName: string;
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
    elementNamePattern?: (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string));
  })[];
  newlinesInside?: (("ignore" | number) | "newlinesBetween");
  groups?: (string | [string, ...(string)[]] | {
    newlinesBetween: ("ignore" | number);
  } | {
    group: (string | [string, ...(string)[]]);
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
    };
    commentAbove?: string;
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
  })[];
  newlinesBetween?: ("ignore" | number);
  useConfigurationIf?: {
    allNamesMatchPattern?: (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string));
    matchesAstSelector?: string;
  };
  partitionByNewLine?: boolean;
  partitionByComment?: (boolean | (({
    pattern: string;
    flags?: string;
  } | string)[] | ({
    pattern: string;
    flags?: string;
  } | string)) | {
    block?: (boolean | (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string)));
    line?: (boolean | (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string)));
  });
}[]; // ----- perfectionist/sort-import-attributes -----
type PerfectionistSortImportAttributes = {
  fallbackSort?: {
    type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    order?: ("asc" | "desc");
  };
  type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
  specialCharacters?: ("remove" | "trim" | "keep");
  ignoreCase?: boolean;
  alphabet?: string;
  locales?: (string | string[]);
  order?: ("asc" | "desc");
  customGroups?: ({
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
    };
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    groupName: string;
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
    anyOf: [{
      elementNamePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
    }, ...({
      elementNamePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
    })[]];
  } | {
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
    };
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    groupName: string;
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
    elementNamePattern?: (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string));
  })[];
  newlinesInside?: (("ignore" | number) | "newlinesBetween");
  groups?: (string | [string, ...(string)[]] | {
    newlinesBetween: ("ignore" | number);
  } | {
    group: (string | [string, ...(string)[]]);
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
    };
    commentAbove?: string;
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
  })[];
  newlinesBetween?: ("ignore" | number);
  useConfigurationIf?: {
    allNamesMatchPattern?: (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string));
    matchesAstSelector?: string;
  };
  partitionByComment?: (boolean | (({
    pattern: string;
    flags?: string;
  } | string)[] | ({
    pattern: string;
    flags?: string;
  } | string)) | {
    block?: (boolean | (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string)));
    line?: (boolean | (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string)));
  });
  partitionByNewLine?: boolean;
}[]; // ----- perfectionist/sort-imports -----
type PerfectionistSortImports = {
  fallbackSort?: {
    type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order" | "type-import-first");
    order?: ("asc" | "desc");
    sortBy?: ("specifier" | "path");
  };
  type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order" | "type-import-first");
  specialCharacters?: ("remove" | "trim" | "keep");
  ignoreCase?: boolean;
  alphabet?: string;
  locales?: (string | string[]);
  order?: ("asc" | "desc");
  sortBy?: ("specifier" | "path");
  customGroups?: ({
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order" | "type-import-first");
      order?: ("asc" | "desc");
      sortBy?: ("specifier" | "path");
    };
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order" | "type-import-first");
    groupName: string;
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
    sortBy?: ("specifier" | "path");
    anyOf: [{
      elementNamePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
      modifiers?: ("default" | "multiline" | "named" | "require" | "side-effect" | "singleline" | "ts-equals" | "type" | "value" | "wildcard")[];
      selector?: ("side-effect-style" | "tsconfig-path" | "side-effect" | "external" | "internal" | "builtin" | "sibling" | "subpath" | "import" | "parent" | "index" | "style" | "type");
    }, ...({
      elementNamePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
      modifiers?: ("default" | "multiline" | "named" | "require" | "side-effect" | "singleline" | "ts-equals" | "type" | "value" | "wildcard")[];
      selector?: ("side-effect-style" | "tsconfig-path" | "side-effect" | "external" | "internal" | "builtin" | "sibling" | "subpath" | "import" | "parent" | "index" | "style" | "type");
    })[]];
  } | {
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order" | "type-import-first");
      order?: ("asc" | "desc");
      sortBy?: ("specifier" | "path");
    };
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order" | "type-import-first");
    groupName: string;
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
    sortBy?: ("specifier" | "path");
    elementNamePattern?: (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string));
    modifiers?: ("default" | "multiline" | "named" | "require" | "side-effect" | "singleline" | "ts-equals" | "type" | "value" | "wildcard")[];
    selector?: ("side-effect-style" | "tsconfig-path" | "side-effect" | "external" | "internal" | "builtin" | "sibling" | "subpath" | "import" | "parent" | "index" | "style" | "type");
  })[];
  newlinesInside?: (("ignore" | number) | "newlinesBetween");
  groups?: (string | [string, ...(string)[]] | {
    newlinesBetween: ("ignore" | number);
  } | {
    group: (string | [string, ...(string)[]]);
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order" | "type-import-first");
      order?: ("asc" | "desc");
      sortBy?: ("specifier" | "path");
    };
    commentAbove?: string;
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order" | "type-import-first");
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
    sortBy?: ("specifier" | "path");
  })[];
  newlinesBetween?: ("ignore" | number);
  tsconfig?: {
    rootDir: string;
    filename?: string;
  };
  maxLineLength?: number;
  sortSideEffects?: boolean;
  environment?: ("node" | "bun");
  useExperimentalDependencyDetection?: boolean;
  partitionByComment?: (boolean | (({
    pattern: string;
    flags?: string;
  } | string)[] | ({
    pattern: string;
    flags?: string;
  } | string)) | {
    block?: (boolean | (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string)));
    line?: (boolean | (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string)));
  });
  partitionByNewLine?: boolean;
  internalPattern?: (({
    pattern: string;
    flags?: string;
  } | string)[] | ({
    pattern: string;
    flags?: string;
  } | string));
}[]; // ----- perfectionist/sort-interfaces -----
type PerfectionistSortInterfaces = {
  fallbackSort?: {
    type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    order?: ("asc" | "desc");
    sortBy?: ("name" | "value");
  };
  type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
  specialCharacters?: ("remove" | "trim" | "keep");
  ignoreCase?: boolean;
  alphabet?: string;
  locales?: (string | string[]);
  order?: ("asc" | "desc");
  sortBy?: ("name" | "value");
  customGroups?: ({
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
      sortBy?: ("name" | "value");
    };
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    groupName: string;
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
    sortBy?: ("name" | "value");
    anyOf: [{
      elementNamePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
      modifiers?: ("optional" | "required" | "multiline")[];
      selector?: ("index-signature" | "member" | "method" | "property");
      elementValuePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
    }, ...({
      elementNamePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
      modifiers?: ("optional" | "required" | "multiline")[];
      selector?: ("index-signature" | "member" | "method" | "property");
      elementValuePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
    })[]];
  } | {
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
      sortBy?: ("name" | "value");
    };
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    groupName: string;
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
    sortBy?: ("name" | "value");
    elementNamePattern?: (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string));
    modifiers?: ("optional" | "required" | "multiline")[];
    selector?: ("index-signature" | "member" | "method" | "property");
    elementValuePattern?: (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string));
  })[];
  newlinesInside?: (("ignore" | number) | "newlinesBetween");
  groups?: (string | [string, ...(string)[]] | {
    newlinesBetween: ("ignore" | number);
  } | {
    group: (string | [string, ...(string)[]]);
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
      sortBy?: ("name" | "value");
    };
    commentAbove?: string;
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
    sortBy?: ("name" | "value");
  })[];
  newlinesBetween?: ("ignore" | number);
  useConfigurationIf?: {
    allNamesMatchPattern?: (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string));
    hasNumericKeysOnly?: boolean;
    declarationCommentMatchesPattern?: (({
      scope?: ("shallow" | "deep");
      pattern: string;
      flags?: string;
    } | string)[] | ({
      scope?: ("shallow" | "deep");
      pattern: string;
      flags?: string;
    } | string));
    matchesAstSelector?: string;
    declarationMatchesPattern?: (({
      scope?: ("shallow" | "deep");
      pattern: string;
      flags?: string;
    } | string)[] | ({
      scope?: ("shallow" | "deep");
      pattern: string;
      flags?: string;
    } | string));
  };
  partitionByComment?: (boolean | (({
    pattern: string;
    flags?: string;
  } | string)[] | ({
    pattern: string;
    flags?: string;
  } | string)) | {
    block?: (boolean | (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string)));
    line?: (boolean | (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string)));
  });
  partitionByNewLine?: boolean;
}[]; // ----- perfectionist/sort-intersection-types -----
type PerfectionistSortIntersectionTypes = {
  fallbackSort?: {
    type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    order?: ("asc" | "desc");
  };
  type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
  specialCharacters?: ("remove" | "trim" | "keep");
  ignoreCase?: boolean;
  alphabet?: string;
  locales?: (string | string[]);
  order?: ("asc" | "desc");
  customGroups?: ({
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
    };
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    groupName: string;
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
    anyOf: [{
      elementNamePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
      selector?: ("intersection" | "conditional" | "function" | "operator" | "keyword" | "literal" | "nullish" | "import" | "object" | "named" | "tuple" | "union");
    }, ...({
      elementNamePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
      selector?: ("intersection" | "conditional" | "function" | "operator" | "keyword" | "literal" | "nullish" | "import" | "object" | "named" | "tuple" | "union");
    })[]];
  } | {
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
    };
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    groupName: string;
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
    elementNamePattern?: (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string));
    selector?: ("intersection" | "conditional" | "function" | "operator" | "keyword" | "literal" | "nullish" | "import" | "object" | "named" | "tuple" | "union");
  })[];
  newlinesInside?: (("ignore" | number) | "newlinesBetween");
  groups?: (string | [string, ...(string)[]] | {
    newlinesBetween: ("ignore" | number);
  } | {
    group: (string | [string, ...(string)[]]);
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
    };
    commentAbove?: string;
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
  })[];
  newlinesBetween?: ("ignore" | number);
  useConfigurationIf?: {
    allNamesMatchPattern?: (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string));
    matchesAstSelector?: string;
  };
  partitionByComment?: (boolean | (({
    pattern: string;
    flags?: string;
  } | string)[] | ({
    pattern: string;
    flags?: string;
  } | string)) | {
    block?: (boolean | (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string)));
    line?: (boolean | (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string)));
  });
  partitionByNewLine?: boolean;
}[]; // ----- perfectionist/sort-jsx-props -----
type PerfectionistSortJsxProps = {
  fallbackSort?: {
    type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    order?: ("asc" | "desc");
  };
  type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
  specialCharacters?: ("remove" | "trim" | "keep");
  ignoreCase?: boolean;
  alphabet?: string;
  locales?: (string | string[]);
  order?: ("asc" | "desc");
  customGroups?: ({
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
    };
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    groupName: string;
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
    anyOf: [{
      elementNamePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
      modifiers?: ("shorthand" | "multiline")[];
      selector?: "prop";
      elementValuePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
    }, ...({
      elementNamePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
      modifiers?: ("shorthand" | "multiline")[];
      selector?: "prop";
      elementValuePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
    })[]];
  } | {
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
    };
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    groupName: string;
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
    elementNamePattern?: (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string));
    modifiers?: ("shorthand" | "multiline")[];
    selector?: "prop";
    elementValuePattern?: (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string));
  })[];
  newlinesInside?: (("ignore" | number) | "newlinesBetween");
  groups?: (string | [string, ...(string)[]] | {
    newlinesBetween: ("ignore" | number);
  } | {
    group: (string | [string, ...(string)[]]);
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
    };
    commentAbove?: string;
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
  })[];
  newlinesBetween?: ("ignore" | number);
  useConfigurationIf?: {
    allNamesMatchPattern?: (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string));
    matchesAstSelector?: string;
    tagMatchesPattern?: (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string));
  };
  partitionByNewLine?: boolean;
}[]; // ----- perfectionist/sort-maps -----
type PerfectionistSortMaps = {
  fallbackSort?: {
    type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    order?: ("asc" | "desc");
  };
  type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
  specialCharacters?: ("remove" | "trim" | "keep");
  ignoreCase?: boolean;
  alphabet?: string;
  locales?: (string | string[]);
  order?: ("asc" | "desc");
  customGroups?: ({
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
    };
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    groupName: string;
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
    anyOf: [{
      elementNamePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
    }, ...({
      elementNamePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
    })[]];
  } | {
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
    };
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    groupName: string;
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
    elementNamePattern?: (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string));
  })[];
  newlinesInside?: (("ignore" | number) | "newlinesBetween");
  groups?: (string | [string, ...(string)[]] | {
    newlinesBetween: ("ignore" | number);
  } | {
    group: (string | [string, ...(string)[]]);
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
    };
    commentAbove?: string;
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
  })[];
  newlinesBetween?: ("ignore" | number);
  useConfigurationIf?: {
    allNamesMatchPattern?: (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string));
    matchesAstSelector?: string;
  };
  partitionByComment?: (boolean | (({
    pattern: string;
    flags?: string;
  } | string)[] | ({
    pattern: string;
    flags?: string;
  } | string)) | {
    block?: (boolean | (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string)));
    line?: (boolean | (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string)));
  });
  partitionByNewLine?: boolean;
}[]; // ----- perfectionist/sort-modules -----
type PerfectionistSortModules = [] | [{
  fallbackSort?: {
    type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order" | "usage");
    order?: ("asc" | "desc");
  };
  type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order" | "usage");
  specialCharacters?: ("remove" | "trim" | "keep");
  ignoreCase?: boolean;
  alphabet?: string;
  locales?: (string | string[]);
  order?: ("asc" | "desc");
  customGroups?: ({
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order" | "usage");
      order?: ("asc" | "desc");
    };
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order" | "usage");
    groupName: string;
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
    anyOf: [{
      elementNamePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
      modifiers?: ("async" | "declare" | "decorated" | "default" | "export")[];
      selector?: ("enum" | "function" | "interface" | "type" | "class");
      decoratorNamePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
    }, ...({
      elementNamePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
      modifiers?: ("async" | "declare" | "decorated" | "default" | "export")[];
      selector?: ("enum" | "function" | "interface" | "type" | "class");
      decoratorNamePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
    })[]];
  } | {
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order" | "usage");
      order?: ("asc" | "desc");
    };
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order" | "usage");
    groupName: string;
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
    elementNamePattern?: (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string));
    modifiers?: ("async" | "declare" | "decorated" | "default" | "export")[];
    selector?: ("enum" | "function" | "interface" | "type" | "class");
    decoratorNamePattern?: (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string));
  })[];
  newlinesInside?: (("ignore" | number) | "newlinesBetween");
  groups?: (string | [string, ...(string)[]] | {
    newlinesBetween: ("ignore" | number);
  } | {
    group: (string | [string, ...(string)[]]);
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order" | "usage");
      order?: ("asc" | "desc");
    };
    commentAbove?: string;
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order" | "usage");
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
  })[];
  newlinesBetween?: ("ignore" | number);
  useExperimentalDependencyDetection?: boolean;
  newlinesBetweenOverloadSignatures?: ("ignore" | number);
  partitionByComment?: (boolean | (({
    pattern: string;
    flags?: string;
  } | string)[] | ({
    pattern: string;
    flags?: string;
  } | string)) | {
    block?: (boolean | (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string)));
    line?: (boolean | (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string)));
  });
  partitionByNewLine?: boolean;
}]; // ----- perfectionist/sort-named-exports -----
type PerfectionistSortNamedExports = {
  fallbackSort?: {
    type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    order?: ("asc" | "desc");
  };
  type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
  specialCharacters?: ("remove" | "trim" | "keep");
  ignoreCase?: boolean;
  alphabet?: string;
  locales?: (string | string[]);
  order?: ("asc" | "desc");
  customGroups?: ({
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
    };
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    groupName: string;
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
    anyOf: [{
      elementNamePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
      modifiers?: ("value" | "type")[];
      selector?: "export";
    }, ...({
      elementNamePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
      modifiers?: ("value" | "type")[];
      selector?: "export";
    })[]];
  } | {
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
    };
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    groupName: string;
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
    elementNamePattern?: (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string));
    modifiers?: ("value" | "type")[];
    selector?: "export";
  })[];
  newlinesInside?: (("ignore" | number) | "newlinesBetween");
  groups?: (string | [string, ...(string)[]] | {
    newlinesBetween: ("ignore" | number);
  } | {
    group: (string | [string, ...(string)[]]);
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
    };
    commentAbove?: string;
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
  })[];
  newlinesBetween?: ("ignore" | number);
  useConfigurationIf?: {
    allNamesMatchPattern?: (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string));
    matchesAstSelector?: string;
  };
  ignoreAlias?: boolean;
  partitionByComment?: (boolean | (({
    pattern: string;
    flags?: string;
  } | string)[] | ({
    pattern: string;
    flags?: string;
  } | string)) | {
    block?: (boolean | (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string)));
    line?: (boolean | (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string)));
  });
  partitionByNewLine?: boolean;
}[]; // ----- perfectionist/sort-named-imports -----
type PerfectionistSortNamedImports = {
  fallbackSort?: {
    type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    order?: ("asc" | "desc");
  };
  type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
  specialCharacters?: ("remove" | "trim" | "keep");
  ignoreCase?: boolean;
  alphabet?: string;
  locales?: (string | string[]);
  order?: ("asc" | "desc");
  customGroups?: ({
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
    };
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    groupName: string;
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
    anyOf: [{
      elementNamePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
      modifiers?: ("value" | "type")[];
      selector?: "import";
    }, ...({
      elementNamePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
      modifiers?: ("value" | "type")[];
      selector?: "import";
    })[]];
  } | {
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
    };
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    groupName: string;
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
    elementNamePattern?: (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string));
    modifiers?: ("value" | "type")[];
    selector?: "import";
  })[];
  newlinesInside?: (("ignore" | number) | "newlinesBetween");
  groups?: (string | [string, ...(string)[]] | {
    newlinesBetween: ("ignore" | number);
  } | {
    group: (string | [string, ...(string)[]]);
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
    };
    commentAbove?: string;
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
  })[];
  newlinesBetween?: ("ignore" | number);
  useConfigurationIf?: {
    allNamesMatchPattern?: (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string));
    matchesAstSelector?: string;
  };
  ignoreAlias?: boolean;
  partitionByComment?: (boolean | (({
    pattern: string;
    flags?: string;
  } | string)[] | ({
    pattern: string;
    flags?: string;
  } | string)) | {
    block?: (boolean | (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string)));
    line?: (boolean | (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string)));
  });
  partitionByNewLine?: boolean;
}[]; // ----- perfectionist/sort-object-types -----
type PerfectionistSortObjectTypes = {
  fallbackSort?: {
    type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    order?: ("asc" | "desc");
    sortBy?: ("name" | "value");
  };
  type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
  specialCharacters?: ("remove" | "trim" | "keep");
  ignoreCase?: boolean;
  alphabet?: string;
  locales?: (string | string[]);
  order?: ("asc" | "desc");
  sortBy?: ("name" | "value");
  customGroups?: ({
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
      sortBy?: ("name" | "value");
    };
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    groupName: string;
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
    sortBy?: ("name" | "value");
    anyOf: [{
      elementNamePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
      modifiers?: ("optional" | "required" | "multiline")[];
      selector?: ("index-signature" | "member" | "method" | "property");
      elementValuePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
    }, ...({
      elementNamePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
      modifiers?: ("optional" | "required" | "multiline")[];
      selector?: ("index-signature" | "member" | "method" | "property");
      elementValuePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
    })[]];
  } | {
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
      sortBy?: ("name" | "value");
    };
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    groupName: string;
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
    sortBy?: ("name" | "value");
    elementNamePattern?: (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string));
    modifiers?: ("optional" | "required" | "multiline")[];
    selector?: ("index-signature" | "member" | "method" | "property");
    elementValuePattern?: (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string));
  })[];
  newlinesInside?: (("ignore" | number) | "newlinesBetween");
  groups?: (string | [string, ...(string)[]] | {
    newlinesBetween: ("ignore" | number);
  } | {
    group: (string | [string, ...(string)[]]);
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
      sortBy?: ("name" | "value");
    };
    commentAbove?: string;
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
    sortBy?: ("name" | "value");
  })[];
  newlinesBetween?: ("ignore" | number);
  useConfigurationIf?: {
    allNamesMatchPattern?: (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string));
    hasNumericKeysOnly?: boolean;
    declarationCommentMatchesPattern?: (({
      scope?: ("shallow" | "deep");
      pattern: string;
      flags?: string;
    } | string)[] | ({
      scope?: ("shallow" | "deep");
      pattern: string;
      flags?: string;
    } | string));
    matchesAstSelector?: string;
    declarationMatchesPattern?: (({
      scope?: ("shallow" | "deep");
      pattern: string;
      flags?: string;
    } | string)[] | ({
      scope?: ("shallow" | "deep");
      pattern: string;
      flags?: string;
    } | string));
  };
  partitionByComment?: (boolean | (({
    pattern: string;
    flags?: string;
  } | string)[] | ({
    pattern: string;
    flags?: string;
  } | string)) | {
    block?: (boolean | (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string)));
    line?: (boolean | (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string)));
  });
  partitionByNewLine?: boolean;
}[]; // ----- perfectionist/sort-objects -----
type PerfectionistSortObjects = {
  fallbackSort?: {
    type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    order?: ("asc" | "desc");
    sortBy?: ("name" | "value");
  };
  type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
  specialCharacters?: ("remove" | "trim" | "keep");
  ignoreCase?: boolean;
  alphabet?: string;
  locales?: (string | string[]);
  order?: ("asc" | "desc");
  sortBy?: ("name" | "value");
  customGroups?: ({
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
      sortBy?: ("name" | "value");
    };
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    groupName: string;
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
    sortBy?: ("name" | "value");
    anyOf: [{
      elementNamePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
      modifiers?: ("multiline")[];
      selector?: ("member" | "method" | "property");
      elementValuePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
    }, ...({
      elementNamePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
      modifiers?: ("multiline")[];
      selector?: ("member" | "method" | "property");
      elementValuePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
    })[]];
  } | {
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
      sortBy?: ("name" | "value");
    };
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    groupName: string;
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
    sortBy?: ("name" | "value");
    elementNamePattern?: (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string));
    modifiers?: ("multiline")[];
    selector?: ("member" | "method" | "property");
    elementValuePattern?: (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string));
  })[];
  newlinesInside?: (("ignore" | number) | "newlinesBetween");
  groups?: (string | [string, ...(string)[]] | {
    newlinesBetween: ("ignore" | number);
  } | {
    group: (string | [string, ...(string)[]]);
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
      sortBy?: ("name" | "value");
    };
    commentAbove?: string;
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
    sortBy?: ("name" | "value");
  })[];
  newlinesBetween?: ("ignore" | number);
  useConfigurationIf?: {
    allNamesMatchPattern?: (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string));
    objectType?: ("destructured" | "non-destructured");
    hasNumericKeysOnly?: boolean;
    declarationCommentMatchesPattern?: (({
      scope?: ("shallow" | "deep");
      pattern: string;
      flags?: string;
    } | string)[] | ({
      scope?: ("shallow" | "deep");
      pattern: string;
      flags?: string;
    } | string));
    callingFunctionNamePattern?: (({
      scope?: ("shallow" | "deep");
      pattern: string;
      flags?: string;
    } | string)[] | ({
      scope?: ("shallow" | "deep");
      pattern: string;
      flags?: string;
    } | string));
    matchesAstSelector?: string;
    declarationMatchesPattern?: (({
      scope?: ("shallow" | "deep");
      pattern: string;
      flags?: string;
    } | string)[] | ({
      scope?: ("shallow" | "deep");
      pattern: string;
      flags?: string;
    } | string));
  };
  partitionByComputedKey?: boolean;
  styledComponents?: boolean;
  useExperimentalDependencyDetection?: boolean;
  partitionByComment?: (boolean | (({
    pattern: string;
    flags?: string;
  } | string)[] | ({
    pattern: string;
    flags?: string;
  } | string)) | {
    block?: (boolean | (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string)));
    line?: (boolean | (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string)));
  });
  partitionByNewLine?: boolean;
}[]; // ----- perfectionist/sort-sets -----
type PerfectionistSortSets = {
  fallbackSort?: {
    type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    order?: ("asc" | "desc");
  };
  type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
  specialCharacters?: ("remove" | "trim" | "keep");
  ignoreCase?: boolean;
  alphabet?: string;
  locales?: (string | string[]);
  order?: ("asc" | "desc");
  customGroups?: ({
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
    };
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    groupName: string;
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
    anyOf: [{
      elementNamePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
      selector?: "literal";
    }, ...({
      elementNamePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
      selector?: "literal";
    })[]];
  } | {
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
    };
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    groupName: string;
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
    elementNamePattern?: (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string));
    selector?: "literal";
  })[];
  newlinesInside?: (("ignore" | number) | "newlinesBetween");
  groups?: (string | [string, ...(string)[]] | {
    newlinesBetween: ("ignore" | number);
  } | {
    group: (string | [string, ...(string)[]]);
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
    };
    commentAbove?: string;
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
  })[];
  newlinesBetween?: ("ignore" | number);
  useConfigurationIf?: {
    allNamesMatchPattern?: (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string));
    matchesAstSelector?: string;
  };
  partitionByComment?: (boolean | (({
    pattern: string;
    flags?: string;
  } | string)[] | ({
    pattern: string;
    flags?: string;
  } | string)) | {
    block?: (boolean | (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string)));
    line?: (boolean | (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string)));
  });
  partitionByNewLine?: boolean;
}[]; // ----- perfectionist/sort-switch-case -----
type PerfectionistSortSwitchCase = [] | [{
  fallbackSort?: {
    type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    order?: ("asc" | "desc");
  };
  type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
  specialCharacters?: ("remove" | "trim" | "keep");
  ignoreCase?: boolean;
  alphabet?: string;
  locales?: (string | string[]);
  order?: ("asc" | "desc");
}]; // ----- perfectionist/sort-union-types -----
type PerfectionistSortUnionTypes = {
  fallbackSort?: {
    type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    order?: ("asc" | "desc");
  };
  type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
  specialCharacters?: ("remove" | "trim" | "keep");
  ignoreCase?: boolean;
  alphabet?: string;
  locales?: (string | string[]);
  order?: ("asc" | "desc");
  customGroups?: ({
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
    };
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    groupName: string;
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
    anyOf: [{
      elementNamePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
      selector?: ("intersection" | "conditional" | "function" | "operator" | "keyword" | "literal" | "nullish" | "import" | "object" | "named" | "tuple" | "union");
    }, ...({
      elementNamePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
      selector?: ("intersection" | "conditional" | "function" | "operator" | "keyword" | "literal" | "nullish" | "import" | "object" | "named" | "tuple" | "union");
    })[]];
  } | {
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
    };
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    groupName: string;
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
    elementNamePattern?: (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string));
    selector?: ("intersection" | "conditional" | "function" | "operator" | "keyword" | "literal" | "nullish" | "import" | "object" | "named" | "tuple" | "union");
  })[];
  newlinesInside?: (("ignore" | number) | "newlinesBetween");
  groups?: (string | [string, ...(string)[]] | {
    newlinesBetween: ("ignore" | number);
  } | {
    group: (string | [string, ...(string)[]]);
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
    };
    commentAbove?: string;
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
  })[];
  newlinesBetween?: ("ignore" | number);
  useConfigurationIf?: {
    allNamesMatchPattern?: (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string));
    matchesAstSelector?: string;
  };
  partitionByComment?: (boolean | (({
    pattern: string;
    flags?: string;
  } | string)[] | ({
    pattern: string;
    flags?: string;
  } | string)) | {
    block?: (boolean | (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string)));
    line?: (boolean | (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string)));
  });
  partitionByNewLine?: boolean;
}[]; // ----- perfectionist/sort-variable-declarations -----
type PerfectionistSortVariableDeclarations = {
  fallbackSort?: {
    type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    order?: ("asc" | "desc");
  };
  type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
  specialCharacters?: ("remove" | "trim" | "keep");
  ignoreCase?: boolean;
  alphabet?: string;
  locales?: (string | string[]);
  order?: ("asc" | "desc");
  customGroups?: ({
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
    };
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    groupName: string;
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
    anyOf: [{
      elementNamePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
      selector?: ("initialized" | "uninitialized");
    }, ...({
      elementNamePattern?: (({
        pattern: string;
        flags?: string;
      } | string)[] | ({
        pattern: string;
        flags?: string;
      } | string));
      selector?: ("initialized" | "uninitialized");
    })[]];
  } | {
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
    };
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    groupName: string;
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
    elementNamePattern?: (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string));
    selector?: ("initialized" | "uninitialized");
  })[];
  newlinesInside?: (("ignore" | number) | "newlinesBetween");
  groups?: (string | [string, ...(string)[]] | {
    newlinesBetween: ("ignore" | number);
  } | {
    group: (string | [string, ...(string)[]]);
    fallbackSort?: {
      type: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
      order?: ("asc" | "desc");
    };
    commentAbove?: string;
    type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted" | "subgroup-order");
    newlinesInside?: ("ignore" | number);
    order?: ("asc" | "desc");
  })[];
  newlinesBetween?: ("ignore" | number);
  useConfigurationIf?: {
    allNamesMatchPattern?: (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string));
    matchesAstSelector?: string;
  };
  useExperimentalDependencyDetection?: boolean;
  partitionByComment?: (boolean | (({
    pattern: string;
    flags?: string;
  } | string)[] | ({
    pattern: string;
    flags?: string;
  } | string)) | {
    block?: (boolean | (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string)));
    line?: (boolean | (({
      pattern: string;
      flags?: string;
    } | string)[] | ({
      pattern: string;
      flags?: string;
    } | string)));
  });
  partitionByNewLine?: boolean;
}[]; // ----- prefer-arrow-callback -----
type PreferArrowCallback = [] | [{
  allowNamedFunctions?: boolean;
  allowUnboundThis?: boolean;
}]; // ----- prefer-const -----
type PreferConst = [] | [{
  destructuring?: ("any" | "all");
  ignoreReadBeforeAssign?: boolean;
}]; // ----- prefer-destructuring -----
type PreferDestructuring = [] | [({
  VariableDeclarator?: {
    array?: boolean;
    object?: boolean;
  };
  AssignmentExpression?: {
    array?: boolean;
    object?: boolean;
  };
} | {
  array?: boolean;
  object?: boolean;
})] | [({
  VariableDeclarator?: {
    array?: boolean;
    object?: boolean;
  };
  AssignmentExpression?: {
    array?: boolean;
    object?: boolean;
  };
} | {
  array?: boolean;
  object?: boolean;
}), {
  enforceForRenamedProperties?: boolean;
}]; // ----- prefer-promise-reject-errors -----
type PreferPromiseRejectErrors = [] | [{
  allowEmptyReject?: boolean;
}]; // ----- prefer-reflect -----
type PreferReflect = [] | [{
  exceptions?: ("apply" | "call" | "delete" | "defineProperty" | "getOwnPropertyDescriptor" | "getPrototypeOf" | "setPrototypeOf" | "isExtensible" | "getOwnPropertyNames" | "preventExtensions")[];
}]; // ----- prefer-regex-literals -----
type PreferRegexLiterals = [] | [{
  disallowRedundantWrapping?: boolean;
}]; // ----- preserve-caught-error -----
type PreserveCaughtError = [] | [{
  requireCatchParameter?: boolean;
}]; // ----- quote-props -----
type QuoteProps = ([] | [("always" | "as-needed" | "consistent" | "consistent-as-needed")] | [] | [("always" | "as-needed" | "consistent" | "consistent-as-needed")] | [("always" | "as-needed" | "consistent" | "consistent-as-needed"), {
  keywords?: boolean;
  unnecessary?: boolean;
  numbers?: boolean;
}]); // ----- quotes -----
type Quotes = [] | [("single" | "double" | "backtick")] | [("single" | "double" | "backtick"), ("avoid-escape" | {
  avoidEscape?: boolean;
  allowTemplateLiterals?: boolean;
})]; // ----- radix -----
type Radix = [] | [("always" | "as-needed")]; // ----- react-refresh/only-export-components -----
type ReactRefreshOnlyExportComponents = [] | [{
  extraHOCs?: string[];
  allowExportNames?: string[];
  allowConstantExport?: boolean;
  checkJS?: boolean;
}]; // ----- react/dom-no-unknown-property -----
type ReactDomNoUnknownProperty = [] | [{
  ignore?: string[];
  requireDataLowercase?: boolean;
}]; // ----- react/exhaustive-deps -----
type ReactExhaustiveDeps = [] | [{
  additionalHooks?: string;
  enableDangerousAutofixThisMayCauseInfiniteLoops?: boolean;
  experimental_autoDependenciesHooks?: string[];
  requireExplicitEffectDeps?: boolean;
}]; // ----- react/jsx-no-useless-fragment -----
type ReactJsxNoUselessFragment = [] | [{
  allowEmptyFragment?: boolean;
  allowExpressions?: boolean;
}]; // ----- react/no-unstable-default-props -----
type ReactNoUnstableDefaultProps = [] | [{
  safeDefaultProps?: string[];
}]; // ----- react/rules-of-hooks -----
type ReactRulesOfHooks = [] | [{
  additionalHooks?: string;
}]; // ----- react/use-state -----
type ReactUseState = [] | [{
  enforceAssignment?: boolean;
  enforceLazyInitialization?: boolean;
  enforceSetterName?: boolean;
}]; // ----- react/x-exhaustive-deps -----
type ReactXExhaustiveDeps = [] | [{
  additionalHooks?: string;
  enableDangerousAutofixThisMayCauseInfiniteLoops?: boolean;
  experimental_autoDependenciesHooks?: string[];
  requireExplicitEffectDeps?: boolean;
}]; // ----- react/x-no-unstable-default-props -----
type ReactXNoUnstableDefaultProps = [] | [{
  safeDefaultProps?: string[];
}]; // ----- react/x-rules-of-hooks -----
type ReactXRulesOfHooks = [] | [{
  additionalHooks?: string;
}]; // ----- react/x-use-state -----
type ReactXUseState = [] | [{
  enforceAssignment?: boolean;
  enforceLazyInitialization?: boolean;
  enforceSetterName?: boolean;
}]; // ----- require-atomic-updates -----
type RequireAtomicUpdates = [] | [{
  allowProperties?: boolean;
}]; // ----- require-unicode-regexp -----
type RequireUnicodeRegexp = [] | [{
  requireFlag?: ("u" | "v");
}]; // ----- rest-spread-spacing -----
type RestSpreadSpacing = [] | [("always" | "never")]; // ----- semi -----
type Semi = ([] | ["never"] | ["never", {
  beforeStatementContinuationChars?: ("always" | "any" | "never");
}] | [] | ["always"] | ["always", {
  omitLastInOneLineBlock?: boolean;
  omitLastInOneLineClassBody?: boolean;
}]); // ----- semi-spacing -----
type SemiSpacing = [] | [{
  before?: boolean;
  after?: boolean;
}]; // ----- semi-style -----
type SemiStyle = [] | [("last" | "first")]; // ----- sort-imports -----
type SortImports = [] | [{
  ignoreCase?: boolean;
  memberSyntaxSortOrder?: [("none" | "all" | "multiple" | "single"), ("none" | "all" | "multiple" | "single"), ("none" | "all" | "multiple" | "single"), ("none" | "all" | "multiple" | "single")];
  ignoreDeclarationSort?: boolean;
  ignoreMemberSort?: boolean;
  allowSeparatedGroups?: boolean;
}]; // ----- sort-keys -----
type SortKeys = [] | [("asc" | "desc")] | [("asc" | "desc"), {
  caseSensitive?: boolean;
  natural?: boolean;
  minKeys?: number;
  allowLineSeparatedGroups?: boolean;
  ignoreComputedKeys?: boolean;
}]; // ----- sort-vars -----
type SortVars = [] | [{
  ignoreCase?: boolean;
}]; // ----- space-before-blocks -----
type SpaceBeforeBlocks = [] | [(("always" | "never") | {
  keywords?: ("always" | "never" | "off");
  functions?: ("always" | "never" | "off");
  classes?: ("always" | "never" | "off");
})]; // ----- space-before-function-paren -----
type SpaceBeforeFunctionParen = [] | [(("always" | "never") | {
  anonymous?: ("always" | "never" | "ignore");
  named?: ("always" | "never" | "ignore");
  asyncArrow?: ("always" | "never" | "ignore");
})]; // ----- space-in-parens -----
type SpaceInParens = [] | [("always" | "never")] | [("always" | "never"), {
  exceptions?: ("{}" | "[]" | "()" | "empty")[];
}]; // ----- space-infix-ops -----
type SpaceInfixOps = [] | [{
  int32Hint?: boolean;
}]; // ----- space-unary-ops -----
type SpaceUnaryOps = [] | [{
  words?: boolean;
  nonwords?: boolean;
  overrides?: {
    [k: string]: boolean | undefined;
  };
}]; // ----- spaced-comment -----
type SpacedComment = [] | [("always" | "never")] | [("always" | "never"), {
  exceptions?: string[];
  markers?: string[];
  line?: {
    exceptions?: string[];
    markers?: string[];
  };
  block?: {
    exceptions?: string[];
    markers?: string[];
    balanced?: boolean;
  };
}]; // ----- strict -----
type Strict = [] | [("never" | "global" | "function" | "safe")]; // ----- switch-colon-spacing -----
type SwitchColonSpacing = [] | [{
  before?: boolean;
  after?: boolean;
}]; // ----- template-curly-spacing -----
type TemplateCurlySpacing = [] | [("always" | "never")]; // ----- template-tag-spacing -----
type TemplateTagSpacing = [] | [("always" | "never")]; // ----- unicode-bom -----
type UnicodeBom = [] | [("always" | "never")]; // ----- unicorn/better-regex -----
type UnicornBetterRegex = [] | [{
  sortCharacterClasses?: boolean;
}]; // ----- unicorn/catch-error-name -----
type UnicornCatchErrorName = [] | [{
  name?: string;
  ignore?: unknown[];
}]; // ----- unicorn/consistent-function-scoping -----
type UnicornConsistentFunctionScoping = [] | [{
  checkArrowFunctions?: boolean;
}]; // ----- unicorn/escape-case -----
type UnicornEscapeCase = [] | [("uppercase" | "lowercase")]; // ----- unicorn/expiring-todo-comments -----
type UnicornExpiringTodoComments = [] | [{
  terms?: string[];
  ignore?: unknown[];
  ignoreDates?: boolean;
  ignoreDatesOnPullRequests?: boolean;
  allowWarningComments?: boolean;
  date?: string;
}]; // ----- unicorn/explicit-length-check -----
type UnicornExplicitLengthCheck = [] | [{
  "non-zero"?: ("greater-than" | "not-equal");
}]; // ----- unicorn/filename-case -----
type UnicornFilenameCase = [] | [({
  case?: ("camelCase" | "snakeCase" | "kebabCase" | "pascalCase");
  ignore?: unknown[];
  multipleFileExtensions?: boolean;
} | {
  cases?: {
    camelCase?: boolean;
    snakeCase?: boolean;
    kebabCase?: boolean;
    pascalCase?: boolean;
  };
  ignore?: unknown[];
  multipleFileExtensions?: boolean;
})]; // ----- unicorn/import-style -----
type UnicornImportStyle = [] | [{
  checkImport?: boolean;
  checkDynamicImport?: boolean;
  checkExportFrom?: boolean;
  checkRequire?: boolean;
  extendDefaultStyles?: boolean;
  styles?: _UnicornImportStyle_ModuleStyles;
}];
type _UnicornImportStyleStyles = (false | _UnicornImportStyle_BooleanObject) | undefined;
interface _UnicornImportStyle_ModuleStyles {
  [k: string]: _UnicornImportStyleStyles | undefined;
}
interface _UnicornImportStyle_BooleanObject {
  [k: string]: boolean | undefined;
} // ----- unicorn/isolated-functions -----
type UnicornIsolatedFunctions = [] | [{
  overrideGlobals?: {
    [k: string]: (boolean | ("readonly" | "writable" | "writeable" | "off")) | undefined;
  };
  functions?: string[];
  selectors?: string[];
  comments?: string[];
}]; // ----- unicorn/no-array-reduce -----
type UnicornNoArrayReduce = [] | [{
  allowSimpleOperations?: boolean;
}]; // ----- unicorn/no-array-reverse -----
type UnicornNoArrayReverse = [] | [{
  allowExpressionStatement?: boolean;
}]; // ----- unicorn/no-array-sort -----
type UnicornNoArraySort = [] | [{
  allowExpressionStatement?: boolean;
}]; // ----- unicorn/no-instanceof-builtins -----
type UnicornNoInstanceofBuiltins = [] | [{
  useErrorIsError?: boolean;
  strategy?: ("loose" | "strict");
  include?: string[];
  exclude?: string[];
}]; // ----- unicorn/no-keyword-prefix -----
type UnicornNoKeywordPrefix = [] | [{
  disallowedPrefixes?: [] | [string];
  checkProperties?: boolean;
  onlyCamelCase?: boolean;
}]; // ----- unicorn/no-null -----
type UnicornNoNull = [] | [{
  checkStrictEquality?: boolean;
}]; // ----- unicorn/no-typeof-undefined -----
type UnicornNoTypeofUndefined = [] | [{
  checkGlobalVariables?: boolean;
}]; // ----- unicorn/no-unnecessary-polyfills -----
type UnicornNoUnnecessaryPolyfills = [] | [{
  targets: (string | unknown[] | {
    [k: string]: unknown | undefined;
  });
}]; // ----- unicorn/no-useless-undefined -----
type UnicornNoUselessUndefined = [] | [{
  checkArguments?: boolean;
  checkArrowFunctionBody?: boolean;
}]; // ----- unicorn/number-literal-case -----
type UnicornNumberLiteralCase = [] | [{
  hexadecimalValue?: ("uppercase" | "lowercase");
}]; // ----- unicorn/numeric-separators-style -----
type UnicornNumericSeparatorsStyle = [] | [{
  binary?: {
    onlyIfContainsSeparator?: boolean;
    minimumDigits?: number;
    groupLength?: number;
  };
  octal?: {
    onlyIfContainsSeparator?: boolean;
    minimumDigits?: number;
    groupLength?: number;
  };
  hexadecimal?: {
    onlyIfContainsSeparator?: boolean;
    minimumDigits?: number;
    groupLength?: number;
  };
  number?: {
    onlyIfContainsSeparator?: boolean;
    minimumDigits?: number;
    groupLength?: number;
  };
  onlyIfContainsSeparator?: boolean;
}]; // ----- unicorn/prefer-add-event-listener -----
type UnicornPreferAddEventListener = [] | [{
  excludedPackages?: string[];
}]; // ----- unicorn/prefer-array-find -----
type UnicornPreferArrayFind = [] | [{
  checkFromLast?: boolean;
}]; // ----- unicorn/prefer-array-flat -----
type UnicornPreferArrayFlat = [] | [{
  functions?: unknown[];
}]; // ----- unicorn/prefer-at -----
type UnicornPreferAt = [] | [{
  getLastElementFunctions?: unknown[];
  checkAllIndexAccess?: boolean;
}]; // ----- unicorn/prefer-export-from -----
type UnicornPreferExportFrom = [] | [{
  ignoreUsedVariables?: boolean;
}]; // ----- unicorn/prefer-number-properties -----
type UnicornPreferNumberProperties = [] | [{
  checkInfinity?: boolean;
  checkNaN?: boolean;
}]; // ----- unicorn/prefer-object-from-entries -----
type UnicornPreferObjectFromEntries = [] | [{
  functions?: unknown[];
}]; // ----- unicorn/prefer-single-call -----
type UnicornPreferSingleCall = [] | [{
  ignore?: unknown[];
}]; // ----- unicorn/prefer-structured-clone -----
type UnicornPreferStructuredClone = [] | [{
  functions?: unknown[];
}]; // ----- unicorn/prefer-switch -----
type UnicornPreferSwitch = [] | [{
  minimumCases?: number;
  emptyDefaultCase?: ("no-default-comment" | "do-nothing-comment" | "no-default-case");
}]; // ----- unicorn/prefer-ternary -----
type UnicornPreferTernary = [] | [("always" | "only-single-line")]; // ----- unicorn/prevent-abbreviations -----
type UnicornPreventAbbreviations = [] | [{
  checkProperties?: boolean;
  checkVariables?: boolean;
  checkDefaultAndNamespaceImports?: (boolean | string);
  checkShorthandImports?: (boolean | string);
  checkShorthandProperties?: boolean;
  checkFilenames?: boolean;
  extendDefaultReplacements?: boolean;
  replacements?: _UnicornPreventAbbreviations_Abbreviations;
  extendDefaultAllowList?: boolean;
  allowList?: _UnicornPreventAbbreviations_BooleanObject;
  ignore?: unknown[];
}];
type _UnicornPreventAbbreviationsReplacements = (false | _UnicornPreventAbbreviations_BooleanObject) | undefined;
interface _UnicornPreventAbbreviations_Abbreviations {
  [k: string]: _UnicornPreventAbbreviationsReplacements | undefined;
}
interface _UnicornPreventAbbreviations_BooleanObject {
  [k: string]: boolean | undefined;
}
interface _UnicornPreventAbbreviations_BooleanObject {
  [k: string]: boolean | undefined;
} // ----- unicorn/relative-url-style -----
type UnicornRelativeUrlStyle = [] | [("never" | "always")]; // ----- unicorn/string-content -----
type UnicornStringContent = [] | [{
  patterns?: {
    [k: string]: (string | {
      suggest: string;
      fix?: boolean;
      message?: string;
    }) | undefined;
  };
}]; // ----- unicorn/switch-case-braces -----
type UnicornSwitchCaseBraces = [] | [("always" | "avoid")]; // ----- unicorn/template-indent -----
type UnicornTemplateIndent = [] | [{
  indent?: (string | number);
  tags?: string[];
  functions?: string[];
  selectors?: string[];
  comments?: string[];
}]; // ----- unicorn/text-encoding-identifier-case -----
type UnicornTextEncodingIdentifierCase = [] | [{
  withDash?: boolean;
}]; // ----- unused-imports/no-unused-imports -----
type UnusedImportsNoUnusedImports = [] | [(("all" | "local") | {
  args?: ("all" | "after-used" | "none");
  argsIgnorePattern?: string;
  caughtErrors?: ("all" | "none");
  caughtErrorsIgnorePattern?: string;
  destructuredArrayIgnorePattern?: string;
  enableAutofixRemoval?: {
    imports?: boolean;
  };
  ignoreClassWithStaticInitBlock?: boolean;
  ignoreRestSiblings?: boolean;
  ignoreUsingDeclarations?: boolean;
  reportUsedIgnorePattern?: boolean;
  vars?: ("all" | "local");
  varsIgnorePattern?: string;
})]; // ----- unused-imports/no-unused-vars -----
type UnusedImportsNoUnusedVars = [] | [(("all" | "local") | {
  args?: ("all" | "after-used" | "none");
  argsIgnorePattern?: string;
  caughtErrors?: ("all" | "none");
  caughtErrorsIgnorePattern?: string;
  destructuredArrayIgnorePattern?: string;
  enableAutofixRemoval?: {
    imports?: boolean;
  };
  ignoreClassWithStaticInitBlock?: boolean;
  ignoreRestSiblings?: boolean;
  ignoreUsingDeclarations?: boolean;
  reportUsedIgnorePattern?: boolean;
  vars?: ("all" | "local");
  varsIgnorePattern?: string;
})]; // ----- use-isnan -----
type UseIsnan = [] | [{
  enforceForSwitchCase?: boolean;
  enforceForIndexOf?: boolean;
}]; // ----- valid-typeof -----
type ValidTypeof = [] | [{
  requireStringLiterals?: boolean;
}]; // ----- vitest/consistent-each-for -----
type VitestConsistentEachFor = [] | [{
  test?: ("each" | "for");
  it?: ("each" | "for");
  describe?: ("each" | "for");
  suite?: ("each" | "for");
}]; // ----- vitest/consistent-test-filename -----
type VitestConsistentTestFilename = [] | [{
  pattern?: string;
  allTestPattern?: string;
}]; // ----- vitest/consistent-test-it -----
type VitestConsistentTestIt = [] | [{
  fn?: ("test" | "it");
  withinDescribe?: ("test" | "it");
}]; // ----- vitest/consistent-vitest-vi -----
type VitestConsistentVitestVi = [] | [{
  fn?: ("vi" | "vitest");
}]; // ----- vitest/expect-expect -----
type VitestExpectExpect = [] | [{
  assertFunctionNames?: string[];
  additionalTestBlockFunctions?: string[];
}]; // ----- vitest/max-expects -----
type VitestMaxExpects = [] | [{
  max?: number;
}]; // ----- vitest/max-nested-describe -----
type VitestMaxNestedDescribe = [] | [{
  max?: number;
}]; // ----- vitest/no-conditional-expect -----
type VitestNoConditionalExpect = [] | [{
  expectAssertions?: boolean;
}]; // ----- vitest/no-focused-tests -----
type VitestNoFocusedTests = [] | [{
  fixable?: boolean;
}]; // ----- vitest/no-hooks -----
type VitestNoHooks = [] | [{
  allow?: ("beforeAll" | "beforeEach" | "afterAll" | "afterEach")[];
}]; // ----- vitest/no-large-snapshots -----
type VitestNoLargeSnapshots = [] | [{
  maxSize?: number;
  inlineMaxSize?: number;
  allowedSnapshots?: {
    [k: string]: unknown[] | undefined;
  };
}]; // ----- vitest/no-restricted-matchers -----
type VitestNoRestrictedMatchers = [] | [{
  [k: string]: (string | null) | undefined;
}]; // ----- vitest/no-restricted-vi-methods -----
type VitestNoRestrictedViMethods = [] | [{
  [k: string]: (string | null) | undefined;
}]; // ----- vitest/no-standalone-expect -----
type VitestNoStandaloneExpect = [] | [{
  additionalTestBlockFunctions?: string[];
}]; // ----- vitest/prefer-expect-assertions -----
type VitestPreferExpectAssertions = [] | [{
  onlyFunctionsWithAsyncKeyword?: boolean;
  onlyFunctionsWithExpectInLoop?: boolean;
  onlyFunctionsWithExpectInCallback?: boolean;
}]; // ----- vitest/prefer-import-in-mock -----
type VitestPreferImportInMock = [] | [{
  fixable?: boolean;
}]; // ----- vitest/prefer-lowercase-title -----
type VitestPreferLowercaseTitle = [] | [{
  ignore?: ("describe" | "test" | "it")[];
  allowedPrefixes?: string[];
  ignoreTopLevelDescribe?: boolean;
  lowercaseFirstCharacterOnly?: boolean;
}]; // ----- vitest/prefer-snapshot-hint -----
type VitestPreferSnapshotHint = [] | [("always" | "multi")]; // ----- vitest/require-hook -----
type VitestRequireHook = [] | [{
  allowedFunctionCalls?: string[];
}]; // ----- vitest/require-mock-type-parameters -----
type VitestRequireMockTypeParameters = [] | [{
  checkImportFunctions?: boolean;
}]; // ----- vitest/require-top-level-describe -----
type VitestRequireTopLevelDescribe = [] | [{
  maxNumberOfTopLevelDescribes?: number;
}]; // ----- vitest/unbound-method -----
type VitestUnboundMethod = [] | [{
  ignoreStatic?: boolean;
}]; // ----- vitest/valid-expect -----
type VitestValidExpect = [] | [{
  alwaysAwait?: boolean;
  asyncMatchers?: string[];
  minArgs?: number;
  maxArgs?: number;
}]; // ----- vitest/valid-title -----
type VitestValidTitle = [] | [{
  ignoreTypeOfDescribeName?: boolean;
  allowArguments?: boolean;
  disallowedWords?: string[];
  [k: string]: (string | [string] | [string, string] | {
    [k: string]: (string | [string] | [string, string]) | undefined;
  });
}]; // ----- wrap-iife -----
type WrapIife = [] | [("outside" | "inside" | "any")] | [("outside" | "inside" | "any"), {
  functionPrototypeMethods?: boolean;
}]; // ----- yield-star-spacing -----
type YieldStarSpacing = [] | [(("before" | "after" | "both" | "neither") | {
  before?: boolean;
  after?: boolean;
})]; // ----- yoda -----
type Yoda = [] | [("always" | "never")] | [("always" | "never"), {
  exceptRange?: boolean;
  onlyEquality?: boolean;
}]; // Names of all the configs
type ConfigNames = 'yunarch/gitignore' | 'yunarch/base/ignores' | 'yunarch/base/setup' | 'yunarch/base/rules' | 'yunarch/typescript/setup' | 'yunarch/typescript/parser' | 'yunarch/typescript/parser/type-aware' | 'yunarch/typescript/rules' | 'yunarch/typescript/rules/type-aware' | 'yunarch/import/rules' | 'yunarch/import/typescript/rules' | 'yunarch/jsdoc/rules' | 'yunarch/jsdoc/typescript/rules' | 'yunarch/unicorn/rules' | 'yunarch/test/setup' | 'yunarch/test/rules' | 'yunarch/tanstack/query/rules' | 'yunarch/tanstack/router/rules' | 'yunarch/tanstack/router/typescript/rules' | 'yunarch/react/setup' | 'yunarch/react/rules' | 'yunarch/react/typescript/rules' | 'yunarch/perfectionist/rules' | 'yunarch/disables/cli' | 'yunarch/disables/dts' | 'yunarch/disables/config-files' | 'yunarch/disables/prettier';
//#endregion
//#region src/linters/eslint/types.d.ts
type Awaitable<T> = T | Promise<T>;
type Rules = Record<string, Linter.RuleEntry<any> | undefined> & RuleOptions;
type TypedFlatConfigItem = Omit<ConfigWithExtends, 'plugins' | 'rules'> & {
  /**
   * An object containing a name-value mapping of plugin names to plugin objects.
   * When `files` is specified, these plugins are only available to the matching files.
   *
   * @see [Using plugins in your configuration](https://eslint.org/docs/latest/user-guide/configuring/configuration-files-new#using-plugins-in-your-configuration)
   */
  plugins?: Record<string, any>;
  /**
   * An object containing the configured rules. When `files` or `ignores` are
   * specified, these rule configurations are only available to the matching files.
   */
  rules?: Rules;
};
interface OptionsConfig {
  /**
   * Automatic configures ignores based on `.gitignore`.
   *
   * @see https://github.com/antfu/eslint-config-flat-gitignore
   * @default true
   */
  gitignore?: boolean | FlatGitignoreOptions;
  /**
   * Custom ignores. It extends the default ignores.
   */
  ignores?: Linter.Config['ignores'];
  /**
   * Additional extensions for components.
   *
   * @example ['vue']
   */
  extraFileExtensions?: string[];
  /**
   * Base configuration options.
   */
  base?: {
    /**
     * Extends the default base linter options.
     */
    linterOptions?: Linter.LinterOptions;
  };
  /**
   * Enable TypeScript support.
   *
   * @default false
   */
  typescript?: boolean | {
    /**
     * Path to the `tsconfig.json` file/s.
     * It will enable type-aware linting unless `disableTypeAware` is `true`.
     */
    tsconfigPath?: string | string[];
    /**
     * Additional parser options for TypeScript.
     */
    parserOptions?: Partial<ParserOptions>;
    /**
     * Whether to disable type-aware rules.
     */
    disableTypeAware?: boolean;
    /**
     * Glob patterns for files that should be type aware.
     * By default it includes any typescript file.
     *
     * Only used when `typeAware` is `true`.
     */
    filesTypeAware?: string[];
    /**
     * Glob patterns for files that should not be type aware.
     * By default it includes any markdown and astro typescript files.
     */
    ignoresTypeAware?: string[];
  };
  /**
   * Enable `eslint-plugin-import` rules.
   *
   * @default true
   */
  import?: boolean;
  /**
   * Enable `eslint-plugin-jsdoc` rules.
   *
   * @default true
   */
  jsdoc?: boolean;
  /**
   * Enable `eslint-plugin-unicorn` rules.
   *
   * @default true
   */
  unicorn?: boolean;
  /**
   * Enable react rules.
   * If `true`, it will enable react eslint plugins with recommended and strict rules, otherwise you can specify options.
   *
   * @default false
   */
  react?: boolean | {
    /**
     * Enable React strict rules.
     *
     * @default false
     */
    enableStrictRules?: boolean;
  };
  /**
   * Enable vitest (`@vitest/eslint-plugin`) support rules.
   * If `true`, it will enable vitest eslint plugin with recommended rules and type testing, otherwise you can specify options.
   *
   * @default false
   */
  test?: boolean | {
    /**
     * Enables vitest type testing feature.
     *
     * @see https://vitest.dev/guide/testing-types
     * @default false
     */
    enableTypeTesting?: boolean;
  };
  /**
   * Enable tanstack plugins rules.
   * If `true`, it will enable tanstack eslint plugins, otherwise you can specify options.
   *
   * @default false
   */
  tanstack?: boolean | {
    /**
     * Enable `@tanstack/eslint-plugin-query` plugin and its recommended rules.
     *
     * @default false
     */
    enableQuery?: boolean;
    /**
     * Enable `@tanstack/eslint-plugin-router` plugin and its recommended rules.
     *
     * @default false
     */
    enableRouter?: boolean;
  };
  /**
   * Whether oxlint is enabled and therefore eslint rules that are covered by oxlint should be disabled.
   *
   * @default undefined
   */
  oxlint?: {
    /**
     * The path to the oxlint configuration file (e.g. `./.oxlintrc.json`) to read and disable the rules that covers.
     */
    oxlintConfigPath: string;
  };
}
type UserConfig = Awaitable<TypedFlatConfigItem | TypedFlatConfigItem[] | Linter.Config[]>;
//#endregion
//#region src/linters/eslint/config.d.ts
/**
 * ESlint configuration factory.
 *
 * @param options - Configuration options.
 * @param userConfigs - User configurations.
 * @returns A composer of ESLint configurations.
 */
declare function config(options?: OptionsConfig, ...userConfigs: UserConfig[]): FlatConfigComposer<TypedFlatConfigItem, ConfigNames>;
//#endregion
export { config };