import { Component, ReactNode, CSSProperties } from 'react';
type Fn = () => any;
export interface InfiniteScrollProps {
    next?: Fn;
    hasMoreNext?: boolean;
    previous?: Fn;
    hasMorePrevious?: boolean;
    children: ReactNode;
    loaderNext?: ReactNode;
    loaderPrevious?: ReactNode;
    inverse?: boolean;
    scrollThreshold?: number | string;
    endMessage?: ReactNode;
    header?: ReactNode;
    footer?: ReactNode;
    style?: CSSProperties;
    height?: number | string;
    scrollableTarget?: ReactNode;
    hasChildren?: boolean;
    pullDownToRefresh?: boolean;
    pullDownToRefreshContent?: ReactNode;
    releaseToRefreshContent?: ReactNode;
    pullDownToRefreshThreshold?: number;
    refreshFunction?: Fn;
    onScroll?: (e: MouseEvent) => any;
    dataLength: number;
    initialScrollY?: number;
    className?: string;
}
interface State {
    showLoaderNext: boolean;
    showLoaderPrevious: boolean;
    pullToRefreshThresholdBreached: boolean;
    prevDataLength: number | undefined;
}
declare class InfiniteScroll extends Component<InfiniteScrollProps, State> {
    constructor(props: InfiniteScrollProps);
    private throttledOnScrollListener;
    private _scrollableNode;
    private el;
    private _infScroll;
    private lastScrollTop;
    private actionTriggered;
    private _pullDown;
    private startY;
    private currentY;
    private dragging;
    private maxPullDownDistance;
    componentDidMount(): void;
    componentWillUnmount(): void;
    componentDidUpdate(prevProps: InfiniteScrollProps): void;
    static getDerivedStateFromProps(nextProps: InfiniteScrollProps, prevState: State): {
        prevDataLength: number;
        showLoaderNext: boolean;
        showLoaderPrevious: boolean;
        pullToRefreshThresholdBreached: boolean;
    };
    getScrollableTarget: () => HTMLElement;
    onStart: EventListener;
    onMove: EventListener;
    onEnd: EventListener;
    isElementAtTop(target: HTMLElement, scrollThreshold?: string | number): boolean;
    isElementAtBottom(target: HTMLElement, scrollThreshold?: string | number): boolean;
    onScrollListener: (event: MouseEvent) => void;
    render(): JSX.Element;
}
export default InfiniteScroll;
