import type { DshRemoteHistoryEntry } from './dsh-event-contract.js'; import type { DshRemoteTimelineNode, DshRemoteTurnProjection } from './types.js'; export interface DshRemoteTurnProjectionResult { turns: DshRemoteTurnProjection[]; /** A completed Turn is never truncated. Raw HistoryEntry remains authoritative. */ oversizedTurnRefs: string[]; /** A retained window ending a Turn without its start cannot be projected safely. */ unmatchedTurnEndSeqs: number[]; } export interface DshCompletedTurnWindows { completed: DshRemoteHistoryEntry[][]; pending: DshRemoteHistoryEntry[]; } export declare function projectDshHistoryNodes(entries: DshRemoteHistoryEntry[]): DshRemoteTimelineNode[]; /** * Projects only explicit, stable turn/start ... turn/end intervals. Any active * tail stays in raw Realtime/HistoryEntry form and is deliberately excluded. */ export declare function projectCompletedTurns(source: Iterable): DshRemoteTurnProjectionResult; /** * Extracts explicit complete intervals while retaining only page-boundary * fragments. Pages may be supplied newest-first by prepending them to * [pending]; complete historical sessions therefore do not need to be held in * memory during Host reconciliation. */ export declare function extractCompletedTurnWindows(source: Iterable): DshCompletedTurnWindows; //# sourceMappingURL=turn-projector.d.ts.map