"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.toStrictEqualTyped = void 0;
const expect_utils_1 = require("@jest/expect-utils");
const getSerializableProperties_js_1 = require("./utils/getSerializableProperties.cjs");
const toStrictEqualTyped = function (actual, expected) {
    const value = actual;
    const hint = this.utils.matcherHint(this.isNot ? ".not.toStrictEqualTyped" : "toStrictEqualTyped", "value", "expected", { isNot: this.isNot, promise: this.promise });
    const serializableProperties = (0, getSerializableProperties_js_1.getSerializableProperties)(value);
    const pass = this.equals(serializableProperties, expected, 
    // https://github.com/jestjs/jest/blob/22029ba06b69716699254bb9397f2b3bc7b3cf3b/packages/expect/src/matchers.ts#L62-L67
    [...this.customTesters, expect_utils_1.iterableEquality], true);
    return {
        pass,
        message: () => {
            if (pass) {
                return hint + `\n\nExpected: not ${this.utils.printExpected(expected)}`;
            }
            return (hint +
                "\n\n" +
                this.utils.printDiffOrStringify(expected, serializableProperties, "Expected", "Received", true));
        },
    };
};
exports.toStrictEqualTyped = toStrictEqualTyped;
//# sourceMappingURL=toStrictEqualTyped.cjs.map
