import useQuery from './useQuery'; export type ChangeHandler = (filters: T) => T; export type OnChangeFilters = (changeHandler: ChangeHandler, shouldDebounce: boolean) => void; export type LoadingType = 'INITIAL' | 'MORE' | null; export default function useInfiniteScrollDataLoad({ limit, isManual, debounceSearchMs, onDefaultFilters, onSearch, onValidateFilters, }: { limit: number; isManual?: boolean; debounceSearchMs?: number; onDefaultFilters: (query: ReturnType) => Filters; onSearch: (filters: Filters, paging: { limit: number; offset: number; }, abortSignal: AbortSignal) => Promise<{ records: T[]; meta: { limit: number; offset: number; nextOffset?: number | undefined; }; }>; onValidateFilters?: (filters: Filters) => boolean; }): { isLoading: LoadingType; loadError: Error | null; records: T[]; onRefresh: () => void; onTryAgain: (newOffset?: number) => void; filters: Filters; onChangeFilters: OnChangeFilters; onReplace: (replacer: (record: T) => T) => void; nextOffset: number; };