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; }