//#region src/dialog/utils/tree-cleanup.d.ts
type Elements = Array<Element | null>;
type Cleanups = Array<() => void>;
type Ids = Array<string | undefined>;
declare function markElement(element: Element, id?: string): () => void;
declare function markAncestor(element: Element, id?: string): () => void;
/**
 * Marks elements the dialog knows about at open time (the dialog itself,
 * persistent elements, and nested dialogs), so outside event listeners can
 * recognize them as inside before the dialog has been focused.
 * @see https://github.com/ariakit/ariakit/issues/6344
 */
declare function markTreeInside(dialog: Element, elements: Elements): () => void;
declare function isElementInside(element: Element, dialog: Element): boolean;
declare function isElementMarked(element: Element, id?: string): boolean;
interface AddElementMarkCleanupParams {
  cleanups: Cleanups;
  element: Element;
  id: string;
  ids: Ids;
}
declare function addElementMarkCleanup({ cleanups, element, id, ids }: AddElementMarkCleanupParams): void;
interface AddAncestorMarkCleanupParams {
  cleanups: Cleanups;
  ancestor: Element;
  element: Element;
  id: string;
}
declare function addAncestorMarkCleanup({ cleanups, ancestor, element, id }: AddAncestorMarkCleanupParams): void;
declare function restoreCleanups(cleanups: Cleanups): void;
//#endregion
export { AddAncestorMarkCleanupParams, AddElementMarkCleanupParams, Cleanups, Elements, Ids, addAncestorMarkCleanup, addElementMarkCleanup, isElementInside, isElementMarked, markAncestor, markElement, markTreeInside, restoreCleanups };
//# sourceMappingURL=tree-cleanup.d.ts.map