/** * Performs a deep equality comparison between two values of any type. * * @param a - The first value to compare. * @param b - The second value to compare. * @returns True if the values are deeply equal, false otherwise. * * @example * // Primitive comparisons * deepEqual(42, 42); // true * deepEqual('hello', 'hello'); // true * deepEqual(NaN, NaN); // true (special NaN handling) * * @example * // Objects with nested structures * deepEqual({a: {b: 1}}, {a: {b: 1}}); // true * deepEqual({a: {b: 1}}, {a: {b: 2}}); // false * * @example * // Array comparisons * deepEqual([1, 2, [3, 4]], [1, 2, [3, 4]]); // true * deepEqual([1, 2, 3], [1, 2]); // false (different lengths) * deepEqual([], {}); // false (array vs plain object) * * @example * // Date objects * deepEqual(new Date('2025-01-01'), new Date('2025-01-01')); // true * deepEqual(new Date('2025-01-01'), new Date('2025-01-02')); // false * * @example * // RegExp objects * deepEqual(/test/gi, /test/gi); // true * deepEqual(/test/gi, /test/i); // false (different flags) * * @example * // Map and Set * deepEqual(new Map([['a', 1]]), new Map([['a', 1]])); // true * deepEqual(new Set([1, 2]), new Set([1, 2])); // true * * @note Handles primitives, plain objects, arrays, NaN, Date, RegExp, Map, and Set. * @note NaN is considered equal to NaN (unlike === comparison). * @note Compares object properties recursively. * @note Arrays must have same length and elements in same order. * @note Mixed kinds (array vs object, Date vs plain object, Map vs object) are never equal. * @note Does NOT support circular references. * @note Property order doesn't matter for plain objects. * * @complexity Time: O(n) where n is total number of values across both structures, Space: O(d) where d is max depth (recursion stack) */ export declare function deepEqual(a: unknown, b: unknown): boolean; //# sourceMappingURL=deepEqual.d.ts.map