import { SliderOptions } from './slider.types';
/**
* Headless slider/range controller. Supports a single thumb or a two-thumb
* range (inferred from the number of `[data-c42-slider-thumb]` elements),
* full keyboard control, and pointer dragging. It manages ARIA `slider`
* semantics and exposes thumb positions as `--c42-slider-start-percent` /
* `--c42-slider-end-percent` custom properties so CSS can position thumbs and
* the filled range. It applies no visual styles itself.
*
* Markup (single):
* ```html
*
* ```
*
* Markup (range): add a second thumb with `data-thumb="start"` / `"end"`.
*/
export declare class Slider {
private readonly root;
private readonly track;
private readonly thumbs;
private readonly isRange;
private readonly min;
private readonly max;
private readonly step;
private readonly orientation;
private values;
private activeThumb;
private cleanups;
constructor(root: HTMLElement, options?: SliderOptions);
private initialValues;
private init;
private snap;
private percent;
private render;
private emit;
private setThumbValue;
private onKeydown;
private valueFromPointer;
private nearestThumb;
private readonly onPointerMove;
private readonly onPointerUp;
private onTrackPointerDown;
/** Programmatically set the value (single number or `[start, end]`). */
setValue(value: number | [number, number]): void;
/** Current value: a number for single, `[start, end]` for range. */
getValue(): number | [number, number];
/** Subscribe to a DOM event on the root element. Returns an unsubscribe fn. */
on(event: string, handler: (event: E) => void): () => void;
destroy(): void;
}