import { ApplicationRepresentation } from '../domain';
import Base = require('sdk-base');
export declare const defaultWorkerCount: number;
/**
 * Class Master
 */
export declare class ProcessMaster extends Base {
    started: boolean;
    private workers;
    private appRepresentation;
    private procfileReconciler;
    private readonly workersSet;
    constructor(appRepresentation: ApplicationRepresentation);
    /**
     * Get all the workers
     * @return {Array}
     */
    getWorkers(): any[];
    /**
     * Start master
     * @return {Promise<void>}
     */
    start(): Promise<void>;
    /**
     * Stop master, stop all workers
     * @return {Promise<void>}
     */
    stop(): Promise<void>;
    /**
     * Reload all workers
     * @param targetName
     * @return {Promise<void>}
     */
    reload(targetName?: any): Promise<void>;
    /**
     * Realod named workers
     * @param workers
     * @return {Promise<void>}
     */
    private reloadNamedWorkers(workers);
    /**
     * Reload a worker
     * @param worker
     * @return {Promise<any>}
     */
    private reloadWorker(worker);
    private sendWorkerShutdown(worker);
    /**
     * Kill a worker by in a SOP way
     * @param worker
     * @return {Promise<void>}
     */
    killWorkerSop(worker: any): Promise<void>;
    /**
     * Send message to all the workers
     * @param action
     * @param data
     */
    notify(action: any, data: any): void;
    /**
     * Fork a new worker, keep that live
     * @param {ProcessRepresentation} processRepresentation
     * @return {Promise<any>}
     */
    private forkWorker(processRepresentation);
    /**
     * Listen the events of the cluster when the master start
     */
    private listenEvents();
    /**
     * Handing the process term signal
     * @param sig
     */
    onProcessTerm(sig: any): void;
    /**
     * Handing the process message
     * @param message
     */
    onProcessMessage(message: any): void;
    onClusterFork(worker: any): void;
    onWorkerDie(worker: any, code: any, signal: any): void;
}
declare const _default: (appRepresentation: ApplicationRepresentation, done: any) => void;
export default _default;
