import * as THREE from 'three'; type ForceHandler = () => void; type CancelFunction = () => void; /** * Parameters for applying a force to a body in the simulation. * The force vector is computed as (pullPos - anchorPos) * scale. */ interface ForceApplicationParams { /** * Target position in world coordinates (Three.js coordinate system). * The force will point from anchorPos towards this position. * This acts like a "pull point" - the body is pulled towards this location. */ pullPos: THREE.Vector3; /** * Point on the body where the force is applied, in world coordinates (Three.js). * If not specified, defaults to the body's center of mass. * This determines both the force direction (from anchor to target) and * the torque generated (if anchor is offset from center of mass). */ anchorPos?: THREE.Vector3; /** * Scaling factor for the force magnitude. * The raw force vector (pullPos - anchorPos) is multiplied by this value. * Default is typically 1.0. Higher values create stronger forces. * Units: Force will be in Newtons if positions are in meters. */ scale?: number; /** * MuJoCo body ID to apply the force to. * Must be a valid body index (0 to model.nbody - 1). * Body 0 is typically the world body and shouldn't receive forces. */ bodyId: number; } export declare function useForceManager(): [ (handler: ForceHandler) => CancelFunction, () => void, (params: ForceApplicationParams) => void ]; export {};