/** * Infinite query options factory for TanStack Query integration. * Creates type-safe infinite query options from Eden route definitions. */ import type { DataTag, DefinedInitialDataInfiniteOptions, SkipToken, UndefinedInitialDataInfiniteOptions, UnusedSkipTokenInfiniteOptions } from "@tanstack/react-query"; import type { EdenQueryKey } from "../keys/types"; /** Reserved options that are set by the library */ type ReservedOptions = "queryKey" | "queryFn" | "queryHashFn" | "queryHash" | "initialPageParam"; /** Base options for Eden requests */ interface EdenInfiniteQueryBaseOptions { eden?: { /** Abort request on component unmount */ abortOnUnmount?: boolean; }; } /** Result metadata added to infinite query options */ export interface EdenInfiniteQueryOptionsResult { eden: { path: string; }; } /** * Arguments for creating infinite query options. * * @template TInput - Input type without cursor (cursor is handled separately) * @template TOutput - Output type from the query * @template TPageParam - Type of the cursor/page parameter */ export interface EdenInfiniteQueryOptionsArgs { /** Path segments (e.g., ['api', 'posts', 'get']) */ path: string[]; /** Input parameters (excluding cursor) or skipToken */ input: TInput | SkipToken; /** Function to fetch data with cursor */ fetch: (input: TInput & { cursor: TPageParam; }, signal?: AbortSignal) => Promise; /** Initial page param for first fetch */ initialPageParam: TPageParam; } interface UndefinedEdenInfiniteQueryOptionsIn extends Omit, ReservedOptions>, EdenInfiniteQueryBaseOptions { } interface DefinedEdenInfiniteQueryOptionsIn extends Omit, TError, TData, EdenQueryKey, TPageParam>, ReservedOptions>, EdenInfiniteQueryBaseOptions { } interface UnusedSkipTokenEdenInfiniteQueryOptionsIn extends Omit, ReservedOptions>, EdenInfiniteQueryBaseOptions { } interface UndefinedEdenInfiniteQueryOptionsOut extends UndefinedInitialDataInfiniteOptions, EdenInfiniteQueryOptionsResult { queryKey: DataTag; } interface DefinedEdenInfiniteQueryOptionsOut extends DefinedInitialDataInfiniteOptions, EdenInfiniteQueryOptionsResult { queryKey: DataTag; } interface UnusedSkipTokenEdenInfiniteQueryOptionsOut extends UnusedSkipTokenInfiniteOptions, EdenInfiniteQueryOptionsResult { queryKey: DataTag; } /** * Create infinite query options with defined initial data. * The returned data will never be undefined. */ export declare function edenInfiniteQueryOptions(args: EdenInfiniteQueryOptionsArgs & { opts: DefinedEdenInfiniteQueryOptionsIn; }): DefinedEdenInfiniteQueryOptionsOut; /** * Create infinite query options without skipToken. * The returned data can be undefined until loaded. */ export declare function edenInfiniteQueryOptions(args: EdenInfiniteQueryOptionsArgs & { input: TInput; opts: UnusedSkipTokenEdenInfiniteQueryOptionsIn; }): UnusedSkipTokenEdenInfiniteQueryOptionsOut; /** * Create infinite query options with skipToken support. * Use skipToken to conditionally disable the query. */ export declare function edenInfiniteQueryOptions(args: EdenInfiniteQueryOptionsArgs & { opts: UndefinedEdenInfiniteQueryOptionsIn; }): UndefinedEdenInfiniteQueryOptionsOut; export {}; //# sourceMappingURL=infiniteQueryOptions.d.ts.map