declare const EXCLUDED_TAGS: Set<string>;
/**
 * Collision tiebreak for byte-identical siblings: document-order dup counter
 * (`hash(key#N)`). This IS order-dependent — two identical `<span></span>`
 * get different ids based on which comes first in the DOM. This is unavoidable:
 * unique ids for byte-identical elements require a positional signal.
 *
 * Why this is safe in practice: once `ensureHfIds` write-back persists
 * `data-hf-id` to source the attribute is physically bound to its element.
 * Reordering identical siblings carries the attribute along → zero
 * order-dependence post-persist. `ensureHfIds` skips pinned elements
 * (`if (el.getAttribute("data-hf-id")) continue`), so normal operation
 * never re-exposes the ordering after first persist.
 */
declare function mintHfId(el: Element, assigned: Set<string>): string;
declare function isCompositionTemplate(el: Element): boolean;
/**
 * Walk document-order descendants, descending through composition templates
 * while keeping plain templates inert. linkedom's querySelectorAll does not
 * expose template contents, so callers that model the served composition use
 * this traversal instead.
 */
declare function walkCompositionDescendants(root: Document | Element, visit: (el: Element) => void): void;
declare function ensureHfIds(html: string): string;

export { EXCLUDED_TAGS, ensureHfIds, isCompositionTemplate, mintHfId, walkCompositionDescendants };
