/** * An `EventTarget` subclass with typed event maps. */ export declare class TypedEventTarget extends EventTarget { /** * Phantom property that carries the event map type on instances. */ readonly __eventMap?: eventMap; } /** * Interface surface for {@link TypedEventTarget} with typed listener overloads. */ export interface TypedEventTarget { /** * Adds a listener for a typed event name from the event map. * * @param type Event name to listen for. * @param listener Listener to invoke when the event fires. * @param options Listener registration options. */ addEventListener>(type: type, listener: TypedEventListener[type], options?: AddEventListenerOptions): void; /** * Adds a listener using the standard untyped `EventTarget` signature. * * @param type Event name to listen for. * @param listener Listener to invoke when the event fires. * @param options Listener registration options. */ addEventListener(type: string, listener: EventListenerOrEventListenerObject | null, options?: boolean | AddEventListenerOptions): void; /** * Removes a listener for a typed event name from the event map. * * @param type Event name to stop listening for. * @param listener Previously registered listener. * @param options Listener removal options. */ removeEventListener>(type: type, listener: TypedEventListener[type], options?: EventListenerOptions): void; /** * Removes a listener using the standard untyped `EventTarget` signature. * * @param type Event name to stop listening for. * @param listener Previously registered listener. * @param options Listener removal options. */ removeEventListener(type: string, listener: EventListenerOrEventListenerObject | null, options?: EventListenerOptions): void; } type TypedEventListener = { [key in keyof eventMap]: (event: eventMap[key]) => void; }; export {};