/// <reference types="node" />
import { ForceReplyFn, MessagePackage } from '../domain';
import { MessengerServer } from 'pandora-messenger';
import { RouteTable } from './RouteTable';
import { EventEmitter } from 'events';
/**
 * IPC-Hub
 */
export declare class HubServer extends EventEmitter {
    protected messengerServer: MessengerServer;
    protected routeTable: RouteTable;
    /**
     * Count of pending reply transactions
     * @type {number}
     */
    pendingReplyCount: number;
    /**
     * Start Hub
     * @return {Promise<void>}
     */
    start(): Promise<void>;
    /**
     * Handle message from clients
     * @param {MessagePackage} message
     * @param {ForceReplyFn} reply
     */
    protected handleMessageIn(message: MessagePackage, reply?: ForceReplyFn): void;
    /**
     * Handle kind of message as {remote: {}, broadcast: false}
     * @param clients
     * @param message
     * @param reply
     */
    protected balanceToClients(clients: any, message: any, reply: any): void;
    /**
     * Handle kind of message as {remote: {}, broadcast: true}
     * @param clients
     * @param message
     * @param reply
     */
    protected broadcastToClients(clients: any, message: any, reply: any): void;
    /**
     * Start listen on this.messengerServer
     */
    protected startListen(): void;
    /**
     * Stop listen on this.messengerServer
     */
    protected stopListen(): void;
    /**
     * Stop Hub
     * @return {Promise<void>}
     */
    stop(): Promise<void>;
    getMessengerServer(): MessengerServer;
}
