import { EventEmitter } from "node:events";
import type { Callbacks, ElectrumRequestBatchParams, ElectrumRequestParams, Protocol } from "../types";
export declare abstract class Client {
    private id;
    private callback_message_queue;
    protected subscribe: EventEmitter;
    private mp;
    private status;
    private readonly protocol;
    private conn;
    private readonly host;
    private readonly port;
    private readonly onErrorCallback;
    protected constructor(port: number, host: string, protocol: Protocol, callbacks?: Callbacks);
    protected initSocket(): void;
    protected connect(): Promise<void>;
    private connectSocket;
    close(): void;
    protected request<T>(method: string, params: ElectrumRequestParams<T>): Promise<unknown>;
    protected requestBatch<T>(method: string, params: ElectrumRequestParams<T>, secondParam: ElectrumRequestBatchParams): Promise<unknown>;
    private response;
    private onMessage;
    private onConnect;
    protected onClose(): void;
    private onRecv;
    protected onError(e: Error): void;
}
//# sourceMappingURL=client.d.ts.map