import type { ShapeKind } from './log.js'; export interface StructuralRecord { readonly tick: number; readonly kind: ShapeKind; /** The FULL (generational) subject/entity handle, resolved at commit time (portable across boundary). */ readonly handle: number; /** User/synthetic component id (Add/Remove) or synthetic pair id (AddPair/RemovePair). 0 for Create/Destroy. */ readonly componentId: number; /** The FULL pair-target handle (AddPair/RemovePair/SetPayload), resolved at commit time; else 0. */ readonly target: number; } export declare class StructuralJournal { #private; /** False ⇒ zero record cost (no delta serializer attached). Mirrors ChangeVersionStore.enabled. */ enabled: boolean; constructor(initialCapacityRecords?: number); /** Append one structural op at `tick`. O(1); drops the oldest record once the ring is full. */ record(tick: number, kind: ShapeKind, handle: number, componentId: number, target: number): void; /** * Records with tick > since, in commit (append) order. Returns `gap: true` if `since` predates the * oldest resident record (the live window evicted it — the caller must resync from a snapshot). */ drainSince(since: number): { records: StructuralRecord[]; gap: boolean; }; /**: clear the journal at a serial flush (alongside changeVersion.resetAll). */ resetAll(): void; } //# sourceMappingURL=structural-journal.d.ts.map