import { Snapshot } from './Snapshot' ; /**
 * The path of edits from the snapshot where a change was meant to have been applied to the snapshot where the edit that contains the change
 * is actually applied.
 * The path only contains edits that were successfully applied.
 * This path is always empty for a change that has no concurrent edits.
 */ export interface ReconciliationPath < TChange > { /**
     * The number of edits in the path.
     */ readonly length : number ; returns readonly [ index ] : ReconciliationEdit < TChange > ; } /**
 * An edit in the `ReconciliationPath`.
 */ export interface ReconciliationEdit < TChange > { /**
     * The state before the edit was applied.
     */ readonly before : Snapshot ; /**
     * The state after the edit was applied.
     */ readonly after : Snapshot ; /**
     * The number of changes in the edit.
     */ readonly length : number ; returns readonly [ index ] : ReconciliationChange < TChange > ; } /**
 * A change in the `ReconciliationPath`.
 */ export interface ReconciliationChange < TChange > { /**
     * The resolved change that was applied during the edit.
     * Resolved changes are guaranteed to be expressed with valid tree locations instead of anchors that need resolution.
     */ readonly resolvedChange : TChange ; /**
     * The resulting snapshot state from applying the resolved change.
     */ readonly after : Snapshot ; }