1import * as React from "react";
2import { AbstractPureComponent2, Intent } from "../../common";
3import { IntentProps, Props } from "../../common/props";
4export interface ISliderBaseProps extends Props, IntentProps {
5    /**
6     * Whether the slider is non-interactive.
7     *
8     * @default false
9     */
10    disabled?: boolean;
11    /**
12     * Increment between successive labels. Must be greater than zero.
13     *
14     * @default inferred (if labelStepSize is undefined)
15     */
16    labelStepSize?: number;
17    /**
18     * Array of specific values for the label placement. This prop is mutually exclusive with
19     * `labelStepSize`.
20     */
21    labelValues?: number[];
22    /**
23     * Number of decimal places to use when rendering label value. Default value is the number of
24     * decimals used in the `stepSize` prop. This prop has _no effect_ if you supply a custom
25     * `labelRenderer` callback.
26     *
27     * @default inferred from stepSize
28     */
29    labelPrecision?: number;
30    /**
31     * Maximum value of the slider.
32     *
33     * @default 10
34     */
35    max?: number;
36    /**
37     * Minimum value of the slider.
38     *
39     * @default 0
40     */
41    min?: number;
42    /**
43     * Whether a solid bar should be rendered on the track between current and initial values,
44     * or between handles for `RangeSlider`.
45     *
46     * @default true
47     */
48    showTrackFill?: boolean;
49    /**
50     * Increment between successive values; amount by which the handle moves. Must be greater than zero.
51     *
52     * @default 1
53     */
54    stepSize?: number;
55    /**
56     * Callback to render a single label. Useful for formatting numbers as currency or percentages.
57     * If `true`, labels will use number value formatted to `labelPrecision` decimal places.
58     * If `false`, labels will not be shown.
59     *
60     * The callback is provided a numeric value and optional rendering options, which include:
61     * - isHandleTooltip: whether this label is being rendered within a handle tooltip
62     *
63     * @default true
64     */
65    labelRenderer?: boolean | ((value: number, opts?: {
66        isHandleTooltip: boolean;
67    }) => string | JSX.Element);
68    /**
69     * Whether to show the slider in a vertical orientation.
70     *
71     * @default false
72     */
73    vertical?: boolean;
74}
75export declare type MultiSliderProps = IMultiSliderProps;
76/** @deprecated use MultiSliderProps */
77export interface IMultiSliderProps extends ISliderBaseProps {
78    /** Default intent of a track segment, used only if no handle specifies `intentBefore/After`. */
79    defaultTrackIntent?: Intent;
80    /** Callback invoked when a handle value changes. Receives handle values in sorted order. */
81    onChange?(values: number[]): void;
82    /** Callback invoked when a handle is released. Receives handle values in sorted order. */
83    onRelease?(values: number[]): void;
84}
85export interface ISliderState {
86    labelPrecision: number;
87    /** the client size, in pixels, of one tick */
88    tickSize: number;
89    /** the size of one tick as a ratio of the component's client size */
90    tickSizeRatio: number;
91}
92export declare class MultiSlider extends AbstractPureComponent2<MultiSliderProps, ISliderState> {
93    static defaultSliderProps: ISliderBaseProps;
94    static defaultProps: MultiSliderProps;
95    static displayName: string;
96    static Handle: React.FunctionComponent<import("./handleProps").IHandleProps>;
97    static getDerivedStateFromProps(props: MultiSliderProps): {
98        labelPrecision: number;
99    };
100    private static getLabelPrecision;
101    state: ISliderState;
102    private handleElements;
103    private trackElement;
104    getSnapshotBeforeUpdate(prevProps: MultiSliderProps): null;
105    render(): JSX.Element;
106    componentDidMount(): void;
107    componentDidUpdate(prevProps: MultiSliderProps, prevState: ISliderState): void;
108    protected validateProps(props: React.PropsWithChildren<MultiSliderProps>): void;
109    private formatLabel;
110    private renderLabels;
111    private renderTracks;
112    private renderTrackFill;
113    private renderHandles;
114    private addHandleRef;
115    private maybeHandleTrackClick;
116    private maybeHandleTrackTouch;
117    private canHandleTrackEvent;
118    private nearestHandleForValue;
119    private getHandlerForIndex;
120    private getNewHandleValues;
121    private findFirstLockedHandleIndex;
122    private handleChange;
123    private handleRelease;
124    private getLabelValues;
125    private getOffsetRatio;
126    private getTrackIntent;
127    private updateTickSize;
128}
129