/**
 * Pure helper: convert new {@link AgentQuestion} rows and observed
 * status transitions into {@link AgentQuestionStreamEvent} entries for
 * the SSE pipeline (spec 093, task 18).
 *
 * Mirrors the existing computeMessageDeltas / computeFeatureDeltas
 * shape. The cache tracks two things per scope:
 *  - `lastSeenAt`: the most-recent createdAt we have already emitted
 *    for "new" rows (matches the messages helper exactly).
 *  - `lastStatus`: per-id snapshot of the most-recent status we
 *    emitted, so that a subsequent listFor() returning the same row
 *    with a new status (pending → answered, pending → cancelled, etc.)
 *    produces a status-transition event.
 *
 * Already-seen ids in the same status are NOT re-emitted.
 */
import type { AgentQuestion, AgentQuestionStatus } from '../../../../domain/generated/output.js';
import type { StreamedAgentEvent } from './stream-agent-events.types.js';
export interface CachedAgentQuestionState {
    /** High-water mark — millis of the most-recent question we emitted. */
    lastSeenAt: number;
    /** Last-known status per question id (used to detect transitions). */
    lastStatus: Map<string, AgentQuestionStatus>;
}
export interface ComputeQuestionDeltasArgs {
    /** Questions returned by IAgentQuestionRepository for the current scope. */
    questions: AgentQuestion[];
    cache: CachedAgentQuestionState;
}
export declare function computeQuestionDeltas(args: ComputeQuestionDeltasArgs): StreamedAgentEvent[];
//# sourceMappingURL=compute-question-deltas.d.ts.map