///
import { Duplex } from 'stream';
import { Channel } from './Multiplex';
import MessageBus from './MessageBus';
declare type CloseReason = 'outdated' | 'timeout' | 'error' | 'shutdown' | 'self-connection' | 'unknown';
export interface SocketInfo {
type: string;
isClient: boolean;
}
export default class PeerConnection {
isClient: boolean;
type: SocketInfo['type'];
id?: string;
onClose?: (reason: CloseReason) => void;
private heartbeat;
private rawSocket;
private multiplex;
private secureStream;
private internalBus;
constructor(rawSocket: Duplex, info: SocketInfo);
get isOpen(): boolean;
get isClosed(): boolean;
openBus(name: string, subscriber?: (msg: M) => void): MessageBus;
openChannel(name: string): Channel;
close(reason?: CloseReason): void;
private onMsg;
private closeOutdated;
private log;
}
export {};