import type { ArkmeConversationViewportSnapshot } from './conversation-memory-cache.js'; import { type ConversationViewportEntries } from '../conversation-viewport-state.js'; interface DurableViewports { read(account: string, surface: string, signal?: AbortSignal): Promise; write(account: string, surface: string, entries: ConversationViewportEntries): Promise; } /** Only geometry and stable row identities; no message bodies, credentials or server cursors. */ export declare class ConversationViewportPersistence { private readonly storage; private readonly durable?; private account; private key; private readonly values; private timer; private epoch; private hydration; private hydrationController; private readonly touched; private readonly durablePending; private readonly durableSaved; private durableFlight; constructor(storage?: () => Storage | undefined, durable?: DurableViewports | undefined); setScope(account: string | undefined, surface?: string): void; getViewport(source: string): ArkmeConversationViewportSnapshot | undefined; /** Host storage survives ephemeral Harness ports; hydrate before choosing the cache anchor. */ hydrate(signal?: AbortSignal): Promise; private rememberDurable; /** Single flight, latest snapshot per scope, no retry loop or per-scroll I/O. */ settle(): Promise; storeViewport(source: string, viewport: ArkmeConversationViewportSnapshot): void; flush: () => void; } export {}; //# sourceMappingURL=conversation-viewport-persistence.d.ts.map