import { ESLintUtils } from "@typescript-eslint/utils";
import { type RuleContext, type RuleListener } from "@typescript-eslint/utils/ts-eslint";
import type { JSONSchema4 } from "@typescript-eslint/utils/json-schema";
import { type eslintFixTypeNames } from "@base-repo/constants/internal-common-strings";
interface EslintRuleConfig<T> {
    fixable?: typeof eslintFixTypeNames.code | typeof eslintFixTypeNames.whitespace;
    defaultOptions?: T;
    schema?: JSONSchema4[];
    dynamicMessage?: string;
}
export type EslintRuleContext = Readonly<RuleContext<string, readonly unknown[]>>;
export declare function createEslintRule<Options extends readonly unknown[] = []>(ruleName: string, ruleContent: string, create: (context: Readonly<RuleContext<string, Options>>, optionsWithDefault: Options) => RuleListener, eslintRuleConfig?: EslintRuleConfig<Options>): ESLintUtils.RuleModule<string, Options, unknown, ESLintUtils.RuleListener>;
export {};
