import { EventEmitter, type AllEventKeys, type EventListener, type SpecialEvents, type EventOptions, type EventArgs, type EventReturnType } from "../index.browser.js"; import { Subscription } from "../teardown-manager.js"; import { SocketAdapterAkalaEventMap, SocketAdapter } from "./shared.js"; import { SocketProtocolTransformer } from "./shared.transformer.js"; /** * Adapts a socket connection to handle protocol-level message transformations. * Provides an event-based interface for managing socket communication with custom * serialization/deserialization logic. * @template T The type of messages after transformation */ export declare class SocketProtocolAdapter extends EventEmitter> implements SocketAdapter { readonly transform: SocketProtocolTransformer; private readonly socket; /** * Creates a new socket protocol adapter. * @param transform Configuration object containing receive, send, and optional close handlers * @param transform.receive Function to deserialize incoming data into application messages * @param transform.send Function to serialize application messages for transmission * @param transform.close Optional function to perform protocol-specific cleanup * @param socket The underlying socket adapter to wrap */ constructor(transform: SocketProtocolTransformer, socket: SocketAdapter); /** * Pipes incoming messages to another socket adapter. * @param socket The destination socket to send messages to */ pipe(socket: SocketAdapter): void; /** * Gets the open status of the underlying socket. */ get open(): boolean; /** * Closes the socket and performs any necessary protocol cleanup. */ close(): Promise; /** * Sends a message through the socket after applying the send transformation. * @param data The message to send */ send(data: T): Promise; private readonly messageListeners; private messageSubscription; /** * Removes an event listener from the adapter. * @param event The event type to remove the listener from * @param handler The event handler to remove, or undefined to remove all handlers * @returns true if the listener was successfully removed */ off>>(event: TEvent, handler: EventListener<(SocketAdapterAkalaEventMap & Partial)[TEvent]>): boolean; /** * Registers an event listener on the adapter. * @param event The event type to listen for * @param handler The callback to invoke when the event occurs * @param options Optional event listener configuration * @returns A subscription function to unsubscribe from the event */ on>>(event: TEvent, handler: EventListener<(SocketAdapterAkalaEventMap & Partial)[TEvent]>, options?: EventOptions<(SocketAdapterAkalaEventMap & Partial)[TEvent]>): Subscription; /** * Registers an event listener that fires only once. * @param event The event type to listen for * @param handler The callback to invoke when the event occurs * @returns A subscription function to unsubscribe from the event */ once>>(event: TEvent, handler: EventListener<(SocketAdapterAkalaEventMap & Partial)[TEvent]>): Subscription; /** * Emits an event to all registered listeners. * @param event The event type to emit * @param args Arguments to pass to event listeners * @returns The result of the emit operation */ emit>>(event: TEvent, ...args: EventArgs<(SocketAdapterAkalaEventMap & Partial)[TEvent]>): false | EventReturnType<(SocketAdapterAkalaEventMap & Partial)[TEvent]>; }