///
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 {};