import Command, { flags } from './../base';
import { Container, Config } from './../types';
declare type TemplateDefinition = {
    kind: string;
    name: string;
    priority: boolean;
    path: string;
    specialFiles: TemplateSpecialFiles;
};
declare type TemplateSpecialFiles = {
    pjson: boolean;
};
declare type NewOpMetadata = {
    name: string;
    description: string;
    version: string;
};
export default class Init extends Command {
    static description: string;
    static flags: {
        help: import("@oclif/parser/lib/flags").IBooleanFlag<void>;
        kind: flags.IOptionFlag<string | undefined>;
        template: flags.IOptionFlag<string | undefined>;
    };
    static args: {
        name: string;
        description: string;
    }[];
    srcDir: string;
    destDir: string;
    readTemplates: () => Promise<Container<Container<TemplateDefinition>>>;
    selectKind: (kinds: string[], flagKind: string | undefined) => Promise<string>;
    selectTemplateName: (templates: string[], flagTemplate: string | undefined) => Promise<string>;
    selectTemplate: (templates: Container<Container<TemplateDefinition>>, flags: {
        kind?: string;
        template?: string;
    }) => Promise<TemplateDefinition>;
    promptForName: (name: string | undefined, kind: string) => Promise<string>;
    promptForMetadata: (template: TemplateDefinition, nameParam: string) => Promise<NewOpMetadata>;
    customizeSpecialFiles: (template: TemplateDefinition, metadata: NewOpMetadata, targetPath: string) => Promise<void>;
    sendAnalytics: (config: Config, kind: string, metadata: NewOpMetadata, targetPath: string) => void;
    run(): Promise<void>;
}
export {};
