import { type VariableStatementStructure } from "ts-morph"; import type { GenerationContext, OperationInfo } from "../types.mjs"; /** * SDK call arguments shared by every generated queryFn/mutationFn. * throwOnError: true forces the SDK call to reject on error responses; the * hey-api runtime default is false, which would resolve undefined data and * swallow the error instead of surfacing it to TanStack Query (#172). */ export declare const SDK_CALL_ARGS = "{ ...clientOptions, throwOnError: true }"; /** SDK call arguments for TanStack query functions with cancellation. */ export declare const QUERY_SDK_CALL_ARGS = "{ ...clientOptions, signal, throwOnError: true }"; /** Resolve the OpenAPI page parameter type, preserving older numeric output. */ export declare function getPageParamType(op: OperationInfo): string; /** * Build the client options parameter string. */ export declare function buildClientOptionsParam(op: OperationInfo): string; /** * Build the clientOptions parameter typed with the page-less infinite * options type — the page parameter is supplied by TanStack Query's * pageParam mechanism. */ export declare function buildInfiniteClientOptionsParam(op: OperationInfo): string; /** * The type of a single page. TanStack Query instantiates the infinite options * with this as TQueryFnData, so it is what `getNextPageParam` receives as * `lastPage` (#203). NonNullable because `throwOnError: true` means a resolved * page is always present. */ export declare function getPageType(op: OperationInfo): string; /** * Build the paginated SDK call shared by every infinite query builder. * The resolved response is narrowed to the page type so it matches the * TQueryFnData the infinite options are instantiated with (#203). Spelled as * a cast rather than `!` because generated code is linted downstream, and a * non-null assertion trips biome's noNonNullAssertion. */ export declare function buildPagedQueryFn(op: OperationInfo, ctx: GenerationContext): string; /** * Format the initialPageParam literal. Emits `undefined` when the caller opted * to omit it (#177); otherwise a numeric literal when possible so the inferred * pageParam type matches what getNextPageParam returns. */ export declare function formatInitialPageParam(ctx: GenerationContext, op?: OperationInfo): string; /** * Build the nested type for getNextPageParam. * E.g., "meta.next" becomes "{ meta: { next: number } }" */ export declare function buildNestedNextPageType(nextPageParam: string, pageParamType?: string): string; /** * Build the getNextPageParam expression. The parameter is annotated because * not every TanStack entry point contextually types it (prefetchInfiniteQuery * does not, which would fail noImplicitAny). */ export declare function buildGetNextPageParamExpr(ctx: GenerationContext, op?: OperationInfo): string; /** * Build an options type where the pagination fields TanStack Query marks as * required become optional overrides: the generator supplies them, and * callers may replace them for custom pagination schemes (#156, #146). * * The first type argument is TQueryFnData — a single page — not TData (#203). * Passing TData there made `getNextPageParam` receive the aggregated * `InfiniteData<...>` as `lastPage`, so any custom pagination logic failed to * compile. Only the first three type arguments are written: TanStack Query * dropped TQueryData from `UseInfiniteQueryOptions` within the v5 line, so * positions beyond TData are not stable across the supported peer range. */ export declare function buildOverridableInfiniteOptionsType(optionsTypeName: string, pageType: string): string; /** * Build useQuery hook. * Example: * export const useFindPets = = unknown[]>( * clientOptions: Options = {}, * queryKey?: TQueryKey, * options?: Omit, "queryKey" | "queryFn"> * ) => useQuery({ * queryKey: Common.UseFindPetsKeyFn(clientOptions, queryKey), * queryFn: () => findPets({ ...clientOptions, throwOnError: true }).then(response => response.data as TData) as TData, * ...options * }); */ export declare function buildUseQueryHook(op: OperationInfo, ctx: GenerationContext): VariableStatementStructure; /** * Build useSuspenseQuery hook. */ export declare function buildUseSuspenseQueryHook(op: OperationInfo, ctx: GenerationContext): VariableStatementStructure; /** * Build useInfiniteQuery hook. */ export declare function buildUseInfiniteQueryHook(op: OperationInfo, ctx: GenerationContext): VariableStatementStructure | null; /** * Build useSuspenseInfiniteQuery hook. */ export declare function buildUseSuspenseInfiniteQueryHook(op: OperationInfo, ctx: GenerationContext): VariableStatementStructure | null; /** * Build prefetch function. * Example: * export const prefetchUseFindPets = (queryClient: QueryClient, clientOptions: Options = {}, options?: Omit, "queryKey" | "queryFn">) => * queryClient.prefetchQuery({ * queryKey: Common.UseFindPetsKeyFn(clientOptions), * queryFn: () => findPets({ ...clientOptions, throwOnError: true }).then(response => response.data), * ...options * }); */ export declare function buildPrefetchFn(op: OperationInfo): VariableStatementStructure; /** * Build prefetchInfiniteQuery function for a paginatable operation. * Example: * export const prefetchUseFindPaginatedPetsInfinite = (queryClient: QueryClient, clientOptions: Common.FindPaginatedPetsInfiniteClientOptions = {}, options?: Omit>, "queryKey" | "queryFn" | "initialPageParam" | "getNextPageParam"> & Partial>, "initialPageParam">> & { getNextPageParam?: GetNextPageParamFunction> }) => * queryClient.prefetchInfiniteQuery({ * queryKey: Common.UseFindPaginatedPetsInfiniteKeyFn(clientOptions), * queryFn: ({ pageParam }) => findPaginatedPets({ ...clientOptions, query: { ...clientOptions.query, page: pageParam as number }, throwOnError: true } as Options).then(response => response.data as NonNullable), * initialPageParam: 1, * getNextPageParam: (response: unknown) => (response as { nextPage: number }).nextPage, * ...options * }); */ export declare function buildPrefetchInfiniteQueryFn(op: OperationInfo, ctx: GenerationContext): VariableStatementStructure | null; /** * Build ensureQueryData function. * Example: * export const ensureUseFindPetsData = (queryClient: QueryClient, clientOptions: Options = {}, options?: Omit, "queryKey" | "queryFn">) => * queryClient.ensureQueryData({ * queryKey: Common.UseFindPetsKeyFn(clientOptions), * queryFn: () => findPets({ ...clientOptions, throwOnError: true }).then(response => response.data), * ...options * }); */ export declare function buildEnsureQueryDataFn(op: OperationInfo): VariableStatementStructure;