import React from 'react';
import { ReactRecycledListProps, ReactRecycledListState } from './TypeDef';
import { RowToDataIndexMap } from './utils';
export default abstract class General<P extends ReactRecycledListProps, S extends ReactRecycledListState> extends React.PureComponent<P, S> {
    prevScroll: number;
    prevLastVisibleRow: number;
    prevLastRenderedRow: number;
    abstract listWindowRef: any;
    abstract rowHeights: number[];
    abstract rowPositions: number[];
    abstract rowToDataIndexMap: RowToDataIndexMap;
    abstract totalNumOfRenderedRows: number;
    abstract initialArrayTemplate: null[];
    abstract totalRows: number;
    abstract fullHeight: number;
    abstract timeOut: any;
    abstract windowHeight: number;
    abstract numOfInvisibleRowOnEachDirection: number;
    abstract getTopViewportRowIndex(scrollTop: number): number;
    abstract getBottomViewportRowIndex(scrollTop: number): number;
    abstract shouldResetList(prevProps: P): boolean;
    abstract initializeProperties(): any;
    constructor(props: P);
    componentDidMount(): void;
    componentWillUnmount(): void;
    componentDidUpdate(prevProps: P): void;
    onListWillRecycle: (newRenderedRowIndex: number[], newScrollState: boolean[], newTopRenderedRowRelativeIndex: number) => void;
    onScrollChange: (scrollTop: number) => void;
    recycle: (scrollTop: number) => void;
    resetList: () => void;
    onScroll: (event: React.UIEvent<HTMLElement>) => void;
    scrollToDataIndex: (targetIndex: number) => void;
    scrollToRow: (targetRow: number) => void;
    scrollTo: (scrollTop: number) => void;
    manualScroll: (targetPosition: number) => void;
    mod: (n: number, m?: number) => number;
    getResetViewportBottom: () => number;
    _debounceScrollState: () => void;
    render(): JSX.Element;
}
