/** * Observable layout model — single-writer, synchronous, call-ordered. * * INV-3: mutations assume an already-validated (acyclic, integrity-checked) tree * — callers feeding hand-built trees should parseLayout/validateTree first. * * Conventions (pinned by model.test.ts): * - revision starts at 0 for the initial tree. * - subscribe() does NOT replay; first emission is on the first successful * apply, carrying revision 1. * - +1 per successful apply; a throwing mutation does NOT advance revision and * does NOT notify (the throw propagates to the caller). */ import type { LayoutModel, LayoutTree } from './types.js'; export declare function createLayoutModel(initial: LayoutTree): LayoutModel; //# sourceMappingURL=model.d.ts.map