import * as defs from "./FormDefinition";
import * as text from "./textUtilities";
export interface DebounceResult {
    /** Invoke the scheduled function immediately, without any further delay. */
    now: () => void;
    /** Do not invoke the scheduled function at all. */
    cancel: () => void;
}
/**
 * Exporting text since it was split out from here into it's own file as part of the designer
 * CRA migration. This was necessary since babel does not support namespaces.
 **/
export { text };
export declare function makeId(): string;
/** Performs key/item sorting. */
export declare function sort<T>(items: T, predicate?: (item: T[keyof T], index: number) => number): T;
export declare function sortItems(element: defs.Element): {
    [key: string]: defs.Item;
};
export declare function makeSafeClassName(elementName: string): string;
export declare function makeUniqueId(elementName: string): string;
export declare function addClass(element: HTMLElement, name: string): void;
export declare function removeClass(element: HTMLElement, name: string): void;
export declare function setClass(element: HTMLElement, name: string, exists: boolean): void;
export declare function isBoolean(value: defs.Value): value is boolean;
export declare function isNumber(value: defs.Value): value is number;
export declare function isString(value: defs.Value): value is string;
export declare function isDataRef(value: defs.Value): value is defs.DataRef;
export declare function isDateTimeRef(value: defs.Value): value is defs.DateTimeRef;
export declare function isFilesRef(value: defs.Value): value is defs.FilesRef;
export declare function isScanRef(value: defs.Value): value is defs.ScanRef;
export declare function isGeometryRef(value: defs.Value): value is defs.GeometryRef;
export declare function isItemsRef(value: defs.Value): value is defs.ItemsRef;
export declare function isNumberRef(value: defs.Value): value is defs.NumberRef;
export declare function sanitizeGeometryRef(value: defs.Value): defs.GeometryRef;
export declare function createGeometryRef(format: defs.GeometryFormat): defs.GeometryRef;
export declare function addStyleToDocument(css: string): HTMLStyleElement;
/**
 * Creates a throttled function that will invoke the given
 * function at most once per the given delay.
 * @param func The function to invoke.
 * @param delay The delay to wait (in milliseconds) before invoking the function again.
 */
export declare function throttle(func: Function, delay?: number): () => void;
/**
 * Determines whether a value is numeric, i.e. a number or a numeric string.
 * @param value The value to check.
 */
export declare function isNumeric(value: unknown): boolean;
