import { InputSchema, MaybeArray } from 'elysia'; import { D as DataTransformerOptions, C as CombinedDataTransformer } from './transformer-BrEsAU6i.cjs'; /** * Eden WS implementation. * * @see https://github.com/elysiajs/eden/blob/7b982cf6469d809cd561dd0ad59e83178ad56489/src/treaty2/ws.ts#L5 */ /** * Configuration for EdenWS. */ type EdenWsOptions = { /** * Custom transformer for messages. */ transformer?: DataTransformerOptions; }; /** * Strongly-typed websocket event. * * Messages will be formatted, all other events will not be transformed. */ type WSEvent = K extends 'message' ? OnMessage : WebSocketEventMap[K]; /** * Attempt to parse the message, in addition to providing the original raw value (string). */ interface OnMessage extends MessageEvent { data: Data; rawData: MessageEvent['data']; } /** * Custom implementation of the EdenWS class. * * Some properties are auto-bound methods so you can pass them as callbacks without "this is undefined" errors. * * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions#cannot_be_used_as_methods * * @example * ```ts * import { EdenWs } from '@aydee-app/eden' * * const edenWs = new EdenWS() * * ['a', 'b', 'c'].forEach(edenWs.send) * ``` */ declare class EdenWS = {}> { url: string; options?: EdenWsOptions | undefined; ws: WebSocket; transformer?: CombinedDataTransformer; constructor(url: string, options?: EdenWsOptions | undefined); /** * Close the websocket connection. */ close(): this; /** * Send (strongly-typed) message(s) over the websocket connection. */ send: (data: MaybeArray) => Promise; /** * Send a single (strongly-typed) message. */ sendMany: (data: T["body"][]) => Promise; /** * Send a single (strongly-typed) message. */ sendSingle: (data: T["body"]) => Promise; /** * Register a callback function that is called when a message is received. */ subscribe(onMessage: (event: WSEvent<'message', T['response']>) => void, options?: boolean | AddEventListenerOptions): this; /** * Register a strongly typed callback function to be called on the specified websocket event. * * Alias for {@link addEventListener}. */ on(type: K, listener: (event: WSEvent) => void, options?: boolean | AddEventListenerOptions): this; /** * Remove a registered event-listener. * * Alias for {@link removeEventListener}. */ off(type: K, listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any, options?: boolean | EventListenerOptions): this; /** * Register a strongly typed callback function to be called on the specified websocket event. */ addEventListener(type: K, listener: (event: WSEvent) => void, options?: boolean | AddEventListenerOptions): this; /** * Remove a registered event-listener. */ removeEventListener(type: K, listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any, options?: boolean | EventListenerOptions): this; /** * Transform outgoing messages sent from the client to the server. * * @internal */ transformSent: (data: T["body"]) => Promise; /** * Transform incoming messages received from the server. * * @internal */ transformReceived: (event: MessageEvent) => Promise; } export { EdenWS, type EdenWsOptions, type OnMessage, type WSEvent };