/** * Dependency-free contract for Node.js WebSocket server implementations. * * Core owns HTTP upgrade authorization and lifecycle. An extension owns the * protocol implementation used to complete an authorized upgrade on an * existing Node socket. */ export declare const NodeWebSocketServerProviderName = "NodeWebSocketServerProvider"; export declare const NODE_WEBSOCKET_SERVER_PROVIDER_PACKAGE = "@veryfront/ext-node-websocket-ws"; export declare const NODE_WEBSOCKET_SERVER_PROVIDER_MISSING_MESSAGE = "Node.js WebSocket upgrades require @veryfront/ext-node-websocket-ws; install it or remove the extension disable directive."; export type NodeWebSocketMessageData = ArrayBuffer | ArrayBufferView | readonly ArrayBufferView[]; /** Minimal connection surface consumed by core's runtime-neutral adapter. */ export interface NodeWebSocketConnection extends EventTarget { on(event: "open", listener: () => void): this; on(event: "message", listener: (data: NodeWebSocketMessageData, isBinary: boolean) => void): this; on(event: "close", listener: (code?: number, reason?: ArrayBufferView | string) => void): this; on(event: "error", listener: (error: Error) => void): this; send(data: string | ArrayBuffer): void; close(code?: number, reason?: string): void; terminate?(): void; } /** Exact no-server options supplied by core for an existing HTTP listener. */ export interface NodeWebSocketServerOptions { readonly noServer: true; readonly handleProtocols: (protocols: ReadonlySet, request: object) => string | false; } /** Minimal server surface used by upgrade and shutdown ownership. */ export interface NodeWebSocketServer { readonly clients?: Iterable; on(event: "headers", listener: (headers: string[], request: unknown) => void): this; close(callback?: (error?: Error) => void): void; handleUpgrade(request: unknown, socket: unknown, head: unknown, callback: (socket: NodeWebSocketConnection) => void): void; emit(event: string, socket: NodeWebSocketConnection, request: unknown): void; } export interface NodeWebSocketServerProvider { readonly createServer: (options: NodeWebSocketServerOptions) => NodeWebSocketServer; } /** * Capture one server instance without retaining mutable method lookups. The * underlying implementation remains the receiver because protocol engines * legitimately keep mutable transport state on their instance. */ export declare function captureNodeWebSocketServer(value: unknown): Readonly; /** * Capture a provider generation without retaining its mutable registration * object or invoking extension-owned accessors. */ export declare function snapshotNodeWebSocketServerProvider(value: unknown): Readonly; /** Create immutable registration metadata from a standalone factory. */ export declare function createNodeWebSocketServerProvider(createServer: (options: NodeWebSocketServerOptions) => NodeWebSocketServer): Readonly; //# sourceMappingURL=node-websocket-server-provider.d.ts.map