/**
 * Integration materialization cache + lane overlay (W4 lazy replay).
 *
 * ADR 0001: do not replay all lane journals on every open — cache integration
 * state and overlay only the active lane journal.
 */
import { EAVStore } from '../core/store/eav-store.js';
import type { VcsOp } from './types.js';
export interface MaterializeIntegrationOptions {
    /** Path to `.trellis/integration-snapshot.json` for cold-start acceleration. */
    snapshotPath?: string;
}
export interface MaterializationStats {
    /** Integration ops replayed in the last materialize call (0 = cache hit). */
    integrationOpsReplayed: number;
    /** Lane ops replayed in the last overlay call. */
    laneOpsReplayed: number;
    /** True when integration cache tail matched the journal tail. */
    integrationCacheHit: boolean;
    /** True when integration state was restored from a persisted snapshot with no tail replay. */
    integrationSnapshotHit: boolean;
    /** Integration journal tail hash after last materialize. */
    integrationTailHash?: string;
}
export interface IntegrationCache {
    tailHash: string | undefined;
    store: EAVStore;
}
export declare function emptyMaterializationStats(): MaterializationStats;
export declare function replayOpIntoStore(store: EAVStore, op: VcsOp): void;
/** Clone an EAV store via snapshot/restore (lane overlay fork point). */
export declare function cloneStore(source: EAVStore): EAVStore;
export declare function materializeIntegrationOps(ops: VcsOp[], cache: IntegrationCache | null, tailHash: string | undefined, opts?: MaterializeIntegrationOptions): {
    store: EAVStore;
    cache: IntegrationCache;
    stats: MaterializationStats;
};
/** Apply lane journal ops on a fork of the integration store. */
export declare function overlayLaneOps(integrationStore: EAVStore, laneOps: VcsOp[]): {
    store: EAVStore;
    laneOpsReplayed: number;
};
/**
 * After lane overlay, restore integration criterion status (passed/failed).
 * Lane-local criterionAdd may re-emit status=pending; integration updates win.
 */
export declare function reapplyIntegrationCriterionUpdates(store: EAVStore, integrationOps: VcsOp[]): void;
/**
 * Materialize a child-fork lane entry (ADR 0007).
 * Integration through baseOpHash, then parent journal, then child journal.
 */
export declare function materializeChildForkEntry(integrationOps: VcsOp[], baseOpHash: string, parentLaneOps: VcsOp[], childLaneOps: VcsOp[]): {
    store: EAVStore;
    stats: MaterializationStats;
};
//# sourceMappingURL=lane-materialize.d.ts.map