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;
    uid: number;
}
export interface LynxCrossThreadEvent<T = {
    [key: string]: string | number | undefined | null;
}> {
    type: string;
    timestamp: number;
    target: LynxCrossThreadEventTarget;
    currentTarget: LynxCrossThreadEventTarget | null;
    detail: T;
    [key: string]: string | number | undefined | null | {};
}
export interface MainThreadScriptEvent<T = {
    [key: string]: string | number | undefined | null;
}> extends LynxCrossThreadEvent<T> {
    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;
};
/**
 * event passed by the GlobalEventEmitter(`sendGlobalEvent()`)
 */
export type GlobalExposureEvent = LynxCrossThreadEvent<ExposureEventDetail> & ExposureEventDetail;
export type MinimalRawEventObject = {
    type: string;
    target: EventTarget | null;
    currentTarget: EventTarget | null;
    detail?: Cloneable;
    isTrusted: boolean;
    timeStamp: number;
    propertyName?: string;
    animationName?: string;
    touches?: unknown[];
    targetTouches?: unknown[];
    changedTouches?: unknown[];
};
