import { type CliDefaultOptions, type CommandProvider, ProjectPackageJson } from "@tsed/cli-core";
import type { PlatformType } from "../../interfaces/index.js";
import { ProjectConvention } from "../../interfaces/ProjectConvention.js";
import { ClassNamePipe } from "../../pipes/ClassNamePipe.js";
import { OutputFilePathPipe } from "../../pipes/OutputFilePathPipe.js";
import { RoutePipe } from "../../pipes/RoutePipe.js";
import { ProvidersInfoService } from "../../services/ProvidersInfoService.js";
import { SrcRendererService } from "../../services/Renderer.js";
export interface GenerateCmdContext extends CliDefaultOptions {
    type: string;
    name: string;
    route: string;
    directory: string;
    platform: PlatformType;
    templateType: string;
    middlewarePosition: "before" | "after";
    symbolName: string;
    symbolPath: string;
    symbolPathBasename: string;
    convention: ProjectConvention;
}
export declare class GenerateCmd implements CommandProvider {
    private providersList;
    classNamePipe: ClassNamePipe;
    outputFilePathPipe: OutputFilePathPipe;
    routePipe: RoutePipe;
    srcRenderService: SrcRendererService;
    projectPackageJson: ProjectPackageJson;
    constructor(providersList: ProvidersInfoService);
    $prompt(initialOptions: Partial<GenerateCmdContext>): ({
        type: string;
        name: string;
        message: string;
        default: string | undefined;
        when: () => boolean;
        source: (state: any, keyword: string) => any;
        choices?: undefined;
    } | {
        type: string;
        name: string;
        message: string;
        default: (state: any) => string;
        when: boolean;
        source?: undefined;
        choices?: undefined;
    } | {
        message: string;
        type: string;
        name: string;
        when(state: any): boolean;
        choices: any[];
        default?: undefined;
        source?: undefined;
    } | {
        type: string;
        name: string;
        message: string;
        when(state: any): boolean;
        default: (state: GenerateCmdContext) => string;
        source?: undefined;
        choices?: undefined;
    } | {
        type: string;
        name: string;
        message: string;
        when(state: any): string | true | undefined;
        choices: string[];
        default?: undefined;
        source?: undefined;
    } | {
        type: string;
        name: string;
        message: (state: any) => string;
        when(state: any): boolean;
        source: (state: any, keyword: string) => any;
        default?: undefined;
        choices?: undefined;
    } | {
        type: string;
        name: string;
        message: () => string;
        choices: {
            name: string;
            value: string;
        }[];
        when(state: any): boolean;
        default?: undefined;
        source?: undefined;
    })[];
    $mapContext(ctx: Partial<GenerateCmdContext>): GenerateCmdContext;
    $exec(ctx: GenerateCmdContext): ({
        title: string;
        task: () => Promise<void>;
        skip?: undefined;
    } | {
        title: string;
        skip(): boolean;
        task: () => Promise<void>;
    })[];
    getDirectories(dir: string): string[];
}
