UNPKG

jsplanet

Version:

A controller for Trackmania 2020 dedicated server.

43 lines (42 loc) 2.1 kB
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;