/// /// /// import net from "node:net"; import EventEmitter from "node:events"; import * as Types from "../types"; import { Encoder } from "./streams"; import StateManager from "./state"; import Storage from "./storage"; declare class DogmaSocket extends EventEmitter { protected stateBridge: StateManager; protected storageBridge: Storage; readonly id: Types.Connection.Id; private readonly socket; input: { handshake: Encoder; test?: Encoder; control?: Encoder; messages?: Encoder; mail?: Encoder; dht?: Encoder; }; readonly direction: Types.Connection.Direction; status: Types.Connection.Status; group: Types.Connection.Group; private outSession; private inSession?; private publicUserKey?; private publicNodeKey?; user_id?: Types.User.Id; node_id?: Types.Node.Id; unverified_user_id?: Types.User.Id; unverified_node_id?: Types.Node.Id; onDisconnect?: Function; tested: boolean; constructor(socket: net.Socket, direction: Types.Connection.Direction, state: StateManager, storage: Storage); private setDecoder; private setEncoder; private setGroup; private checkGroup; private test; private onData; private onClose; private onError; private sign; private verify; private sendHandshake; /** * * @todo add data verification */ protected handleHandshake(data: Buffer): void; protected handleTest(data: Buffer): void; destroy(reason?: string): net.Socket; } export default DogmaSocket;