///
///
import net from 'net';
import { Logger } from '../../../logger';
import { Meter } from '../../../metrics/meter';
import { MessageBuffer } from '../../messageBuffer';
import { RpcRequest } from '../../request';
import { ApiNamespace, Router } from '../../routes';
import { RpcServer } from '../../server';
import { IRpcAdapter } from '../adapter';
import { RpcSocketServerMessage } from './protocol';
type RpcSocketClient = {
id: string;
socket: net.Socket;
requests: Map;
messageBuffer: MessageBuffer;
};
export declare abstract class RpcSocketAdapter implements IRpcAdapter {
logger: Logger;
listen: net.ListenOptions;
server: net.Server | null;
router: Router | null;
namespaces: ApiNamespace[];
enableAuthentication: boolean;
started: boolean;
clients: Map;
inboundTraffic: Meter;
outboundTraffic: Meter;
get addressPort(): number | null;
constructor(listen: net.ListenOptions, logger: Logger | undefined, namespaces: ApiNamespace[]);
protected createServer(): net.Server | Promise;
start(): Promise;
stop(): Promise;
attach(server: RpcServer): void;
waitForAllToDisconnect(): Promise;
waitForClientToDisconnect(client: RpcSocketClient): Promise;
onClientConnection(socket: net.Socket): void;
onClientDisconnection(client: RpcSocketClient): void;
onClientError(client: RpcSocketClient, error: unknown): void;
onClientData(client: RpcSocketClient, data: Buffer): Promise;
emitResponse(client: RpcSocketClient, data: RpcSocketServerMessage, requestId?: string): void;
emitStream(client: RpcSocketClient, data: RpcSocketServerMessage): void;
encodeMessage(data: RpcSocketServerMessage): Buffer;
constructMessage(messageId: number, status: number, data: unknown): RpcSocketServerMessage;
constructStream(messageId: number, data: unknown): RpcSocketServerMessage;
constructMalformedRequest(request: unknown): RpcSocketServerMessage;
describe(): string;
}
export {};
//# sourceMappingURL=socketAdapter.d.ts.map