import { ProcedureCallOptions } from './internals/procedureBuilder'; import { ProcedureType } from './types'; type ClientContext = Record; /** * @internal */ export interface ProcedureOptions { /** * Client-side context */ context?: ClientContext; signal?: AbortSignal; } /** * @internal */ export type ProcedureArgs = void extends TParams['_input_in'] ? [input?: undefined | void, opts?: ProcedureOptions] : undefined extends TParams['_input_in'] ? [input?: TParams['_input_in'] | void, opts?: ProcedureOptions] : [input: TParams['_input_in'], opts?: ProcedureOptions]; interface BuiltProcedureDef { input: unknown; output: unknown; } /** * * @internal */ export interface Procedure< TType extends ProcedureType, TDef extends BuiltProcedureDef, > { _def: { _input_in: TDef['input']; _output_out: TDef['output']; procedure: true; type: TType; /** * @internal * Meta is not inferrable on individual procedures, only on the router */ meta: unknown; }; /** * @internal */ (opts: ProcedureCallOptions): Promise; } export interface QueryProcedure extends Procedure<'query', TDef> {} export interface MutationProcedure extends Procedure<'mutation', TDef> {} export interface SubscriptionProcedure extends Procedure<'subscription', TDef> {} export type AnyQueryProcedure = QueryProcedure; export type AnyMutationProcedure = MutationProcedure; export type AnySubscriptionProcedure = SubscriptionProcedure; export type AnyProcedure = Procedure;