import { Collection, CollectionStatus, Context, GetResult, InferResultType, InitialQueryBuilder, NonSingleResult, QueryBuilder, UtilsRecord } from '@tanstack/db';
import { ComputedRef, MaybeRefOrGetter } from 'vue';
type InfiniteQueryOptions = {
    pageSize?: number;
    initialPageParam?: number;
};
export type LiveInfiniteQueryConfig<TRow> = InfiniteQueryOptions & {
    /**
     * @deprecated Pagination uses the shared controller's peek-ahead strategy.
     * This remains for compatibility with TanStack Query conventions.
     */
    getNextPageParam?: (lastPage: Array<TRow>, allPages: Array<Array<TRow>>, lastPageParam: number, allPageParams: Array<number>) => number | undefined;
};
export type UseLiveInfiniteQueryConfig<TContext extends Context & NonSingleResult> = LiveInfiniteQueryConfig<InferResultType<TContext>[number]>;
export interface UseLiveInfiniteQueryReturn<TContext extends Context & NonSingleResult> {
    state: ComputedRef<Map<string | number, GetResult<TContext>>>;
    data: ComputedRef<InferResultType<TContext>>;
    collection: ComputedRef<Collection<GetResult<TContext>, string | number, UtilsRecord>>;
    status: ComputedRef<CollectionStatus>;
    isLoading: ComputedRef<boolean>;
    isReady: ComputedRef<boolean>;
    isIdle: ComputedRef<boolean>;
    isError: ComputedRef<boolean>;
    isCleanedUp: ComputedRef<boolean>;
    pages: ComputedRef<Array<Array<InferResultType<TContext>[number]>>>;
    pageParams: ComputedRef<Array<number>>;
    fetchNextPage: () => Promise<void>;
    hasNextPage: ComputedRef<boolean>;
    isFetchingNextPage: ComputedRef<boolean>;
    error: ComputedRef<unknown>;
}
export interface UseLiveInfiniteQueryReturnWithCollection<TResult extends object, TKey extends string | number, TUtils extends UtilsRecord> {
    state: ComputedRef<Map<TKey, TResult>>;
    data: ComputedRef<Array<TResult>>;
    collection: ComputedRef<Collection<TResult, TKey, TUtils>>;
    status: ComputedRef<CollectionStatus>;
    isLoading: ComputedRef<boolean>;
    isReady: ComputedRef<boolean>;
    isIdle: ComputedRef<boolean>;
    isError: ComputedRef<boolean>;
    isCleanedUp: ComputedRef<boolean>;
    pages: ComputedRef<Array<Array<TResult>>>;
    pageParams: ComputedRef<Array<number>>;
    fetchNextPage: () => Promise<void>;
    hasNextPage: ComputedRef<boolean>;
    isFetchingNextPage: ComputedRef<boolean>;
    error: ComputedRef<unknown>;
}
/**
 * Create a Vue-native reactive view over the shared live-query window
 * controller. The query must include an `orderBy` clause.
 */
export declare function useLiveInfiniteQuery<TResult extends object, TKey extends string | number, TUtils extends UtilsRecord>(liveQueryCollection: MaybeRefOrGetter<Collection<TResult, TKey, TUtils> & NonSingleResult>, config: LiveInfiniteQueryConfig<TResult>): UseLiveInfiniteQueryReturnWithCollection<TResult, TKey, TUtils>;
export declare function useLiveInfiniteQuery<TContext extends Context & NonSingleResult>(queryFn: (q: InitialQueryBuilder) => QueryBuilder<TContext>, config: UseLiveInfiniteQueryConfig<TContext>, deps?: Array<MaybeRefOrGetter<unknown>>): UseLiveInfiniteQueryReturn<TContext>;
export {};
