import type { ConfigObject, LegacyConfigObject } from '@eslint/core';
import type { ESLint, Linter } from 'eslint';
declare const pluginMeta: Readonly<import("./package-metadata-reader.ts").PackageMetadata>;
declare const rules: {
    'consistent-structure': Readonly<import("eslint").Rule.RuleModule>;
    'handle-done-callback': Readonly<import("eslint").Rule.RuleModule>;
    'limit-retries': Readonly<import("eslint").Rule.RuleModule>;
    'limit-slow': Readonly<import("eslint").Rule.RuleModule>;
    'limit-timeout': Readonly<import("eslint").Rule.RuleModule>;
    'max-top-level-suites': Readonly<import("eslint").Rule.RuleModule>;
    'no-async-and-done': Readonly<import("eslint").Rule.RuleModule>;
    'no-async-in-sync-tests': Readonly<import("eslint").Rule.RuleModule>;
    'no-async-suite': Readonly<import("eslint").Rule.RuleModule>;
    'no-code-after-done': Readonly<import("eslint").Rule.RuleModule>;
    'no-conditional-tests': Readonly<import("eslint").Rule.RuleModule>;
    'no-done-twice': Readonly<import("eslint").Rule.RuleModule>;
    'no-exclusive-tests': Readonly<import("eslint").Rule.RuleModule>;
    'no-exports': Readonly<import("eslint").Rule.RuleModule>;
    'no-top-level-tests': Readonly<import("eslint").Rule.RuleModule>;
    'no-hooks': Readonly<import("eslint").Rule.RuleModule>;
    'no-hooks-for-single-child': Readonly<import("eslint").Rule.RuleModule>;
    'no-identical-title': Readonly<import("eslint").Rule.RuleModule>;
    'no-mocha-arrows': Readonly<import("eslint").Rule.RuleModule>;
    'no-nested-suites': Readonly<import("eslint").Rule.RuleModule>;
    'no-nested-tests': Readonly<import("eslint").Rule.RuleModule>;
    'no-pending-tests': import("eslint").Rule.RuleModule;
    'no-return-and-done': Readonly<import("eslint").Rule.RuleModule>;
    'no-return-from-async': Readonly<import("eslint").Rule.RuleModule>;
    'no-setup-in-suite': Readonly<import("eslint").Rule.RuleModule>;
    'no-synchronous-tests': Readonly<import("eslint").Rule.RuleModule>;
    'no-root-hooks': Readonly<import("eslint").Rule.RuleModule>;
    'prefer-arrow-callback': Readonly<import("eslint").Rule.RuleModule>;
    'consistent-spacing-between-blocks': Readonly<import("eslint").Rule.RuleModule>;
    'consistent-interface': Readonly<import("eslint").Rule.RuleModule>;
    'valid-suite-title': Readonly<import("eslint").Rule.RuleModule>;
    'valid-test-title': Readonly<import("eslint").Rule.RuleModule>;
    'no-empty-title': Readonly<import("eslint").Rule.RuleModule>;
};
type ImmutablePluginShape<T> = {
    readonly [Key in keyof T]: T[Key];
};
export type MochaPlugin = ImmutablePluginShape<ESLint.Plugin & {
    readonly meta: typeof pluginMeta;
    readonly rules: typeof rules;
    readonly configs: PublishedMochaConfigs;
}>;
type PublishedMochaConfigs = Record<string, PublishedMochaConfig> & {
    readonly all: MochaConfig;
    readonly recommended: MochaConfig;
};
type PublishedMochaConfig = Readonly<ConfigObject | ConfigObject[] | LegacyConfigObject>;
type MochaConfig = ImmutablePluginShape<Linter.Config & {
    readonly plugins: {
        readonly mocha: ESLint.Plugin;
    };
}>;
declare const plugin: MochaPlugin;
export default plugin;
//# sourceMappingURL=plugin.d.ts.map