import type { RuleContext, RuleListener, RuleMetaData, RuleMetaDataDocs, RuleModule } from '../ts-eslint/Rule'; export type { RuleListener, RuleModule }; export type NamedCreateRuleMetaDocs = Omit; export type NamedCreateRuleMeta = Omit, 'docs'> & { docs: NamedCreateRuleMetaDocs; }; export interface RuleCreateAndOptions { create: (context: Readonly>, optionsWithDefault: Readonly) => RuleListener; defaultOptions: Readonly; } export interface RuleWithMeta extends RuleCreateAndOptions { meta: RuleMetaData; } export interface RuleWithMetaAndName extends RuleCreateAndOptions { meta: NamedCreateRuleMeta; name: string; } /** * Creates reusable function to create rules with default options and docs URLs. * * @param urlCreator Creates a documentation URL for a given rule name. * @returns Function to create a rule with the docs URL format. */ export declare function RuleCreator(urlCreator: (ruleName: string) => string): ({ name, meta, ...rule }: Readonly>) => RuleModule; export declare namespace RuleCreator { var withoutDocs: typeof createRule; } /** * Creates a well-typed TSESLint custom ESLint rule without a docs URL. * * @returns Well-typed TSESLint custom ESLint rule. * @remarks It is generally better to provide a docs URL function to RuleCreator. */ declare function createRule({ create, defaultOptions, meta, }: Readonly>): RuleModule; //# sourceMappingURL=RuleCreator.d.ts.map