import * as commander from "commander";
import { HotStaq } from "./HotStaq";
import { HotHTTPServer } from "./HotHTTPServer";
import { HotLogLevel } from "./HotLog";
import { HotCreator } from "./HotCreator";
import { HotDBConnectionInterface } from "./HotDBConnectionInterface";
import { APItoLoad, HotAPI } from "./HotAPI";
/**
 * The CLI that executes HotStaq.
 */
export declare class HotCLI {
    /**
     * The name of this CLI application.
     *
     * Default: hotstaq
     */
    name: string;
    /**
     * The description of this CLI application.
     *
     * Default: hotstaq
     */
    description: string;
    /**
     * The commander program that parses the cli arguments.
     */
    program: commander.Command;
    /**
     * The current HotStaq version.
     */
    VERSION: string;
    /**
     * The path to the package.json file.
     */
    packagePath: string;
    /**
     * The HotStaq processor.
     */
    processor: HotStaq;
    /**
     * The path to the .env file to use.
     */
    envFile: string;
    /**
     * The path to the Hotsite JSON to parse.
     */
    hotsitePath: string;
    /**
     * If set, the global log level to use.
     */
    globalLogLevel: HotLogLevel;
    /**
     * If using the CLI for a creator, you can adjust the settings here.
     */
    creator: HotCreator;
    /**
     * The APIs to load for the API server.
     */
    apis: {
        [name: string]: APItoLoad;
    };
    /**
     * The server to start.
     */
    servers: {
        /**
         * The web server.
         */
        web: HotHTTPServer;
        /**
         * The api server.
         */
        api: HotHTTPServer;
        /**
         * The agent server.
         */
        agent: HotHTTPServer;
    };
    /**
     * The module install action to execute.
     */
    onModuleInstallAction: () => Promise<void>;
    /**
     * The module build action to execute.
     */
    onModuleBuildAction: () => Promise<void>;
    /**
     * The create action to execute.
     */
    onCreateAction: () => Promise<void>;
    /**
     * The run action to execute.
     */
    onRunAction: () => Promise<void>;
    /**
     * The agent action to execute.
     */
    onAgentAction: () => Promise<void>;
    /**
     * The generate action to execute.
     */
    onGenerateAction: () => Promise<void>;
    /**
     * The deploy action to execute.
     */
    onDeployAction: () => Promise<void>;
    /**
     * The build action to execute.
     */
    onBuildAction: () => Promise<void>;
    /**
     * The healthcheck action to execute.
     */
    onHealthcheckAction: () => Promise<void>;
    constructor();
    /**
     * Start the API server.
     */
    startAPIServer(server: HotHTTPServer, loadedAPI: APItoLoad, baseAPIUrl: string, dbinfo: HotDBConnectionInterface, isAPIOnly: boolean): Promise<HotAPI>;
    /**
     * Get a key/value pair from a string.
     */
    getKeyValuePair(str: string): {
        key: string;
        value: string;
    };
    /**
     * Handle any build commands.
     */
    handleBuildCommands(): Promise<commander.Command>;
    /**
     * Handle create commands.
     */
    handleCreateCommands(): Promise<commander.Command>;
    /**
     * Handle module commands.
     */
    handleModuleCommands(): Promise<commander.Command>;
    /**
     * Handle module install commands.
     */
    handleModuleInstallCommands(): Promise<commander.Command>;
    /**
     * Handle module build commands.
     */
    handleModuleBuildCommands(): Promise<commander.Command>;
    /**
     * Load the APIs from the processor.
     */
    loadAPIs(processor: HotStaq): {
        [name: string]: APItoLoad;
    };
    /**
     * Handle run commands.
     *
     * @param cmdName The name of the command to use. Can be:
     * * run
     * * start
     */
    handleRunCommands(cmdName: string): Promise<commander.Command>;
    /**
     * Handle any agent commands.
     */
    handleAgentCommands(): Promise<commander.Command>;
    /**
     * Handle any healthcheck commands.
     */
    handleHealthcheckCommands(): Promise<commander.Command>;
    /**
     * Handle any generate commands.
     */
    handleGenerateCommands(): Promise<commander.Command>;
    /**
     * Handle any deployment commands.
     */
    handleDeployCommands(): Promise<commander.Command>;
    /**
     * Setup the CLI app.
     */
    setup(): Promise<{
        program: commander.Command;
        mainCommand: commander.Command;
        createCmd: commander.Command;
        moduleCmd: commander.Command;
        runCmd: commander.Command;
        generateCmd: commander.Command;
        buildCmd: commander.Command;
        agentCmd: commander.Command;
        healthcheckCmd: commander.Command;
    }>;
    /**
     * Add an existing API thats already been imported.
     */
    addAPI(exportedClassName: string, importedClass: any): void;
    /**
     * Parse the CLI arguments and start the CLI app.
     */
    start(args: string[]): Promise<void>;
}
//# sourceMappingURL=HotCLI.d.ts.map