/** * Partition-extraction dry-run. Read-only preview of what an * `extractPartition` would move: record counts, byte totals, and the * timestamp span per collection — computed from raw encrypted * envelopes WITHOUT decrypting them. Writes nothing, mutates nothing. * * @module */ import type { Vault } from '../kernel/vault.js'; import { type WalkClosureOptions, type DanglingRefNotice } from './walk-closure.js'; export interface ExtractionPreview { readonly totalRecords: number; /** Sum of serialized encrypted-envelope sizes (bytes). */ readonly totalBytes: number; readonly byCollection: ReadonlyArray<{ readonly name: string; readonly recordCount: number; readonly bytes: number; /** Earliest envelope `_ts` in this collection (lexicographic). */ readonly oldestTs?: string; readonly newestTs?: string; }>; readonly graph: { readonly depth: number; readonly cyclesDetected: boolean; }; /** Records the walk reached but whose envelope couldn't be read. */ readonly inaccessible: ReadonlyArray<{ readonly collection: string; readonly id: string; }>; /** * #772: outbound FK edges whose referenced parent was excluded from the * closure (missing, or tier-elevated and therefore invisible) — mirrors * `ExtractPartitionResult.danglingRefs` (#759) so a preview/extract pair * gives the SAME signal. A parent excluded this way never appears in * `byCollection` at all; this is the only preview-time indicator. */ readonly danglingRefs: ReadonlyArray; } export declare function describeExtraction(vault: Vault, opts: WalkClosureOptions): Promise;