import { ApolloClient, NormalizedCacheObject } from '@apollo/client';
export interface NormalQueryConfig {
    reactHook: any;
    queryName: string;
    isPaginated?: boolean;
    client?: ApolloClient<NormalizedCacheObject>;
}
export interface ResourceDefinitionConfig {
    listQuery: {
        reactHook: any;
        queryName: string;
        isPaginated?: boolean;
        type?: 'query' | 'lazyQuery' | 'mutation';
        fields?: any[];
    };
    client?: ApolloClient<NormalizedCacheObject>;
}
export type QueryConfig = NormalQueryConfig | ResourceDefinitionConfig;
export interface PaginationOptions {
    limit?: number;
    workspaceId?: number;
    additionalVariables?: Record<string, any>;
    searchQuery?: string;
    count?: boolean;
}
export interface UsePaginatedQueryResult<T> {
    items: T[];
    hasMore: boolean;
    loading: boolean;
    error: any;
    loadMoreItems?: () => void;
    refetch: () => void;
    refetchAll: () => void;
    reset: () => void;
    loadingMore: boolean;
    removeItem: (id: string) => void;
    updateItem: (id: string, updates: Partial<T>) => void;
    count: number | undefined;
}
export declare const usePaginatedQuery: <T = any>(config: QueryConfig, options?: PaginationOptions) => UsePaginatedQueryResult<T>;
