import { Logger } from "log4js";
import { Arguments } from "../parser/arguments";
import { Field } from "./field/field";
export interface CommandConstructor {
    new (workspace: string, args: string[]): Command;
}
export declare abstract class Command {
    readonly topCommand: string;
    readonly cacheKeyWorkspace: string;
    params: string[];
    help: boolean;
    supportCache: boolean;
    workspace: string;
    rootProjectName: string;
    args?: Arguments;
    logger?: Logger;
    protected constructor(workspace: string, params: string[]);
    init(): Promise<void>;
    afterParse(): Promise<void>;
    initLogger(): Promise<void>;
    putToCache(): Promise<void>;
    parseParams(): Promise<void>;
    validate(): Promise<void>;
    abstract run(): Promise<void>;
    handle(): Promise<void>;
    getHelpMessage(): Promise<string[]>;
    printHelp(): Promise<void>;
    readonly name: string;
    readonly fields: Field[];
    readonly description: string;
    readonly alias: string[];
    static getCommandConstructor(commandName: string): CommandConstructor;
}
