import type { NormalizationCoverage, NormalizedEntry } from "./normalize.js"; /** Compact tuple: index, entry id, operation address, role, tool name, timestamp. */ export type DigestEntryAddress = [ number, string | null, string | null, string | null, string | null, number | null ]; interface DigestIndexCoverage { complete: boolean; vocabularyBytes: number; reasons: string[]; } export interface SessionDigest { sessionId: string; file: string; cwd: string; firstTs: number | null; lastTs: number | null; entryCount: number; filesTouched: string[]; toolHistogram: Record; errorCount: number; /** Sorted exact unique canonical terms. Terms never contain posting lists. */ vocabulary: string[]; /** Structural entry identities retained independently from lexical vocabulary. */ addresses: DigestEntryAddress[]; indexCoverage: DigestIndexCoverage; } export interface DigestInput { sessionId: string; file: string; cwd: string; entries: NormalizedEntry[]; maxVocabularyBytes?: number; filesTouchedLimit?: number; normalizationCoverage?: NormalizationCoverage; } /** Purely fold normalized session entries into bounded lexical and structural metadata. */ export declare const foldSessionDigest: (input: DigestInput) => SessionDigest; export {}; //# sourceMappingURL=digest.d.ts.map