import Editor from '@modules/editor';
import { LineSegments2 } from 'three/examples/jsm/lines/LineSegments2';
import { Object3D } from 'three';
declare const EVENTS: {
    readonly READY: "ready";
    readonly RESIZE: "resize";
    readonly REMOVE: "remove";
    readonly LOAD_START: "load_start";
    readonly LOAD: "load";
    readonly LOAD_FAIL: "load_fail";
    readonly LINE_DISTANCE: "line_distance";
    readonly RENDER: "render";
    readonly OBJECT_CLICK: "object_click";
    readonly POINT_ENTER: "point_enter";
    readonly TRANSFORM_CHANGE: "transform_change";
};
interface TransformChangeEvent {
    type: string;
    target: Object3D | undefined;
}
interface ObjectClickEvent {
    type: string;
    target: Object3D;
}
interface ReadyEvent {
    type: string;
    target: Editor;
}
interface ResizeEvent {
    type: string;
    target: Editor;
}
interface LoadStartEvent {
    type: string;
    target: Editor;
    loadStartData?: any;
}
interface LoadEvent {
    type: string;
    target: Editor;
    id: number | string;
    loadData?: any;
}
interface LoadFailEvent {
    type: string;
    target: Editor;
    msg?: any;
}
interface RemoveEvent {
    type: string;
    target: Editor;
}
interface LineDistanceEvent {
    type: string;
    target: LineSegments2;
    startPointCord: number[];
    endPointCord: number[];
    setLineDistance: (distance: number | 'delete') => void;
}
interface RenderEvent {
    type: string;
    target: Editor;
}
interface PointEnterEvent {
    type: string;
    target: Object3D;
    id: string | number;
}
export interface Events {
    [EVENTS.READY]: ReadyEvent;
    [EVENTS.LOAD_START]: LoadStartEvent;
    [EVENTS.LOAD]: LoadEvent;
    [EVENTS.RESIZE]: ResizeEvent;
    [EVENTS.REMOVE]: RemoveEvent;
    [EVENTS.LOAD_FAIL]: LoadFailEvent;
    [EVENTS.LINE_DISTANCE]: LineDistanceEvent;
    [EVENTS.RENDER]: RenderEvent;
    [EVENTS.OBJECT_CLICK]: ObjectClickEvent;
    [EVENTS.POINT_ENTER]: PointEnterEvent;
    [EVENTS.TRANSFORM_CHANGE]: TransformChangeEvent;
}
export {};
