import { Subject, Observable, Subscription, OperatorFunction } from 'rxjs'; import { ObserverOrNext } from '@craftercms/utils'; import { Message, MessageScope, MessageTopic } from '@craftercms/models'; export declare abstract class Messenger { protected multiCaster$: Subject; protected messages$: Observable; protected targets: Array; protected origins: Array; constructor(); subscribe(observerOrNext: ObserverOrNext): Subscription; subscribe(observerOrNext: ObserverOrNext, ...operators: OperatorFunction[]): Subscription; subscribeTo(topic: MessageTopic, subscriber: (value: Message) => void, scope?: MessageScope, ...operations: any[]): Subscription; addTarget(target: any): void; resetTargets(): void; removeTarget(target: Window): void; addOrigin(origin: string): void; resetOrigins(): void; removeOrigin(origin: string): void; publish(message: Message): void; publish(topic: MessageTopic, data: any, scope: MessageScope): void; sendMessage(message: Message, targetOrigin?: string): void; originAllowed(origin: string): boolean; }