import axon from "axon"; //#region src/rpc.d.ts interface InflightEntry { resolve: (value: unknown) => void; reject: (reason: Error) => void; to: ReturnType; errorPrefix?: string; } interface RpcOptions { timeoutMs?: number; respEvent?: string; errorPrefix?: string; } interface SocketLike { writable: boolean; write(buf: Buffer): void; } declare class Client extends axon.Socket { socks: SocketLike[]; port: number; host: string; online: boolean; connectPromise: Promise | null; inflight: Map; /** * @param {number} port * @param {string} host */ constructor(port: number, host?: string); onmessage(): (buf: Buffer) => void; sendEvent(event: string, data: unknown): void; ensureOnline(): Promise; /** * 通用 RPC:发送 event,等待响应(默认只按 reqId 匹配) * @param {string} event 例如 'pm2/start' * @param {object} payload 发送为 { reqId, payload } * @param {object} [opts] * @param {number} [opts.timeoutMs=120000] * @param {string} [opts.respEvent] // 可选:仅用于调试;匹配靠 reqId,不强依赖此项 * @param {string} [opts.errorPrefix] // 统一错误前缀 * @returns {Promise} */ rpc(event: string, payload?: unknown, { timeoutMs, respEvent, errorPrefix }?: RpcOptions): Promise; } //#endregion export { Client as default };