import * as _angular_core from '@angular/core'; import { InjectionToken, Provider } from '@angular/core'; import { AnyRouter, DefaultDataTransformer, DataTransformerOptions, CombinedDataTransformer, ClientDataTransformerOptions, ProcedureRouterRecord, AnyProcedure, AnyQueryProcedure, ProcedureArgs, AnyMutationProcedure, IntersectionError } from '@trpc/server'; import { inferTransformedProcedureOutput } from '@trpc/server/shared'; import { Observable } from 'rxjs'; import { TRPCLink, CreateTRPCClientOptions as CreateTRPCClientOptions$1, HttpBatchLinkOptions, HTTPHeaders } from '@trpc/client'; type CreateTRPCClientOptions = CreateTRPCClientBaseOptions & { links: TRPCLink[]; }; type CreateTRPCClientBaseOptions = TRouter['_def']['_config']['transformer'] extends DefaultDataTransformer ? { /** * Data transformer * * You must use the same transformer on the backend and frontend * @link https://trpc.io/docs/data-transformers **/ transformer?: 'You must set a transformer on the backend router'; } : TRouter['_def']['_config']['transformer'] extends DataTransformerOptions ? { /** * Data transformer * * You must use the same transformer on the backend and frontend * @link https://trpc.io/docs/data-transformers **/ transformer: TRouter['_def']['_config']['transformer'] extends CombinedDataTransformer ? DataTransformerOptions : TRouter['_def']['_config']['transformer']; } : { /** * Data transformer * * You must use the same transformer on the backend and frontend * @link https://trpc.io/docs/data-transformers **/ transformer?: /** @deprecated **/ ClientDataTransformerOptions | CombinedDataTransformer; }; type Resolver = (...args: ProcedureArgs) => Observable>; type DecorateProcedure = TProcedure extends AnyQueryProcedure ? { query: Resolver; } : TProcedure extends AnyMutationProcedure ? { mutate: Resolver; } : never; type DecoratedProcedureRecord = { [TKey in keyof TProcedures]: TProcedures[TKey] extends AnyRouter ? DecoratedProcedureRecord : TProcedures[TKey] extends AnyProcedure ? DecorateProcedure : never; }; type UntypedClientProperties = 'links' | 'runtime' | 'requestId' | '$request' | 'query' | 'mutation'; type CreateTrpcProxyClient = DecoratedProcedureRecord extends infer TProcedureRecord ? UntypedClientProperties & keyof TProcedureRecord extends never ? TProcedureRecord : IntersectionError : never; declare function createTRPCRxJSProxyClient(opts: CreateTRPCClientOptions): CreateTrpcProxyClient; type TrpcOptions = { url: string; options?: Partial>; batchLinkOptions?: Omit; }; type TrpcClient = ReturnType>; declare const createTrpcClient: ({ url, options, batchLinkOptions, }: TrpcOptions) => { TrpcClient: InjectionToken>; provideTrpcClient: () => Provider[]; TrpcHeaders: _angular_core.WritableSignal; /** @deprecated use TrpcClient instead */ tRPCClient: InjectionToken>; /** @deprecated use provideTrpcClient instead */ provideTRPCClient: () => Provider[]; /** @deprecated use TrpcHeaders instead */ tRPCHeaders: _angular_core.WritableSignal; }; declare function waitFor(prom: Promise | Observable): Promise; export { createTrpcClient, waitFor }; export type { CreateTrpcProxyClient, TrpcClient, TrpcOptions };