import { z } from "zod";
declare enum MessageType {
    MethodCall = "MethodCall",
    MethodResponse = "MethodResponse"
}
interface ParsedMethodCall<MethodName, T> {
    methodName: MethodName;
    params: T;
}
type ParsedParameter = boolean | Buffer | Date | number | ParsedParameter[] | string | {
    [key: string]: ParsedParameter;
};
declare function parser<T extends Record<string, z.Schema>>(type: MessageType.MethodCall, response: string, schemas: T): {
    [MethodName in keyof T]: ParsedMethodCall<MethodName, z.infer<T[MethodName]>>;
}[keyof T];
declare function parser<T>(type: MessageType.MethodResponse, response: string, schema: z.Schema<T>): T;
declare function serializer(type: MessageType, name: string, ...parameters: ParsedParameter[]): string;
export { MessageType, parser, serializer };
