import { type UseStateInitializer, type UseStateSetter } from "../types.js";
/**
 * @remarks \@since 2.5.0
 */
export interface SliderValueOptions {
    /**
     * The min value for the slider.
     *
     * @defaultValue `0`
     */
    min?: number;
    /**
     * The max value for the slider.
     *
     * @defaultValue `100`
     */
    max?: number;
    /**
     * A positive number representing the value to "jump" while incrementing or
     * decrementing the slider's value. This should normally stay as the default
     * value of `1`, but can also be decimal values if needed.
     *
     * @defaultValue `1`
     */
    step?: number;
}
/**
 * @remarks \@since 6.0.0
 */
export interface SliderState {
    value: number;
    setValue: UseStateSetter<number>;
}
/**
 * @remarks \@since 6.0.0
 */
export interface SliderImplementation extends Required<SliderValueOptions>, SliderState {
}
/**
 * @remarks \@since 6.0.0
 */
export interface SliderOptions extends SliderValueOptions {
    /**
     * @defaultValue `(max - min ) / 2`
     */
    defaultValue?: UseStateInitializer<number>;
}
/**
 * @example
 * Simple Example
 * ```tsx
 * import { Form, Slider, useSlider } from "@react-md/core";
 * import type { ReactElement } from "react";
 *
 * function Example(): ReactElement {
 *   const slider = useSlider({
 *     // these are the defaults and can be changed
 *     min: 0,
 *     max: 100,
 *     step: 1,
 *     defaultValue: 50,
 *   });
 *
 *   // if you need access to the current value or manually change the value
 *   // yourself.
 *   const { value, setValue } = slider;
 *
 *   return (
 *     <Form>
 *       <Slider {...slider} aria-label="Volume" />
 *     </Form>
 *   );
 * }
 * ```
 *
 * @see The `Slider` component for additional examples.
 * @remarks
 * \@since 2.5.0
 * \@since 6.0.0 Now returns an object instead of an ordered tuple and only
 * return the `value` and `setValue` instead of all the slider functionality. In
 * addition, the hook only accepts a single object argument.
 */
export declare function useSlider(options?: SliderOptions): SliderImplementation;
