import { IPostal, ICallback, IConfiguration, IChannelDefinition, ISubscriptionDefinition, IEnvelope } from "../interfaces/postal";
export declare class PostalImpl implements IPostal {
    configuration: IConfiguration;
    subscriptions: any;
    wireTaps: ICallback<any>[];
    addWireTap(callback: ICallback<any>): () => void;
    channel<T>(name?: string): IChannelDefinition<T>;
    getSubscribersFor(): ISubscriptionDefinition<any>[];
    getSubscribersFor(options: {
        channel?: string;
        topic?: string;
        context?: any;
    }): ISubscriptionDefinition<any>[];
    getSubscribersFor(predicateFn: (sub: ISubscriptionDefinition<any>) => boolean): ISubscriptionDefinition<any>[];
    publish(envelope: IEnvelope<any>): void;
    reset(): void;
    subscribe(options: {
        channel?: string;
        topic: string;
        callback: ICallback<any>;
    }): ISubscriptionDefinition<any>;
    unsubscribe(sub: ISubscriptionDefinition<any>): void;
    unsubscribeFor(): void;
    unsubscribeFor(options: {
        channel?: string;
        topic?: string;
        context?: any;
    }): void;
}
