declare function debounce(func: any, wait: any, options: any): { (...args: any[]): any; cancel: () => void; flush: () => any; pending: () => boolean; }; type KeySelector = (value: T) => T; declare class InternMap extends Map { private _intern; private _key; constructor(entries?: Iterable, key?: KeySelector); get(key: K): V | undefined; has(key: K): boolean; set(key: K, value: V): this; delete(key: K): boolean; } declare class InternSet extends Set { private _intern; private _key; constructor(values?: Iterable, key?: KeySelector); has(value: T): boolean; add(value: T): this; delete(value: T): boolean; } declare function clamp(value: number, [min, max]: [number, number]): number; type Measurable = { getBoundingClientRect(): ClientRect; }; declare function observeElementRect(elementToObserve: Measurable, callback: CallbackFn): () => void; type CallbackFn = (rect: ClientRect) => void; declare function composeEventHandlers(originalEventHandler?: (event: E) => void, ourEventHandler?: (event: E) => void, { checkForDefaultPrevented }?: { checkForDefaultPrevented?: boolean | undefined; }): (event: E) => void; export { InternMap, InternSet, type Measurable, clamp, composeEventHandlers, debounce, observeElementRect };