import { MessageType, type FramedMessage } from "./messages.js"; /** * Frame layout (9 bytes header + payload): * [0] u8 — message type * [1..4] u32 — message ID (big-endian) * [5..8] u32 — payload length (big-endian) * [9..] raw — payload bytes */ /** Encode a FramedMessage into a binary buffer. */ export declare function encodeFrame(msg: FramedMessage): Uint8Array; /** * Decode a single FramedMessage from a binary buffer. * Returns the message and the number of bytes consumed. * Returns null if the buffer doesn't contain a complete frame. */ export declare function decodeFrame(data: Uint8Array): { message: FramedMessage; bytesConsumed: number; } | null; /** * Streaming frame decoder that handles partial frames across * multiple data chunks (e.g., from a DataChannel). */ export declare class FrameDecoder { private _buffer; /** Feed new data and return any complete frames. */ feed(chunk: Uint8Array): FramedMessage[]; /** Reset the internal buffer. */ reset(): void; /** Number of buffered bytes not yet decoded. */ get bufferedBytes(): number; } /** Handler function for a specific message type. */ export type MessageHandler = (msg: FramedMessage) => void | Promise; /** * Message multiplexer — routes decoded frames to registered handlers. */ export declare class MessageMux { private _handlers; private _defaultHandler; /** Register a handler for a specific message type. */ on(type: MessageType, handler: MessageHandler): void; /** Remove a handler for a specific message type. */ off(type: MessageType, handler: MessageHandler): void; /** Set a default handler for unregistered message types. */ setDefaultHandler(handler: MessageHandler): void; /** Dispatch a framed message to registered handlers. */ dispatch(msg: FramedMessage): Promise; } //# sourceMappingURL=framing.d.ts.map