/**
 * This function returns `a` if `b` is deeply equal.
 * If not, it will replace any deeply equal children of `b` with those of `a`.
 * This can be used for structural sharing between JSON values for example.
 */
export declare function replaceEqualDeep<T>(a: unknown, b: T): T;
/**
 * Shallow compare objects.
 */
export declare function shallowEqualObjects<T extends Record<string, any>>(a: T, b: T | undefined): boolean;
export declare function isPlainArray(value: unknown): boolean;
export declare function isPlainObject(o: any): o is Object;
