/**
 * 接受monitor和client的request/notify，向monitor发送request/notify，
 * master不会向client发出request/notify,只会针对client的request进行response
 */
/// <reference types="node" />
import { Socket } from 'socket.io';
import { EventEmitter } from 'events';
import { IAgentClient, IMasterAgentOpts, IObject, ISocketMsg } from '..';
import { ConsoleService } from '../consoleService';
export declare class MasterAgent extends EventEmitter {
    consoleService: ConsoleService;
    port: number;
    timeout: number;
    sockets: {
        [key: string]: Socket;
    };
    servers: {
        [key: string]: IAgentClient;
    };
    constructor(consoleService: ConsoleService, opts: IMasterAgentOpts);
    start(): Promise<void>;
    set(moduleId: string, value: IObject): void;
    get(moduleId: string): any;
    getServerByType(type: string): IAgentClient[];
    /**
     * 发送消息到指定monitor
     * @param id
     * @param msg
     */
    sendMsgById(id: string, msg: ISocketMsg): Promise<IObject>;
    /**
     * 发送消息到某类monitor
     * @param type
     * @param msg
     */
    sendMsgByServerType(type: string, msg: ISocketMsg): Promise<IObject>;
    /**
     * 发送消息到所有monitor
     * @param msg
     */
    sendMsg2AllServer(msg: ISocketMsg): Promise<IObject>;
    /**
     * 绑定事件
     * @param socket
     */
    private socketEvents;
    private addServer;
    private removeServer;
    /**
     * 批量发送消息
     * @param msg
     * @param servers
     */
    private toServers;
    private doSend;
}
