import type { Intersection, Event, Object3D } from 'three';
import type { TresScene } from 'src/types';
import type { TresContext } from '../useTresContextProvider';
type CallbackFn = (intersection: Intersection<Object3D<Event>>, event: PointerEvent) => void;
type CallbackFnPointerLeave = (object: Object3D<Event>, event: PointerEvent) => void;
export interface EventProps {
    onClick?: CallbackFn;
    onPointerEnter?: CallbackFn;
    onPointerMove?: CallbackFn;
    onPointerLeave?: CallbackFnPointerLeave;
}
export declare const usePointerEventHandler: ({ scene, contextParts }: {
    scene: TresScene;
    contextParts: Pick<TresContext, 'renderer' | 'camera' | 'raycaster'>;
}) => {
    registerObject: (object: Object3D & EventProps) => void;
    deregisterObject: (object: Object3D) => void;
};
export {};
