import { MiddlewareChain } from './middlewareChain';
import { Constructable, EventSubscriptionCallback, EventCallbacksSet, IMiddleware } from './interfaces';
export declare class Receiver<T = {}> {
    middlewareChain: MiddlewareChain<IMiddleware<T>, T>;
    subscriptions: Map<Constructable<T>, EventCallbacksSet<T>>;
    globalSubscriptions: EventCallbacksSet<T>;
    on<T1 extends T>(eventType: Constructable<T1>, callback: EventSubscriptionCallback<T1>): void;
    onAny(callback: EventSubscriptionCallback<T>): void;
    trigger(event: T): Promise<void>;
    off<T1 extends T>(eventType: Constructable<T1>, callback?: EventSubscriptionCallback<T1>): void;
    pushMiddleware(middleware: IMiddleware<T>): void;
    unshiftMiddleware(middleware: IMiddleware<T>): void;
}
