import type { ReactionNotification, ReactionRequest } from '../reaction-contract.js'; type Transport = (request: ReactionRequest, signal: AbortSignal) => Promise; /** One foreground inbox per account/window. Server revisions own read state. */ export declare class ReactionNotifications { private transport; private scope?; private controller; private listeners; private rows; private historyRows; private historyInflight; private historyUsers; private ackGeneration; private historyRefreshAgain; private historyRefreshedAt; historyError: string; private version; private inflight; private highlightRevision; private highlight; private highlightTimer; private viewing; private reading; private acknowledged; private timer?; private retryMillis; private users; error: string; hasMore: boolean; constructor(transport?: Transport); subscribe: (fn: () => void) => () => void; getSnapshot: () => number; private publish; forSource(scope: string | undefined, sourceKey: string | undefined): ReactionNotification[]; forAccount(scope: string | undefined): ReactionNotification[]; forHistory(scope: string | undefined): ReactionNotification[]; acquireHistory(scope: string): () => void; refreshHistory(): Promise; beginViewing(sourceKey: string, itemUid: string): void; beginHistoryViewing(scope: string, sourceKey: string | undefined, itemUid: string, expressionIdentity: string): void; hasHistoryHighlight(scope: string, sourceKey: string | undefined, itemUid: string): boolean; startHighlights(scope: string, sourceKey: string | undefined, itemUid: string): void; highlights(scope: string, sourceKey: string | undefined, itemUid: string | undefined): { revision: number; sourceKey: string | undefined; itemUid: string; rows: ReactionNotification[]; active: boolean; expressionIdentity?: string; } | undefined; canAcknowledge(scope: string, item: ReactionNotification): boolean; acquire(scope: string): () => void; private stop; private visibility; refresh(): Promise; seen(scope: string, items: readonly ReactionNotification[]): Promise; } export declare const reactionNotifications: ReactionNotifications; export {}; //# sourceMappingURL=reaction-notifications.d.ts.map