import 'reflect-metadata'; declare type IUnknown = any; export declare type IEventType = new () => T; export declare type IEventData = { [P in keyof T]: T[P]; }; export interface IEventHandler { id: number; callback: IEventCallback; } declare type IEventCallback = (data: T) => void | Promise; export interface IEventId { readonly __id: number; readonly __type: IEventType; } export declare class Events { private fLastId; private fHandlers; on(type: IEventType, callback: IEventCallback): IEventId; waitFor(type: IEventType, timeout?: number | null): Promise; off(eventId: IEventId): number; trigger(type: IEventType, data?: IEventData): Promise; private objectToClass; } export {};