import { type InstantCoreDatabase, type ValidQuery } from './index.ts';
import { InstaQLResponse, InstaQLOptions } from './queryTypes.ts';
import { InstantSchemaDef } from './schemaTypes.ts';
export type ChunkStatus = 'pre-bootstrap' | 'bootstrapping' | 'frozen';
export interface InfiniteQuerySubscription {
    unsubscribe: () => void;
    loadNextPage: () => void;
}
export type InfiniteQueryCallbackResponse<Schema extends InstantSchemaDef<any, any, any>, Query extends Record<string, any>, UseDatesLocal extends boolean> = {
    error: {
        message: string;
    };
    data: undefined;
    canLoadNextPage: boolean;
} | {
    error: undefined;
    data: InstaQLResponse<Schema, Query, UseDatesLocal>;
    canLoadNextPage: boolean;
};
export declare const subscribeInfiniteQuery: <Schema extends InstantSchemaDef<any, any, any>, Q extends ValidQuery<Q, Schema>, UseDates extends boolean>(db: InstantCoreDatabase<Schema, UseDates>, fullQuery: Q, cb: (resp: InfiniteQueryCallbackResponse<Schema, Q, UseDates>) => void, opts?: InstaQLOptions) => InfiniteQuerySubscription;
export declare const getInfiniteQueryInitialSnapshot: <Schema extends InstantSchemaDef<any, any, any>, Q extends ValidQuery<Q, Schema>, UseDates extends boolean>(db: InstantCoreDatabase<Schema, UseDates>, fullQuery: Q | null, opts?: InstaQLOptions) => InfiniteQueryCallbackResponse<Schema, Q, UseDates> | {
    canLoadNextPage: false;
    data: undefined;
    error: undefined;
};
//# sourceMappingURL=infiniteQuery.d.ts.map