jsplanet
Version:
A controller for Trackmania 2020 dedicated server.
43 lines (42 loc) • 2.1 kB
TypeScript
import { TypedEmitter } from "tiny-typed-emitter";
import { XmlRpcCallbacks, XmlRpcCallbacksCall, XmlRpcMethods, XmlRpcMethodsCall, XmlRpcMethodsResponse, XmlRpcScriptCallbacks, XmlRpcScriptCallbacksCall, XmlRpcScriptMethodResponseCallbackCall, xmlRpcScriptMethodsResponseCallback, XmlRpcScriptResponseCallbacks } from "./types.js";
type GbxRemoteEvents = {
[callback: `callback:${string}`]: (callback: {
[Callback in XmlRpcScriptResponseCallbacks]: XmlRpcScriptCallbacksCall[Callback][1];
}[XmlRpcScriptResponseCallbacks]) => unknown;
[responseId: `response:${number}`]: (response: string) => unknown;
connect: (success: boolean) => unknown;
disconnect: (reason: null | string) => unknown;
ready: () => unknown;
} & {
[Callback in XmlRpcCallbacks]: (...arguments_: XmlRpcCallbacksCall[Callback]) => unknown;
} & {
[Callback in XmlRpcScriptCallbacks]: (...arguments_: XmlRpcScriptCallbacksCall[Callback][1]) => unknown;
};
declare class GbxRemote extends TypedEmitter<GbxRemoteEvents> {
private static API_VERSION;
private static DEFAULT_HANDLER;
private static MAGIC_HEADER;
private static MAX_HANDLER;
private connection;
private data;
private handler;
private handlersWaitingResponse;
private host;
private isConnected;
private password;
private port;
private user;
constructor(host: string, port: number, user: string, password: string);
callMethod<Method extends "TriggerModeScriptEventArray", ScriptMethod extends keyof typeof xmlRpcScriptMethodsResponseCallback>(method: Method, scriptMethod: ScriptMethod, args: XmlRpcMethodsCall[Method][1]): Promise<[
...XmlRpcMethodsResponse[Method],
Promise<XmlRpcScriptMethodResponseCallbackCall<ScriptMethod>>
]>;
callMethod<Method extends XmlRpcMethods>(method: Method, ...args: XmlRpcMethodsCall[Method]): Promise<XmlRpcMethodsResponse[Method]>;
connect(): Promise<boolean>;
disconnect(reason?: string): void;
private handle;
private handleCallback;
private setupConnection;
}
export default GbxRemote;