import { Buffer } from 'buffer';
import { TcpSocket } from './tcp-socket.js';
export interface JsonSocketOptions {
    maxBufferSize?: number;
    incompleteMessageTimeout?: number;
    maxSendBufferSize?: number;
}
export declare class JsonSocket extends TcpSocket {
    private contentLength;
    private buffer;
    private readonly stringDecoder;
    private readonly delimiter;
    private readonly maxBufferSize;
    private readonly incompleteMessageTimeout;
    private readonly maxSendBufferSize;
    private incompleteMessageTimer;
    private isBackpressured;
    constructor(socket: any, options?: JsonSocketOptions);
    protected handleSend(message: any, callback?: (err?: any) => void): void;
    /**
     * Suspending reads bounds a peer that keeps asking for more, but responses
     * to requests already in flight still queue up behind a peer that reads
     * nothing at all. This caps how much may be held for one connection, which
     * mirrors "maxBufferSize" on the receiving side.
     */
    private assertSendBufferWithinLimit;
    protected handleData(dataRaw: Buffer | string): void;
    private processBuffer;
    private applyBackpressure;
    private releaseBackpressure;
    /**
     * Arms an idle timer whenever a packet is only partially received, and
     * disarms it as soon as the buffer is drained. The timer is refreshed on
     * every read, so it only fires when the peer stops sending mid-packet -
     * a slow but progressing transfer is never interrupted.
     */
    private refreshIncompleteMessageTimer;
    private clearIncompleteMessageTimer;
    private handleIncompleteMessageTimeout;
    private handleMessage;
    private formatMessageData;
}
