import { type RefObject } from "react";
import { type DraggableEventHandlers, type DraggableImplementation, type DraggableMouseEventHandlers, type DraggableTouchEventHandlers } from "../draggable/useDraggable.js";
import { type RenameKeysWithPrefix } from "../types.js";
/**
 * @since 6.0.0
 * @internal
 */
interface JumpOptions {
    min: number;
    max: number;
    step: number;
    jump: number | undefined;
}
/**
 * @since 6.0.0
 * @internal
 */
export declare const getJumpValue: (options: JumpOptions) => number;
/**
 * @since 6.0.0
 * @internal
 */
type RequiredThumbProps = Pick<DraggableImplementation<HTMLElement>, "dragging" | keyof DraggableMouseEventHandlers<HTMLElement> | keyof DraggableTouchEventHandlers<HTMLElement>> & {
    ref: RefObject<HTMLSpanElement>;
};
/**
 * @since 6.0.0
 * @internal
 */
export type ClosestThumbEventHandlersOptions = RenameKeysWithPrefix<RequiredThumbProps, "thumb1"> & RenameKeysWithPrefix<RequiredThumbProps, "thumb2"> & {
    vertical: boolean;
    isRangeSlider: boolean;
};
/**
 * NOTE: I do not need the mousemove events for this one to work.
 *
 * @since 6.0.0
 * @internal
 */
export declare const getClosestThumbEventHandlers: (options: ClosestThumbEventHandlersOptions) => DraggableEventHandlers<HTMLElement>;
/**
 * @internal
 * @since 6.0.0
 */
export declare function getThumbOffset(offset: number | undefined, fallback: number): string | undefined;
/**
 * @since 6.0.0
 * @internal
 */
export interface ThumbOffsetsOptions {
    min: number;
    max: number;
    thumb1Value: number;
    thumb1Dragging: boolean;
    thumb1DragPercentage: number;
    thumb2Value: number;
    thumb2Dragging: boolean;
    thumb2DragPercentage: number;
    isRangeSlider: boolean;
}
/**
 * @since 6.0.0
 * @internal
 */
interface ThumbOffsets {
    "--rmd-slider-offset-1"?: string;
    "--rmd-slider-offset-2"?: string;
}
/**
 * @since 6.0.0
 * @internal
 */
export declare const getThumbOffsets: (options: ThumbOffsetsOptions) => ThumbOffsets;
export {};
