import { type ChangeEventHandler, type HTMLAttributes, type ReactNode } from "react";
import { type TooltipProps } from "../tooltip/Tooltip.js";
import { type LabelRequiredForA11y } from "../types.js";
import { type SliderValueOptions } from "./useSlider.js";
/**
 * @since 6.0.0
 */
export type SliderTooltipVisibility = "auto" | "hover" | "always";
/**
 * @since 2.5.0
 */
export interface SliderThumbPresentation {
    /**
     * Boolean if the slider should act as a discrete slider which will render a
     * tooltip above the thumb while dragging to visualize the current value for
     * the slider.
     *
     * @defaultValue `false`
     */
    discrete?: boolean;
    /**
     * A function that is used to help with accessibility by creating a better
     * value string if just a number isn't representative enough of your range.
     *
     * Example:
     *
     * ```tsx
     * const [value, controls] = useSlider(0, {
     *   // format to be `$100`, etc
     *   getValueText: value => `$${value}`,
     * });
     *
     * return <Slider baseId="price-slider" label="Price" {...controls} />;
     * ```
     *
     * @defaultValue `() => ""`
     */
    getValueText?(value: number): string;
    /**
     * Set this to `true` if the slider's thumb position should only update when
     * the user has dragged to the next value instead of with the mouse.
     *
     * @see {@link marks}
     * @defaultValue `!!marks`
     */
    disableSmoothDragging?: boolean;
    /**
     * The discrete slider's value tooltip will only become visible when:
     *
     * - `"auto"` - the user is dragging with touch/mouse or focused with a keyboard
     * - `"hover"` - the behavior of `"auto"` plus while hovering the thumb with a mouse
     * - `"always"` - ... always
     *
     * This only applies when the {@link discrete} prop is `true`.
     *
     * @defaultValue `"auto"`
     */
    tooltipVisibility?: SliderTooltipVisibility;
}
/**
 * @internal
 * @since 2.5.0
 * @since 6.0.0 Internal only component.
 */
export interface SliderThumbProps extends Omit<HTMLAttributes<HTMLSpanElement>, "onChange">, Required<SliderValueOptions>, Required<SliderThumbPresentation> {
    id: string;
    name?: string;
    value: number;
    index: 1 | 2;
    active: boolean;
    animate: boolean;
    disabled: boolean;
    vertical: boolean;
    onChange: ChangeEventHandler<HTMLInputElement>;
    tooltipProps?: Partial<TooltipProps>;
    getTooltipProps(value: number, isFirstThumb: boolean): Partial<TooltipProps> | void;
    getTooltipChildren(value: number, isFirstThumb: boolean): ReactNode;
}
/**
 * **Client Component**
 *
 * @internal
 * @since 2.5.0
 * @since 6.0.0 Internal only component.
 */
export declare const SliderThumb: import("react").ForwardRefExoticComponent<LabelRequiredForA11y<SliderThumbProps> & import("react").RefAttributes<HTMLSpanElement>>;
