import * as stream from 'stream'; import * as ws from 'ws'; import { IncomingMessage } from 'node:http'; import { TestHttpServer } from './http.js'; import 'hono'; import '@hono/node-server'; interface TestWebSocketServerOptions { server: TestHttpServer; pathname?: string; } /** * Attach a disposable WebSocket middleware to the given HTTP test server. * * @example * await using server = await createTestHttpServer() * await using wss = createWebSocketMiddleware({ server }) */ declare function createWebSocketMiddleware(options: TestWebSocketServerOptions): { [Symbol.asyncDispose](): Promise; raw: ws.Server; on: { (event: "connection", cb: (this: ws.Server, websocket: ws.default, request: IncomingMessage) => void): ws.Server; (event: "error", cb: (this: ws.Server, error: Error) => void): ws.Server; (event: "headers", cb: (this: ws.Server, headers: string[], request: IncomingMessage) => void): ws.Server; (event: "close" | "listening", cb: (this: ws.Server) => void): ws.Server; (event: "wsClientError", cb: (this: ws.Server, error: Error, socket: stream.Duplex, request: IncomingMessage) => void): ws.Server; (event: string | symbol, listener: (this: ws.Server, ...args: any[]) => void): ws.Server; }; once: { (event: "connection", cb: (this: ws.Server, websocket: ws.default, request: IncomingMessage) => void): ws.Server; (event: "error", cb: (this: ws.Server, error: Error) => void): ws.Server; (event: "headers", cb: (this: ws.Server, headers: string[], request: IncomingMessage) => void): ws.Server; (event: "close" | "listening", cb: (this: ws.Server) => void): ws.Server; (event: "wsClientError", cb: (this: ws.Server, error: Error, socket: stream.Duplex, request: IncomingMessage) => void): ws.Server; (event: string | symbol, listener: (this: ws.Server, ...args: any[]) => void): ws.Server; }; off: { (event: "connection", cb: (this: ws.Server, websocket: ws.default, request: IncomingMessage) => void): ws.Server; (event: "error", cb: (this: ws.Server, error: Error) => void): ws.Server; (event: "headers", cb: (this: ws.Server, headers: string[], request: IncomingMessage) => void): ws.Server; (event: "close" | "listening", cb: (this: ws.Server) => void): ws.Server; (event: "wsClientError", cb: (this: ws.Server, error: Error, socket: stream.Duplex, request: IncomingMessage) => void): ws.Server; (event: string | symbol, listener: (this: ws.Server, ...args: any[]) => void): ws.Server; }; readonly ws: { url(): URL; }; readonly wss: { url(): URL; }; close(): Promise; }; export { type TestWebSocketServerOptions, createWebSocketMiddleware };