import { Topic, TopicSettings, IMessageBusSubscriptionHandler, IMessageBusTopicSubscription, IMessageBusTopicPublishSubscriber, IMessageBusTopicPublication, TopicCreatedFunc } from "../../models";
export declare class SubscriptionHandler implements IMessageBusSubscriptionHandler {
    private unSubcribeHandlers;
    constructor();
    /**
     * Unsubscribe to the related subscription(s)
     * and/or any subscriptions added using add method)
     * */
    unsubscribe: () => void;
    /**
     * Adds another unsubscribe handler, all will be unsubscribed to if calling unsubscribe
     * @param unSubscriptionHandler
     */
    add: (unSubscriptionHandler: IMessageBusSubscriptionHandler) => void;
}
export declare class MessageBusExposeOnlySubscription<T> implements IMessageBusTopicSubscription<T> {
    subscribe: (fn: (obj: T) => void) => IMessageBusSubscriptionHandler;
    constructor(publishSubscriber: IMessageBusTopicPublishSubscriber<T>);
}
export declare class MessageBusExposeOnlyPublication<T> implements IMessageBusTopicPublication<T> {
    publish: (msg: T) => void;
    constructor(publishSubscriber: IMessageBusTopicPublishSubscriber<T>);
}
export declare class MessageBusTopicMediator<T> implements IMessageBusTopicPublishSubscriber<T> {
    private _topic;
    constructor(topic: Topic<T>, settings?: TopicSettings, onTopicCreated?: TopicCreatedFunc<T>);
    publish: (msg: T) => void;
    subscribe: (fn: (obj: T) => void) => IMessageBusSubscriptionHandler;
    clearMessageCache: () => number;
}
