import gitignore from "eslint-config-flat-gitignore";
import { defineConfig } from "eslint/config";
import { RuleOptions } from "@stylistic/eslint-plugin";
import { Linter } from "eslint";
import { RuleOptions as RuleOptions$1 } from "eslint-plugin-vue/lib/eslint-typegen";
import { Simplify } from "type-fest";

//#region src/entree-configs.d.ts
/**
 * ESLint config for TypeScript + .gitignore file support from `eslint-config-flat-gitignore`.
 */
declare function typeScript(config: {
  gitignore: boolean;
  typeScriptRules: Linter.RulesRecord;
}): Array<Linter.Config>;
/**
 * ESLint config for TypeScript & Vue 3 + .gitignore file support from `eslint-config-flat-gitignore`.
 *
 * Vue 3 support is focused on Single File Components with Composition API and `<script setup>`
 */
declare function vue3(config: {
  gitignore: boolean;
  typeScriptRules: Linter.RulesRecord;
  vue3Rules: Linter.RulesRecord;
}): Array<Linter.Config>;
/**
 * ESLint config for TypeScript & React + .gitignore file support from `eslint-config-flat-gitignore`.
 */
declare function react(config: {
  gitignore: boolean;
  typeScriptRules: Linter.RulesRecord;
  reactRules: Linter.RulesRecord;
}): Array<Linter.Config>;
/**
 * Configs bundled with the library.
 */
declare const entreeConfigs: {
  typeScript: typeof typeScript;
  vue3: typeof vue3;
  react: typeof react;
};
//#endregion
//#region src/entree-rules.d.ts
/**
 * Every collection of hand-picked rules.
 */
