export interface IEventContext { key: string; propagation: boolean; previousValue: any; stopPropagation(): void; } export declare type IEventCallback = (this: IEventContext, ...payload: any[]) => any; export interface IListener { callback: IEventCallback; stack?: Error['stack']; limit: number; hits: number; priority: number; } export interface IListenerConfig { callback: IEventCallback; stack?: Error['stack']; limit?: number; priority?: number; } export declare class Event { key: string; listeners: IListener[]; constructor(key: string); /** * Executes callbacks in sequence * * @returns Last callback's result */ propagate(...payload: any[]): Promise; remove(listener: IListener): void; get(callback: IEventCallback): IListener | undefined; add(input: IListenerConfig): IListener; private sort(); }