import { WebglCreator } from "./index";
import { Object3D, Vector2, Vector3 } from "three";
import { WebglModel } from "./model";
import { Component } from "../interface/component";
import { DTEvent } from "../common/event-emitter";
import { Meta } from "../interface/meta";
export type WebglEventListener<A, P> = (meta: Meta<WebglCreator>, event: DTEvent<P>, params?: A) => void;
export type WebglEvent = {
    name: string;
    type: string;
    disable: () => void;
    enable: () => void;
    remove: () => void;
};
export type WebglEventCreator = (meta: Meta<WebglCreator>) => WebglEvent;
export type DefinedWebglEvent<P> = (params: P) => WebglEventCreator;
export type WebglEventParams = {
    event: MouseEvent;
    object: Object3D;
    uv: Vector2 | undefined;
    point: Vector3;
    component: Component<WebglModel> | undefined;
    distance: number;
    instanceId: number | undefined;
};
/**
 * TODO: 处理双击事件
 * 定义事件
 * @param name
 * @param listener
 */
export declare function defineWebglEvent<P extends Record<string, any>>(name: string, listener: WebglEventListener<P, WebglEventParams>): DefinedWebglEvent<P>;
