import { FileRef } from "./file-ref.js"; export type Generator = { args: GeneratorArg[]; description: string; hasArg: (name: GeneratorArg["name"]) => boolean; isTestGenerator: boolean; name: string; run: (args: Args) => Promise; }; export type GeneratorFile = { base: string; content: string; dir: string; ext: string; name: string; path: string; root: string; }; type GeneratorOptions = { args: GeneratorArgFactory[]; description?: string; isTestGenerator?: boolean; modifyTargetFile?: ModifyTargetFile; modifyTemplateFile?: ModifyTemplateFile; name: string; }; type GeneratorArgFactory = (generatorName: string) => GeneratorArg; type GeneratorArg = { alias?: string[]; description: string; modifyTargetFile?: ModifyTargetFile; modifyTemplateFile?: ModifyTemplateFile; name: string; required?: boolean; type: "boolean" | "positional" | "string"; }; type ModifyTargetFile = (targetFile: FileRef, args: Args) => Promise | void; type ModifyTemplateFile = (templateFile: FileRef, args: Args) => Promise | void; type Args = Record; export declare function defineGenerator({ args, description, isTestGenerator, modifyTargetFile, modifyTemplateFile, name: generatorName, }: GeneratorOptions): Generator; export declare function defineTestGenerator(options: GeneratorOptions & { testsDir: string; testsSubDir?: string; }): Generator; export declare function testGeneratorName(generatorName: string): string; export declare function classBased({ functionBasedName, }?: { functionBasedName?: string; }): GeneratorArgFactory; export declare function copy(): GeneratorArgFactory; export declare function cwd(): GeneratorArgFactory; export declare function destroy(): GeneratorArgFactory; export declare function log(): GeneratorArgFactory; export declare function name(): GeneratorArgFactory; export declare function namedExport(): GeneratorArgFactory; export declare function nested({ description, }: { description: string; }): GeneratorArgFactory; export declare function path(): GeneratorArgFactory; export declare function template(): GeneratorArgFactory; export declare function test(): GeneratorArgFactory; export declare function typescript({ gts, }?: { gts?: boolean; }): GeneratorArgFactory; export {};