export type UseInfiniteScrollGetParamsArg<Filters> = Filters & {
    page: number;
    perPage: number;
};
type UseInfiniteScrollParams<Item, LoaderParams extends object, Filters extends object> = {
    loadData: (params: LoaderParams) => Promise<Item[]>;
    getParams: (filters: UseInfiniteScrollGetParamsArg<Filters>) => LoaderParams;
    filters: Filters;
    perPage?: number;
};
/**
 * Hook that implements infinite scroll functionality, supports filters
 * @param loadData Loads data
 * @param filters Converts filters, page, and perPage to 1st argument for `loadData`
 * @param getParams Current filters. Changing this will trigger full reload
 * @param perPage
 */
export declare const useInfiniteScroll: <Item, LoaderParams extends object, Filters extends object>({ loadData, filters, getParams, perPage, }: UseInfiniteScrollParams<Item, LoaderParams, Filters>) => {
    data: Item[];
    setData: import("react").Dispatch<import("react").SetStateAction<Item[]>>;
    isLoading: boolean;
    loadMoreElementRef: import("react").Dispatch<any>;
    containerElementRef: import("react").MutableRefObject<any>;
};
export {};
//# sourceMappingURL=useInfiniteScroll.d.ts.map