/** * Watch the DOM for a target element's *resolution* changing — appearing (a lazily * rendered `data-guide` element) or disappearing (removed, or swapped out by a route * change). `onChange(next)` fires whenever `resolve()` returns a different element than * the previous call, coalesced to at most one resolve per animation frame so a burst of * unrelated mutations (e.g. a live table re-rendering rows) stays cheap. * * This complements {@link autoUpdate}, which only tracks the *position and size* of an * element that already exists — it cannot notice one that is not in the DOM yet, nor one * that has been removed. The Guide surfaces (tour bubble + hint) use this to re-anchor a * step whose target renders after the surface, and to fall back gracefully when a target * vanishes mid-flight. * * SSR / no-`MutationObserver` safe: returns a no-op disconnect when there is no DOM. * * @param resolve Returns the current target element (or `null` when unresolved). * @param onChange Called with the new element each time resolution flips. * @returns A disconnect function — call it on cleanup. */ export declare function observeTargetResolution(resolve: () => HTMLElement | null, onChange: (next: HTMLElement | null) => void): () => void;