import { ElementDefinition } from '../types/index.js';
export declare function getChildren(node: Document | Node | HTMLElement): Element[];
export declare function generateId(): string;
export declare function getAttributeChanges(element: HTMLElement, attr: string, fn: (attrValue: string | null) => void): MutationObserver;
export declare function getAttributeListChanges(element: HTMLElement, attrs: string[], fn: (mutation: MutationRecord) => void): MutationObserver;
/**
 * Appends styles to the render root of a given element. This is useful for
 * styles that apply outside the scope of the element's shadow
 * root such as UA styles --webkit-* that won't work in a ::slotted selector
 */
export declare function appendRootNodeStyle(host: HTMLElement, styles: string): CSSStyleSheet;
export declare function styleSheetToString(stylesheet: CSSStyleSheet): string;
/** Intercepts a property setter on an element so `callback` fires on every assignment. Does not use a MutationObserver. */
export declare function getPropertyChanges(element: HTMLElement, key: string, callback: (value: unknown) => void): (() => void) | undefined;
export declare function getElementUpdate(element: HTMLElement, key: string, callback: (value: unknown) => void): MutationObserver;
export declare function clickOutsideElementBounds(event: PointerEvent | MouseEvent, element: HTMLElement): boolean;
/** parses number out of basic calc generated by the design tokens */
export declare function parseTokenNumber(value: string): number;
/** true if the browser supports scoped custom element registries */
export declare const supportsScopedRegistry: boolean;
/** defines an element with the given custom element registry */
export declare function defineElement(element: ElementDefinition, customElementRegistry: CustomElementRegistry): void;
/** defines an element with the global custom element registry */
export declare function define(element: ElementDefinition): void;
export declare function isContextMenuClick(event: MouseEvent): boolean;
export declare function getFlattenedFocusableItems(element: Node, depth?: number): HTMLElement[];
/**
 * Preserves visual DOM ordering when using slots within Shadow DOM
 * See more information/resources on Shadow DOM linear traversal
 * https://nolanlawson.com/2021/02/13/managing-focus-in-the-shadow-dom/
 * https://www.abeautifulsite.net/posts/querying-through-shadow-roots/
 */
export declare function getFlattenedDOMTree(node: Node, depth?: number): HTMLElement[];
export declare function validKeyNavigationCode(e: KeyboardEvent): boolean;
export declare enum KeynavCode {
    End = "End",
    Home = "Home",
    PageUp = "PageUp",
    PageDown = "PageDown",
    ArrowUp = "ArrowUp",
    ArrowDown = "ArrowDown",
    ArrowLeft = "ArrowLeft",
    ArrowRight = "ArrowRight"
}
export declare function hasInvalidDOMGrid(rows: HTMLElement[]): boolean;
export declare function removeEmptyTextNode(node: Node): void;
export declare function scrollBarWidth(): number;
export declare function hasScrollBar(el: HTMLElement): boolean;
export declare function hasHorizontalScrollBar(el: HTMLElement): boolean;
export declare function endOfScrollBox(element: HTMLElement, offset?: number): boolean;
export declare function openEyeDropper(): Promise<string>;
/**
 * provides a object with key/value of the currently applied design tokens
 */
export declare function getThemeTokens(element?: Element): {
    [x: string]: string;
};
export declare function removeEmptySlotWhitespace(slot: HTMLSlotElement): void;
export declare function slotContainsOnlyWhitespace(slot: HTMLSlotElement): boolean;
export declare function applySlotContentStates(slot: HTMLSlotElement, element: HTMLElement & {
    _internals: ElementInternals;
}): void;
export declare function getDisplayValue(option?: {
    label?: string;
    value?: string;
}): string;
/** determines if HTML element matches the given component tag */
export declare function matchesElementName(element: Partial<HTMLElement>, component: {
    metadata: {
        tag: string;
    };
}): boolean;
export declare function createGhostElement(sourceElement: HTMLElement): HTMLDivElement;
export declare function sameRenderRoot(element1: HTMLElement, element2: HTMLElement): boolean;
export declare function getAnchorNames(element: HTMLElement): string[];
export declare function removeAnchorName(element: HTMLElement, name: string): void;
export declare function appendAnchorName(element: HTMLElement, name: string): void;
/**
 * Returns true when both arrays have the same length and each index is strictly equal (`===`).
 */
export declare function sameOrderedStringArray(a: readonly string[], b: readonly string[]): boolean;
/**
 * Returns unique non-empty strings in first-seen order (insertion order of a `Set` over the filtered list).
 */
export declare function uniqueNonEmptyStrings(values: Iterable<string | null | undefined>): string[];