declare const entreeRules: {
  react(): any;
  vue3(): {
    "vue/array-bracket-spacing": ["warn", "never"];
    "vue/arrow-spacing": ["warn"];
    "vue/comma-dangle": ["warn", {
      arrays: "always-multiline";
      objects: "always";
      imports: "never";
      exports: "always-multiline";
      functions: "always-multiline";
    }];
    "vue/comma-spacing": ["warn", {
      before: false;
      after: true;
    }];
    "vue/key-spacing": ["warn", {
      singleLine: {
        beforeColon: false;
        afterColon: true;
      };
      multiLine: {
        beforeColon: false;
        afterColon: true;
      };
      align: {
        beforeColon: false;
        afterColon: true;
        on: "value";
      };
    }];
    "vue/keyword-spacing": ["warn", {
      before: true;
      after: true;
    }];
    "vue/object-curly-spacing": ["warn", "always", {
      arraysInObjects: false;
      objectsInObjects: false;
    }];
    "vue/space-in-parens": ["warn", "never"];
    "vue/space-infix-ops": ["warn", {
      int32Hint: true;
    }];
    "vue/block-order": ["warn", {
      order: string[];
    }];
    "vue/no-duplicate-attr-inheritance": ["error"];
    "vue/no-required-prop-with-default": ["warn", {
      autofix: true;
    }];
    "vue/no-restricted-v-bind": ["error", {
      argument: string;
      message: string;
    }];
    "vue/no-undef-components": ["error", {
      ignorePatterns: string[];
    }];
    "vue/no-unused-refs": ["error"];
    "vue/padding-line-between-blocks": ["warn", "always"];
    "vue/prefer-define-options": ["warn"];
    "vue/prefer-separate-static-class": ["warn"];
    "vue/require-macro-variable-name": ["error", {
      defineProps: string;
      defineEmits: string;
      defineSlots: string;
      useSlots: string;
      useAttrs: string;
    }];
    "vue/require-typed-ref": ["error"];
    "vue/v-for-delimiter-style": ["warn", "in"];
    "vue/valid-define-options": ["error"];
    "vue/block-lang": ["error", {
      script: {
        lang: string;
      };
    }];
    "vue/component-api-style": ["error", ["script-setup"]];
    "vue/component-name-in-template-casing": ["warn", "PascalCase", {
      registeredComponentsOnly: true;
      ignores: never[];
      globals: string[];
    }];
    "vue/custom-event-name-casing": ["warn", "camelCase", {
      ignores: never[];
    }];
    "vue/define-emits-declaration": ["warn", "type-literal"];
    "vue/define-props-declaration": ["warn", "type-based"];
    "vue/html-button-has-type": ["warn", {
      button: true;
      submit: false;
      reset: false;
    }];
    "vue/attributes-order": ["warn", {
      order: ("DEFINITION" | "LIST_RENDERING" | "CONDITIONALS" | "RENDER_MODIFIERS" | "GLOBAL" | "UNIQUE" | "SLOT" | "TWO_WAY_BINDING" | "OTHER_DIRECTIVES" | "ATTR_STATIC" | "ATTR_DYNAMIC" | "ATTR_SHORTHAND_BOOL" | "EVENTS" | "CONTENT")[];
      alphabetical: false;
    }];
    "vue/no-lone-template": ["warn", {
      ignoreAccessible: true;
    }];
    "vue/no-multiple-slot-args": ["warn"];
    "vue/no-v-html": ["warn"];
    "vue/attribute-hyphenation": ["warn"];
    "vue/html-closing-bracket-spacing": ["warn"];
    "vue/html-self-closing": ["warn", {
      html: {
        void: "never";
        normal: "never";
        component: "any";
      };
      svg: "any";
      math: "any";
    }];
    "vue/html-quotes": ["warn", "double", {
      avoidEscape: true;
    }];
    "vue/mustache-interpolation-spacing": ["warn", "always"];
    "vue/no-multi-spaces": ["warn", {
      ignoreProperties: true;
    }];
    "vue/no-spaces-around-equal-signs-in-attribute": ["warn"];
    "vue/no-template-shadow": ["warn"];
    "vue/v-bind-style": ["warn", "shorthand"];
    "vue/v-on-event-hyphenation": ["warn", "always", {
      autofix: true;
    }];
    "vue/v-on-style": ["warn", "shorthand"];
    "vue/v-slot-style": ["warn", {
      atComponent: "shorthand";
      default: "shorthand";
      named: "shorthand";
    }];
    "vue/no-dupe-keys": ["error"];
    "vue/no-side-effects-in-computed-properties": ["error"];
    "vue/no-ref-as-operand": ["error"];
    "vue/no-async-in-computed-properties": ["error"];
    "vue/no-child-content": ["error"];
    "vue/no-dupe-v-else-if": ["error"];
    "vue/no-duplicate-attributes": ["error"];
    "vue/no-export-in-script-setup": ["error"];
    "vue/no-expose-after-await": ["error"];
    "vue/no-lifecycle-after-await": ["error"];
    "vue/no-reserved-keys": ["error"];
    "vue/no-reserved-props": ["error"];
    "vue/no-template-key": ["error"];
    "vue/no-textarea-mustache": ["error"];
    "vue/no-use-v-if-with-v-for": ["error"];
    "vue/no-useless-template-attributes": ["error"];
    "vue/no-v-for-template-key-on-child": ["error"];
    "vue/no-v-text-v-html-on-component": ["error"];
    "vue/no-watch-after-await": ["error"];
    "vue/prefer-import-from-vue": ["error"];
    "vue/require-component-is": ["error"];
    "vue/require-render-return": ["error"];
    "vue/require-toggle-inside-transition": ["error"];
    "vue/use-v-on-exact": ["error"];
    "vue/valid-attribute-name": ["error"];
    "vue/valid-define-emits": ["error"];
    "vue/valid-define-props": ["error"];
    "vue/valid-next-tick": ["error"];
    "vue/valid-template-root": ["error"];
    "vue/valid-v-bind": ["error"];
    "vue/valid-v-cloak": ["error"];
    "vue/valid-v-else-if": ["error"];
    "vue/valid-v-else": ["error"];
    "vue/valid-v-html": ["error"];
    "vue/valid-v-if": ["error"];
    "vue/valid-v-is": ["error"];
    "vue/valid-v-memo": ["error"];
    "vue/valid-v-model": ["error"];
    "vue/valid-v-on": ["error"];
    "vue/valid-v-once": ["error"];
    "vue/valid-v-pre": ["error"];
    "vue/valid-v-show": ["error"];
    "vue/valid-v-slot": ["error"];
    "vue/valid-v-text": ["error"];
    "vue/comment-directive": ["error"];
  };
  vue3_base(): {
    "vue/comment-directive": ["error"];
  };
  vue3_essential(): {
    "vue/no-dupe-keys": ["error"];
    "vue/no-side-effects-in-computed-properties": ["error"];
    "vue/no-ref-as-operand": ["error"];
    "vue/no-async-in-computed-properties": ["error"];
    "vue/no-child-content": ["error"];
    "vue/no-dupe-v-else-if": ["error"];
    "vue/no-duplicate-attributes": ["error"];
    "vue/no-export-in-script-setup": ["error"];
    "vue/no-expose-after-await": ["error"];
    "vue/no-lifecycle-after-await": ["error"];
    "vue/no-reserved-keys": ["error"];
    "vue/no-reserved-props": ["error"];
    "vue/no-template-key": ["error"];
    "vue/no-textarea-mustache": ["error"];
    "vue/no-use-v-if-with-v-for": ["error"];
    "vue/no-useless-template-attributes": ["error"];
    "vue/no-v-for-template-key-on-child": ["error"];
    "vue/no-v-text-v-html-on-component": ["error"];
    "vue/no-watch-after-await": ["error"];
    "vue/prefer-import-from-vue": ["error"];
    "vue/require-component-is": ["error"];
    "vue/require-render-return": ["error"];
    "vue/require-toggle-inside-transition": ["error"];
    "vue/use-v-on-exact": ["error"];
    "vue/valid-attribute-name": ["error"];
    "vue/valid-define-emits": ["error"];
    "vue/valid-define-props": ["error"];
    "vue/valid-next-tick": ["error"];
    "vue/valid-template-root": ["error"];
    "vue/valid-v-bind": ["error"];
    "vue/valid-v-cloak": ["error"];
    "vue/valid-v-else-if": ["error"];
    "vue/valid-v-else": ["error"];
    "vue/valid-v-html": ["error"];
    "vue/valid-v-if": ["error"];
    "vue/valid-v-is": ["error"];
    "vue/valid-v-memo": ["error"];
    "vue/valid-v-model": ["error"];
    "vue/valid-v-on": ["error"];
    "vue/valid-v-once": ["error"];
    "vue/valid-v-pre": ["error"];
    "vue/valid-v-show": ["error"];
    "vue/valid-v-slot": ["error"];
    "vue/valid-v-text": ["error"];
  };
  vue3_strongly_recommended(): {
    "vue/attribute-hyphenation": ["warn"];
    "vue/html-closing-bracket-spacing": ["warn"];
    "vue/html-self-closing": ["warn", {
      html: {
        void: "never";
        normal: "never";
        component: "any";
      };
      svg: "any";
      math: "any";
    }];
    "vue/html-quotes": ["warn", "double", {
      avoidEscape: true;
    }];
    "vue/mustache-interpolation-spacing": ["warn", "always"];
    "vue/no-multi-spaces": ["warn", {
      ignoreProperties: true;
    }];
    "vue/no-spaces-around-equal-signs-in-attribute": ["warn"];
    "vue/no-template-shadow": ["warn"];
    "vue/v-bind-style": ["warn", "shorthand"];
    "vue/v-on-event-hyphenation": ["warn", "always", {
      autofix: true;
    }];
    "vue/v-on-style": ["warn", "shorthand"];
    "vue/v-slot-style": ["warn", {
      atComponent: "shorthand";
      default: "shorthand";
      named: "shorthand";
    }];
  };
  vue3_recommended(): {
    "vue/attributes-order": ["warn", {
      order: ("DEFINITION" | "LIST_RENDERING" | "CONDITIONALS" | "RENDER_MODIFIERS" | "GLOBAL" | "UNIQUE" | "SLOT" | "TWO_WAY_BINDING" | "OTHER_DIRECTIVES" | "ATTR_STATIC" | "ATTR_DYNAMIC" | "ATTR_SHORTHAND_BOOL" | "EVENTS" | "CONTENT")[];
      alphabetical: false;
    }];
    "vue/no-lone-template": ["warn", {
      ignoreAccessible: true;
    }];
    "vue/no-multiple-slot-args": ["warn"];
    "vue/no-v-html": ["warn"];
  };
  vue3_uncategorized(): {
    "vue/block-order": ["warn", {
      order: string[];
    }];
    "vue/no-duplicate-attr-inheritance": ["error"];
    "vue/no-required-prop-with-default": ["warn", {
      autofix: true;
    }];
    "vue/no-restricted-v-bind": ["error", {
      argument: string;
      message: string;
    }];
    "vue/no-undef-components": ["error", {
      ignorePatterns: string[];
    }];
    "vue/no-unused-refs": ["error"];
    "vue/padding-line-between-blocks": ["warn", "always"];
    "vue/prefer-define-options": ["warn"];
    "vue/prefer-separate-static-class": ["warn"];
    "vue/require-macro-variable-name": ["error", {
      defineProps: string;
      defineEmits: string;
      defineSlots: string;
      useSlots: string;
      useAttrs: string;
    }];
    "vue/require-typed-ref": ["error"];
    "vue/v-for-delimiter-style": ["warn", "in"];
    "vue/valid-define-options": ["error"];
    "vue/block-lang": ["error", {
      script: {
        lang: string;
      };
    }];
    "vue/component-api-style": ["error", ["script-setup"]];
    "vue/component-name-in-template-casing": ["warn", "PascalCase", {
      registeredComponentsOnly: true;
      ignores: never[];
      globals: string[];
    }];
    "vue/custom-event-name-casing": ["warn", "camelCase", {
      ignores: never[];
    }];
    "vue/define-emits-declaration": ["warn", "type-literal"];
    "vue/define-props-declaration": ["warn", "type-based"];
    "vue/html-button-has-type": ["warn", {
      button: true;
      submit: false;
      reset: false;
    }];
  };
  vue3_extension_rules_forTemplateExpressions(): {
    "vue/array-bracket-spacing": ["warn", "never"];
    "vue/arrow-spacing": ["warn"];
    "vue/comma-dangle": ["warn", {
      arrays: "always-multiline";
      objects: "always";
      imports: "never";
      exports: "always-multiline";
      functions: "always-multiline";
    }];
    "vue/comma-spacing": ["warn", {
      before: false;
      after: true;
    }];
    "vue/key-spacing": ["warn", {
      singleLine: {
        beforeColon: false;
        afterColon: true;
      };
      multiLine: {
        beforeColon: false;
        afterColon: true;
      };
      align: {
        beforeColon: false;
        afterColon: true;
        on: "value";
      };
    }];
    "vue/keyword-spacing": ["warn", {
      before: true;
      after: true;
    }];
    "vue/object-curly-spacing": ["warn", "always", {
      arraysInObjects: false;
      objectsInObjects: false;
    }];
    "vue/space-in-parens": ["warn", "never"];
    "vue/space-infix-ops": ["warn", {
      int32Hint: true;
    }];
  };
  typeScript(): {
    "@typescript-eslint/no-import-type-side-effects": ["warn"];
    "no-unused-expressions": ["off"];
    "@typescript-eslint/no-unused-expressions": ["warn", {
      allowShortCircuit: boolean;
      allowTernary: boolean;
      allowTaggedTemplates: boolean;
    }];
    "@typescript-eslint/no-useless-empty-export": ["error"];
    "@typescript-eslint/no-invalid-void-type": ["warn", {
      allowInGenericTypeArguments: boolean;
      allowAsThisParameter: boolean;
    }];
    "@typescript-eslint/no-non-null-assertion": ["error"];
    "@typescript-eslint/prefer-ts-expect-error": ["error"];
    "@typescript-eslint/consistent-type-assertions": ["warn", {
      assertionStyle: string;
      objectLiteralTypeAssertions: string;
    }];
    "@typescript-eslint/no-confusing-non-null-assertion": ["warn"];
    "@typescript-eslint/ban-ts-comment": ["error", {
      "ts-expect-error": string;
      "ts-ignore": string;
      "ts-nocheck": string;
      "ts-check": boolean;
    }];
    "@typescript-eslint/no-empty-object-type": ["error", {
      allowInterfaces: string;
      allowObjectTypes: string;
    }];
    "@typescript-eslint/no-unsafe-function-type": ["error"];
    "@typescript-eslint/no-wrapper-object-types": ["error"];
    "@typescript-eslint/no-duplicate-enum-values": ["error"];
    "no-loss-of-precision": ["off"];
    "@typescript-eslint/no-loss-of-precision": ["error"];
    "@typescript-eslint/no-misused-new": ["error"];
    "@typescript-eslint/no-namespace": ["warn", {
      allowDeclarations: boolean;
      allowDefinitionFiles: boolean;
    }];
    "@typescript-eslint/no-unnecessary-type-constraint": ["error"];
    "@typescript-eslint/no-unsafe-declaration-merging": ["error"];
    "@typescript-eslint/prefer-as-const": ["error"];
    "@stylistic/type-annotation-spacing": ["warn", {
      before: false;
      after: true;
      overrides: {
        arrow: {
          before: true;
          after: true;
        };
      };
    }];
    "@stylistic/space-before-function-paren": ["warn", {
      anonymous: "always";
      named: "never";
      asyncArrow: "always";
    }];
    "@stylistic/semi": ["warn", "always"];
    "@stylistic/no-extra-semi": ["warn"];
    "@stylistic/no-trailing-spaces": ["warn", {
      ignoreComments: true;
    }];
    "@stylistic/space-infix-ops": ["warn", {
      int32Hint: true;
    }];
    "@stylistic/object-curly-spacing": ["warn", "always", {
      arraysInObjects: false;
      objectsInObjects: false;
    }];
    "@stylistic/comma-spacing": ["warn", {
      before: false;
      after: true;
    }];
    "@stylistic/keyword-spacing": ["warn", {
      before: true;
      after: true;
    }];
    "@stylistic/quotes": ["warn", "double", {
      avoidEscape: true;
      allowTemplateLiterals: true;
    }];
    "@stylistic/space-in-parens": ["warn", "never"];
    "@stylistic/array-bracket-spacing": ["warn", "never"];
    "@stylistic/arrow-spacing": ["warn"];
    "@stylistic/eol-last": ["warn", "always"];
    "@stylistic/comma-dangle": ["warn", {
      arrays: "always-multiline";
      objects: "always";
      imports: "never";
      exports: "always-multiline";
      functions: "always-multiline";
    }];
    "@stylistic/member-delimiter-style": ["warn", {
      singleline: {
        delimiter: "comma";
        requireLast: true;
      };
      multiline: {
        delimiter: "comma";
        requireLast: true;
      };
      multilineDetection: "brackets";
    }];
    "@stylistic/key-spacing": ["warn", {
      singleLine: {
        beforeColon: false;
        afterColon: true;
      };
      multiLine: {
        beforeColon: false;
        afterColon: true;
      };
      align: {
        beforeColon: false;
        afterColon: true;
        on: "value";
      };
    }];
    "no-compare-neg-zero": ["error"];
    "no-debugger": ["error"];
    "no-irregular-whitespace": ["error", {
      skipComments: boolean;
      skipJSXText: boolean;
      skipRegExps: boolean;
      skipStrings: boolean;
      skipTemplates: boolean;
    }];
    "no-promise-executor-return": ["warn", {
      allowVoid: boolean;
    }];
    "no-self-assign": ["warn", {
      props: boolean;
    }];
    "no-self-compare": ["warn"];
    "require-atomic-updates": ["error", {
      allowProperties: boolean;
    }];
    "use-isnan": ["warn", {
      enforceForSwitchCase: boolean;
      enforceForIndexOf: boolean;
    }];
    "no-caller": ["error"];
    eqeqeq: ["warn", string, {
      null: string;
    }];
    "default-case-last": ["warn"];
    "default-case": ["warn", {
      commentPattern: string;
    }];
    "no-implicit-coercion": ["warn", {
      boolean: boolean;
      number: boolean;
      string: boolean;
      disallowTemplateShorthand: boolean;
      allow: never[];
    }];
    "no-octal": ["warn"];
    "no-nonoctal-decimal-escape": ["warn"];
    "no-throw-literal": ["warn"];
    "no-undefined": ["warn"];
    "no-useless-escape": ["warn"];
    "no-useless-rename": ["warn", {
      ignoreImport: boolean;
      ignoreExport: boolean;
      ignoreDestructuring: boolean;
    }];
    "no-var": ["warn"];
    "prefer-const": ["warn", {
      destructuring: string;
      ignoreReadBeforeAssign: boolean;
    }];
    "prefer-promise-reject-errors": ["warn", {
      allowEmptyReject: boolean;
    }];
    "prefer-template": ["warn"];
    "require-unicode-regexp": ["warn"];
    "symbol-description": ["warn"];
  };
  typeScript_eslint(): {
    "no-compare-neg-zero": ["error"];
    "no-debugger": ["error"];
    "no-irregular-whitespace": ["error", {
      skipComments: boolean;
      skipJSXText: boolean;
      skipRegExps: boolean;
      skipStrings: boolean;
      skipTemplates: boolean;
    }];
    "no-promise-executor-return": ["warn", {
      allowVoid: boolean;
    }];
    "no-self-assign": ["warn", {
      props: boolean;
    }];
    "no-self-compare": ["warn"];
    "require-atomic-updates": ["error", {
      allowProperties: boolean;
    }];
    "use-isnan": ["warn", {
      enforceForSwitchCase: boolean;
      enforceForIndexOf: boolean;
    }];
    "no-caller": ["error"];
    eqeqeq: ["warn", string, {
      null: string;
    }];
    "default-case-last": ["warn"];
    "default-case": ["warn", {
      commentPattern: string;
    }];
    "no-implicit-coercion": ["warn", {
      boolean: boolean;
      number: boolean;
      string: boolean;
      disallowTemplateShorthand: boolean;
      allow: never[];
    }];
    "no-octal": ["warn"];
    "no-nonoctal-decimal-escape": ["warn"];
    "no-throw-literal": ["warn"];
    "no-undefined": ["warn"];
    "no-useless-escape": ["warn"];
    "no-useless-rename": ["warn", {
      ignoreImport: boolean;
      ignoreExport: boolean;
      ignoreDestructuring: boolean;
    }];
    "no-var": ["warn"];
    "prefer-const": ["warn", {
      destructuring: string;
      ignoreReadBeforeAssign: boolean;
    }];
    "prefer-promise-reject-errors": ["warn", {
      allowEmptyReject: boolean;
    }];
    "prefer-template": ["warn"];
    "require-unicode-regexp": ["warn"];
    "symbol-description": ["warn"];
  };
  typeScript_stylistic(): {
    "@stylistic/type-annotation-spacing": ["warn", {
      before: false;
      after: true;
      overrides: {
        arrow: {
          before: true;
          after: true;
        };
      };
    }];
    "@stylistic/space-before-function-paren": ["warn", {
      anonymous: "always";
      named: "never";
      asyncArrow: "always";
    }];
    "@stylistic/semi": ["warn", "always"];
    "@stylistic/no-extra-semi": ["warn"];
    "@stylistic/no-trailing-spaces": ["warn", {
      ignoreComments: true;
    }];
    "@stylistic/space-infix-ops": ["warn", {
      int32Hint: true;
    }];
    "@stylistic/object-curly-spacing": ["warn", "always", {
      arraysInObjects: false;
      objectsInObjects: false;
    }];
    "@stylistic/comma-spacing": ["warn", {
      before: false;
      after: true;
    }];
    "@stylistic/keyword-spacing": ["warn", {
      before: true;
      after: true;
    }];
    "@stylistic/quotes": ["warn", "double", {
      avoidEscape: true;
      allowTemplateLiterals: true;
    }];
    "@stylistic/space-in-parens": ["warn", "never"];
    "@stylistic/array-bracket-spacing": ["warn", "never"];
    "@stylistic/arrow-spacing": ["warn"];
    "@stylistic/eol-last": ["warn", "always"];
    "@stylistic/comma-dangle": ["warn", {
      arrays: "always-multiline";
      objects: "always";
      imports: "never";
      exports: "always-multiline";
      functions: "always-multiline";
    }];
    "@stylistic/member-delimiter-style": ["warn", {
      singleline: {
        delimiter: "comma";
        requireLast: true;
      };
      multiline: {
        delimiter: "comma";
        requireLast: true;
      };
      multilineDetection: "brackets";
    }];
    "@stylistic/key-spacing": ["warn", {
      singleLine: {
        beforeColon: false;
        afterColon: true;
      };
      multiLine: {
        beforeColon: false;
        afterColon: true;
      };
      align: {
        beforeColon: false;
        afterColon: true;
        on: "value";
      };
    }];
  };
  typeScript_filteredBy_recommended(): {
    "@typescript-eslint/ban-ts-comment": ["error", {
      "ts-expect-error": string;
      "ts-ignore": string;
      "ts-nocheck": string;
      "ts-check": boolean;
    }];
    "@typescript-eslint/no-empty-object-type": ["error", {
      allowInterfaces: string;
      allowObjectTypes: string;
    }];
    "@typescript-eslint/no-unsafe-function-type": ["error"];
    "@typescript-eslint/no-wrapper-object-types": ["error"];
    "@typescript-eslint/no-duplicate-enum-values": ["error"];
    "no-loss-of-precision": ["off"];
    "@typescript-eslint/no-loss-of-precision": ["error"];
    "@typescript-eslint/no-misused-new": ["error"];
    "@typescript-eslint/no-namespace": ["warn", {
      allowDeclarations: boolean;
      allowDefinitionFiles: boolean;
    }];
    "@typescript-eslint/no-unnecessary-type-constraint": ["error"];
    "@typescript-eslint/no-unsafe-declaration-merging": ["error"];
    "@typescript-eslint/prefer-as-const": ["error"];
  };
  typeScript_filteredBy_tsStylistic(): {
    "@typescript-eslint/consistent-type-assertions": ["warn", {
      assertionStyle: string;
      objectLiteralTypeAssertions: string;
    }];
    "@typescript-eslint/no-confusing-non-null-assertion": ["warn"];
  };
  typeScript_filteredBy_strict(): {
    "@typescript-eslint/no-invalid-void-type": ["warn", {
      allowInGenericTypeArguments: boolean;
      allowAsThisParameter: boolean;
    }];
    "@typescript-eslint/no-non-null-assertion": ["error"];
    "@typescript-eslint/prefer-ts-expect-error": ["error"];
  };
  typeScript_filteredBy_miscellaneous(): {
    "@typescript-eslint/no-import-type-side-effects": ["warn"];
    "no-unused-expressions": ["off"];
    "@typescript-eslint/no-unused-expressions": ["warn", {
      allowShortCircuit: boolean;
      allowTernary: boolean;
      allowTaggedTemplates: boolean;
    }];
    "@typescript-eslint/no-useless-empty-export": ["error"];
  };
};
//# sourceMappingURL=entree-rules.d.ts.map
//#endregion
//#region src/entree-utils.d.ts
type stylistic_RuleOptions = { [K in keyof RuleOptions]?: Linter.RuleEntry<RuleOptions[K]> };
declare module "eslint" {
  namespace Linter {
    interface RulesRecord extends stylistic_RuleOptions, RuleOptions$1 {}
  }
}
/**
 * A simple helper to make working with rules in `@ts-check`-enabled files easier
 * by returning a narrowly typed object with explicitly known keys.
 *
 * Needed for {@link entreeFilterRules} to work correctly.
 *
 * Is not not needed for ESLint otherwise.
 */
