import type { TeamNotificationPolicy } from '../team-notification-contract.js'; import type { TeamMessage, TeamReceipts, TeamReceiptMember } from '../team-app-contract.js'; export interface TeamReceiptState { value?: TeamReceipts; error?: string | undefined; loading: boolean; at: number; } export declare const emptyTeamReceipt: TeamReceiptState; export declare function mergeTeamReceiptMembers(previous: TeamReceiptMember[], next: TeamReceiptMember[]): TeamReceiptMember[]; export declare function teamReceiptCounts(value?: TeamReceipts): import("../team-app-contract.js").TeamReceiptCounts | undefined; /** Account/conversation-scoped projection. Visible rows load summaries, never rosters. */ export declare class TeamReceiptStore { private accountKey; private controller; private states; private listeners; private accessListeners; private readListeners; private visible; private details; private queue; private pending; private detailDirty; private active; private owners; private summaryTimer; private summaryRunning; private summaryAgain; private detailTimes; retain(): () => void; constructor(accountKey: string); subscribe: (listener: () => void) => () => void; subscribeAccessLost: (listener: () => void) => () => void; subscribeReadState: (listener: (state: { lastSeq: number; myReadSeq: number; unread: number; notificationPolicy?: TeamNotificationPolicy; }) => void) => () => void; get: (key: string) => TeamReceiptState; private emit; watch(message: TeamMessage): () => void; watchDetail(message: TeamMessage): () => void; refreshVisible(force?: boolean): void; dispose(): void; private pump; private enqueue; private fail; private scheduleSummaries; private summaries; load(message: TeamMessage, more?: boolean, force?: boolean): Promise; } //# sourceMappingURL=team-read-receipts.d.ts.map