import tsParser from "@typescript-eslint/parser";
import { TSESLint } from "@typescript-eslint/utils";
import * as __configDir_0 from "${configDir}";
import { Linter } from "eslint";

//#region src/util.d.ts
declare const TYPESCRIPT_FILES: string[];
interface PluginDocumentation {
  description: string;
  recommended?: boolean;
  requiresTypeChecking: boolean;
}
//#endregion
//#region src/plugin.d.ts
declare const plugin: {
  meta: {
    name: string;
    version: string;
  };
  rules: {
    "lua-truthiness": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>;
    "misleading-lua-tuple-checks": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>;
    "no-any": TSESLint.RuleModule<"any-violation" | "suggest-unknown", [{
      fixToUnknown: boolean;
    }], PluginDocumentation, TSESLint.RuleListener>;
    "no-array-pairs": TSESLint.RuleModule<"array-ipairs-violation" | "array-pairs-violation", [], PluginDocumentation, TSESLint.RuleListener>;
    "no-enum-merging": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>;
    "no-export-assignment-let": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>;
    "no-for-in": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>;
    "no-function-expression-name": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>;
    "no-get-set": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>;
    "no-implicit-self": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>;
    "no-invalid-identifier": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>;
    "no-namespace-merging": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>;
    "no-null": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>;
    "no-object-math": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>;
    "no-post-fix-new": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>;
    "no-preceding-spread-element": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>;
    "no-private-identifier": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>;
    "no-undeclared-scope": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>;
    "no-unsupported-syntax": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>;
    "no-user-defined-lua-tuple": TSESLint.RuleModule<"lua-tuple-violation" | "tuple-macro-violation", [({
      allowTupleMacro?: boolean;
      shouldFix?: boolean;
    } | undefined)?], PluginDocumentation, TSESLint.RuleListener>;
    "no-value-typeof": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>;
    "prefer-get-players": TSESLint.RuleModule<"get-players-children-violation", [{
      validateType: boolean;
    }], PluginDocumentation, TSESLint.RuleListener>;
    "prefer-task-library": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>;
    "size-method": TSESLint.RuleModule<string, [], PluginDocumentation, TSESLint.RuleListener>;
  };
};
//#endregion
//#region src/configs/index.d.ts
declare const configs: {
  [k: string]: {
    name?: string;
    rules?: object;
  };
};
//#endregion
//#region src/configs/recommended.d.ts

/**
 * TypeScript parser configuration for ESLint v8 (legacy config) with
 * traditional project option.
 *
 * @note Compatible with @typescript-eslint/parser >=6.0.0.
 *
 * Can be used standalone or extended with other configurations.
 */
