///
import EventEmitter from "eventemitter3";
import ISocket from "../../isocket";
import SerialSocket from "../../serial.socket";
import { StreamEvent, ReadyState } from "../../types";
import IOSocket from "../../io.socket";
/**
* 桥接socket
*/
export default class AigoSocket extends EventEmitter implements ISocket {
readonly rootSocket: SerialSocket;
readonly sessionId: string;
private _destroyed;
private _open;
private _readable;
private _writable;
type: "accept" | "connect";
private readonly _id;
private readonly _ioSocket;
private pidConnectTimeout;
private pidKeeyAlive;
private pidHeartbeat;
private _lastHeartbeat;
private keepAliveTime;
get id(): string;
get rootId(): string;
get writable(): boolean;
get readable(): boolean;
get remoteAddress(): string;
get remotePort(): number;
get localAddress(): string;
get localPort(): number;
get destroyed(): boolean;
get readyState(): ReadyState;
get ioSocket(): IOSocket;
isPaused(): boolean;
get readableLength(): number;
get writableLength(): number;
constructor(rootSocket: SerialSocket, sessionId: string);
heartbeat(): void;
private initEvent;
/**
* 通知客户端连接已经打开
*/
notifyClientOpen(): void;
/**
* 连接远程主机
* @param port
* @param host
* @param callback
*/
connect(port: number, host: string, callback: () => void): void;
turn(port: number, host: string, callback: () => void): void;
read(ttl?: number): Promise;
write(chunk: string | Buffer): boolean;
end(chunk?: string | Buffer): void;
pipe(socket: AigoSocket): AigoSocket;
pause(): void;
resume(): void;
destroy(err?: Error | undefined): void;
close(err?: Error): void;
private clear;
setTimeout(ttl: number): void;
setKeepAlive(enable: boolean, ttl?: number): void;
}