import { Topic } from "./Topic";
export declare enum BroadcastTopicScopes {
    localUi = "localUi",
    localWorker = "localWorker",
    localAll = "localAll",
    globalUi = "globalUi",
    globalWorker = "globalWorker",
    globalAll = "globalAll"
}
export interface BroadcastTopic<TMessage> extends Topic<TMessage> {
    scope: BroadcastTopicScopes;
}
export interface BroadcastInvokeTopic<TMessage, TReturnValue> extends Topic<TMessage> {
    scope: BroadcastTopicScopes;
}
export interface BroadcastMessage<TMessage> extends BroadcastTopic<TMessage> {
    message: TMessage;
}
export interface BroadcastInvokeMessage<TMessage, TReturnValue> extends BroadcastInvokeTopic<TMessage, TReturnValue> {
    messageId: string;
    message: TMessage;
    type: "request" | "response";
    error?: string;
    response?: TReturnValue;
}
