import type { ChatMessage } from './types.js';
/**
 * Append-only per-agent transcript built from DOM snapshots.
 * DOM transcript for live overlay until JSONL covers the same turn.
 */
export declare class DomTranscriptStore {
    private rowsByAgent;
    has(agentId: string): boolean;
    clear(agentId: string): void;
    /** Replace transcript (e.g. opt-in JSONL path). Live chat uses ingest only. */
    seed(agentId: string, rows: ChatMessage[]): void;
    /** Merge latest DOM extract into transcript; returns sorted display list. */
    ingest(agentId: string, snapshot: ChatMessage[]): ChatMessage[];
    list(agentId: string): ChatMessage[];
    /** Drop overlay rows once the same turn appears in JSONL. */
    pruneCoveredBy(agentId: string, baseline: ChatMessage[]): void;
    /** Keep transcript aligned with current CDP viewport (drop scrolled-away bubbles). */
    reconcileToViewport(agentId: string, snapshot: ChatMessage[]): void;
}
