import type * as Platform from '../platform/platform.js'; import type { EventDescriptor, EventListener, EventPayloadToRestParameters, EventTarget, EventTargetEvent } from './EventTarget.js'; export interface ListenerCallbackTuple { thisObject?: Object; listener: EventListener; disposed?: boolean; } export declare class ObjectWrapper implements EventTarget { listeners?: Map>>; 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 type EventMixinBase = { dispatchDOMEvent?(event: Event): void; } & object; export declare function eventMixin>(base: Base): { new (...args: any[]): { __events: ObjectWrapper; addEventListener(eventType: T, listener: (arg0: EventTargetEvent) => void, thisObject?: Object): EventDescriptor; once(eventType: T): Promise; removeEventListener(eventType: T, listener: (arg0: EventTargetEvent) => void, thisObject?: Object): void; hasEventListeners(eventType: keyof Events): boolean; dispatchEventToListeners(eventType: Platform.TypeScriptUtilities.NoUnion, ...eventData: EventPayloadToRestParameters): void; dispatchDOMEvent?(event: Event): void; }; } & Base;