import { type Ref } from 'vue';
import type { TableItem } from '@/types/componentTypes/DataTableTypes';
import type { ApiService } from '@/services/apiService';
import type { DataTableV2Props } from '../types';
export interface UseDataTableFetchOptions {
    props: DataTableV2Props;
    api: ApiService;
    buildFilterParams: () => Record<string, unknown>;
    externalCriteria: Ref<Record<string, unknown>>;
    items: Ref<TableItem[]>;
    originalServerData: Ref<TableItem[]>;
    selectedItems: Ref<TableItem[]>;
    emitSelection: () => void;
    initialized: Ref<boolean>;
}
export declare function useDataTableFetch(options: UseDataTableFetchOptions): {
    loading: Ref<boolean, boolean>;
    error: Ref<string, string>;
    itemsPerPage: Ref<number, number>;
    totalSize: Ref<number, number>;
    totalPages: Ref<number, number>;
    currentPage: Ref<number, number>;
    isLoadingMore: Ref<boolean, boolean>;
    hasMore: Ref<boolean, boolean>;
    fetchData: (queryParams?: Record<string, unknown>) => Promise<void>;
    debouncedFetchData: import("@vueuse/shared").UseDebounceFnReturn<(queryParams?: Record<string, unknown>) => Promise<void>>;
    loadMore: () => Promise<void>;
    handleScroll: (event: Event) => Promise<void>;
    handlePageChange: (newPage: number) => void;
};
//# sourceMappingURL=useDataTableFetch.d.ts.map