import type { ArkmeMessageReadReceiptDetail, ArkmeMessageReadReceiptSummary, ArkmeMessageReadReceiptSummaryList } from '../types.js'; export interface ArkmeMessageReadReceiptTarget { sourceRef: string; sourceKey: string; conversationKind: 'private_chat' | 'group_chat'; itemUid: string; sequence: number; } export type ArkmeMessageReadReceiptEntryStatus = 'unknown' | 'provisional' | 'loading' | 'ready' | 'stale' | 'error'; export interface ArkmeMessageReadReceiptEntry { target: ArkmeMessageReadReceiptTarget; status: ArkmeMessageReadReceiptEntryStatus; /** Local send feedback survives transport state changes until receipt truth arrives. */ provisionalUnread?: true; summary?: ArkmeMessageReadReceiptSummary; } export interface ArkmeMessageReadReceiptStoreOptions { loadSummaries?: (sourceRef: string, items: readonly { itemUid: string; sequence: number; }[], signal: AbortSignal) => Promise; loadDetail?: (sourceRef: string, itemUid: string, sequence: number, signal: AbortSignal) => Promise; now?: () => number; } export declare class ArkmeMessageReadReceiptStore { private readonly loadSummaries; private readonly loadDetail; private readonly now; private readonly listeners; private readonly entries; private readonly tracked; private readonly visible; private readonly detailCache; private readonly detailControllers; private readonly detailObservers; private accountUserId; private accountScope; private generation; private revision; private foreground; private flushTimer; private pollTimer; private summaryController; private summaryInFlight; private refreshQueued; private failureCount; constructor(options?: ArkmeMessageReadReceiptStoreOptions); readonly subscribe: (listener: () => void) => (() => void); readonly getSnapshot: () => number; readonly getAccountGeneration: () => number; activateAccount(userId: number | undefined, scope?: string | undefined): void; register(target: ArkmeMessageReadReceiptTarget): { setVisible(visible: boolean): void; dispose(): void; }; get(target: ArkmeMessageReadReceiptTarget): ArkmeMessageReadReceiptEntry | undefined; provision(target: ArkmeMessageReadReceiptTarget): void; retry(target: ArkmeMessageReadReceiptTarget): void; invalidate(sourceKey: string, throughSequence: number): void; reconcile(): void; setForeground(foreground: boolean): void; observeDetail(target: ArkmeMessageReadReceiptTarget, listener: () => void): () => void; private invalidateDetail; detail(target: ArkmeMessageReadReceiptTarget, force?: boolean): Promise; private trimCache; private publish; private cancelScheduledWork; private scheduleFlush; private flush; private schedulePoll; } export declare const arkmeMessageReadReceipts: ArkmeMessageReadReceiptStore; //# sourceMappingURL=message-read-receipt-store.d.ts.map