import type { IDictionary, IObjectAny } from '../typings/common'; /** * fork from https://github.com/lukeed/klona/blob/master/src/json.js * @param val input JSON Value * @returns cloned JSON Value */ export declare function cloneDeep(val: T): T; export declare function mapKeys(obj: T | undefined, fn: (value: T[keyof T], key: string) => string): IDictionary; export declare function pick(obj: T | undefined | null, ...keys: U[]): Pick; export declare function omit(obj: T | undefined, ...keys: U[]): Omit; export declare function dropRight(arr: Array | undefined, n?: number): T[]; /** * ref https://lodash.com/docs/4.17.15#find * e.g. find(users, function(o) { return o.age < 40 }) */ export declare function find(arr: ArrayLike | undefined, predicate: (item: T) => boolean, fromIndex?: number): T | undefined; /** * ref https://lodash.com/docs/4.17.15#find * e.g. find(users, { 'age': 1, 'active': true }) */ export declare function find(arr: ArrayLike | undefined, predicate: Partial, fromIndex?: number): T | undefined; export declare function isMatch(obj: IObjectAny | undefined, source: IObjectAny): boolean; export declare function get(obj: IObjectAny | undefined, path: Array): T | undefined; /** * fork from https://github.com/lodash/lodash/blob/4.17.21-es/_baseSet.js */ export declare function set(obj: IObjectAny, path: Array, value: any): T; export declare function debounce any>(func: T, wait: number): { (this: unknown, ...args: unknown[]): void; cancel(): void; }; export declare function toLower(str?: string): string;