import { ICommand } from "./i-command";
import { ICommandOption } from "./i-command-option";
/**
 * A command contains a command line command
 */
export declare abstract class CommandBase implements ICommand {
    /**
     * The description for the command
     * @type {string}
     */
    readonly abstract description: string;
    /**
     * All contents of a command beside its' short name
     * @type {string}
     */
    readonly abstract command: string | undefined;
    /**
     * The name of the command (such as 'create')
     * @type {string}
     */
    readonly abstract shortName: string;
    /**
     * All of the options that can be given to the command
     * @type {ICommandOption[]}
     */
    readonly abstract options: ICommandOption[];
    /**
     * Invoked when the action is triggered from the command line
     * @type {...*[]} args
     */
    abstract onCommand(...args: any[]): Promise<void>;
    /**
     * Prepares the command
     */
    prepare(): void;
    /**
     * Invoked when a command happens
     * @param {...*[]} rest
     */
    private beforeCommand(...rest);
    /**
     * Formats a command option
     * @param {string} longOption
     * @param {string} shortOption
     * @returns {string}
     */
    private formatCommandOption({longOption, shortOption});
}
