import { ProcessRepresentation } from '../domain';
/**
 * Class ScalableMaster
 * For kind of the process, that's field scale great than 1
 */
export declare class ScalableMaster {
    started: boolean;
    private workers;
    private processRepresentation;
    private get workersSet();
    constructor(processRepresentation: ProcessRepresentation);
    /**
     * 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;
    /**
     * Reload a worker
     * @param worker
     * @return {Promise<any>}
     */
    private reloadWorker;
    private sendShutdownToWorker;
    /**
     * Kill a worker by a SOP
     * @param worker
     * @return {Promise<void>}
     */
    killWorkerSop(worker: any): Promise<void>;
    /**
     * Send message to all workers
     * @param action
     * @param data
     */
    notify(action: any, data: any): void;
    /**
     * Fork a new worker, keep it live
     * @param {ProcessRepresentation} processRepresentation
     * @return {Promise<any>}
     */
    private forkWorker;
    /**
     * Listen the events of the cluster when the master start
     */
    private listenEvents;
    /**
     * Handing the process message
     * @param message
     */
    onProcessMessage(message: any): void;
    onClusterFork(worker: any): void;
    onWorkerDie(worker: any, code: any, signal: any): void;
}