declare function entreeDefineRules<T extends Linter.RulesRecord>(rules: T): T;
/**
 * Provide a rules object to receive a getter function that returns the option of the given rule.
 *
 * Useful for sharing options between a base rule, and a rule that extends the base rule,
 * e.g. in the case of `eslint-plugin-vue` extension rules and the corresponding base `@stylistic` rules.
 */
declare function entreeAdoptOptionsFromRules<T extends Linter.RulesRecord>(rules: T): {
  getOptionsOf: <K extends keyof T>(keyOfRule: K) => NonNullable<T[K]>;
};
/**
 * Filter rules for adoption or debugging purposes by excluding and picking rules.
 *
 * ---
 *
 * Filtering is meant to help in the adoption process.
 *
 * Ideally, the filtering is entirely removed after processing the whole codebase, and all rules are fully covering the code.
 *
 * - `exclude` is used to cut down on the printed result of eslint, to set aside rules that overwhelm the output
 * - `pick` is used to select from the remaining results the ones you currently want to fix, and to verify their adoption
 *
 * After the rule(s) in `pick` are done, run eslint again, and pick again from the results.
 *
 * After everything you picked is done, process the rules that you previously excluded, if there were any.
 */
declare function entreeFilterRules<T extends Linter.RulesRecord, const TExcludeKeys extends keyof T, const TPickableKeys extends keyof Omit<T, TExcludeKeys>>(rules: T, opts?: ({
  exclude: readonly TExcludeKeys[];
  pick?: undefined;
  debug?: boolean;
} | {
  exclude: readonly TExcludeKeys[];
  pick: TPickableKeys[];
  debug?: boolean;
})): Simplify<Pick<Omit<T, TExcludeKeys>, TPickableKeys>>;
//#endregion
export { defineConfig, entreeAdoptOptionsFromRules, entreeConfigs, entreeDefineRules, entreeFilterRules, entreeRules, gitignore };
//# sourceMappingURL=index.d.ts.map