export declare type EventCallbackData = unknown; export interface EventCallback { (data: EventCallbackData, event: string): void; } interface EventSubscriber { callback: EventCallback; key?: string; } interface EventSubscribers { [key: string]: EventSubscriber[]; } /** * Events class */ export declare class Events { protected readonly _subscribers: EventSubscribers; /** * Subscribe to event * * @param event Event name * @param callback Callback function * @param key Optional unique key for unsubscribe. If key is set, any other event listener with same key will be removed */ subscribe(event: string, callback: EventCallback, key?: string): void; /** * Unsubscribe from event * * @param event Event name * @param value Callback or key */ unsubscribe(event: string, value: EventCallback | string): void; /** * Check if event has listeners * * @param event Event name */ hasListeners(event: string): boolean; /** * Fire event * * @param event Event name * @param data Payload * @param delay True if event should fire on next tick */ fire(event: string, data: EventCallbackData, delay?: boolean): void; /** * Fire event * * @param event * @param data */ _fire(event: string, data: EventCallbackData): void; } export {}; //# sourceMappingURL=events.d.ts.map