import type { JsonValue } from "../../core/types.js"; import type { LiveMapCore, LiveMapDisposer, LiveMapPathHandle, LivePath } from "../../types/livemap.types.js"; type LiveMapPathHandleCore = Pick, "snap" | "at" | "set" | "replace" | "setMany" | "delete" | "feed" | "batch" | "splice" | "rev">; /** * Create a small ergonomic handle for one projected LiveMap path. * * The handle copies the path once at creation time. That keeps the handle stable * even if a caller passed a mutable array and later changes it at runtime. * * `update` is deliberately just read/compute/set. It does not introduce * derived state, async lifecycle, patch/merge semantics, or batching. * * `set` requires the handle path to resolve and assigns primitives, arrays, * and null exactly; plain objects are shallow child writes that preserve * unspecified siblings. `replace` is exact replacement at the handle path with * replace-shaped commit ops. `setMany` * writes object properties below the handle path without removing unspecified * siblings. None of these imply array append, array insert, or deep merge. * * `delete` delegates to Core delete for this handle path. Delete is distinct * from setting undefined because undefined is not a JSON value. * * `linkTo` is one-way and live-only. It does not perform initial sync, loop * protection, transforms, or conflict resolution. Writes normally target the * linked handle with the same set/replace flavor observed from the source. If * the target handle points at a missing object property whose parent exists, * link propagation creates that property with `setMany`. * * Delete propagation follows the handle scope: deleting the exact handle path * deletes the target handle, while deleting below the handle path writes the * updated source handle value. */ export declare function make_livemap_path_handle(core: LiveMapPathHandleCore, path: LivePath, watch: (listener: (next: TValue) => void) => LiveMapDisposer): LiveMapPathHandle; export {}; //# sourceMappingURL=livemap.handle.d.ts.map