export interface MuJoCoDialControlsProps { /** Node key for dial control registration */ nodeKey: string; /** Callback when ctrl values change (used for auto-unpause) */ onCtrlChange?: () => void; } /** * Isolated component for MuJoCo dial controls. * * This component exists to isolate re-renders from dial control state changes. * By keeping dial control logic in a separate component, state updates from * `useSceneStore`, `useDialControls`, etc. won't trigger re-renders in the * parent MuJoCoModel and its complex children (Bodies, Skin, Flex, etc.). * * Must be rendered inside MuJoCoProvider to access sim/model context. * * ## Data Flow * * Panel interaction: * 1. User drags slider → dialControlsStore updated immediately (smooth UI) * 2. onChange callback fires: * - sim.ctrl.set() called immediately (physics response) * - sceneStore update debounced (avoid re-render storms) * * External updates (from sceneStore): * - Synced to dialControlsStore via effect * - Panel automatically reflects new values * * ## Performance * * The debounce pattern (wait: 150ms, maxWait: 500ms) ensures: * - Immediate visual feedback in the slider * - Immediate physics response * - Batched sceneStore updates to minimize re-renders */ export declare function MuJoCoDialControls({ nodeKey, onCtrlChange, }: MuJoCoDialControlsProps): any;