import { Component, CSSProperties } from 'react';
import { ScrollValues, ScrollbarsProps, StyleKeys } from './types';
interface State {
    didMountUniversal: boolean;
    scrollbarWidth: number;
}
export declare class Scrollbars extends Component<ScrollbarsProps, State> {
    container: Element | null;
    detectScrollingInterval: any;
    dragging: boolean;
    hideTracksTimeout: any;
    lastViewScrollLeft?: number;
    lastViewScrollTop?: number;
    prevPageX?: number;
    prevPageY?: number;
    requestFrame?: number;
    scrolling: boolean;
    styles: Record<StyleKeys, CSSProperties>;
    thumbHorizontal?: HTMLDivElement;
    thumbVertical?: HTMLDivElement;
    trackHorizontal?: HTMLDivElement;
    trackMouseOver: boolean;
    trackVertical?: HTMLDivElement;
    view?: HTMLElement;
    viewScrollLeft?: number;
    viewScrollTop?: number;
    mutationOb: MutationObserver;
    updateCallbacks: Array<(values: ScrollValues) => void>;
    static displayName: string;
    static defaultProps: {
        autoHeight: boolean;
        autoHeightMax: number;
        autoHeightMin: number;
        autoHide: boolean;
        autoHideDuration: number;
        autoHideTimeout: number;
        disableDefaultStyles: boolean;
        hideTracksWhenNotNeeded: boolean;
        renderThumbHorizontal: (props: any) => JSX.Element;
        renderThumbVertical: (props: any) => JSX.Element;
        renderTrackHorizontal: (props: any) => JSX.Element;
        renderTrackVertical: (props: any) => JSX.Element;
        renderView: (props: any) => JSX.Element;
        tagName: string;
        thumbMinSize: number;
        universal: boolean;
    };
    constructor(props: ScrollbarsProps);
    componentDidMount(): void;
    componentDidMountUniversal(): void;
    componentDidUpdate(): void;
    componentWillUnmount(): void;
    getScrollLeft(): number;
    getScrollTop(): number;
    getScrollWidth(): number;
    getScrollHeight(): number;
    getClientWidth(): number;
    getClientHeight(): number;
    getValues(): {
        left: number;
        top: number;
        scrollLeft: number;
        scrollTop: number;
        scrollWidth: number;
        scrollHeight: number;
        clientWidth: number;
        clientHeight: number;
    };
    getThumbHorizontalWidth(): number;
    getThumbVerticalHeight(): number;
    getScrollLeftForOffset(offset: any): number;
    getScrollTopForOffset(offset: any): number;
    scrollLeft(left?: number): void;
    scrollTop(top?: number): void;
    scrollToLeft(): void;
    scrollToTop(): void;
    scrollToRight(): void;
    scrollToBottom(): void;
    scrollToY(y: number): void;
    addListeners(): void;
    removeListeners(): void;
    handleScroll(event: any): void;
    handleScrollStart(): void;
    handleScrollStartAutoHide(): void;
    handleScrollStop(): void;
    handleScrollStopAutoHide(): void;
    handleWindowResize(): void;
    handleHorizontalTrackMouseDown(event: any): void;
    handleVerticalTrackMouseDown(event: any): void;
    handleHorizontalThumbMouseDown(event: any): void;
    handleVerticalThumbMouseDown(event: any): void;
    handleHorizontalTrackWheel(e: WheelEvent): void;
    handleVerticalTrackWheel(e: WheelEvent): void;
    setupDragging(): void;
    teardownDragging(): void;
    handleDragStart(event: any): void;
    handleDrag(event: any): boolean;
    handleDragEnd(): void;
    handleDragEndAutoHide(): void;
    handleTrackMouseEnter(): void;
    handleTrackMouseEnterAutoHide(): void;
    handleTrackMouseLeave(): void;
    handleTrackMouseLeaveAutoHide(): void;
    showTracks(): void;
    hideTracks(): void;
    detectScrolling(): void;
    update(callback?: (values: ScrollValues) => void): void;
    _update(): void;
    render(): JSX.Element;
}
export {};
