import Socket from "../Socket";
import { ExternalBrokerClient } from "./ExternalBrokerClient";
import ChannelExchange from "../ChannelExchange";
import Server from "../Server";
export default class InternalBroker {
    externalBrokerClient: ExternalBrokerClient;
    readonly exchange: ChannelExchange;
    private readonly exchangeChannels;
    private readonly socketSubscriptions;
    private readonly _server;
    private readonly _publishToPublisher;
    constructor(server: Server<any, any>);
    getSubscriptions(): string[];
    processExternalPublish(channel: string, data: any, complexDataType: boolean): void;
    private _exchangeSubscribe;
    private _exchangeUnsubscribe;
    socketSubscribe(socket: Socket, channel: string): void;
    socketUnsubscribe(socket: Socket, channel: string): void;
    publish(channel: string, data: any, processComplexTypes?: boolean, publisher?: Socket): void;
    _processPublish(channel: string, data: any, processComplexTypes: boolean, external: boolean, publisher?: Socket): void;
    /**
     * [Use this method only when you know what you do.]
     */
    terminate(): void;
}