declare const legacyParserConfig: {
  overrides: {
    files: string[];
    parser: string;
    parserOptions: {
      ecmaVersion: 2018;
      jsx: boolean;
      project: boolean;
    };
  }[];
};
//#endregion
//#region src/index.d.ts
declare const _default: {
  configs: {
    [k: string]: {
      name?: string;
      rules?: object;
    };
  };
  parser: {
    files: string[];
    languageOptions: {
      parser: typeof __configDir_0;
      parserOptions: {
        ecmaVersion: 2018;
        jsx: boolean;
        projectService: {
          allowDefaultProject: string[];
          defaultProject: string;
        };
      };
    };
  };
  meta: {
    name: string;
    version: string;
  };
  rules: {
    "lua-truthiness": __configDir_0.RuleModule<string, [], PluginDocumentation, __configDir_0.RuleListener>;
    "misleading-lua-tuple-checks": __configDir_0.RuleModule<string, [], PluginDocumentation, __configDir_0.RuleListener>;
    "no-any": __configDir_0.RuleModule<"any-violation" | "suggest-unknown", [{
      fixToUnknown: boolean;
    }], PluginDocumentation, __configDir_0.RuleListener>;
    "no-array-pairs": __configDir_0.RuleModule<"array-ipairs-violation" | "array-pairs-violation", [], PluginDocumentation, __configDir_0.RuleListener>;
    "no-enum-merging": __configDir_0.RuleModule<string, [], PluginDocumentation, __configDir_0.RuleListener>;
    "no-export-assignment-let": __configDir_0.RuleModule<string, [], PluginDocumentation, __configDir_0.RuleListener>;
    "no-for-in": __configDir_0.RuleModule<string, [], PluginDocumentation, __configDir_0.RuleListener>;
    "no-function-expression-name": __configDir_0.RuleModule<string, [], PluginDocumentation, __configDir_0.RuleListener>;
    "no-get-set": __configDir_0.RuleModule<string, [], PluginDocumentation, __configDir_0.RuleListener>;
    "no-implicit-self": __configDir_0.RuleModule<string, [], PluginDocumentation, __configDir_0.RuleListener>;
    "no-invalid-identifier": __configDir_0.RuleModule<string, [], PluginDocumentation, __configDir_0.RuleListener>;
    "no-namespace-merging": __configDir_0.RuleModule<string, [], PluginDocumentation, __configDir_0.RuleListener>;
    "no-null": __configDir_0.RuleModule<string, [], PluginDocumentation, __configDir_0.RuleListener>;
    "no-object-math": __configDir_0.RuleModule<string, [], PluginDocumentation, __configDir_0.RuleListener>;
    "no-post-fix-new": __configDir_0.RuleModule<string, [], PluginDocumentation, __configDir_0.RuleListener>;
    "no-preceding-spread-element": __configDir_0.RuleModule<string, [], PluginDocumentation, __configDir_0.RuleListener>;
    "no-private-identifier": __configDir_0.RuleModule<string, [], PluginDocumentation, __configDir_0.RuleListener>;
    "no-undeclared-scope": __configDir_0.RuleModule<string, [], PluginDocumentation, __configDir_0.RuleListener>;
    "no-unsupported-syntax": __configDir_0.RuleModule<string, [], PluginDocumentation, __configDir_0.RuleListener>;
    "no-user-defined-lua-tuple": __configDir_0.RuleModule<"lua-tuple-violation" | "tuple-macro-violation", [({
      allowTupleMacro?: boolean;
      shouldFix?: boolean;
    } | undefined)?], PluginDocumentation, __configDir_0.RuleListener>;
    "no-value-typeof": __configDir_0.RuleModule<string, [], PluginDocumentation, __configDir_0.RuleListener>;
    "prefer-get-players": __configDir_0.RuleModule<"get-players-children-violation", [{
      validateType: boolean;
    }], PluginDocumentation, __configDir_0.RuleListener>;
    "prefer-task-library": __configDir_0.RuleModule<string, [], PluginDocumentation, __configDir_0.RuleListener>;
    "size-method": __configDir_0.RuleModule<string, [], PluginDocumentation, __configDir_0.RuleListener>;
  };
};
declare const rules: {
  "lua-truthiness": __configDir_0.RuleModule<string, [], PluginDocumentation, __configDir_0.RuleListener>;
  "misleading-lua-tuple-checks": __configDir_0.RuleModule<string, [], PluginDocumentation, __configDir_0.RuleListener>;
  "no-any": __configDir_0.RuleModule<"any-violation" | "suggest-unknown", [{
    fixToUnknown: boolean;
  }], PluginDocumentation, __configDir_0.RuleListener>;
  "no-array-pairs": __configDir_0.RuleModule<"array-ipairs-violation" | "array-pairs-violation", [], PluginDocumentation, __configDir_0.RuleListener>;
  "no-enum-merging": __configDir_0.RuleModule<string, [], PluginDocumentation, __configDir_0.RuleListener>;
  "no-export-assignment-let": __configDir_0.RuleModule<string, [], PluginDocumentation, __configDir_0.RuleListener>;
  "no-for-in": __configDir_0.RuleModule<string, [], PluginDocumentation, __configDir_0.RuleListener>;
  "no-function-expression-name": __configDir_0.RuleModule<string, [], PluginDocumentation, __configDir_0.RuleListener>;
  "no-get-set": __configDir_0.RuleModule<string, [], PluginDocumentation, __configDir_0.RuleListener>;
  "no-implicit-self": __configDir_0.RuleModule<string, [], PluginDocumentation, __configDir_0.RuleListener>;
  "no-invalid-identifier": __configDir_0.RuleModule<string, [], PluginDocumentation, __configDir_0.RuleListener>;
  "no-namespace-merging": __configDir_0.RuleModule<string, [], PluginDocumentation, __configDir_0.RuleListener>;
  "no-null": __configDir_0.RuleModule<string, [], PluginDocumentation, __configDir_0.RuleListener>;
  "no-object-math": __configDir_0.RuleModule<string, [], PluginDocumentation, __configDir_0.RuleListener>;
  "no-post-fix-new": __configDir_0.RuleModule<string, [], PluginDocumentation, __configDir_0.RuleListener>;
  "no-preceding-spread-element": __configDir_0.RuleModule<string, [], PluginDocumentation, __configDir_0.RuleListener>;
  "no-private-identifier": __configDir_0.RuleModule<string, [], PluginDocumentation, __configDir_0.RuleListener>;
  "no-undeclared-scope": __configDir_0.RuleModule<string, [], PluginDocumentation, __configDir_0.RuleListener>;
  "no-unsupported-syntax": __configDir_0.RuleModule<string, [], PluginDocumentation, __configDir_0.RuleListener>;
  "no-user-defined-lua-tuple": __configDir_0.RuleModule<"lua-tuple-violation" | "tuple-macro-violation", [({
    allowTupleMacro?: boolean;
    shouldFix?: boolean;
  } | undefined)?], PluginDocumentation, __configDir_0.RuleListener>;
  "no-value-typeof": __configDir_0.RuleModule<string, [], PluginDocumentation, __configDir_0.RuleListener>;
  "prefer-get-players": __configDir_0.RuleModule<"get-players-children-violation", [{
    validateType: boolean;
  }], PluginDocumentation, __configDir_0.RuleListener>;
  "prefer-task-library": __configDir_0.RuleModule<string, [], PluginDocumentation, __configDir_0.RuleListener>;
  "size-method": __configDir_0.RuleModule<string, [], PluginDocumentation, __configDir_0.RuleListener>;
};
type RuleOptions = { [K in keyof RuleDefinitions]: RuleDefinitions[K]["defaultOptions"] };
type Rules = { [K in keyof RuleOptions]: Linter.RuleEntry<RuleOptions[K]> };
type RuleDefinitions = typeof plugin.rules;
//#endregion
export { RuleOptions, Rules, TYPESCRIPT_FILES, configs, _default as default, legacyParserConfig, rules };