import { BroadcastTopic, BroadcastInvokeTopic, Future } from "../models";
/**
 *Broadcast between render, worker thread and windows, tabs
 * @class MessageBus
 */
export declare class Broadcast {
    private static _subscribers;
    private static _channel;
    private static _initialized;
    private static _disableSync;
    private static _invokeRequests;
    private static _invokeHandlers;
    /**
    * Broadcasts a message on the topic
    */
    static publish<TMessage>(topic: BroadcastTopic<TMessage>, message: TMessage): void;
    static invoke<TMessage, TReturnValue>(topic: BroadcastInvokeTopic<TMessage, TReturnValue>, data: TMessage): Future<TReturnValue>;
    static invokeHandler<TMessage, TReturnValue>(topic: BroadcastInvokeTopic<TMessage, TReturnValue>, fn: (message: TMessage, messageId?: string) => Future<TReturnValue>): void;
    /**
    * Subscribes to the specified Topic and triggers function when a message is published
    */
    static subscribe<TMessage>(topic: BroadcastTopic<TMessage>, fn: (message: TMessage) => void): void;
    /**
    * Unsubscribes from the specified Topic
    */
    static unsubscribe<TMessage>(topic: BroadcastTopic<TMessage>, fn: (message: TMessage) => void): void;
    /**
    * Creates a topic if it dosent exists
    * @param topic
    * @param settings
    * @returns true/false created
    */
    private static ensureTopic;
    private static ensureInitialized;
    private static onMessage;
    private static get channel();
}
