import type * as React from 'react'; /** @internal Options for {@link useChannelSlider}. */ export interface UseChannelSliderOptions { /** Published as `data-channel`, and the name reported if the part is rendered outside a `ColorPicker`. */ channel: 'hue' | 'alpha'; /** Name of the calling part, for the context error message. */ consumerName: string; /** Top of the range as ARIA reports it; the bottom is always 0. */ max: number; /** * Highest value actually reachable, when that is not `max`; hue needs it since 360 is 0. * @default options.max */ limit?: number | undefined; /** Current position on that range. */ value: number; orientation: 'horizontal' | 'vertical'; /** Accessible name used when the consumer supplies none. */ defaultLabel: string; /** Builds `aria-valuetext` — the number alone never conveys which colour resulted. */ valueText: (value: number) => string; /** Receives an already clamped and step-snapped value. */ onChange: (value: number) => void; } type ChannelSliderElementProps = React.ComponentPropsWithoutRef<'div'> & Record<`data-${string}`, string | number | undefined>; /** @internal What {@link useChannelSlider} hands back for the part to assemble. */ export interface ChannelSlider { /** ARIA, `data-*` and `tabIndex`. Spread **before** the consumer's props so every one of them stays overridable. */ props: ChannelSliderElementProps; /** Compose onto the element's `onKeyDown`. */ onKeyDown: (event: React.KeyboardEvent) => void; /** Compose onto the element's `onPointerDown`. */ onPointerDown: (event: React.PointerEvent) => void; /** Merge **before** the consumer's `style`. */ style: React.CSSProperties; dragging: boolean; } /** @internal Rounds to two decimals so a fractional `step` doesn't leak float noise into the DOM. */ export declare function round2(value: number): number; /** @internal Rounds a raw channel value onto the `step` grid, with float-drift correction, and clamps into `0...max`. */ export declare function snapChannel(raw: number, step: number, max: number): number; /** @internal `step: 0` means continuous under the pointer, not that the keyboard does nothing; arrows fall back to one unit. */ export declare function arrowStep(step: number): number; /** * Shared behavior for `ColorPickerHueSlider` and `ColorPickerAlphaSlider`: a linear `role="slider"` track with pointer drag, click-to-seek, and full keyboard support. * @internal */ export declare function useChannelSlider(options: UseChannelSliderOptions): ChannelSlider; export {};