import React, { PureComponent, ReactElement } from 'react';
import { Animated, PanResponderInstance, ViewStyle, RegisteredStyle } from 'react-native';
import Coord from './Coord';
export interface SliderProps {
    style?: ViewStyle | RegisteredStyle<ViewStyle>;
    value?: number | number[];
    min?: number;
    max?: number;
    disabled?: boolean;
    step?: number;
    marks?: any[];
    range?: boolean;
    vertical?: boolean;
    trackWeight?: number;
    thumbSize?: number;
    maxTrackColor?: string;
    minTrackColor?: string;
    midTrackColor?: string;
    onChange?: (value: number | number[]) => void;
    onScroll?: (value: number, isOther: boolean) => void;
    showTip?: boolean;
    renderTip?: (value: any) => ReactElement<any>;
    renderThumbTip?: (value: any) => ReactElement<any>;
    renderThumb?: (isOther: any) => ReactElement<any>;
}
interface State {
    containerSize: {
        width: number;
        height: number;
    };
    trackSize: {
        width: number;
        height: number;
    };
    thumbSize: {
        width: number;
        height: number;
    };
    otherThumbSize: {
        width: number;
        height: number;
    };
    value: Animated.Value;
    otherValue: Animated.Value;
    tip: string;
    otherTip: string;
}
export default class Slider extends PureComponent<SliderProps & typeof Slider.defaultProps, State> {
    oldValue: any;
    oldOtherValue: any;
    panResponder: PanResponderInstance;
    previousLeft: number;
    otherPreviousLeft: number;
    isOther: boolean;
    showAndroidTip: boolean;
    static defaultProps: {
        value: number;
        min: number;
        max: number;
        step: number;
        maxTrackColor: any;
        minTrackColor: any;
        midTrackColor: any;
        range: boolean;
        vertical: boolean;
        showTip: boolean;
        trackWeight: number;
        thumbSize: number;
    };
    constructor(props: any);
    componentWillMount(): void;
    componentWillReceiveProps(nextProps: any): void;
    /**
     * 通过props获取滑块对应的value值
     */
    getValueByProps: (isOther?: boolean | undefined) => any;
    /**
     * 判断用户触控的区域是否在滑块上
     */
    thumbTouchCheck: (e: any) => boolean;
    getThumbCoord: (isOther?: boolean | undefined) => Coord;
    /**
     * 滚动状态响应
     */
    scroll: (gestureState: Object) => void;
    touchStart: (e: Object) => boolean;
    pressStart: () => void;
    lastMove: (_: Object, gestureState: Object) => void;
    touchEnd: (_: Object, gestureState: Object) => void;
    measureContainer: (x: Object) => void;
    measureTrack: (x: Object) => void;
    measureThumb: (x: Object) => void;
    measureOtherThumb: (x: Object) => void;
    handleMeasure: (name: string, x: any) => void;
    /**
     * 获取可滑动长度
     */
    getScrollLength: () => number;
    /**
     * 获取滑块的坐标的宽度
     * 如果是横向slider则取width,纵向取height
     */
    getThumbOffset: (isOther?: boolean | undefined) => number;
    /**
     * 获取当前value值所占的百分比
     */
    getRatio: (value: number) => number;
    /**
     * 滑块在滑动轴上的偏移量
     * value => x
     */
    getThumbLeft: (value: number) => number;
    /**
     * 互斥prop
     * 刻度属性只有正在非纵向轴、非双滑块下才生效
     */
    showStep: () => boolean;
    /**
     * 获取滑动位置所对应的value值，和getThumbLeft方法对应
     * x => value
     */
    getValue: (gestureState: Object, isOther?: boolean | undefined) => number;
    /**
     * 获取滑块的value值
     */
    getCurrentValue: (isOther?: boolean | undefined) => any;
    setCurrentValue: (value: number, isOther?: boolean | undefined) => void;
    triggerEvent: (event: any) => void;
    /**
     * 默认滑块的的滑块图片渲染
     */
    renderThumbImage: (isOther?: boolean | undefined) => JSX.Element | undefined;
    /**
     * 刻度模块的渲染
     */
    renderMarks: () => JSX.Element | null;
    /**
     * 渲染滑块的toopTip提示
     */
    renderThumbToolTip: (isOther?: boolean | undefined) => JSX.Element | undefined;
    /**
     * 滑动的起始和结束x值
     */
    getScrollRange: () => number[];
    /**
     * 滑块渲染
     */
    renderThumb: (isOther?: boolean | undefined) => JSX.Element | undefined;
    /**
     * 两个滑块值比较，滑块A的值是否大于B
     */
    compareValue: () => boolean;
    /**
     * 滑轨色值计算
     * 双滑块模式下，需要根据两个滑块的值大小结果互换色值
     * 垂直滑块模式下，因为滑块的渲染是从顶部计算的，所以滑块需要使用反向色值来实现从底部滑动的效果
     * 假设滑块A,B
     */
    getTrackColor: (isOther?: boolean | undefined) => string[];
    /**
     * 默认滑块划过的滑轨
     */
    renderMinimumTrack: (isOther?: boolean | undefined) => JSX.Element | null;
    getTrackStyle: () => any;
    renderTracks: () => React.ReactNode[];
    render(): JSX.Element;
}
export {};
