import { Color, Xfo, NumberParameter, GeomItem, Parameter, ZeaPointerEvent, FlatSurfaceMaterial } from '@zeainc/zea-engine';
import BaseLinearMovementHandle from './BaseLinearMovementHandle';
import ParameterValueChange from '../UndoRedo/Changes/ParameterValueChange';
/**
 * Class representing a slider scene widget. There are two parts in this widget, the slider and the handle.<br>
 * The **Handle** is the moving part of the widget, the object you interact with. The **Slider** is the path that the **handle** follows.
 *
 * **Parameters**
 * * **Length(`NumberParameter`):** Specifies the length of the slider.
 * * **HandleRadius(`NumberParameter`):** Specifies the handle radius.
 * * **BarRadius(`NumberParameter`):** Specifies the radius of the slider.
 *
 *
 * @extends BaseLinearMovementHandle
 */
declare class SliderHandle extends BaseLinearMovementHandle {
    param: Parameter<unknown>;
    lengthParam: NumberParameter;
    barRadiusParam: NumberParameter;
    handleRadiusParam: NumberParameter;
    handleMat: FlatSurfaceMaterial;
    handle: GeomItem;
    baseBar: GeomItem;
    topBar: GeomItem;
    handleXfo: Xfo;
    baseBarXfo: Xfo;
    topBarXfo: Xfo;
    change: ParameterValueChange;
    /**
     * Create a slider scene widget.
     *
     * @param name - The name value.
     * @param length - The length value.
     * @param radius - The radius value.
     * @param color - The color value.
     */
    constructor(name?: string, length?: number, radius?: number, color?: Color);
    /**
     * highlight the handle to indicate it is under the mouse.
     */
    highlight(): void;
    /**
     * Removes the highlight from the handle once the mouse moves away.
     */
    unhighlight(): void;
    /**
     * Sets global xfo target parameter.
     *
     * @param param - The parameter that will be modified during manipulation
     */
    setTargetParam(param: Parameter<unknown>): void;
    /**
     *
     *
     * @param value -
     * @private
     */
    __updateSlider(value: number): void;
    /**
     * Handles the initially drag of the handle.
     *
     * @param event - The event param.
     */
    onDragStart(event: ZeaPointerEvent): void;
    /**
     * Handles drag action of the handle.
     *
     * @param event - The event param.
     */
    onDrag(event: ZeaPointerEvent): void;
    /**
     * Handles the end of dragging the handle.
     *
     * @param event - The event param.
     */
    onDragEnd(event: ZeaPointerEvent): void;
    /**
     * Serializes handle item as a JSON object.
     *
     * @param context - The context param.
     * @return {object} The return value.
     */
    toJSON(context: Record<string, any>): Record<string, any>;
    /**
     * Restores handle item from a JSON object.
     *
     * @param json - The json param.
     * @param context - The context param.
     */
    fromJSON(json: Record<string, any>, context: Record<string, any>): void;
}
export default SliderHandle;
export { SliderHandle };
//# sourceMappingURL=SliderHandle.d.ts.map