import EventEmitter from "node:events"; import net from "node:net"; import { URL } from "node:url"; import { DebugLoggerFunction } from "node:util"; import buildLookupFunction from "./dns-cache.js"; /** * @emits idle The socket has no more pending messages. We use this event * to be sure the socket is not active anymore before closing it. */ export declare abstract class Socket extends EventEmitter { protected hostname: string; protected port: number; protected connected: boolean; protected debug: typeof console.log; protected onError: (error: Error) => void; protected _pendingMessages: number; protected closeTimeout: number; protected constructor(url: URL, onError?: (error: Error) => void, debug?: DebugLoggerFunction); isConnected(): boolean; /** * Number of messages that are still being sent. */ get pendingMessages(): number; /** * Whether the socket has pending messages or not. * Used to check if the socket is still active. */ get idle(): boolean; abstract connect(): Promise; abstract send(data: string): void; abstract close(): Promise; } export declare class SocketTcp extends Socket { private socket; private reconnectCb; private closing; private connectCalled; private createConnection; constructor(url: URL, onError?: (error: Error) => void, debug?: DebugLoggerFunction, createConnection?: typeof net.createConnection); private _connect; connect(): Promise; send(data: string): void; close(): Promise; } type LookupFn = (_: string, __: 4 | 6, cb: (error?: NodeJS.ErrnoException | null, address?: string, family?: 4 | 6) => void) => void; export declare class SocketUdp extends Socket { private socket; private udpVersion; lookup: LookupFn | undefined; constructor(url: URL, onError?: (error: Error) => void, dnsCache?: boolean, dnsCacheTTL?: number, debug?: DebugLoggerFunction, buildLookup?: typeof buildLookupFunction); connect(): Promise; send(data: string): void; close(): Promise; } export {};