import { Peer, WSError } from 'crossws'; import { Context, type AnyElysia } from 'elysia'; import { ElysiaTypeCheck } from 'elysia/schema'; import { ElysiaWS } from 'elysia/ws'; import type { ServerWebSocket } from 'elysia/ws/bun'; import type { AnyWSLocalHook } from 'elysia/ws/types'; export interface NodeWebSocketContext { data: Context; validateResponse: ElysiaTypeCheck | undefined; ping: ElysiaWS['ping']; pong: ElysiaWS['pong']; open(ws: Peer): Promise; message(ws: ServerWebSocket, message: string): Promise; drain(ws: ServerWebSocket): Promise; close(ws: ServerWebSocket, code: number, reason: string): Promise; error(ws: ServerWebSocket, error: WSError): void; } export interface NodeWebSocketPeer extends Omit { context: NodeWebSocketContext; } export declare function createWebSocketAdapter(): { handler: (app: AnyElysia, path: string, options: AnyWSLocalHook) => void; createConfig: (app: AnyElysia) => { upgrade(request: Request & { readonly context?: Record; }): Promise; open(ws: Peer): void; message(ws: Peer, message: import("crossws").Message): void; close(ws: Peer, detail: { code?: number; reason?: string; }): void; error(ws: Peer, error: WSError): void; }; context: Record; };