/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { ElementTag } from "#common/ElementTag.js";
import { Model } from "#models/Model.js";
/**
 * A high level summary of changes between two models.
 */
export type ModelDiff = ModelDiff.Add | ModelDiff.Delete | ModelDiff.List | ModelDiff.Summary;
/**
 * Diff two models.
 */
export declare function ModelDiff(from: Model, to: Model, depth?: number): ModelDiff | undefined;
export declare namespace ModelDiff {
    /**
     * Convert a diff to a diagnostic for serialization.
     */
    function diagnosticOf(diff: ModelDiff | undefined): unknown;
    interface Identity {
        name: string;
        tag: ElementTag;
    }
    interface Add extends Identity {
        kind: "add";
    }
    interface Delete extends Identity {
        kind: "delete";
    }
    interface List extends Identity {
        kind: "list";
        children: ModelDiff[];
    }
    interface Summary extends Identity {
        kind: "summary";
        changes: Record<ElementTag, number>;
    }
}
//# sourceMappingURL=ModelDiff.d.ts.map