/**
 * Deeply compares two values for structural equality.
 *
 * Supports: primitives (with NaN-equals-NaN), Arrays, Sets, Maps, Dates,
 * RegExp (source + flags), Errors (name + message), TypedArrays,
 * ArrayBuffer/DataView (byte-wise), and plain objects. Handles circular
 * references via cycle tracking.
 *
 * Sets with non-primitive members use order-independent deep comparison
 * (O(n²) worst case).
 *
 * @example
 * ```ts
 * isEqual({ a: 1, b: 2 }, { b: 2, a: 1 }); // true
 * isEqual([1, 2, 3], [1, 2, 3]); // true
 * isEqual(new Set([{ id: 1 }]), new Set([{ id: 1 }])); // true
 * isEqual(/foo/gi, /foo/gi); // true
 * isEqual(new Uint8Array([1, 2]), new Uint8Array([1, 2])); // true
 * ```
 */
export declare const isEqual: <T, K>(obj: T | T[], objToCompare: K | K[]) => boolean;
