import EventEmitter from "emitix";
import { ComplexTypesOption } from "ziron-engine";
import { PublisherOption } from "./Options";
type PublishEmitter = EventEmitter<{
    [key: string]: [any, boolean, boolean];
}>;
export default class ChannelExchange {
    readonly subscriptions: ReadonlySet<string>;
    subscribe: (channel: string) => void;
    unsubscribe: (channel: string) => void;
    publish: (channel: string, data: any, options?: ComplexTypesOption & PublisherOption) => void;
    private readonly _publishEmitter;
    readonly oncePublish: PublishEmitter['once'];
    readonly onPublish: PublishEmitter['on'];
    readonly offPublish: PublishEmitter['off'];
    constructor(connector: {
        subscriptions: ReadonlySet<string>;
        subscribe: (channel: string) => void;
        unsubscribe: (channel: string) => void;
        publish: (channel: string, data: any, options?: ComplexTypesOption & PublisherOption) => void;
    });
}
export {};
