/**
 * Copyright (c) 2018-2025 mol* contributors, licensed under MIT, See LICENSE file for more info.
 *
 * @author David Sehnal <david.sehnal@gmail.com>
 * @author Alexander Rose <alexander.rose@weirdbyte.de>
 */
import * as React from 'react';
export declare class Slider extends React.Component<{
    min: number;
    max: number;
    value: number;
    step?: number;
    onChange: (v: number) => void;
    onChangeImmediate?: (v: number) => void;
    disabled?: boolean;
    onEnter?: () => void;
    hideInput?: boolean;
}, {
    isChanging: boolean;
    current: number;
}> {
    state: {
        isChanging: boolean;
        current: number;
    };
    static getDerivedStateFromProps(props: {
        value: number;
    }, state: {
        isChanging: boolean;
        current: number;
    }): {
        current: number;
    } | null;
    begin: () => void;
    end: (v: number) => void;
    updateCurrent: (current: number) => void;
    updateManually: (v: number) => void;
    onManualBlur: () => void;
    onMouseWheel: (e: WheelEvent) => void;
    render(): import("react/jsx-runtime").JSX.Element;
}
export declare class Slider2 extends React.Component<{
    min: number;
    max: number;
    value: [number, number];
    step?: number;
    onChange: (v: [number, number]) => void;
    disabled?: boolean;
    onEnter?: () => void;
}, {
    isChanging: boolean;
    current: [number, number];
}> {
    state: {
        isChanging: boolean;
        current: [number, number];
    };
    static getDerivedStateFromProps(props: {
        value: [number, number];
    }, state: {
        isChanging: boolean;
        current: [number, number];
    }): {
        current: [number, number];
    } | null;
    begin: () => void;
    end: (v: [number, number]) => void;
    updateCurrent: (current: [number, number]) => void;
    updateMax: (v: number) => void;
    updateMin: (v: number) => void;
    render(): import("react/jsx-runtime").JSX.Element;
}
export declare class Handle extends React.Component<Partial<HandleProps>, {}> {
    render(): import("react/jsx-runtime").JSX.Element;
}
export interface SliderBaseProps {
    min: number;
    max: number;
    step?: number;
    defaultValue?: number | number[];
    value?: number | number[];
    marks?: any;
    className?: string;
    prefixCls?: string;
    disabled?: boolean;
    onBeforeChange?: (value: number | number[]) => void;
    onChange?: (value: number | number[]) => void;
    onAfterChange?: (value: number | number[]) => void;
    handle?: JSX.Element;
    tipFormatter?: (value: number, index: number) => any;
    range?: boolean | number;
    vertical?: boolean;
    allowCross?: boolean;
    pushable?: boolean | number;
    onWheel?: (ev: WheelEvent) => any;
}
export interface SliderBaseState {
    handle: number | null;
    recent: number;
    bounds: number[];
}
export declare class SliderBase extends React.Component<SliderBaseProps, SliderBaseState> {
    private sliderElement;
    private handleElements;
    constructor(props: SliderBaseProps);
    static defaultProps: SliderBaseProps;
    private dragOffset;
    private startPosition;
    private startValue;
    private _getPointsCache;
    componentDidUpdate(prevProps: SliderBaseProps): void;
    onChange(state: this['state']): void;
    onMouseDown: (e: MouseEvent) => void;
    onMouseMove(e: MouseEvent): void;
    onMove(e: MouseEvent | TouchEvent, position: number): void;
    onStart(position: number): void;
    onTouchMove: (e: TouchEvent) => void;
    onTouchStart: (e: TouchEvent) => void;
    /**
     * Returns an array of possible slider points, taking into account both
     * `marks` and `step`. The result is cached.
     */
    getPoints(): any;
    getPrecision(step: number): number;
    getSliderLength(): number;
    getSliderStart(): number;
    getValue(): number;
    private eventHandlers;
    addDocumentEvents(type: 'touch' | 'mouse'): void;
    calcOffset: (value: number) => number;
    calcValue(offset: number): number;
    calcValueByPos(position: number): number;
    end(type: 'mouse' | 'touch'): void;
    isEventFromHandle(e: MouseEvent | TouchEvent): boolean;
    isValueOutOfBounds(value: number, props: SliderBaseProps): boolean;
    pushHandle(bounds: number[], handle: number, direction: number, amount: number): boolean;
    pushHandleOnePoint(bounds: number[], handle: number, direction: number): boolean;
    pushSurroundingHandles(bounds: number[], handle: number, originalValue: number): void;
    removeEvents(type: 'touch' | 'mouse'): void;
    trimAlignValue(v: number, props?: SliderBaseProps): number;
    render(): import("react/jsx-runtime").JSX.Element;
}
export interface HandleProps {
    className: string;
    vertical: boolean;
    offset: number;
    tipFormatter: (v: number, index: number) => any;
    value: number;
    index: number;
}
