/**
 * @license chowa v1.1.3
 *
 * Copyright (c) Chowa Techonlogies Co.,Ltd.(http://www.chowa.cn).
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */
import * as React from 'react';
import * as PropTypes from 'prop-types';
export declare type DragBtn = 'begin' | 'end';
export interface SliderProps {
    className?: string;
    style?: React.CSSProperties;
    tabIndex?: number;
    range?: boolean;
    mode?: 'horizontal' | 'vertical';
    defaultValue?: number | number[];
    value?: number | number[];
    marks?: {
        [step: number]: string | {
            label: string;
            style: React.CSSProperties;
        };
    };
    min?: number;
    max?: number;
    onChange?: (value: number | number[]) => void;
    step?: number;
    disabled?: boolean;
    formatter?: (num: number) => React.ReactNode;
}
export interface SliderState {
    begin?: number;
    end?: number;
    isDraging: boolean;
    dragBtn: DragBtn;
    distance: number;
}
declare class Slider extends React.PureComponent<SliderProps, SliderState> {
    static propTypes: {
        className: PropTypes.Requireable<string>;
        style: PropTypes.Requireable<object>;
        tabIndex: PropTypes.Requireable<number>;
        range: PropTypes.Requireable<boolean>;
        mode: PropTypes.Requireable<string>;
        defaultValue: PropTypes.Requireable<number | any[]>;
        value: PropTypes.Requireable<number | any[]>;
        marks: PropTypes.Requireable<object>;
        min: PropTypes.Requireable<number>;
        max: PropTypes.Requireable<number>;
        onChange: PropTypes.Requireable<(...args: any[]) => any>;
        step: PropTypes.Requireable<number>;
        disabled: PropTypes.Requireable<boolean>;
        formatter: PropTypes.Requireable<(...args: any[]) => any>;
    };
    static defaultProps: {
        tabIndex: number;
        range: boolean;
        mode: string;
        min: number;
        max: number;
        step: number;
        disabled: boolean;
    };
    private railEle;
    constructor(props: SliderProps);
    componentDidUpdate(preProps: SliderProps): void;
    private compileRenderParams;
    private onMarkStepClick;
    private onDragStart;
    private onDraging;
    private onDragEnd;
    private onRailClickHandler;
    private onKeyDownHandler;
    private normalize;
    private getValues;
    private triggerChange;
    private renderMarks;
    render(): JSX.Element;
}
export default Slider;
