/// import { Procedures, Procedure } from "../types"; export type RPCClient = TransformProcedures; type TransformProcedures = TProcedures extends Procedures ? { [P in keyof TProcedures]: TransformProcedures; } : TProcedures extends Procedure ? TransformProcedure : TProcedures; type TransformProcedure> = (...args: TransformProcedureArgs> extends any[] ? TransformProcedureArgs> : []) => Promise>>>; type TransformProcedureArgs = { [P in keyof TArgs]: TransformProcedureArg; }; type TransformProcedureArg = TArg extends Record | unknown[] ? { [P in keyof TArg]: TransformProcedureArg; } : TArg extends Buffer ? Blob : TArg; type TransformProcedureReturnType = TReturnType extends Record | unknown[] ? { [P in keyof TReturnType]: TransformProcedureReturnType; } : TReturnType extends Buffer ? Blob : TReturnType extends Error ? { name: string; message: string; } : TReturnType; export type ResponseLike = { arrayBuffer: () => Promise; }; export type FetchLike = (input: string, init: { method: "POST"; body: any; headers: Record; }) => Promise; export type CreateRPCClientArgs = { serverURL: string; fetch?: FetchLike; }; export declare const createRPCClient: (args: CreateRPCClientArgs) => TransformProcedures; export {};