/** * @param doc Source object or array * @param isArray True if `doc` is an array * @param keepEmptyStrings Whether to keep empty strings * @returns An object in which all properties with null, undefined, or empty * string values have been removed, recursively. */ export declare function cleanNulls(doc: Record, isArray?: boolean, keepEmptyStrings?: boolean): Record | any[]; /** * @param obj Any reference to check * @returns True if obj is an Object as opposed to * something that inherits from Object */ export declare function isBasicObject(obj: any): boolean; /** * @method MongoObject.reportNulls * @public * @param flatDoc An object with no properties that are also objects. * @returns An object in which the keys represent the keys in the * original object that were null, undefined, or empty strings, and the value * of each key is "". */ export declare function reportNulls(flatDoc: Record, keepEmptyStrings?: boolean): Record; export declare function appendAffectedKey(affectedKey: string | null | undefined, key: string): string | null | undefined; export declare function extractOp(position: string): string | null; export declare function genericKeyAffectsOtherGenericKey(key: string, affectedKey: string): boolean; export declare function isNullUndefinedOrEmptyString(val: any): boolean; export declare function isLength(value: any): boolean; export declare function isArrayLike(value: any): boolean; export declare function each(collection: any, iteratee: (item: any, keyOrIndex: number | string, obj: any) => boolean | undefined): void; export declare function isPrototype(value: unknown): boolean; export declare function isEmpty(value: any): boolean; export declare function isObject(value: any): boolean; export declare function makeKeyGeneric(key: string): string | null; export declare function keyToPosition(key: string, wrapAll?: boolean): string; /** * Takes a string representation of an object key and its value * and updates "obj" to contain that key with that value. * * Example keys and results if val is 1: * "a" -> {a: 1} * "a[b]" -> {a: {b: 1}} * "a[b][0]" -> {a: {b: [1]}} * 'a[b.0.c]' -> {a: {'b.0.c': 1}} * @param val Value * @param key Key * @param obj Object */ export declare function expandKey(val: any, key: string, obj: any): void;