import { z } from 'zod'; import ISocket from './ISocket'; interface MethodDef { [key: string]: { inputs: z.ZodFirstPartySchemaTypes | z.ZodDiscriminatedUnion; returns: z.ZodFirstPartySchemaTypes | z.ZodDiscriminatedUnion; }; } export declare type DuplexRPCClient = { setCommunicator: (newCommunicator: ISocket) => void; send: (methodName: MethodName, inputs: z.input) => Promise>; }; interface CreateDuplexRPCClientProps { communicator: ISocket; canCall: CallerSchema; canRespondTo: ResponderSchema; handlers: { [Property in keyof ResponderSchema]: (inputs: z.infer) => Promise>; }; } export declare function createDuplexRPCClient(props: CreateDuplexRPCClientProps): DuplexRPCClient; export {};