/**
 * @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 interface Values {
    scrollTop: number;
    scrollLeft: number;
    clientWidth: number;
    clientHeight: number;
    scrollHeight: number;
    scrollWidth: number;
}
export declare type Direction = 'vertical' | 'horizontal';
export interface ScrollbarProps {
    className?: string;
    style?: React.CSSProperties;
    wheelSpeed?: number;
    onScroll?: () => void;
    onScrollStart?: () => void;
    onScrollStop?: () => void;
    autoHideThumb?: boolean;
    autoHideThumbDelay?: number;
}
export interface ScrollbarState {
    clientHeight: number;
    clientWidth: number;
    scrollHeight: number;
    scrollWidth: number;
    verticalThumbBtnHeight: number;
    verticalThumbHeight: number;
    horizontalThumbBtnWidth: number;
    horizontalThumbWidth: number;
    left: number;
    top: number;
    startX: number;
    startY: number;
    direction: Direction;
    showThumb: boolean;
}
declare class Scrollbar extends React.PureComponent<ScrollbarProps, ScrollbarState> {
    static propTypes: {
        className: PropTypes.Requireable<string>;
        style: PropTypes.Requireable<object>;
        wheelSpeed: PropTypes.Requireable<number>;
        onScroll: PropTypes.Requireable<(...args: any[]) => any>;
        onScrollStart: PropTypes.Requireable<(...args: any[]) => any>;
        onScrollStop: PropTypes.Requireable<(...args: any[]) => any>;
        autoHideThumb: PropTypes.Requireable<boolean>;
        autoHideThumbDelay: PropTypes.Requireable<number>;
    };
    static defaultProps: {
        wheelSpeed: number;
        autoHideThumb: boolean;
        autoHideThumbDelay: number;
    };
    private containerEle;
    private contentEle;
    private thumbTimer;
    private scrollingTimer;
    private animId;
    private resizeObserver;
    constructor(props: ScrollbarProps);
    scrollTop(nextTop: number): void;
    scrollToTop(): void;
    scrollLeft(nextLeft: number): void;
    scrollToLeft(): void;
    scrollToBottom(): void;
    scrollToRight(): void;
    private easeInMove;
    getScrollWidth(): number;
    getScrollHeight(): number;
    getClientHeight(): number;
    getClientWidth(): number;
    getValues(): Values;
    private onDragStartHandler;
    private onDragingHandler;
    private normalize;
    private onMouseWheel;
    private onDragEndHandlr;
    private onMouseEnterHandler;
    private onMouseLeaveHandler;
    private getSize;
    private clearThumbTimer;
    private clearScrollingTimer;
    componentDidMount(): void;
    componentWillUnmount(): void;
    render(): JSX.Element;
}
export default Scrollbar;
