/** * You need this because fundamentally isArray can't make the assumption that a readonly array is of type array * Only that `readonly T[]` has array like properties. So it breaks a bit when making things "readonly" */ export declare const isReadOnlyArray: (arr: unknown) => arr is readonly T[]; /** * Removes properties from an object, based on the values in an array, and returns the new object. * Equivalent to an object version of TS Omit<> */ export declare const omit: , const B extends ReadonlyArray>(objToPluck: Readonly, keysToPluck: Readonly | readonly (keyof A)[]) => Omit; /** * Picks properties from an object, base on the values in an array, and returns the new object. * Equivalent to an object version of TS Pick<> */ export declare const pick: , const B extends ReadonlyArray>(objToPluck: Readonly, keysToPluck: Readonly | readonly (keyof A)[]) => Pick; /** * Dynamically get a nested value from an array or * object with a string. * * @example get(person, 'friends[0].name') * * Thanks to * @link https://github.com/rayepps/radash/blob/master/src/object.ts#L214 * * @deprecated The purpose of this function is to allow one to use "dot notation" to pick nested properties from an object. * Usually for props, it would be better to use a function that picks the property you want instead of relying on weak string paths * Using a function allows for better type safety. */ export declare const get: (value: any, path: string, defaultValue?: Readonly) => TDefault; /** * Opposite of get, dynamically set a nested value into * an object using a key path. Does not modify the given * initial object. * * @example * set({}, 'name', 'ra') // => { name: 'ra' } * set({}, 'cards[0].value', 2) // => { cards: [{ value: 2 }] } * * Thanks to * @link https://github.com/rayepps/radash/blob/master/src/object.ts#L214 */ export declare const set: (initial: T, path: string, value: K) => T; export declare const deepEqual: (a: any, b: any) => boolean;