import { type CommandProvider, ProjectPackageJson } from "@tsed/cli-core";
import type { RenderDataContext } from "../../interfaces/RenderDataContext.js";
import { CliTemplatesService } from "../../services/CliTemplatesService.js";
import type { DefineTemplateOptions } from "../../utils/defineTemplate.js";
export interface CreateTemplateCmdContext extends RenderDataContext {
    name: string;
    from?: string | "new";
    override?: string;
    templateId?: string;
    template?: DefineTemplateOptions;
}
export declare class CreateTemplateCommand implements CommandProvider {
    protected projectPackageJson: ProjectPackageJson;
    protected templates: CliTemplatesService;
    $prompt(data: Partial<CreateTemplateCmdContext>): Promise<({
        type: "list";
        name: string;
        message: string;
        default: string;
        when: boolean;
        choices: {
            name: string;
            value: string;
        }[];
        source?: undefined;
    } | {
        type: "autocomplete";
        name: string;
        message: string;
        default: string | undefined;
        when: (ctx: CreateTemplateCmdContext) => boolean;
        source: () => {
            name: string;
            value: string;
        }[];
        choices?: undefined;
    } | {
        type: "confirm";
        name: string;
        message: string;
        when: (ctx: CreateTemplateCmdContext) => boolean;
        default: boolean;
        choices?: undefined;
        source?: undefined;
    } | {
        type: "input";
        name: string;
        message: string;
        default: string | undefined;
        when: boolean;
        choices?: undefined;
        source?: undefined;
    })[]>;
    $mapContext(ctx: Partial<any>): any;
    $exec(ctx: CreateTemplateCmdContext & {
        symbolName: string;
        symbolPath: string;
    }): {
        title: string;
        task: () => Promise<void>;
    }[];
}
