import type { Document, DocumentRepresentation } from "@citation-evidence/engine/shared"; import { reconcileFingerprint, type ReconcileResult } from "./reconcile"; export interface IngestOutcome { readonly document: Document; readonly representation: DocumentRepresentation; } export type IngestFn = ( bytes: Uint8Array, options?: TOptions, ) => Promise; export interface ReIngestInput { readonly previous: Document; readonly bytes: Uint8Array; readonly options?: TOptions; } export interface ReIngestResult { readonly outcome: IngestOutcome; readonly reconcile: ReconcileResult; } export async function reIngestAndCompare( input: ReIngestInput, ingest: IngestFn, ): Promise { const outcome = await ingest(input.bytes, input.options); const reconcile = reconcileFingerprint(input.previous, outcome.document); return { outcome, reconcile }; }