export interface IEvent { type: T; target: unknown; defaultPrevented: boolean; } export declare class Event implements IEvent { type: T; target: unknown; defaultPrevented: boolean; constructor(type: T); } export type EventCallback> = (event: T) => void; interface EventTypeDict { [type: string]: Event; } export interface IEventTarget { addEventListener: (type: K, callback: EventCallback) => void; removeEventListener: (type: K, callback: EventCallback) => void; removeAllEventListeners: () => void; dispatchEvent: (event: T[K] & Event) => void; } export declare class EventTarget implements IEventTarget { private eventRegistry?; addEventListener(type: K, callback: EventCallback): void; removeEventListener(type: K, callback: EventCallback): void; removeAllEventListeners(): void; dispatchEvent(event: T[K]): boolean; } export {}; //# sourceMappingURL=events.d.ts.map