///
///
import { net } from "../adapter";
import AigoSocket from "./helpers/aigo/aigo.socket";
import IOSocket from "./io.socket";
import PeerSocket from "./peer/peer.socket";
import WSocket from "./wsocket";
export type AcceptSocket = net.Socket | PeerSocket | WSocket | IOSocket | AigoSocket;
export { PeerOptions } from "./peer/types";
export type ReadyState = "opening" | "open" | "readOnly" | "writeOnly" | "closed";
export declare enum CMD {
/** 心跳检测 */
HEARTBEAT = 0,
/** 连接关闭指令 */
CLOSE = 1,
/** turn打洞服务 */
TURN = 4,
/** 连接已经打开指令 */
OPEN = 5,
/** 连接目标主机指令 */
CONNECT = 6,
ERROR = 7,
TIMEOUT = 8,
/** 数据流 */
DATA = 9
}
export type SocketType = "accept" | "connect";
export type ReadData = {
size: number;
session: string;
host: string;
port: number;
};
export type WriteData = {
size: number;
session: string;
host: string;
port: number;
};
export type StreamTransport = {
in: (data: ReadData) => void;
out: (data: WriteData) => void;
};
export interface StreamEvent {
data: (chunk: Buffer) => void;
/** 关闭事件
* @param real: 是否真实关闭
*
*/
close: () => void;
error: (error: Error) => void;
timeout: () => void;
connect: () => void;
}