/**
 * @license
 * Copyright Tyler Technologies, Inc. 
 * License: Apache-2.0
 */
/**
 * Highlights text in the given label by converting it to HTML and using a `<span>` tag to show the highlighted text within the original label.
 * @param label The full text.
 * @param highlightText The text to highlight.
 */
export declare function highlightTextHTML(label: string, highlightText: string): HTMLElement | undefined;
/**
 * Awaits user interaction on an element in the form of `pointerenter` or `focusin` to let a listener know
 * when the user has attempted to interact with the provided element.
 *
 * The listeners are only called once, and the other is removed after one of the listeners is called.
 * @param element The element to listen to.
 * @param capture Whether to use capturing listeners or not.
 * @returns A `Promise` that will be resolved when either of the listeners has executed.
 */
export declare function createUserInteractionListener(element: HTMLElement, { capture, pointerenter, focusin }?: {
    capture?: boolean | undefined;
    pointerenter?: boolean | undefined;
    focusin?: boolean | undefined;
}): {
    userInteraction: Promise<Event>;
    destroy: () => void;
};
/**
 * Converts a percent value to pixels.
 * @param amount A percent value.
 * @param containerSize The size of the parent element along the relevant axis.
 * @returns A pixel value.
 */
export declare function percentToPixels(amount: number, containerSize: number): number;
/**
 * Converts a pixel value to a percentage.
 * @param amount A pixel value.
 * @param containerSize The size of the parent element along the relevant axis.
 * @returns A percent value.
 */
export declare function pixelsToPercent(amount: number, containerSize: number): number;
/**
 * Scales a value from one range to another.
 * @param value The original number value.
 * @param fromMin The lower bound of the input range.
 * @param fromMax The upper bound of the input range.
 * @param toMin The lower bound of the output range (defaults to 0).
 * @param toMax The lower bound of the output range (defaults to 100).
 * @returns A value mapped to the output range.
 */
export declare function scaleValue(value: number, fromMin: number, fromMax: number, toMin?: number, toMax?: number): number;
/**
 * Returns the min of a set of numbers where some values may be undefined.
 * @param args `number` or `undefined` values to compare.
 * @returns The min value or `Number.POSITIVE_INFINITY` if all values are `undefined`.
 */
export declare function safeMin(...args: (number | undefined)[]): number;
/**
 * Returns the max of a set of numbers where some values may be undefined.
 * @param args `number` or `undefined` values to compare.
 * @returns The max value or `Number.NEGATIVE_INFINITY` if all values are `undefined`.
 */
export declare function safeMax(...args: (number | undefined)[]): number;
/**
 * Determines if two elements are overlapping.
 * @param elA {Element | null}
 * @param elB {Element | null}
 * @returns
 */
export declare function elementsOverlapping(elA: Element | null, elB: Element | null): boolean;
/**
 * Determines if a pointer event is over an element.
 * @param event {PointerEvent} The pointer event to test.
 * @param element {HTMElement} The element to test against.
 * @returns
 */
export declare function isPointerOverElement({ x, y }: {
    x: number;
    y: number;
}, element: HTMLElement | null): boolean;
/**
 * Attempts to locate a target element based on a heuristic.
 *
 * We use the following heuristic for locating the target element:
 *  - If an id is set, we use that value to query the DOM for the target element
 *  - If id is set to `:host`, we use the host element from within a shadow tree (only if the root node is a ShadowRoot instance)
 *  - If an id is set but the querySelector returns null, we use the parent element
 *  - If an id is not set, we use the parent element
 * @param value {string | null} - A selector string to query the DOM for the target element
 */
export declare function locateTargetHeuristic(element: HTMLElement, id?: string | null): HTMLElement | null;
/**
 * Attempts to locate an element by id within its root node.
 * @param element The element to search from.
 * @param id The id of the element to locate.
 * @returns The element if found, otherwise `null`.
 */
export declare function locateElementById(element: HTMLElement, id?: string | null): HTMLElement | null;
/**
 * Replaces an existing element with a new element, while optionally moving the children of the old element into the new element.
 * @param oldElement The element to replace.
 * @param newElement The element to replace with.
 * @param preserveChildren Whether or not to preserve the children of the old element in the new element.
 * @returns The new element.
 */
export declare function replaceElement<T extends HTMLElement>(oldElement: HTMLElement, newElement: T, preserveChildren?: boolean): T;
/**
 * Coerces a string separated by `separator` into an array of strings.
 * @param value The string to coerce.
 * @params [separator=','] The separator to use when splitting the string.
 * @returns An array of strings.
 */
export declare function coerceStringToArray<T extends string>(value: string, separator?: string): T[];
/**
 * Wraps an array of elements in a new element.
 * @param elements The elements to wrap.
 * @param wrapper The new wrapper element.
 */
export declare function wrapElements(elements: HTMLElement[], wrapper: HTMLElement, exclude?: string[]): void;
/**
 * Unwraps an element by moving its children to its parent and removing the element.
 * @param wrapper The element to unwrap.
 */
export declare function unwrapElements(wrapper: HTMLElement): void;
/**
 * Rounds a value to the nearest pixel based on the device pixel ratio.
 * @param {number} value The value to round.
 * @returns {number} The rounded value.
 */
export declare function roundByDPR(value: number): number;
