/** * @module * WebSocket Helper for Hono. */ import type { Context } from '../../context'; import type { MiddlewareHandler, TypedResponse } from '../../types'; import type { StatusCode } from '../../utils/http-status'; /** * WebSocket Event Listeners type */ export interface WSEvents { onOpen?: (evt: Event, ws: WSContext) => void; onMessage?: (evt: MessageEvent, ws: WSContext) => void; onClose?: (evt: CloseEvent, ws: WSContext) => void; onError?: (evt: Event, ws: WSContext) => void; } /** * Upgrade WebSocket Type */ export interface UpgradeWebSocket> { (createEvents: (c: Context) => _WSEvents | Promise<_WSEvents>, options?: U): MiddlewareHandler; (c: Context, events: _WSEvents, options?: U): Promise>; } /** * ReadyState for WebSocket */ export type WSReadyState = 0 | 1 | 2 | 3; /** * An argument for WSContext class */ export interface WSContextInit { send(data: string | ArrayBuffer | Uint8Array, options: SendOptions): void; close(code?: number, reason?: string): void; raw?: T; readyState: WSReadyState; url?: string | URL | null; protocol?: string | null; } /** * Options for sending message */ export interface SendOptions { compress?: boolean; } /** * A context for controlling WebSockets */ export declare class WSContext { constructor(init: WSContextInit); send(source: string | ArrayBuffer | Uint8Array, options?: SendOptions): void; raw?: T; binaryType: BinaryType; get readyState(): WSReadyState; url: URL | null; protocol: string | null; close(code?: number, reason?: string): void; } export type WSMessageReceive = string | Blob | ArrayBufferLike; export declare const createWSMessageEvent: (source: WSMessageReceive) => MessageEvent; export interface WebSocketHelperDefineContext { } export type WebSocketHelperDefineHandler = (c: Context, events: WSEvents, options?: U) => Promise | Response | void; /** * Create a WebSocket adapter/helper */ export declare const defineWebSocketHelper: (handler: WebSocketHelperDefineHandler) => UpgradeWebSocket;