import * as plugins from './plugins.js'; export interface IFlexFramedTransportOptions { readable: plugins.stream.Readable; writable: plugins.stream.Writable; parseIncoming: (valueArg: unknown) => TIncoming; validateOutgoing?: (valueArg: unknown) => TOutgoing; maximumFrameBytes?: number; } type TMessageListener = (messageArg: TMessage) => void; type TErrorListener = (errorArg: Error) => void; type TCloseListener = () => void; export declare const flexIpcMaximumQueuedFrames = 128; export declare const flexIpcMaximumQueuedFrameBytes: number; export declare const encodeFlexFrame: (valueArg: unknown, maximumFrameBytesArg?: number) => Buffer; /** * A single-reader/single-writer JSON transport. The body buffer is allocated * only after the fixed header has passed the configured length limit. */ export declare class FlexFramedTransport { private readonly readable; private readonly writable; private readonly parseIncoming; private readonly validateOutgoing?; private readonly maximumFrameBytes; private readonly header; private headerOffset; private body?; private bodyOffset; private messageListeners; private errorListeners; private closeListeners; private writeTail; private queuedFrames; private queuedFrameBytes; private failed; private closed; private closePromise?; constructor(optionsArg: IFlexFramedTransportOptions); onMessage(listenerArg: TMessageListener): () => void; onError(listenerArg: TErrorListener): () => void; onClose(listenerArg: TCloseListener): () => void; send(messageArg: TOutgoing): Promise; close(): Promise; private closeTransport; private readonly onData; private finishBody; private writeFrame; private readonly onReadError; private readonly onWriteError; private readonly onReadableClosed; private readonly onWritableClosed; private fail; private detachStreams; private emitClose; } export {};