/** * @oxpulse/chat-widget — Read receipts overlay (#122). * * Tracks per-user last-read seq and renders checkmarks on own messages. * Driven by onReadReceipt SSE events via the SDK subscribe() callback. * * Zero-third-party-dep — plain DOM, matching the widget's existing pattern. * * Semantics: * - onReadReceipt({ userId, lastSeq }) → record that `userId` has read * up to `lastSeq`. Multiple users can read the same message. * - A message with seq <= max(lastSeq across all OTHER users) is "read". * - A message with seq <= self's lastReadSeq is "delivered" (server has it). * - Otherwise "sent" (optimistic or in-flight). * * Display (WhatsApp-style, only on own messages): * - sent: single checkmark (gray) * - delivered: double checkmark (gray) * - read: double checkmark (accent color) */ export interface ReadReceiptsOptions { /** BCP-47 tag or resolved Locale. */ lang?: string; /** The current user's ID — own read receipts are not counted. */ selfUid: string; /** Optional AbortSignal — destroy() is called automatically on abort. */ signal?: AbortSignal; } export declare class ReadReceipts { #private; constructor(opts: ReadReceiptsOptions); /** Record that a user has read up to lastSeq. Self is ignored. */ onReadReceipt(userId: string, lastSeq: number): void; /** Register a bubble element for receipt updates. Only for own messages. */ registerBubble(msgId: string, seq: number, el: HTMLElement): void; /** Unregister a bubble (e.g. on eviction). */ unregisterBubble(msgId: string): void; /** Get the max read seq across all other users. */ get maxReadSeq(): number; /** Clear all read state (e.g. on room switch). */ clearAll(): void; destroy(): void; } //# sourceMappingURL=read-receipts.d.ts.map