/// /// import { Duplex } from 'stream'; import { Endpoint } from './types'; export interface PeerOptions { readonly endpoint: Endpoint; readonly stream: Duplex; readonly transform: Duplex; readonly onError: (peer: Peer, error: Error) => void; readonly onClose: (peer: Peer) => void; } export declare abstract class Peer { readonly endpoint: Endpoint; private readonly stream; private readonly transform; private readonly buffer; private mutableConnected; private mutableConnecting; private mutableClosed; private readonly onErrorInternal; private readonly onCloseInternal; constructor(options: PeerOptions); readonly connected: boolean; connect(): Promise; close(hadError?: boolean): void; write(buffer: Buffer): void; receiveMessage(timeoutMS?: number): Promise; streamData(onDataReceived: (data: Message) => void): { readonly unsubscribe: () => void; }; protected abstract connectInternal(): Promise; protected abstract closeInternal(hadError: boolean): void; protected onError(error: Error): void; private onClose; }