import type { TRPCClientErrorLike } from '@trpc/client'; import type { AnyProcedure, AnyRootTypes, inferProcedureInput, inferProcedureOutput, inferTransformedProcedureOutput, } from '@trpc/server/unstable-core-do-not-import'; import type { DecoratedQuery } from '../../createTRPCReact'; import type { InferQueryOptions, InferQueryResult, } from '../../utils/inferReactQueryProcedure'; import type { UseTRPCSuspenseQueryResult } from '../hooks/types'; /** * Use to request a query route which matches a given query procedure's interface */ export type QueryLike< TRoot extends AnyRootTypes, TProcedure extends AnyProcedure, > = { useQuery: ( variables: inferProcedureInput, opts?: InferQueryOptions, ) => InferQueryResult; useSuspenseQuery: ( variables: inferProcedureInput, opts?: InferQueryOptions, ) => UseTRPCSuspenseQueryResult< inferProcedureOutput, TRPCClientErrorLike >; }; /** * Use to unwrap a QueryLike's input */ export type InferQueryLikeInput = TQueryLike extends DecoratedQuery ? $Def['input'] : TQueryLike extends QueryLike ? inferProcedureInput : never; /** * Use to unwrap a QueryLike's data output */ export type InferQueryLikeData = TQueryLike extends DecoratedQuery ? $Def['output'] : TQueryLike extends QueryLike ? inferTransformedProcedureOutput : never;