import * as React from 'react';
import { GridRenderContext, GridRowEntry } from '../../../models';
import { GridRowId, GridRowModel } from '../../../models/gridRows';
export declare function binarySearch(offset: number, positions: number[], sliceStart?: number, sliceEnd?: number): number;
export declare const getRenderableIndexes: ({ firstIndex, lastIndex, buffer, minFirstIndex, maxLastIndex, }: {
    firstIndex: number;
    lastIndex: number;
    buffer: number;
    minFirstIndex: number;
    maxLastIndex: number;
}) => number[];
export declare const areRenderContextsEqual: (context1: GridRenderContext, context2: GridRenderContext) => boolean;
interface UseGridVirtualScrollerProps {
    ref: React.Ref<HTMLDivElement>;
    disableVirtualization?: boolean;
    renderZoneMinColumnIndex?: number;
    renderZoneMaxColumnIndex?: number;
    onRenderZonePositioning?: (params: {
        top: number;
        left: number;
    }) => void;
    getRowProps?: (id: GridRowId, model: GridRowModel) => any;
}
export declare const useGridVirtualScroller: (props: UseGridVirtualScrollerProps) => {
    renderContext: GridRenderContext | null;
    updateRenderZonePosition: (nextRenderContext: GridRenderContext) => void;
    getRows: (params?: {
        renderContext: GridRenderContext | null;
        position?: string | undefined;
        minFirstColumn?: number | undefined;
        maxLastColumn?: number | undefined;
        availableSpace?: number | null | undefined;
        rows?: GridRowEntry<import("../../../models").GridValidRowModel>[] | undefined;
        rowIndexOffset?: number | undefined;
        onRowRender?: ((rowId: GridRowId) => void) | undefined;
    }) => JSX.Element[] | null;
    getRootProps: (inputProps?: {
        style?: object;
    }) => {
        style: React.CSSProperties;
        ref: ((instance: HTMLDivElement | null) => void) | null;
        onScroll: (event: React.UIEvent<Element, UIEvent>) => void;
        onWheel: (event: React.WheelEvent<Element>) => void;
        onTouchMove: (event: React.TouchEvent<Element>) => void;
    };
    getContentProps: ({ style }?: {
        style?: object | undefined;
    }) => {
        style: {
            width: string | number;
            height: number;
            minHeight: string;
        };
    };
    getRenderZoneProps: () => {
        ref: React.RefObject<HTMLDivElement>;
    };
};
export {};
