/** * Creates a deep clone of the provided value. * * @param value The value to clone. * @returns The deep clone of the provided value. */ export declare function deepClone(value: T): Promise; /** * Checks if two values are deeply equal. * * @param x The first value to compare. * @param y The second value to compare. * @returns True if the values are deeply equal, false otherwise. */ export declare function deepEqual(x: T, y: T): Promise; /** * Deeply merges two objects. * * @remarks * - Arrays or `undefined` values are not valid inputs. * - Functions: If a function exists in both the target and source, the source * function overwrites the target. * - Symbol properties: Symbol-keyed properties are merged just like string * keys. * - Class instances: Class instances are not merged recursively. If a class * instance exists in the source, it will replace the one in the target. * * @param target The target object to merge into. * @param source The source object to merge from. * @param shouldOverwriteUndefined If true, properties with `undefined` values * in the source will overwrite those in the target. Default is true. * @returns A new object containing the deeply merged properties. * * @example * deepMerge({ a: { b: 1 } }, { a: { c: 2 } }) // => { a: { b: 1, c: 2 } } * * deepMerge( * { a: { fn: () => "from target" } }, * { a: { fn: () => "from source" } } * ) // => { a: { fn: () => "from source" } } */ export declare function deepMerge(target: T, source: U, shouldOverwriteUndefined?: boolean): T & U; /** * Checks if a value is an object. This function returns false for arrays. * * @param value The value to check. * @returns True if the value is an object, false otherwise. */ export declare function isObject(value: unknown): value is Record; /** * Pauses the execution for the specified number of seconds. * * @param seconds The number of seconds to pause the execution. * @returns A promise that resolves after the specified number of seconds. */ export declare function sleep(seconds: number): Promise; /** * Binds all methods of an object to the object itself, so that they can be * assigned to an independent variable and still work. * * @param obj The object, which can be an instance of a class. */ export declare function bindAllMethods(obj: ObjectT): void; //# sourceMappingURL=lang.d.ts.map