jsplanet
Version:
A controller for Trackmania 2020 dedicated server.
19 lines (18 loc) • 810 B
TypeScript
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 };