interface SourceMutationTarget { id?: string | null; hfId?: string; selector?: string; selectorIndex?: number; } declare function removeElementFromHtml(source: string, target: SourceMutationTarget): string; declare function isHTMLElement(el: Node): el is HTMLElement; interface PatchOperation { type: "inline-style" | "attribute" | "html-attribute" | "text-content" | "rich-text"; property: string; value: string | null; childSelector?: string; childIndex?: number; } declare function patchElementInHtml(source: string, target: SourceMutationTarget, operations: PatchOperation[]): { html: string; matched: boolean; }; declare function probeElementInSource(source: string, target: SourceMutationTarget): boolean; interface SplitElementResult { html: string; matched: boolean; newId: string | null; } declare function splitElementInHtml(source: string, target: SourceMutationTarget, splitTime: number, newId: string, fallbackTiming?: { start: number; duration: number; playbackStart?: number; playbackRate?: number; stampPlaybackStart?: boolean; }): SplitElementResult; interface WrapElementsResult { html: string; matched: boolean; groupId: string | null; error?: string; } interface UnwrapElementsResult { html: string; unwrapped: boolean; /** The unwrapped wrapper's id, so callers can strip GSAP that targeted it * (the wrapper is gone; a leftover `gsap.set("#id")` would throw at runtime). */ unwrappedGroupId?: string; /** Members (id'd children) with their absolute layout centres (post un-rebase), * so the caller can BAKE the group's GSAP transform into each member before * stripping it — otherwise the group's moves are lost on ungroup. */ members?: Array<{ id: string; cx: number; cy: number; }>; /** The wrapper's layout centre — the pivot for baking the group's rotation/scale. */ groupCenter?: { cx: number; cy: number; }; } interface ElementRebase { target: SourceMutationTarget; left: number; top: number; } declare function wrapElementsInHtml(source: string, targets: SourceMutationTarget[], groupId: string, bbox: { left: number; top: number; width: number; height: number; }, rebases: ElementRebase[]): WrapElementsResult; declare function unwrapElementsFromHtml(source: string, groupTarget: SourceMutationTarget): UnwrapElementsResult; export { type ElementRebase, type PatchOperation, type SourceMutationTarget, type SplitElementResult, type UnwrapElementsResult, type WrapElementsResult, isHTMLElement, patchElementInHtml, probeElementInSource, removeElementFromHtml, splitElementInHtml, unwrapElementsFromHtml, wrapElementsInHtml };