import { Linter } from 'eslint';
import { FlatConfigComposer } from 'eslint-flat-config-utils';
import { OptionsConfig, TypedFlatConfigItem, Awaitable, ConfigNames, RuleOptions } from './types.js';
import '@nx/eslint-plugin/src/utils/runtime-lint-utils';
import '@stylistic/eslint-plugin';
import '@typescript-eslint/parser';
import 'eslint-config-flat-gitignore';

declare const defaultPluginRenaming: {
    "@eslint-react": string;
    "@eslint-react/dom": string;
    "@eslint-react/hooks-extra": string;
    "@eslint-react/naming-convention": string;
    "@stylistic": string;
    "@typescript-eslint": string;
    "import-x": string;
    n: string;
    vitest: string;
    yml: string;
};
type ResolvedOptions<T> = T extends boolean ? never : NonNullable<T>;
declare function resolveSubOptions<K extends keyof OptionsConfig>(options: OptionsConfig, key: K): ResolvedOptions<OptionsConfig[K]>;
declare function getOverrides<K extends keyof OptionsConfig>(options: OptionsConfig, key: K): Partial<Linter.RulesRecord & RuleOptions>;
/**
 * Get the ESLint configuration for a Storm workspace.
 *
 * @param options - The preset options.
 * @param userConfigs - Additional ESLint configurations.
 */
declare function getStormConfig(options: OptionsConfig & Omit<TypedFlatConfigItem, "files">, ...userConfigs: Awaitable<TypedFlatConfigItem | TypedFlatConfigItem[] | FlatConfigComposer<object, string> | Linter.Config[]>[]): FlatConfigComposer<TypedFlatConfigItem, ConfigNames>;
declare const getConfig: typeof getStormConfig;
declare const defineConfig: typeof getStormConfig;

export { type ResolvedOptions, getStormConfig as default, defaultPluginRenaming, defineConfig, getConfig, getOverrides, getStormConfig, resolveSubOptions };
