export type NoInfer = [A][A extends any ? 0 : never]; export type PartialKeys = Omit & Partial>; export declare function memo, TResult>(getDeps: () => [...TDeps], fn: (...args: NoInfer<[...TDeps]>) => TResult, opts: { key: false | string; debug?: () => boolean; onChange?: (result: TResult) => void; initialDeps?: TDeps; }): { (): TResult; updateDeps(newDeps: [...TDeps]): void; }; export declare function notUndefined(value: T | undefined, msg?: string): T; export declare const approxEqual: (a: number, b: number) => boolean; export declare const debounce: (targetWindow: Window & typeof globalThis, fn: Function, ms: number) => (this: any, ...args: Array) => void;