import { type IncomingMessage } from 'node:http'; import { EventEmitter } from 'node:events'; import type { Socket } from 'node:net'; export type RawData = string | Buffer | Buffer[] | ArrayBuffer; interface WebSocketServerOptions { port?: number; host?: string; backlog?: number; maxPayload?: number; verifyClient?: (request: IncomingMessage) => boolean; handleProtocols?: (protocols: Set) => string | false; allowedOrigins?: Set | ((origin: string | undefined, request: IncomingMessage) => boolean); path?: string; idleTimeoutMs?: number; maxPingsPerWindow?: number; pingWindowMs?: number; maxSendQueueBytes?: number; maxBufferBytes?: number; } export declare function isSameOrigin(origin: string | undefined, hostHeader: string | undefined): boolean; export declare class WebSocket extends EventEmitter { #private; static readonly CONNECTING = 0; static readonly OPEN = 1; static readonly CLOSING = 2; static readonly CLOSED = 3; readyState: number; constructor(socket: Socket, options?: { maxPayload?: number; maxPingsPerWindow?: number; pingWindowMs?: number; maxSendQueueBytes?: number; maxBufferBytes?: number; }); get bufferedAmount(): number; send(data: string | Buffer, callback?: (error?: Error | null) => void): void; ping(callback?: (error?: Error | null) => void): void; close(code?: number, reason?: string): void; terminate(): void; _handleData(chunk: Buffer): void; } export declare class WebSocketServer extends EventEmitter { #private; options: WebSocketServerOptions; constructor(options?: WebSocketServerOptions); address(): string | import("node:net").AddressInfo | null; close(callback?: (error?: Error) => void): void; } export {};