import { type GlobeController } from './context';
export type GlobeDragEvent = {
    type: 'start' | 'move' | 'end';
    controller: GlobeController;
};
export type DragOptions = {
    disabled?: boolean;
    duration?: number;
    /**
     * When true, drag is constrained to rotation around the polar (vertical)
     * axis only — i.e. longitude changes freely but the camera's tilt
     * (latitude / phi) stays pinned at whatever value the root's `rotation`
     * prop was initialised with. Useful for "earth-spinning-at-an-angle"
     * presentations where the inclination should not change.
     */
    lockTilt?: boolean;
    /**
     * Drag rotation mode:
     * - `linear` (default): direct pixel-to-Euler mapping (Δx → lambda,
     *   Δy → phi, gamma fixed at 0). Rotation is constrained to two axes;
     *   no roll. The dragged point does not track the cursor exactly.
     * - `versor`: quaternion-based rotation so that the dragged point
     *   follows the cursor exactly. May induce roll (gamma).
     */
    mode?: 'linear' | 'versor';
    /**
     * Degrees of rotation per pixel of drag, in linear mode. Default 0.25.
     */
    sensitivity?: number;
    onUpdate?: (event: GlobeDragEvent) => void;
};
/**
 * Allows user to drag globe.
 */
export declare const useDrag: (controller?: GlobeController | null, options?: DragOptions) => void;
//# sourceMappingURL=useDrag.d.ts.map