import { ComplexHandler } from './ComplexHandler';
import Base = require('sdk-base');
import { State } from '../const';
import { ApplicationRepresentation } from '../domain';
import { DaemonIntrospection } from './DaemonIntrospection';
/**
 * Class Daemon
 */
export declare class Daemon extends Base {
    private messengerServer;
    private monitor;
    private introspection;
    state: State;
    apps: Map<any, ComplexHandler>;
    constructor();
    /**
     * Start Daemon
     * @return {Promise<any>}
     */
    start(): Promise<{}>;
    /**
     * Handing all passive exit events, such as process signal, uncaughtException
     */
    handleExit(): void;
    /**
     * Start an application
     *
     * @param {ApplicationRepresentation} applicationRepresentation
     * @returns {Promise<ComplexHandler>}
     */
    startApp(applicationRepresentation: ApplicationRepresentation): Promise<ComplexHandler>;
    /**
     * Reload an application
     * @param appName
     * @param processName
     * @return {Promise<ComplexHandler>}
     */
    reloadApp(appName: any, processName?: any): Promise<ComplexHandler>;
    /**
     * stop an application
     * @param appName
     * @return {Promise<ComplexHandler>}
     */
    stopApp(appName: any): Promise<ComplexHandler>;
    /**
     * stop all the applications
     * @return {Promise<void>}
     */
    stopAllApps(): Promise<void>;
    /**
     * stop an application
     * @return {Promise<void>}
     */
    stop(): Promise<void>;
    /**
     * Start the monitor
     * @return {Promise<void>}
     */
    private startMonitor();
    /**
     * Stop the monitor
     * @return {Promise<void>}
     */
    private stopMonitor();
    /**
     * Handle daemon's command invocations
     * @param message
     * @param reply
     */
    handleCommand(message: any, reply: any): Promise<void>;
    getIntrospection(): DaemonIntrospection;
}
