import { RefObject } from "react"; import { EventDispatcher, XCameraRayIntersection, XIntersection } from "../index.js"; import { Event, Vector3, Quaternion, Object3D, Scene, Mesh, PerspectiveCamera, OrthographicCamera } from "three"; import { RootState, ThreeEvent } from "@react-three/fiber"; import { EventHandlers } from "@react-three/fiber/dist/declarations/src/core/events.js"; export type ForwardEventsFunctions = { press(pointerId: number, event: E, ...pressedElementIds: Array): void; release(pointerId: number, event: E, ...releasedElementIds: Array): void; cancel(pointerId: number, event: E): void; enter(pointerId: number, event: E): void; leave(pointerId: number, event: E): void; move(pointerId: number, event: E): void; wheel(event: E): void; blur(event: E): void; }; export type ComputeIntersections = (event: E, capturedEvents: Map | undefined, filterClipped: boolean, dispatcher: EventDispatcher, I>, targetWorldPosition: Vector3, targetWorldQuaternion: Quaternion) => Array; export declare function useForwardEvents(computeIntersections: ComputeIntersections, isDrag: (down: ReceivedEvent, current: ReceivedEvent) => boolean, onIntersections?: (id: number, intersections: ReadonlyArray) => void, filterIntersections?: (id: number, intersections: Array) => Array, onPointerDownMissed?: (event: ThreeEvent) => void, onPointerUpMissed?: (event: ThreeEvent) => void, onClickMissed?: (event: ThreeEvent) => void, onStartEventCaptures?: (id: number, event: ReceivedEvent) => void, onEndEventCaptures?: (id: number, event: ReceivedEvent) => void, filterClipped?: boolean): ForwardEventsFunctions; export declare function useMeshForwardEvents(camera?: PerspectiveCamera | OrthographicCamera, scene?: Scene, dragDistance?: number, onIntersections?: (id: number, intersections: ReadonlyArray) => void, filterIntersections?: (id: number, intersections: Array) => Array, onPointerDownMissed?: (event: ThreeEvent) => void, onPointerUpMissed?: (event: ThreeEvent) => void, onClickMissed?: (event: ThreeEvent) => void): EventHandlers & { ref: RefObject, import("three").Material | import("three").Material[]>>; }; export declare function useMeshForwardEventsFromStore(store: Partial | (() => Partial), dragDistance?: number, onIntersections?: (id: number, intersections: ReadonlyArray) => void, filterIntersections?: (id: number, intersections: Array) => Array, onPointerDownMissed?: (event: ThreeEvent) => void, onPointerUpMissed?: (event: ThreeEvent) => void, onClickMissed?: (event: ThreeEvent) => void): EventHandlers & { ref: RefObject; };