//#region src/utils/objects.d.ts declare function isNotNull(value: T): value is NonNullable; type DeepPartial = T extends object ? (T extends any[] ? { [P in keyof T]: DeepPartial } : { [P in keyof T]?: DeepPartial }) : T; type DeepRequired = T extends object ? { [P in keyof T]-?: DeepRequired } : T; type DeepRequiredOrUndefined = T extends object ? { [P in keyof { [K in keyof T]-?: K }]: DeepRequiredOrUndefined } : T; /** * Assumes both objects are primitives, arrays, or non-function plain objects, and compares them deeply. * * Note that since they are assumed to be plain objects, this function does not compare prototypes. */ declare function deepPlainEquals(obj1: T, obj2: unknown, options?: { ignoreUndefinedValues?: boolean; }): obj2 is T; declare function isCloneable(obj: T): obj is Exclude; declare function shallowClone(obj: T): T; declare function deepPlainClone(obj: T): T; type DeepMerge = U extends any ? DeepMergeNonDistributive : never; type DeepMergeNonDistributive = Omit & Omit & DeepMergeInner, Pick>; type DeepMergeInner = { [K in { [Ki in keyof U]-?: Ki }[keyof U]]: undefined extends U[K] ? K extends keyof T ? T[K] extends object ? Exclude extends object ? DeepMerge> : T[K] | Exclude : T[K] | Exclude : Exclude : K extends keyof T ? T[K] extends object ? U[K] extends object ? DeepMerge : U[K] : U[K] : U[K] }; declare function deepMerge(baseObj: T, mergeObj: U): DeepMerge; type DeepOmit = T extends object ? { [K in keyof T]: K extends keyof U ? (T[K] extends U[K] ? undefined : T[K]) : T[K] } : (T extends U ? undefined : T); declare function typedEntries(obj: T): [Exclude, T[keyof T]][]; declare function typedFromEntries(entries: (readonly [K, V])[]): Record; declare function typedKeys(obj: T): (Exclude)[]; declare function typedValues(obj: T): T[keyof T][]; declare function typedAssign(target: T, source: U): T & U; type FilterUndefined = { [k in keyof T as (undefined extends T[k] ? (T[k] extends undefined | void ? never : k) : never)]+?: T[k] & ({} | null) } & { [k in keyof T as (undefined extends T[k] ? never : k)]: T[k] & ({} | null) }; /** * Returns a new object with all undefined values removed. Useful when spreading optional parameters on an object, as * TypeScript's `Partial` type allows `undefined` values. */ declare function filterUndefined(obj: T): FilterUndefined; type FilterUndefinedOrNull = FilterUndefined<{ [k in keyof T]: null extends T[k] ? NonNullable | undefined : T[k] }>; /** * Returns a new object with all undefined and null values removed. Useful when spreading optional parameters on an object, as * TypeScript's `Partial` type allows `undefined` values. */ declare function filterUndefinedOrNull(obj: T): FilterUndefinedOrNull; type DeepFilterUndefined = T extends object ? FilterUndefined<{ [K in keyof T]: DeepFilterUndefined }> : T; declare function deepFilterUndefined(obj: T): DeepFilterUndefined; declare function pick(obj: T, keys: K[]): Pick; declare function omit(obj: T, keys: K[]): Omit; declare function split(obj: T, keys: K[]): [Pick, Omit]; declare function mapValues(obj: T, fn: (value: T extends (infer E)[] ? E : T[keyof T], key: keyof T) => U): Record; declare function sortKeys(obj: T): T; declare function deepSortKeys(obj: T): T; declare function set(obj: T, key: K, value: T[K & keyof T]): void; declare function get(obj: T, key: K): T[K & keyof T]; declare function getOrUndefined(obj: T, key: K): T[K & keyof T] | undefined; declare function has(obj: T, key: K): obj is T & { [k in K & keyof T]: unknown }; declare function hasAndNotUndefined(obj: T, key: K): obj is T & { [k in K]: Exclude }; declare function deleteKey(obj: T, key: K): void; /** * Returns true iff the value is an object or a function, but not null. */ declare function isObjectLike(value: unknown): value is object | Function; //#endregion export { DeepFilterUndefined, DeepMerge, DeepOmit, DeepPartial, DeepRequired, DeepRequiredOrUndefined, FilterUndefined, FilterUndefinedOrNull, deepFilterUndefined, deepMerge, deepPlainClone, deepPlainEquals, deepSortKeys, deleteKey, filterUndefined, filterUndefinedOrNull, get, getOrUndefined, has, hasAndNotUndefined, isCloneable, isNotNull, isObjectLike, mapValues, omit, pick, set, shallowClone, sortKeys, split, typedAssign, typedEntries, typedFromEntries, typedKeys, typedValues }; //# sourceMappingURL=objects.d.ts.map