import { EventEmitter } from "node:events"; import type { IncomingMessage, ObjPath } from "./protocol.js"; export interface ConnectionConfig { host: string; port: number; retryIntervalMs?: number; requestTimeoutMs?: number; pingIntervalMs?: number; } export type RequestBody = { type: "set"; obj: ObjPath; payload: unknown; } | { type: "get"; obj?: ObjPath; } | { type: "cmd"; payload: unknown; }; export interface ConnectionEvents { connected: []; reconnected: []; disconnected: []; reconnecting: []; update: [unknown]; error: [Error]; } export declare class Connection extends EventEmitter { private readonly config; private readonly retryMs; private readonly reqTimeoutMs; private readonly pingMs; private socket?; private seq; private pending; private retryTimer?; private pingTimer?; private destroyed; private hasConnectedOnce; private firstConnectResolve?; constructor(config: ConnectionConfig); get connected(): boolean; start(): Promise; private openSocket; private onDrop; private scheduleRetry; private startPing; private stopPing; private onMessage; request(body: RequestBody): Promise; private failAllPending; destroy(): Promise; }