import type * as Platform from '../platform/platform.js'; export interface EventDescriptor { eventTarget: EventTarget; eventType: T; thisObject?: Object; listener: EventListener; } export declare function removeEventListeners(eventList: EventDescriptor[]): void; export type GenericEvents = { [eventName: string]: any; }; export type EventPayloadToRestParameters = Events[T] extends void ? [] : [Events[T]]; export type EventListener = (arg0: EventTargetEvent) => void; export interface EventTarget { addEventListener(eventType: T, listener: EventListener, thisObject?: Object): EventDescriptor; once(eventType: T): Promise; removeEventListener(eventType: T, listener: EventListener, thisObject?: Object): void; hasEventListeners(eventType: keyof Events): boolean; dispatchEventToListeners(eventType: Platform.TypeScriptUtilities.NoUnion, ...[eventData]: EventPayloadToRestParameters): void; } export declare function fireEvent(name: string, detail?: unknown, target?: HTMLElement | Window): void; export interface EventTargetEvent { data: T; }