import type { Cloneable } from './Cloneable.js'; export type LynxEventType = 'bindEvent' | 'catchEvent' | 'capture-bind' | 'capture-catch'; export interface LynxCrossThreadEventTarget { dataset: { [key: string]: Cloneable; }; id: string | null; uniqueId: number; } export interface LynxCrossThreadEvent { type: string; timestamp: number; target: LynxCrossThreadEventTarget; currentTarget: LynxCrossThreadEventTarget | null; detail: T; [key: string]: string | number | undefined | null | {}; } export interface MainThreadScriptEvent extends LynxCrossThreadEvent { target: LynxCrossThreadEventTarget & { elementRefptr: unknown; }; currentTarget: (LynxCrossThreadEventTarget & { elementRefptr: unknown; }) | null; } export type ExposureEventDetail = { 'exposure-id': string; 'exposure-scene': string; exposureID: string; exposureScene: string; 'unique-id': number; }; export type ExposureEvent = { detail: ExposureEventDetail; }; export type ExposureWorkerEvent = LynxCrossThreadEvent & ExposureEventDetail; export type MinimalRawEventObject = { type: string; target: Pick | null; currentTarget: Pick | null; detail?: Cloneable; isTrusted: boolean; timeStamp: number; propertyName?: string; animationName?: string; touches?: unknown[]; targetTouches?: unknown[]; changedTouches?: unknown[]; };