import { type ContractProcedure } from '@ts-pf/contract'; import { type CallInterceptor } from './call-interceptor.js'; import { createErrorFactory } from './error-factory.js'; import type { MiddlewareFn } from './middleware.js'; export type HandlerFn = (opts: { input: unknown; context: unknown; errors: ReturnType; path: string[]; signal?: AbortSignal; }) => unknown | Promise; export type ImplementedProcedure = { readonly '~pf': { type: 'implemented-procedure'; contract: ContractProcedure; use: MiddlewareFn[]; useAfter: MiddlewareFn[]; handler: HandlerFn; path: string[]; }; }; declare const contractBrand: unique symbol; type AnyImplementedRouter = { readonly [key: string]: ImplementedProcedure | AnyImplementedRouter | undefined; }; type ImplementedRouterMapped = { readonly [K in keyof T as K extends '~pf' ? never : K]: T[K] extends ContractProcedure ? ImplementedProcedure : ImplementedRouterMapped; }; export type ImplementedRouter = ([unknown] extends [T] ? AnyImplementedRouter : ImplementedRouterMapped) & { readonly [contractBrand]?: T; }; export declare function isImplementedProcedure(value: unknown): value is ImplementedProcedure; export type ProcedureValidation = { /** Set false to skip the input schema. Default true. */ input?: boolean; /** Set true to check the output schema, including stream output items. Default false. */ output?: boolean; }; export type RunProcedureOptions = { signal?: AbortSignal; interceptors?: readonly CallInterceptor[]; validation?: ProcedureValidation; }; export declare function runProcedure(proc: ImplementedProcedure, rawInput: unknown, context: unknown, options?: RunProcedureOptions): Promise; export declare function lookupProcedure(router: ImplementedRouter, path: string[]): ImplementedProcedure | undefined; export declare function assertContractProcedure(value: unknown): asserts value is ContractProcedure; export {}; //# sourceMappingURL=runtime.d.ts.map