import * as React from 'react';
import PropTypes from 'prop-types';
import { TableScrollLength } from './Table';
export interface ScrollbarProps {
    vertical?: boolean;
    length: number;
    scrollLength: number;
    scrollBarOffset: number;
    className?: string;
    classPrefix?: string;
    tableId?: string;
    onScroll?: (delta: number, event: React.MouseEvent) => void;
    onMouseDown?: (event: React.MouseEvent) => void;
    clickScrollLength: TableScrollLength;
    showScrollArrow?: boolean;
    [key: string]: any;
}
declare type Offset = {
    top: number;
    left: number;
    height?: number;
    width?: number;
};
declare type State = {
    barOffset: Offset;
    handlePressed: boolean;
};
declare class Scrollbar extends React.PureComponent<ScrollbarProps, State> {
    static get contextType(): React.Context<import("./TableContext").Props>;
    static propTypes: {
        tableId: PropTypes.Requireable<string>;
        vertical: PropTypes.Requireable<boolean>;
        length: PropTypes.Requireable<number>;
        scrollLength: PropTypes.Requireable<number>;
        scrollBarOffset: PropTypes.Requireable<number>;
        clickScrollLength: PropTypes.Requireable<object>;
        showScrollArrow: PropTypes.Requireable<boolean>;
        className: PropTypes.Requireable<string>;
        classPrefix: PropTypes.Requireable<string>;
        onScroll: PropTypes.Requireable<(...args: any[]) => any>;
        onMouseDown: PropTypes.Requireable<(...args: any[]) => any>;
    };
    static defaultProps: {
        classPrefix: string;
        scrollLength: number;
        length: number;
    };
    scrollOffset: number;
    mouseMoveTracker: null;
    handleRef: React.RefObject<HTMLDivElement>;
    barRef: React.RefObject<HTMLDivElement>;
    constructor(props: ScrollbarProps);
    componentDidMount(): void;
    componentDidUpdate(prevProps: any): void;
    componentWillUnmount(): void;
    onWheelScroll(delta: number): void;
    getMouseMoveTracker(): any;
    initBarOffset(): void;
    handleMouseDown: (event: React.MouseEvent<Element, MouseEvent>) => void;
    handleDragEnd: () => void;
    handleScroll(delta: number, event: React.MouseEvent): void;
    resetScrollBarPosition(forceDelta?: number): void;
    updateScrollBarPosition(delta: number, forceDelta?: number): void;
    releaseMouseMoves(): void;
    handleDragMove: (deltaX: number, deltaY: number, event: React.MouseEvent<Element, MouseEvent>) => void;
    /**
     * 点击滚动条，然后滚动到指定位置
     */
    handleClick: (event: React.MouseEvent<Element, MouseEvent>) => void;
    /**
     *
     * @param e
     * @param sort
     */
    handleArrowClick: (e: any, sort: any) => void;
    render(): JSX.Element;
}
export default Scrollbar;
