import type { DataTag, DefinedInitialDataInfiniteOptions, DefinedInitialDataOptions, InfiniteData, QueryClient, UndefinedInitialDataInfiniteOptions, UndefinedInitialDataOptions, UnusedSkipTokenInfiniteOptions, UnusedSkipTokenOptions, } from '@tanstack/react-query'; import type { AnyRouter, coerceAsyncIterableToArray, DistributiveOmit, MaybePromise, } from '@trpc/server/unstable-core-do-not-import'; import type { TRPCQueryKey } from '../internals/getQueryKey'; import type { ExtractCursorType, TRPCReactRequestOptions } from './hooks/types'; export interface TRPCQueryBaseOptions { /** * tRPC-related options */ trpc?: TRPCReactRequestOptions; } export interface TRPCQueryOptionsResult { trpc: { path: string; }; } type TRPCOptionOverrides = 'queryKey' | 'queryFn' | 'queryHashFn' | 'queryHash'; type TRPCInfiniteOptionOverrides = TRPCOptionOverrides | 'initialPageParam'; /** * QueryOptions API helpers */ export interface UndefinedTRPCQueryOptionsIn extends DistributiveOmit< UndefinedInitialDataOptions< coerceAsyncIterableToArray, TError, coerceAsyncIterableToArray, TRPCQueryKey >, TRPCOptionOverrides >, TRPCQueryBaseOptions {} export interface UndefinedTRPCQueryOptionsOut extends UndefinedInitialDataOptions< coerceAsyncIterableToArray, TError, coerceAsyncIterableToArray, TRPCQueryKey >, TRPCQueryOptionsResult { queryKey: DataTag, TError>; } export interface DefinedTRPCQueryOptionsIn extends DistributiveOmit< DefinedInitialDataOptions< coerceAsyncIterableToArray, TError, coerceAsyncIterableToArray, TRPCQueryKey >, TRPCOptionOverrides >, TRPCQueryBaseOptions {} export interface DefinedTRPCQueryOptionsOut extends DefinedInitialDataOptions< coerceAsyncIterableToArray, TError, coerceAsyncIterableToArray, TRPCQueryKey >, TRPCQueryOptionsResult { queryKey: DataTag, TError>; } export interface UnusedSkipTokenTRPCQueryOptionsIn extends DistributiveOmit< UnusedSkipTokenOptions< coerceAsyncIterableToArray, TError, coerceAsyncIterableToArray, TRPCQueryKey >, TRPCOptionOverrides >, TRPCQueryBaseOptions {} export interface UnusedSkipTokenTRPCQueryOptionsOut< TQueryFnData, TOutput, TError, > extends UnusedSkipTokenOptions< coerceAsyncIterableToArray, TError, coerceAsyncIterableToArray, TRPCQueryKey >, TRPCQueryOptionsResult { queryKey: DataTag, TError>; } /** * InifiniteQueryOptions helpers */ export interface UndefinedTRPCInfiniteQueryOptionsIn< TInput, TQueryFnData, TData, TError, > extends DistributiveOmit< UndefinedInitialDataInfiniteOptions< TQueryFnData, TError, InfiniteData> | null>, TRPCQueryKey, NonNullable> | null >, TRPCInfiniteOptionOverrides >, TRPCQueryBaseOptions { initialCursor?: NonNullable> | null; } export interface UndefinedTRPCInfiniteQueryOptionsOut< TInput, TQueryFnData, TData, TError, > extends DistributiveOmit< UndefinedInitialDataInfiniteOptions< TQueryFnData, TError, InfiniteData> | null>, TRPCQueryKey, NonNullable> | null >, 'initialPageParam' >, TRPCQueryOptionsResult { queryKey: DataTag; initialPageParam: NonNullable> | null; } export interface DefinedTRPCInfiniteQueryOptionsIn< TInput, TQueryFnData, TData, TError, > extends DistributiveOmit< DefinedInitialDataInfiniteOptions< TQueryFnData, TError, InfiniteData> | null>, TRPCQueryKey, NonNullable> | null >, TRPCInfiniteOptionOverrides >, TRPCQueryBaseOptions { initialCursor?: NonNullable> | null; } export interface DefinedTRPCInfiniteQueryOptionsOut< TInput, TQueryFnData, TData, TError, > extends DistributiveOmit< DefinedInitialDataInfiniteOptions< TQueryFnData, TError, InfiniteData> | null>, TRPCQueryKey, NonNullable> | null >, 'initialPageParam' >, TRPCQueryOptionsResult { queryKey: DataTag; initialPageParam: NonNullable> | null; } export interface UnusedSkipTokenTRPCInfiniteQueryOptionsIn< TInput, TQueryFnData, TData, TError, > extends DistributiveOmit< UnusedSkipTokenInfiniteOptions< TQueryFnData, TError, InfiniteData> | null>, TRPCQueryKey, NonNullable> | null >, TRPCInfiniteOptionOverrides >, TRPCQueryBaseOptions { initialCursor?: NonNullable> | null; } export interface UnusedSkipTokenTRPCInfiniteQueryOptionsOut< TInput, TQueryFnData, TData, TError, > extends DistributiveOmit< UnusedSkipTokenInfiniteOptions< TQueryFnData, TError, InfiniteData> | null>, TRPCQueryKey, NonNullable> | null >, 'initialPageParam' >, TRPCQueryOptionsResult { queryKey: DataTag; initialPageParam: NonNullable> | null; } /** * @internal */ export interface UseMutationOverride { onSuccess: (opts: { /** * Calls the original function that was defined in the query's `onSuccess` option */ originalFn: () => MaybePromise; queryClient: QueryClient; /** * Meta data passed in from the `useMutation()` hook */ meta: Record; }) => MaybePromise; } /** * @internal */ export interface CreateTRPCReactOptions<_TRouter extends AnyRouter> { /** * Override behaviors of the built-in hooks */ overrides?: { useMutation?: Partial; }; /** * Abort all queries when unmounting * @default false */ abortOnUnmount?: boolean; /** * Override the default context provider * @default undefined */ context?: React.Context; }