import { EventEmitter } from "events"; import type { IncomingMessage, ServerResponse } from "http"; import { Packet, RawData } from "engine.io-parser"; type ReadyState = "open" | "closing" | "closed"; export type EngineRequest = IncomingMessage & { _query: Record; res?: ServerResponse; cleanup?: Function; websocket?: any; }; export declare abstract class Transport extends EventEmitter { /** * The session ID. */ sid: string; /** * Whether the transport is currently ready to send packets. */ writable: boolean; /** * The revision of the protocol: * * - 3 is used in Engine.IO v3 / Socket.IO v2 * - 4 is used in Engine.IO v4 and above / Socket.IO v3 and above * * It is found in the `EIO` query parameters of the HTTP requests. * * @see https://github.com/socketio/engine.io-protocol */ protocol: number; /** * The current state of the transport. * @protected */ protected _readyState: ReadyState; /** * Whether the transport is discarded and can be safely closed (used during upgrade). * @protected */ protected discarded: boolean; /** * The parser to use (depends on the revision of the {@link Transport#protocol}. * @protected */ protected parser: any; /** * Whether the transport supports binary payloads (else it will be base64-encoded) * @protected */ protected supportsBinary: boolean; get readyState(): ReadyState; set readyState(state: ReadyState); /** * Transport constructor. * * @param {EngineRequest} req */ constructor(req: { _query: Record; }); /** * Flags the transport as discarded. * * @package */ discard(): void; /** * Called with an incoming HTTP request. * * @param req * @package */ onRequest(req: any): void; /** * Closes the transport. * * @package */ close(fn?: () => void): void; /** * Called with a transport error. * * @param {String} msg - message error * @param {Object} desc - error description * @protected */ protected onError(msg: string, desc?: any): void; /** * Called with parsed out a packets from the data stream. * * @param {Object} packet * @protected */ protected onPacket(packet: Packet): void; /** * Called with the encoded packet data. * * @param {String} data * @protected */ protected onData(data: RawData): void; /** * Called upon transport close. * * @protected */ protected onClose(): void; /** * The name of the transport. */ abstract get name(): string; /** * Sends an array of packets. * * @param {Array} packets * @package */ abstract send(packets: Packet[]): void; /** * Closes the transport. */ abstract doClose(fn?: () => void): void; } export {};