import { Data } from '../../../types/data';
import { FilterValues } from '../../Filters/Filters.model';
import { SortData } from '../../List/List.model';
import { ExplorerDataProvider, ExplorerDataProviderConnection } from '../Explorer.model';
import { StationMessage } from './useStationMessage';
interface DataProviderReturnType<T> {
    readonly data: T[];
    readonly isLoading: boolean;
    readonly resultCount: ResultCounts;
    readonly hasMoreData: boolean;
    readonly onReloadData: () => void;
    readonly onSortChanged: (sort: SortData<T>) => void;
    readonly onRequestMoreData: () => void;
}
export interface ResultCounts {
    total: number;
    filtered?: number;
}
interface DataProviderArgumentType<T extends Data> {
    dataProvider: ExplorerDataProvider<T>;
    explorerRef: React.ForwardedRef<ExplorerDataProviderConnection<T>>;
    defaultSortOrder?: SortData<T>;
    activeFilters?: FilterValues<T>;
    keyProperty?: keyof T;
    setStationMessage: React.Dispatch<React.SetStateAction<StationMessage | undefined>>;
}
export declare function useDataProvider<T extends Data>({ dataProvider, explorerRef, setStationMessage, defaultSortOrder, activeFilters, keyProperty, }: DataProviderArgumentType<T>): DataProviderReturnType<T>;
export {};
//# sourceMappingURL=useDataProvider.d.ts.map