import { type PointerInfo } from "../../Events/pointerEvents.js";
import { type Vector3 } from "../../Maths/math.vector.js";
import { type Nullable } from "../../types.js";
/**
 * Event type for drag move events
 */
export type DragEvent = {
    /**
     * Delta between last drag position and current drag position in world space
     */
    delta: Vector3;
    /**
     * Point in world space where the drag intersects the drag plane
     *
     * (if validatedDrag is used, the position of the attached mesh might not equal dragPlanePoint)
     */
    dragPlanePoint: Vector3;
    /**
     * Normal of the current drag plane used during the drag
     */
    dragPlaneNormal: Vector3;
    /**
     * Distance along the drag axis
     */
    dragDistance: number;
    /**
     * Pointer id to use
     */
    pointerId: number;
    /**
     * Pointer info for the event (if any)
     */
    pointerInfo: Nullable<PointerInfo>;
};
/**
 * Event type for drag start and end events
 */
export type DragStartEndEvent = Pick<DragEvent, "dragPlanePoint" | "pointerId" | "pointerInfo">;
