import { IsomorphicBuffer } from "../helpers.js";
import { SocketAdapter } from "./shared.js";
import { SocketProtocolAdapter } from "./shared.socket-protocol-adapter.js";
export interface SocketProtocolTransformer<TMessage, TSource = string | IsomorphicBuffer> {
    receive: (data: TSource, self: SocketProtocolAdapter<unknown>) => TMessage[];
    send: (data: TMessage, self: SocketProtocolAdapter<unknown>) => TSource;
    close?: (socket: SocketAdapter) => Promise<void>;
}
export declare function pipeSocketProtocolTransformer<TSource, TIntermediate, TTarget>(source: SocketProtocolTransformer<TIntermediate, TSource>, target: SocketProtocolTransformer<TTarget, TIntermediate>): SocketProtocolTransformer<TTarget, TSource>;
