@bitgo/sdk-coin-eth 25.9.1 → 25.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -11,6 +11,7 @@ const statics_1 = require("@bitgo/statics");
11
11
  const register_1 = require("../../src/register");
12
12
  const erc20Token_1 = require("../../src/erc20Token");
13
13
  const erc721Token_1 = require("../../src/erc721Token");
14
+ const erc7984Token_1 = require("../../src/erc7984Token");
14
15
  describe('ETH Register', function () {
15
16
  let bitgo;
16
17
  let registerSpy;
@@ -33,10 +34,11 @@ describe('ETH Register', function () {
33
34
  assert_1.default.ok(registeredNames.includes('gteth'));
34
35
  assert_1.default.ok(registeredNames.includes('teth'));
35
36
  assert_1.default.ok(registeredNames.includes('hteth'));
36
- // ERC20 and ERC721 tokens should be registered
37
+ // ERC20, ERC721 and ERC7984 tokens should be registered
37
38
  const erc20Count = erc20Token_1.Erc20Token.createTokenConstructors().length;
38
39
  const erc721Count = erc721Token_1.Erc721Token.createTokenConstructors().length;
39
- assert_1.default.strictEqual(registerSpy.callCount, 4 + erc20Count + erc721Count);
40
+ const erc7984Count = erc7984Token_1.Erc7984Token.createTokenConstructors().length;
41
+ assert_1.default.strictEqual(registerSpy.callCount, 4 + erc20Count + erc721Count + erc7984Count);
40
42
  });
41
43
  });
42
44
  describe('registerWithCoinMap', function () {
@@ -60,12 +62,12 @@ describe('ETH Register', function () {
60
62
  assert_1.default.ok(statics_1.coins.has(staticsCoin.name), `${staticsCoin.name} should exist in the coin map`);
61
63
  }
62
64
  });
63
- it('should not add tokens to the global coin map when coin map has no ERC20 tokens', function () {
64
- const limitedCoinMap = statics_1.coins.filter((coin) => !(coin instanceof statics_1.Erc20Coin));
65
+ it('should not add tokens to the global coin map when coin map has no contract-address tokens', function () {
66
+ const limitedCoinMap = statics_1.coins.filter((coin) => !(coin instanceof statics_1.Erc20Coin) && !(coin instanceof statics_1.Erc7984Coin));
65
67
  (0, register_1.registerWithCoinMap)(bitgo, limitedCoinMap);
66
- // registerToken should not be called since no ERC20 tokens are in the map
68
+ // registerToken should not be called since no ERC20 or ERC7984 tokens are in the map
67
69
  assert_1.default.strictEqual(registerTokenSpy.callCount, 0);
68
70
  });
69
71
  });
70
72
  });
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3VuaXQvcmVnaXN0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxrREFBMEI7QUFDMUIsb0RBQTRCO0FBQzVCLDRDQUEwQztBQUMxQyw4Q0FBb0Q7QUFDcEQsNENBQWtEO0FBQ2xELGlEQUFtRTtBQUNuRSxxREFBa0Q7QUFDbEQsdURBQW9EO0FBRXBELFFBQVEsQ0FBQyxjQUFjLEVBQUU7SUFDdkIsSUFBSSxLQUFlLENBQUM7SUFDcEIsSUFBSSxXQUEyQixDQUFDO0lBQ2hDLElBQUksZ0JBQWdDLENBQUM7SUFFckMsVUFBVSxDQUFDO1FBQ1QsS0FBSyxHQUFHLElBQUksa0JBQVEsQ0FBQyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ3RDLFdBQVcsR0FBRyxlQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztRQUMzQyxnQkFBZ0IsR0FBRyxlQUFLLENBQUMsR0FBRyxDQUFDLDRCQUFpQixFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQ25FLENBQUMsQ0FBQyxDQUFDO0lBRUgsU0FBUyxDQUFDO1FBQ1IsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3RCLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzdCLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLFVBQVUsRUFBRTtRQUNuQixFQUFFLENBQUMsbURBQW1ELEVBQUU7WUFDdEQsSUFBQSxtQkFBUSxFQUFDLEtBQUssQ0FBQyxDQUFDO1lBRWhCLE1BQU0sZUFBZSxHQUFHLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUUzRSxrQ0FBa0M7WUFDbEMsZ0JBQU0sQ0FBQyxFQUFFLENBQUMsZUFB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QUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc2lub24gZnJvbSAnc2lub24nO1xuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHsgQml0R29BUEkgfSBmcm9tICdAYml0Z28vc2RrLWFwaSc7XG5pbXBvcnQgeyBHbG9iYWxDb2luRmFjdG9yeSB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBjb2lucywgRXJjMjBDb2luIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgcmVnaXN0ZXIsIHJlZ2lzdGVyV2l0aENvaW5NYXAgfSBmcm9tICcuLi8uLi9zcmMvcmVnaXN0ZXInO1xuaW1wb3J0IHsgRXJjMjBUb2tlbiB9IGZyb20gJy4uLy4uL3NyYy9lcmMyMFRva2VuJztcbmltcG9ydCB7IEVyYzcyMVRva2VuIH0gZnJvbSAnLi4vLi4vc3JjL2VyYzcyMVRva2VuJztcblxuZGVzY3JpYmUoJ0VUSCBSZWdpc3RlcicsIGZ1bmN0aW9uICgpIHtcbiAgbGV0IGJpdGdvOiBCaXRHb0FQSTtcbiAgbGV0IHJlZ2lzdGVyU3B5OiBzaW5vbi5TaW5vblNweTtcbiAgbGV0IHJlZ2lzdGVyVG9rZW5TcHk6IHNpbm9uLlNpbm9uU3B5O1xuXG4gIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgIGJpdGdvID0gbmV3IEJpdEdvQVBJKHsgZW52OiAndGVzdCcgfSk7XG4gICAgcmVnaXN0ZXJTcHkgPSBzaW5vbi5zcHkoYml0Z28sICdyZWdpc3RlcicpO1xuICAgIHJlZ2lzdGVyVG9rZW5TcHkgPSBzaW5vbi5zcHkoR2xvYmFsQ29pbkZhY3RvcnksICdyZWdpc3RlclRva2VuJyk7XG4gIH0pO1xuXG4gIGFmdGVyRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgcmVnaXN0ZXJTcHkucmVzdG9yZSgpO1xuICAgIHJlZ2lzdGVyVG9rZW5TcHkucmVzdG9yZSgpO1xuICB9KTtcblxuICBkZXNjcmliZSgncmVnaXN0ZXInLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCByZWdpc3RlciBiYXNlIGNvaW5zIGFuZCB0b2tlbiBjb25zdHJ1Y3RvcnMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICByZWdpc3RlcihiaXRnbyk7XG5cbiAgICAgIGNvbnN0IHJlZ2lzdGVyZWROYW1lcyA9IHJlZ2lzdGVyU3B5LmdldENhbGxzKCkubWFwKChjYWxsKSA9PiBjYWxsLmFyZ3NbMF0pO1xuXG4gICAgICAvLyBCYXNlIGNvaW5zIHNob3VsZCBiZSByZWdpc3RlcmVkXG4gICAgICBhc3NlcnQub2socmVnaXN0ZXJlZE5hbWVzLmluY2x1ZGVzKCdldGgnKSk7XG4gICAgICBhc3NlcnQub2socmVnaXN0ZXJlZE5hbWVzLmluY2x1ZGVzKCdndGV0aCcpKTtcbiAgICAgIGFzc2VydC5vayhyZWdpc3RlcmVkTmFtZXMuaW5jbHVkZXMoJ3RldGgnKSk7XG4gICAgICBhc3NlcnQub2socmVnaXN0ZXJlZE5hbWVzLmluY2x1ZGVzKCdodGV0aCcpKTtcblxuICAgICAgLy8gRVJDMjAgYW5kIEVSQzcyMSB0b2tlbnMgc2hvdWxkIGJlIHJlZ2lzdGVyZWRcbiAgICAgIGNvbnN0IGVyYzIwQ291bnQgPSBFcmMyMFRva2VuLmNyZWF0ZVRva2VuQ29uc3RydWN0b3JzKCkubGVuZ3RoO1xuICAgICAgY29uc3QgZXJjNzIxQ291bnQgPSBFcmM3MjFUb2tlbi5jcmVhdGVUb2tlbkNvbnN0cnVjdG9ycygpLmxlbmd0aDtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZWdpc3RlclNweS5jYWxsQ291bnQsIDQgKyBlcmMyMENvdW50ICsgZXJjNzIxQ291bnQpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgncmVnaXN0ZXJXaXRoQ29pbk1hcCcsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIGNhbGwgcmVnaXN0ZXIgaW50ZXJuYWxseSBmb3IgYmFzZSBjb2lucyBhbmQgdG9rZW5zJywgZnVuY3Rpb24gKCkge1xuICAgICAgcmVnaXN0ZXJXaXRoQ29pbk1hcChiaXRnbywgY29pbnMpO1xuXG4gICAgICBjb25zdCByZWdpc3RlcmVkTmFtZXMgPSByZWdpc3RlclNweS5nZXRDYWxscygpLm1hcCgoY2FsbCkgPT4gY2FsbC5hcmdzWzBdKTtcblxuICAgICAgLy8gQmFzZSBjb2lucyBzaG91bGQgYmUgcmVnaXN0ZXJlZCB2aWEgcmVnaXN0ZXIoKVxuICAgICAgYXNzZXJ0Lm9rKHJlZ2lzdGVyZWROYW1lcy5pbmNsdWRlcygnZXRoJykpO1xuICAgICAgYXNzZXJ0Lm9rKHJlZ2lzdGVyZWROYW1lcy5pbmNsdWRlcygnZ3RldGgnKSk7XG4gICAgICBhc3NlcnQub2socmVnaXN0ZXJlZE5hbWVzLmluY2x1ZGVzKCd0ZXRoJykpO1xuICAgICAgYXNzZXJ0Lm9rKHJlZ2lzdGVyZWROYW1lcy5pbmNsdWRlcygnaHRldGgnKSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGFkZCBkeW5hbWljIEVSQzIwIHRva2VucyB0byB0aGUgZ2xvYmFsIGNvaW4gbWFwJywgZnVuY3Rpb24gKCkge1xuICAgICAgcmVnaXN0ZXJXaXRoQ29pbk1hcChiaXRnbywgY29pbnMpO1xuXG4gICAgICAvLyByZWdpc3RlclRva2VuIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIGZvciBkeW5hbWljIHRva2Vuc1xuICAgICAgYXNzZXJ0Lm9rKHJlZ2lzdGVyVG9rZW5TcHkuY2FsbENvdW50ID4gMCk7XG5cbiAgICAgIC8vIEVhY2ggY2FsbCBzaG91bGQgcGFzcyBhIHZhbGlkIGNvaW4gZnJvbSB0aGUgY29pbk1hcFxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZWdpc3RlclRva2VuU3B5LmNhbGxDb3VudDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGNhbGwgPSByZWdpc3RlclRva2VuU3B5LmdldENhbGwoaSk7XG4gICAgICAgIGNvbnN0IHN0YXRpY3NDb2luID0gY2FsbC5hcmdzWzBdO1xuICAgICAgICBhc3NlcnQub2soY29pbnMuaGFzKHN0YXRpY3NDb2luLm5hbWUpLCBgJHtzdGF0aWNzQ29pbi5uYW1lfSBzaG91bGQgZXhpc3QgaW4gdGhlIGNvaW4gbWFwYCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIG5vdCBhZGQgdG9rZW5zIHRvIHRoZSBnbG9iYWwgY29pbiBtYXAgd2hlbiBjb2luIG1hcCBoYXMgbm8gRVJDMjAgdG9rZW5zJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgbGltaXRlZENvaW5NYXAgPSBjb2lucy5maWx0ZXIoKGNvaW4pID0+ICEoY29pbiBpbnN0YW5jZW9mIEVyYzIwQ29pbikpO1xuXG4gICAgICByZWdpc3RlcldpdGhDb2luTWFwKGJpdGdvLCBsaW1pdGVkQ29pbk1hcCk7XG5cbiAgICAgIC8vIHJlZ2lzdGVyVG9rZW4gc2hvdWxkIG5vdCBiZSBjYWxsZWQgc2luY2Ugbm8gRVJDMjAgdG9rZW5zIGFyZSBpbiB0aGUgbWFwXG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVnaXN0ZXJUb2tlblNweS5jYWxsQ291bnQsIDApO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3VuaXQvcmVnaXN0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxrREFBMEI7QUFDMUIsb0RBQTRCO0FBQzVCLDRDQUEwQztBQUMxQyw4Q0FBb0Q7QUFDcEQsNENBQStEO0FBQy9ELGlEQUFtRTtBQUNuRSxxREFBa0Q7QUFDbEQsdURBQW9EO0FBQ3BELHlEQUFzRDtBQUV0RCxRQUFRLENBQUMsY0FBYyxFQUFFO0lBQ3ZCLElBQUksS0FBZSxDQUFDO0lBQ3BCLElBQUksV0FBMkIsQ0FBQztJQUNoQyxJQUFJLGdCQUFnQyxDQUFDO0lBRXJDLFVBQVUsQ0FBQztRQUNULEtBQUssR0FBRyxJQUFJLGtCQUFRLENBQUMsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUN0QyxXQUFXLEdBQUcsZUFBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDM0MsZ0JBQWdCLEdBQUcsZUFBSyxDQUFDLEdBQUcsQ0FBQyw0QkFBaUIsRUFBRSxlQUFlLENBQUMsQ0FBQztJQUNuRSxDQUFDLENBQUMsQ0FBQztJQUVILFNBQVMsQ0FBQztRQUNSLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN0QixnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM3QixDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxVQUFVLEVBQUU7UUFDbkIsRUFBRSxDQUFDLG1EQUFtRCxFQUFFO1lBQ3RELElBQUEsbUJBQVEsRUFBQyxLQUFLLENBQUMsQ0FBQztZQUVoQixNQUFNLGVBQWUsR0FBRyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFM0Usa0NBQWtDO1lBQ2xDLGdCQUFNLENBQUMs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QUMsS0FBSyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1lBRTNDLHFGQUFxRjtZQUNyRixnQkFBTSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDcEQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHNpbm9uIGZyb20gJ3Npbm9uJztcbmltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCB7IEJpdEdvQVBJIH0gZnJvbSAnQGJpdGdvL3Nkay1hcGknO1xuaW1wb3J0IHsgR2xvYmFsQ29pbkZhY3RvcnkgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgY29pbnMsIEVyYzIwQ29pbiwgRXJjNzk4NENvaW4gfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyByZWdpc3RlciwgcmVnaXN0ZXJXaXRoQ29pbk1hcCB9IGZyb20gJy4uLy4uL3NyYy9yZWdpc3Rlcic7XG5pbXBvcnQgeyBFcmMyMFRva2VuIH0gZnJvbSAnLi4vLi4vc3JjL2VyYzIwVG9rZW4nO1xuaW1wb3J0IHsgRXJjNzIxVG9rZW4gfSBmcm9tICcuLi8uLi9zcmMvZXJjNzIxVG9rZW4nO1xuaW1wb3J0IHsgRXJjNzk4NFRva2VuIH0gZnJvbSAnLi4vLi4vc3JjL2VyYzc5ODRUb2tlbic7XG5cbmRlc2NyaWJlKCdFVEggUmVnaXN0ZXInLCBmdW5jdGlvbiAoKSB7XG4gIGxldCBiaXRnbzogQml0R29BUEk7XG4gIGxldCByZWdpc3RlclNweTogc2lub24uU2lub25TcHk7XG4gIGxldCByZWdpc3RlclRva2VuU3B5OiBzaW5vbi5TaW5vblNweTtcblxuICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICBiaXRnbyA9IG5ldyBCaXRHb0FQSSh7IGVudjogJ3Rlc3QnIH0pO1xuICAgIHJlZ2lzdGVyU3B5ID0gc2lub24uc3B5KGJpdGdvLCAncmVnaXN0ZXInKTtcbiAgICByZWdpc3RlclRva2VuU3B5ID0gc2lub24uc3B5KEdsb2JhbENvaW5GYWN0b3J5LCAncmVnaXN0ZXJUb2tlbicpO1xuICB9KTtcblxuICBhZnRlckVhY2goZnVuY3Rpb24gKCkge1xuICAgIHJlZ2lzdGVyU3B5LnJlc3RvcmUoKTtcbiAgICByZWdpc3RlclRva2VuU3B5LnJlc3RvcmUoKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3JlZ2lzdGVyJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgcmVnaXN0ZXIgYmFzZSBjb2lucyBhbmQgdG9rZW4gY29uc3RydWN0b3JzJywgZnVuY3Rpb24gKCkge1xuICAgICAgcmVnaXN0ZXIoYml0Z28pO1xuXG4gICAgICBjb25zdCByZWdpc3RlcmVkTmFtZXMgPSByZWdpc3RlclNweS5nZXRDYWxscygpLm1hcCgoY2FsbCkgPT4gY2FsbC5hcmdzWzBdKTtcblxuICAgICAgLy8gQmFzZSBjb2lucyBzaG91bGQgYmUgcmVnaXN0ZXJlZFxuICAgICAgYXNzZXJ0Lm9rKHJlZ2lzdGVyZWROYW1lcy5pbmNsdWRlcygnZXRoJykpO1xuICAgICAgYXNzZXJ0Lm9rKHJlZ2lzdGVyZWROYW1lcy5pbmNsdWRlcygnZ3RldGgnKSk7XG4gICAgICBhc3NlcnQub2socmVnaXN0ZXJlZE5hbWVzLmluY2x1ZGVzKCd0ZXRoJykpO1xuICAgICAgYXNzZXJ0Lm9rKHJlZ2lzdGVyZWROYW1lcy5pbmNsdWRlcygnaHRldGgnKSk7XG5cbiAgICAgIC8vIEVSQzIwLCBFUkM3MjEgYW5kIEVSQzc5ODQgdG9rZW5zIHNob3VsZCBiZSByZWdpc3RlcmVkXG4gICAgICBjb25zdCBlcmMyMENvdW50ID0gRXJjMjBUb2tlbi5jcmVhdGVUb2tlbkNvbnN0cnVjdG9ycygpLmxlbmd0aDtcbiAgICAgIGNvbnN0IGVyYzcyMUNvdW50ID0gRXJjNzIxVG9rZW4uY3JlYXRlVG9rZW5Db25zdHJ1Y3RvcnMoKS5sZW5ndGg7XG4gICAgICBjb25zdCBlcmM3OTg0Q291bnQgPSBFcmM3OTg0VG9rZW4uY3JlYXRlVG9rZW5Db25zdHJ1Y3RvcnMoKS5sZW5ndGg7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVnaXN0ZXJTcHkuY2FsbENvdW50LCA0ICsgZXJjMjBDb3VudCArIGVyYzcyMUNvdW50ICsgZXJjNzk4NENvdW50KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3JlZ2lzdGVyV2l0aENvaW5NYXAnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBjYWxsIHJlZ2lzdGVyIGludGVybmFsbHkgZm9yIGJhc2UgY29pbnMgYW5kIHRva2VucycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJlZ2lzdGVyV2l0aENvaW5NYXAoYml0Z28sIGNvaW5zKTtcblxuICAgICAgY29uc3QgcmVnaXN0ZXJlZE5hbWVzID0gcmVnaXN0ZXJTcHkuZ2V0Q2FsbHMoKS5tYXAoKGNhbGwpID0+IGNhbGwuYXJnc1swXSk7XG5cbiAgICAgIC8vIEJhc2UgY29pbnMgc2hvdWxkIGJlIHJlZ2lzdGVyZWQgdmlhIHJlZ2lzdGVyKClcbiAgICAgIGFzc2VydC5vayhyZWdpc3RlcmVkTmFtZXMuaW5jbHVkZXMoJ2V0aCcpKTtcbiAgICAgIGFzc2VydC5vayhyZWdpc3RlcmVkTmFtZXMuaW5jbHVkZXMoJ2d0ZXRoJykpO1xuICAgICAgYXNzZXJ0Lm9rKHJlZ2lzdGVyZWROYW1lcy5pbmNsdWRlcygndGV0aCcpKTtcbiAgICAgIGFzc2VydC5vayhyZWdpc3RlcmVkTmFtZXMuaW5jbHVkZXMoJ2h0ZXRoJykpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBhZGQgZHluYW1pYyBFUkMyMCB0b2tlbnMgdG8gdGhlIGdsb2JhbCBjb2luIG1hcCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJlZ2lzdGVyV2l0aENvaW5NYXAoYml0Z28sIGNvaW5zKTtcblxuICAgICAgLy8gcmVnaXN0ZXJUb2tlbiBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBmb3IgZHluYW1pYyB0b2tlbnNcbiAgICAgIGFzc2VydC5vayhyZWdpc3RlclRva2VuU3B5LmNhbGxDb3VudCA+IDApO1xuXG4gICAgICAvLyBFYWNoIGNhbGwgc2hvdWxkIHBhc3MgYSB2YWxpZCBjb2luIGZyb20gdGhlIGNvaW5NYXBcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVnaXN0ZXJUb2tlblNweS5jYWxsQ291bnQ7IGkrKykge1xuICAgICAgICBjb25zdCBjYWxsID0gcmVnaXN0ZXJUb2tlblNweS5nZXRDYWxsKGkpO1xuICAgICAgICBjb25zdCBzdGF0aWNzQ29pbiA9IGNhbGwuYXJnc1swXTtcbiAgICAgICAgYXNzZXJ0Lm9rKGNvaW5zLmhhcyhzdGF0aWNzQ29pbi5uYW1lKSwgYCR7c3RhdGljc0NvaW4ubmFtZX0gc2hvdWxkIGV4aXN0IGluIHRoZSBjb2luIG1hcGApO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBub3QgYWRkIHRva2VucyB0byB0aGUgZ2xvYmFsIGNvaW4gbWFwIHdoZW4gY29pbiBtYXAgaGFzIG5vIGNvbnRyYWN0LWFkZHJlc3MgdG9rZW5zJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgbGltaXRlZENvaW5NYXAgPSBjb2lucy5maWx0ZXIoKGNvaW4pID0+ICEoY29pbiBpbnN0YW5jZW9mIEVyYzIwQ29pbikgJiYgIShjb2luIGluc3RhbmNlb2YgRXJjNzk4NENvaW4pKTtcblxuICAgICAgcmVnaXN0ZXJXaXRoQ29pbk1hcChiaXRnbywgbGltaXRlZENvaW5NYXApO1xuXG4gICAgICAvLyByZWdpc3RlclRva2VuIHNob3VsZCBub3QgYmUgY2FsbGVkIHNpbmNlIG5vIEVSQzIwIG9yIEVSQzc5ODQgdG9rZW5zIGFyZSBpbiB0aGUgbWFwXG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVnaXN0ZXJUb2tlblNweS5jYWxsQ291bnQsIDApO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=decryptionDelegation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decryptionDelegation.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/decryptionDelegation.ts"],"names":[],"mappings":""}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ /**
7
+ * Standalone calldata tests for Zama ERC-7984 decryption delegation.
8
+ *
9
+ * Zama helpers are imported from the @bitgo/abstract-eth public package entry (re-exports
10
+ * ./lib including zamaUtils). TransactionType is imported from the sdk-core enum dist path
11
+ * to avoid loading the full @bitgo/sdk-core barrel (pre-existing io-ts issue in the TSS graph).
12
+ *
13
+ * TransactionBuilder build/rebuild tests live in decryptionDelegationTxBuilder.ts.
14
+ */
15
+ const should_1 = __importDefault(require("should"));
16
+ const sdk_core_1 = require("@bitgo/sdk-core");
17
+ const abstract_eth_1 = require("@bitgo/abstract-eth");
18
+ const DELEGATE_ADDRESS = '0x1111111111111111111111111111111111111111';
19
+ const TOKEN_ADDRESS = '0x94167129172A35ab093B44b8b96213DDbc3cD387';
20
+ const TOKEN_ADDRESS_2 = '0x4E7B06D78965594eB5EF5414c357ca21E1554491';
21
+ const ACL_ADDRESS = '0xf0Ffdc93b7E186bC2f8CB3dAA75D86d1930A433D';
22
+ const EXPIRY = Math.floor(Date.now() / 1000) + 365 * 86400;
23
+ describe('DecryptionDelegation TransactionType (standalone)', () => {
24
+ it('should be a valid numeric type distinct from ContractCall/Send/FlushTokens', () => {
25
+ should_1.default.exist(sdk_core_1.TransactionType.DecryptionDelegation);
26
+ (typeof sdk_core_1.TransactionType.DecryptionDelegation).should.equal('number');
27
+ sdk_core_1.TransactionType.DecryptionDelegation.should.not.equal(sdk_core_1.TransactionType.ContractCall);
28
+ sdk_core_1.TransactionType.DecryptionDelegation.should.not.equal(sdk_core_1.TransactionType.Send);
29
+ sdk_core_1.TransactionType.DecryptionDelegation.should.not.equal(sdk_core_1.TransactionType.FlushTokens);
30
+ sdk_core_1.TransactionType.DecryptionDelegation.should.not.equal(sdk_core_1.TransactionType.FlushERC721);
31
+ sdk_core_1.TransactionType.DecryptionDelegation.should.not.equal(sdk_core_1.TransactionType.FlushERC1155);
32
+ });
33
+ });
34
+ describe('DecryptionDelegation calldata selectors (standalone)', () => {
35
+ it('single-token calldata uses multicall selector 0xac9650d8', () => {
36
+ const calldata = (0, abstract_eth_1.buildMulticallDelegationCalldata)(DELEGATE_ADDRESS, [TOKEN_ADDRESS], EXPIRY);
37
+ calldata.slice(0, 10).should.equal(abstract_eth_1.aclMulticallMethodId);
38
+ calldata.slice(0, 10).should.equal('0xac9650d8');
39
+ });
40
+ it('multi-token calldata uses multicall selector 0xac9650d8', () => {
41
+ const calldata = (0, abstract_eth_1.buildMulticallDelegationCalldata)(DELEGATE_ADDRESS, [TOKEN_ADDRESS, TOKEN_ADDRESS_2], EXPIRY);
42
+ calldata.slice(0, 10).should.equal(abstract_eth_1.aclMulticallMethodId);
43
+ });
44
+ it('forwarder-wrapped calldata uses callFromParent selector 0x77e60b35', () => {
45
+ const inner = (0, abstract_eth_1.buildMulticallDelegationCalldata)(DELEGATE_ADDRESS, [TOKEN_ADDRESS], EXPIRY);
46
+ const wrapped = (0, abstract_eth_1.wrapInCallFromParent)(ACL_ADDRESS, inner);
47
+ wrapped.slice(0, 10).should.equal(abstract_eth_1.callFromParentMethodId);
48
+ wrapped.slice(0, 10).should.equal('0x77e60b35');
49
+ });
50
+ it('delegate address is ABI-encoded in calldata', () => {
51
+ const calldata = (0, abstract_eth_1.buildMulticallDelegationCalldata)(DELEGATE_ADDRESS, [TOKEN_ADDRESS], EXPIRY);
52
+ calldata.should.containEql(DELEGATE_ADDRESS.slice(2).toLowerCase().padStart(64, '0'));
53
+ });
54
+ it('token address is ABI-encoded in calldata', () => {
55
+ const calldata = (0, abstract_eth_1.buildMulticallDelegationCalldata)(DELEGATE_ADDRESS, [TOKEN_ADDRESS], EXPIRY);
56
+ calldata.should.containEql(TOKEN_ADDRESS.slice(2).toLowerCase().padStart(64, '0'));
57
+ });
58
+ });
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjcnlwdGlvbkRlbGVnYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L3VuaXQvdHJhbnNhY3Rpb25CdWlsZGVyL2RlY3J5cHRpb25EZWxlZ2F0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7Ozs7Ozs7O0dBUUc7QUFDSCxvREFBNEI7QUFDNUIsOENBQWtEO0FBQ2xELHNEQUs2QjtBQUU3QixNQUFNLGdCQUFnQixHQUFHLDRDQUE0QyxDQUFDO0FBQ3RFLE1BQU0sYUFBYSxHQUFHLDRDQUE0QyxDQUFDO0FBQ25FLE1BQU0sZUFBZSxHQUFHLDRDQUE0QyxDQUFDO0FBQ3JFLE1BQU0sV0FBVyxHQUFHLDRDQUE0QyxDQUFDO0FBQ2pFLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUM7QUFFM0QsUUFBUSxDQUFDLG1EQUFtRCxFQUFFLEdBQUcsRUFBRTtJQUNqRSxFQUFFLENBQUMsNEVBQTRFLEVBQUUsR0FBRyxFQUFFO1FBQ3BGLGdCQUFNLENBQUMsS0FBSyxDQUFDLDBCQUFlLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUNuRCxDQUFDLE9BQU8sMEJBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckUsMEJBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQywwQkFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3BGLDBCQUFlLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsMEJBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1RSwwQkFBZSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLDBC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dGFuZGFsb25lIGNhbGxkYXRhIHRlc3RzIGZvciBaYW1hIEVSQy03OTg0IGRlY3J5cHRpb24gZGVsZWdhdGlvbi5cbiAqXG4gKiBaYW1hIGhlbHBlcnMgYXJlIGltcG9ydGVkIGZyb20gdGhlIEBiaXRnby9hYnN0cmFjdC1ldGggcHVibGljIHBhY2thZ2UgZW50cnkgKHJlLWV4cG9ydHNcbiAqIC4vbGliIGluY2x1ZGluZyB6YW1hVXRpbHMpLiBUcmFuc2FjdGlvblR5cGUgaXMgaW1wb3J0ZWQgZnJvbSB0aGUgc2RrLWNvcmUgZW51bSBkaXN0IHBhdGhcbiAqIHRvIGF2b2lkIGxvYWRpbmcgdGhlIGZ1bGwgQGJpdGdvL3Nkay1jb3JlIGJhcnJlbCAocHJlLWV4aXN0aW5nIGlvLXRzIGlzc3VlIGluIHRoZSBUU1MgZ3JhcGgpLlxuICpcbiAqIFRyYW5zYWN0aW9uQnVpbGRlciBidWlsZC9yZWJ1aWxkIHRlc3RzIGxpdmUgaW4gZGVjcnlwdGlvbkRlbGVnYXRpb25UeEJ1aWxkZXIudHMuXG4gKi9cbmltcG9ydCBzaG91bGQgZnJvbSAnc2hvdWxkJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQge1xuICBidWlsZE11bHRpY2FsbERlbGVnYXRpb25DYWxsZGF0YSxcbiAgY2FsbEZyb21QYXJlbnRNZXRob2RJZCxcbiAgYWNsTXVsdGljYWxsTWV0aG9kSWQsXG4gIHdyYXBJbkNhbGxGcm9tUGFyZW50LFxufSBmcm9tICdAYml0Z28vYWJzdHJhY3QtZXRoJztcblxuY29uc3QgREVMRUdBVEVfQUREUkVTUyA9ICcweDExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEnO1xuY29uc3QgVE9LRU5fQUREUkVTUyA9ICcweDk0MTY3MTI5MTcyQTM1YWIwOTNCNDRiOGI5NjIxM0REYmMzY0QzODcnO1xuY29uc3QgVE9LRU5fQUREUkVTU18yID0gJzB4NEU3QjA2RDc4OTY1NTk0ZUI1RUY1NDE0YzM1N2NhMjFFMTU1NDQ5MSc7XG5jb25zdCBBQ0xfQUREUkVTUyA9ICcweGYwRmZkYzkzYjdFMTg2YkMyZjhDQjNkQUE3NUQ4NmQxOTMwQTQzM0QnO1xuY29uc3QgRVhQSVJZID0gTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMTAwMCkgKyAzNjUgKiA4NjQwMDtcblxuZGVzY3JpYmUoJ0RlY3J5cHRpb25EZWxlZ2F0aW9uIFRyYW5zYWN0aW9uVHlwZSAoc3RhbmRhbG9uZSknLCAoKSA9PiB7XG4gIGl0KCdzaG91bGQgYmUgYSB2YWxpZCBudW1lcmljIHR5cGUgZGlzdGluY3QgZnJvbSBDb250cmFjdENhbGwvU2VuZC9GbHVzaFRva2VucycsICgpID0+IHtcbiAgICBzaG91bGQuZXhpc3QoVHJhbnNhY3Rpb25UeXBlLkRlY3J5cHRpb25EZWxlZ2F0aW9uKTtcbiAgICAodHlwZW9mIFRyYW5zYWN0aW9uVHlwZS5EZWNyeXB0aW9uRGVsZWdhdGlvbikuc2hvdWxkLmVxdWFsKCdudW1iZXInKTtcbiAgICBUcmFuc2FjdGlvblR5cGUuRGVjcnlwdGlvbkRlbGVnYXRpb24uc2hvdWxkLm5vdC5lcXVhbChUcmFuc2FjdGlvblR5cGUuQ29udHJhY3RDYWxsKTtcbiAgICBUcmFuc2FjdGlvblR5cGUuRGVjcnlwdGlvbkRlbGVnYXRpb24uc2hvdWxkLm5vdC5lcXVhbChUcmFuc2FjdGlvblR5cGUuU2VuZCk7XG4gICAgVHJhbnNhY3Rpb25UeXBlLkRlY3J5cHRpb25EZWxlZ2F0aW9uLnNob3VsZC5ub3QuZXF1YWwoVHJhbnNhY3Rpb25UeXBlLkZsdXNoVG9rZW5zKTtcbiAgICBUcmFuc2FjdGlvblR5cGUuRGVjcnlwdGlvbkRlbGVnYXRpb24uc2hvdWxkLm5vdC5lcXVhbChUcmFuc2FjdGlvblR5cGUuRmx1c2hFUkM3MjEpO1xuICAgIFRyYW5zYWN0aW9uVHlwZS5EZWNyeXB0aW9uRGVsZWdhdGlvbi5zaG91bGQubm90LmVxdWFsKFRyYW5zYWN0aW9uVHlwZS5GbHVzaEVSQzExNTUpO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnRGVjcnlwdGlvbkRlbGVnYXRpb24gY2FsbGRhdGEgc2VsZWN0b3JzIChzdGFuZGFsb25lKScsICgpID0+IHtcbiAgaXQoJ3NpbmdsZS10b2tlbiBjYWxsZGF0YSB1c2VzIG11bHRpY2FsbCBzZWxlY3RvciAweGFjOTY1MGQ4JywgKCkgPT4ge1xuICAgIGNvbnN0IGNhbGxkYXRhID0gYnVpbGRNdWx0aWNhbGxEZWxlZ2F0aW9uQ2FsbGRhdGEoREVMRUdBVEVfQUREUkVTUywgW1RPS0VOX0FERFJFU1NdLCBFWFBJUlkpO1xuICAgIGNhbGxkYXRhLnNsaWNlKDAsIDEwKS5zaG91bGQuZXF1YWwoYWNsTXVsdGljYWxsTWV0aG9kSWQpO1xuICAgIGNhbGxkYXRhLnNsaWNlKDAsIDEwKS5zaG91bGQuZXF1YWwoJzB4YWM5NjUwZDgnKTtcbiAgfSk7XG5cbiAgaXQoJ211bHRpLXRva2VuIGNhbGxkYXRhIHVzZXMgbXVsdGljYWxsIHNlbGVjdG9yIDB4YWM5NjUwZDgnLCAoKSA9PiB7XG4gICAgY29uc3QgY2FsbGRhdGEgPSBidWlsZE11bHRpY2FsbERlbGVnYXRpb25DYWxsZGF0YShERUxFR0FURV9BRERSRVNTLCBbVE9LRU5fQUREUkVTUywgVE9LRU5fQUREUkVTU18yXSwgRVhQSVJZKTtcbiAgICBjYWxsZGF0YS5zbGljZSgwLCAxMCkuc2hvdWxkLmVxdWFsKGFjbE11bHRpY2FsbE1ldGhvZElkKTtcbiAgfSk7XG5cbiAgaXQoJ2ZvcndhcmRlci13cmFwcGVkIGNhbGxkYXRhIHVzZXMgY2FsbEZyb21QYXJlbnQgc2VsZWN0b3IgMHg3N2U2MGIzNScsICgpID0+IHtcbiAgICBjb25zdCBpbm5lciA9IGJ1aWxkTXVsdGljYWxsRGVsZWdhdGlvbkNhbGxkYXRhKERFTEVHQVRFX0FERFJFU1MsIFtUT0tFTl9BRERSRVNTXSwgRVhQSVJZKTtcbiAgICBjb25zdCB3cmFwcGVkID0gd3JhcEluQ2FsbEZyb21QYXJlbnQoQUNMX0FERFJFU1MsIGlubmVyKTtcbiAgICB3cmFwcGVkLnNsaWNlKDAsIDEwKS5zaG91bGQuZXF1YWwoY2FsbEZyb21QYXJlbnRNZXRob2RJZCk7XG4gICAgd3JhcHBlZC5zbGljZSgwLCAxMCkuc2hvdWxkLmVxdWFsKCcweDc3ZTYwYjM1Jyk7XG4gIH0pO1xuXG4gIGl0KCdkZWxlZ2F0ZSBhZGRyZXNzIGlzIEFCSS1lbmNvZGVkIGluIGNhbGxkYXRhJywgKCkgPT4ge1xuICAgIGNvbnN0IGNhbGxkYXRhID0gYnVpbGRNdWx0aWNhbGxEZWxlZ2F0aW9uQ2FsbGRhdGEoREVMRUdBVEVfQUREUkVTUywgW1RPS0VOX0FERFJFU1NdLCBFWFBJUlkpO1xuICAgIGNhbGxkYXRhLnNob3VsZC5jb250YWluRXFsKERFTEVHQVRFX0FERFJFU1Muc2xpY2UoMikudG9Mb3dlckNhc2UoKS5wYWRTdGFydCg2NCwgJzAnKSk7XG4gIH0pO1xuXG4gIGl0KCd0b2tlbiBhZGRyZXNzIGlzIEFCSS1lbmNvZGVkIGluIGNhbGxkYXRhJywgKCkgPT4ge1xuICAgIGNvbnN0IGNhbGxkYXRhID0gYnVpbGRNdWx0aWNhbGxEZWxlZ2F0aW9uQ2FsbGRhdGEoREVMRUdBVEVfQUREUkVTUywgW1RPS0VOX0FERFJFU1NdLCBFWFBJUlkpO1xuICAgIGNhbGxkYXRhLnNob3VsZC5jb250YWluRXFsKFRPS0VOX0FERFJFU1Muc2xpY2UoMikudG9Mb3dlckNhc2UoKS5wYWRTdGFydCg2NCwgJzAnKSk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=decryptionDelegationTxBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decryptionDelegationTxBuilder.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/decryptionDelegationTxBuilder.ts"],"names":[],"mappings":""}
@@ -0,0 +1,136 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ /**
7
+ * TransactionBuilder build and rebuild tests for Zama ERC-7984 decryption delegation.
8
+ *
9
+ * Pattern mirrors contractCall.ts: imports TransactionType from @bitgo/sdk-core and
10
+ * TransactionBuilder from '../../../src'. These are subject to the same pre-existing
11
+ * io-ts crash (sdk-core/src/bitgo/utils/tss/eddsa/typesEddsaMPCv2) that affects ALL
12
+ * TransactionBuilder tests in this monorepo. They run in the full CI test suite.
13
+ *
14
+ * Three flows verified:
15
+ * Flow 1 — root wallet: ContractCall + multicall data → build → from(hex) → rebuild
16
+ * Flow 2 — explicit DecryptionDelegation type → build → from(hex) → rebuild
17
+ * Flow 3 — forwarder: ContractCall + callFromParent data → build → from(hex) → rebuild
18
+ */
19
+ const should_1 = __importDefault(require("should"));
20
+ const sdk_core_1 = require("@bitgo/sdk-core");
21
+ const abstract_eth_1 = require("@bitgo/abstract-eth");
22
+ const getBuilder_1 = require("../getBuilder");
23
+ const ACL_ADDRESS = '0xf0Ffdc93b7E186bC2f8CB3dAA75D86d1930A433D';
24
+ const DELEGATE_ADDRESS = '0x1111111111111111111111111111111111111111';
25
+ const TOKEN_ADDRESS = '0x94167129172A35ab093B44b8b96213DDbc3cD387';
26
+ const TOKEN_ADDRESS_2 = '0x4E7B06D78965594eB5EF5414c357ca21E1554491';
27
+ const FORWARDER_ADDRESS = '0xDeADbeefdEAdbeefdEadbEEFdeadbeEFdEaDbeeF';
28
+ const EXPIRY = Math.floor(Date.now() / 1000) + 365 * 86400;
29
+ describe('DecryptionDelegation TransactionBuilder', () => {
30
+ let txBuilder;
31
+ beforeEach(() => {
32
+ txBuilder = (0, getBuilder_1.getBuilder)('hteth');
33
+ txBuilder.fee({ fee: '1000000000', gasLimit: '200000' });
34
+ txBuilder.counter(1);
35
+ });
36
+ // ---- Flow 1: root wallet, ContractCall type --------------------------------
37
+ it('Flow 1: should build a ContractCall tx with multicall delegation data', async () => {
38
+ const calldata = (0, abstract_eth_1.buildMulticallDelegationCalldata)(DELEGATE_ADDRESS, [TOKEN_ADDRESS, TOKEN_ADDRESS_2], EXPIRY);
39
+ txBuilder.type(sdk_core_1.TransactionType.ContractCall);
40
+ txBuilder.contract(ACL_ADDRESS);
41
+ txBuilder.data(calldata);
42
+ const tx = await txBuilder.build();
43
+ const json = tx.toJson();
44
+ should_1.default.equal(tx.type, sdk_core_1.TransactionType.ContractCall);
45
+ json.to.should.equal(ACL_ADDRESS.toLowerCase());
46
+ json.data.should.startWith(abstract_eth_1.aclMulticallMethodId);
47
+ json.value.should.equal('0');
48
+ });
49
+ it('Flow 1: should rebuild from hex — multicall delegation round-trip', async () => {
50
+ const calldata = (0, abstract_eth_1.buildMulticallDelegationCalldata)(DELEGATE_ADDRESS, [TOKEN_ADDRESS, TOKEN_ADDRESS_2], EXPIRY);
51
+ txBuilder.type(sdk_core_1.TransactionType.ContractCall);
52
+ txBuilder.contract(ACL_ADDRESS);
53
+ txBuilder.data(calldata);
54
+ const originalTx = await txBuilder.build();
55
+ const rawHex = originalTx.toBroadcastFormat();
56
+ const rebuiltBuilder = (0, getBuilder_1.getBuilder)('hteth');
57
+ rebuiltBuilder.from(rawHex);
58
+ const rebuiltTx = await rebuiltBuilder.build();
59
+ should_1.default.equal(rebuiltTx.toBroadcastFormat(), rawHex);
60
+ rebuiltTx.toJson().to.should.equal(ACL_ADDRESS.toLowerCase());
61
+ rebuiltTx.toJson().data.should.startWith(abstract_eth_1.aclMulticallMethodId);
62
+ });
63
+ // ---- Flow 2: explicit DecryptionDelegation type ---------------------------
64
+ it('Flow 2: should build with explicit DecryptionDelegation type', async () => {
65
+ const calldata = (0, abstract_eth_1.buildMulticallDelegationCalldata)(DELEGATE_ADDRESS, [TOKEN_ADDRESS], EXPIRY);
66
+ txBuilder.type(sdk_core_1.TransactionType.DecryptionDelegation);
67
+ txBuilder.contract(ACL_ADDRESS);
68
+ txBuilder.data(calldata);
69
+ const tx = await txBuilder.build();
70
+ const json = tx.toJson();
71
+ should_1.default.equal(tx.type, sdk_core_1.TransactionType.ContractCall);
72
+ json.to.should.equal(ACL_ADDRESS.toLowerCase());
73
+ json.data.should.startWith(abstract_eth_1.aclMulticallMethodId);
74
+ json.value.should.equal('0');
75
+ });
76
+ it('Flow 2: should rebuild from hex — DecryptionDelegation type round-trip', async () => {
77
+ const calldata = (0, abstract_eth_1.buildMulticallDelegationCalldata)(DELEGATE_ADDRESS, [TOKEN_ADDRESS], EXPIRY);
78
+ txBuilder.type(sdk_core_1.TransactionType.DecryptionDelegation);
79
+ txBuilder.contract(ACL_ADDRESS);
80
+ txBuilder.data(calldata);
81
+ const originalTx = await txBuilder.build();
82
+ const rawHex = originalTx.toBroadcastFormat();
83
+ // classifyTransaction sees 0xac9650d8 → ContractCall (multicall not mapped)
84
+ // ContractCall rebuild path handles it identically to DecryptionDelegation
85
+ const rebuiltBuilder = (0, getBuilder_1.getBuilder)('hteth');
86
+ rebuiltBuilder.from(rawHex);
87
+ const rebuiltTx = await rebuiltBuilder.build();
88
+ should_1.default.equal(rebuiltTx.toBroadcastFormat(), rawHex);
89
+ });
90
+ // ---- Flow 3: forwarder callFromParent path --------------------------------
91
+ it('Flow 3: should build a forwarder delegation tx targeting the forwarder', async () => {
92
+ const innerCalldata = (0, abstract_eth_1.buildMulticallDelegationCalldata)(DELEGATE_ADDRESS, [TOKEN_ADDRESS], EXPIRY);
93
+ const outerCalldata = (0, abstract_eth_1.wrapInCallFromParent)(ACL_ADDRESS, innerCalldata);
94
+ txBuilder.type(sdk_core_1.TransactionType.ContractCall);
95
+ txBuilder.contract(FORWARDER_ADDRESS);
96
+ txBuilder.data(outerCalldata);
97
+ const tx = await txBuilder.build();
98
+ const json = tx.toJson();
99
+ should_1.default.equal(tx.type, sdk_core_1.TransactionType.ContractCall);
100
+ json.to.should.equal(FORWARDER_ADDRESS.toLowerCase());
101
+ json.data.should.startWith(abstract_eth_1.callFromParentMethodId);
102
+ json.value.should.equal('0');
103
+ });
104
+ it('Flow 3: should rebuild from hex — forwarder delegation round-trip', async () => {
105
+ const innerCalldata = (0, abstract_eth_1.buildMulticallDelegationCalldata)(DELEGATE_ADDRESS, [TOKEN_ADDRESS], EXPIRY);
106
+ const outerCalldata = (0, abstract_eth_1.wrapInCallFromParent)(ACL_ADDRESS, innerCalldata);
107
+ txBuilder.type(sdk_core_1.TransactionType.ContractCall);
108
+ txBuilder.contract(FORWARDER_ADDRESS);
109
+ txBuilder.data(outerCalldata);
110
+ const originalTx = await txBuilder.build();
111
+ const rawHex = originalTx.toBroadcastFormat();
112
+ const rebuiltBuilder = (0, getBuilder_1.getBuilder)('hteth');
113
+ rebuiltBuilder.from(rawHex);
114
+ const rebuiltTx = await rebuiltBuilder.build();
115
+ should_1.default.equal(rebuiltTx.toBroadcastFormat(), rawHex);
116
+ rebuiltTx.toJson().to.should.equal(FORWARDER_ADDRESS.toLowerCase());
117
+ rebuiltTx.toJson().data.should.startWith(abstract_eth_1.callFromParentMethodId);
118
+ });
119
+ // ---- Validation -----------------------------------------------------------
120
+ it('should throw for DecryptionDelegation when contract address is missing', async () => {
121
+ const calldata = (0, abstract_eth_1.buildMulticallDelegationCalldata)(DELEGATE_ADDRESS, [TOKEN_ADDRESS], EXPIRY);
122
+ txBuilder.type(sdk_core_1.TransactionType.DecryptionDelegation);
123
+ txBuilder.data(calldata);
124
+ await txBuilder.build().should.be.rejectedWith('Invalid transaction: missing contract address');
125
+ });
126
+ it('should throw for DecryptionDelegation when data field is missing', async () => {
127
+ txBuilder.type(sdk_core_1.TransactionType.DecryptionDelegation);
128
+ txBuilder.contract(ACL_ADDRESS);
129
+ await txBuilder.build().should.be.rejectedWith('Invalid transaction: missing contract call data field');
130
+ });
131
+ it('should throw when data() is called before type is set to a contract call type', () => {
132
+ const calldata = (0, abstract_eth_1.buildMulticallDelegationCalldata)(DELEGATE_ADDRESS, [TOKEN_ADDRESS], EXPIRY);
133
+ should_1.default.throws(() => txBuilder.data(calldata), /data can only be set for contract call transaction types/);
134
+ });
135
+ });
136
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjcnlwdGlvbkRlbGVnYXRpb25UeEJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L3VuaXQvdHJhbnNhY3Rpb25CdWlsZGVyL2RlY3J5cHRpb25EZWxlZ2F0aW9uVHhCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsb0RBQTRCO0FBQzVCLDhDQUFrRDtBQUVsRCxzREFLNkI7QUFDN0IsOENBQTJDO0FBRTNDLE1BQU0sV0FBVyxHQUFHLDRDQUE0QyxDQUFDO0FBQ2pFLE1BQU0sZ0JBQWdCLEdBQUcsNENBQTRDLENBQUM7QUFDdEUsTUFBTSxhQUFhLEdBQUcsNENBQTRDLENBQUM7QUFDbkUsTUFBTSxlQUFlLEdBQUcsNENBQTRDLENBQUM7QUFDckUsTUFBTSxpQkFBaUIsR0FBRyw0Q0FBNEMsQ0FBQztBQUN2RSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsS0FBSyxDQUFDO0FBRTNELFFBQVEsQ0FBQyx5Q0FBeUMsRUFBRSxHQUFHLEVBQUU7SUFDdkQsSUFBSSxTQUE2QixDQUFDO0lBRWxDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDZCxTQUFTLEdBQUcsSUFBQSx1QkFBVSxFQUFDLE9BQU8sQ0FBdUIsQ0FBQztRQUN0RCxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUN6RCxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZCLENBQUMsQ0FBQyxDQUFDO0lBRUgsK0VBQStFO0lBRS9FLEVBQUUsQ0FBQyx1RUFBdUUsRUFBRSxLQUFLLElBQUksRUFBRTtRQUNyRixNQUFNLFFBQVEsR0FBRyxJQUFBLCtDQUFnQyxFQUFDLGdC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QVksQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO0lBQ2xHLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLGtFQUFrRSxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ2hGLFNBQVMsQ0FBQyxJQUFJLENBQUMsMEJBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3JELFNBQVMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDaEMsTUFBTSxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsdURBQXVELENBQUMsQ0FBQztJQUMxRyxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQywrRUFBK0UsRUFBRSxHQUFHLEVBQUU7UUFDdkYsTUFBTSxRQUFRLEdBQUcsSUFBQSwrQ0FBZ0MsRUFBQyxnQkFBZ0IsRUFBRSxDQUFDLGFBQWEsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzdGLGdCQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsMERBQTBELENBQUMsQ0FBQztJQUM1RyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUcmFuc2FjdGlvbkJ1aWxkZXIgYnVpbGQgYW5kIHJlYnVpbGQgdGVzdHMgZm9yIFphbWEgRVJDLTc5ODQgZGVjcnlwdGlvbiBkZWxlZ2F0aW9uLlxuICpcbiAqIFBhdHRlcm4gbWlycm9ycyBjb250cmFjdENhbGwudHM6IGltcG9ydHMgVHJhbnNhY3Rpb25UeXBlIGZyb20gQGJpdGdvL3Nkay1jb3JlIGFuZFxuICogVHJhbnNhY3Rpb25CdWlsZGVyIGZyb20gJy4uLy4uLy4uL3NyYycuIFRoZXNlIGFyZSBzdWJqZWN0IHRvIHRoZSBzYW1lIHByZS1leGlzdGluZ1xuICogaW8tdHMgY3Jhc2ggKHNkay1jb3JlL3NyYy9iaXRnby91dGlscy90c3MvZWRkc2EvdHlwZXNFZGRzYU1QQ3YyKSB0aGF0IGFmZmVjdHMgQUxMXG4gKiBUcmFuc2FjdGlvbkJ1aWxkZXIgdGVzdHMgaW4gdGhpcyBtb25vcmVwby4gVGhleSBydW4gaW4gdGhlIGZ1bGwgQ0kgdGVzdCBzdWl0ZS5cbiAqXG4gKiBUaHJlZSBmbG93cyB2ZXJpZmllZDpcbiAqICAgRmxvdyAxIOKAlCByb290IHdhbGxldDogQ29udHJhY3RDYWxsICsgbXVsdGljYWxsIGRhdGEg4oaSIGJ1aWxkIOKGkiBmcm9tKGhleCkg4oaSIHJlYnVpbGRcbiAqICAgRmxvdyAyIOKAlCBleHBsaWNpdCBEZWNyeXB0aW9uRGVsZWdhdGlvbiB0eXBlIOKGkiBidWlsZCDihpIgZnJvbShoZXgpIOKGkiByZWJ1aWxkXG4gKiAgIEZsb3cgMyDigJQgZm9yd2FyZGVyOiBDb250cmFjdENhbGwgKyBjYWxsRnJvbVBhcmVudCBkYXRhIOKGkiBidWlsZCDihpIgZnJvbShoZXgpIOKGkiByZWJ1aWxkXG4gKi9cbmltcG9ydCBzaG91bGQgZnJvbSAnc2hvdWxkJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuLi8uLi8uLi9zcmMnO1xuaW1wb3J0IHtcbiAgYnVpbGRNdWx0aWNhbGxEZWxlZ2F0aW9uQ2FsbGRhdGEsXG4gIHdyYXBJbkNhbGxGcm9tUGFyZW50LFxuICBhY2xNdWx0aWNhbGxNZXRob2RJZCxcbiAgY2FsbEZyb21QYXJlbnRNZXRob2RJZCxcbn0gZnJvbSAnQGJpdGdvL2Fic3RyYWN0LWV0aCc7XG5pbXBvcnQgeyBnZXRCdWlsZGVyIH0gZnJvbSAnLi4vZ2V0QnVpbGRlcic7XG5cbmNvbnN0IEFDTF9BRERSRVNTID0gJzB4ZjBGZmRjOTNiN0UxODZiQzJmOENCM2RBQTc1RDg2ZDE5MzBBNDMzRCc7XG5jb25zdCBERUxFR0FURV9BRERSRVNTID0gJzB4MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMSc7XG5jb25zdCBUT0tFTl9BRERSRVNTID0gJzB4OTQxNjcxMjkxNzJBMzVhYjA5M0I0NGI4Yjk2MjEzRERiYzNjRDM4Nyc7XG5jb25zdCBUT0tFTl9BRERSRVNTXzIgPSAnMHg0RTdCMDZENzg5NjU1OTRlQjVFRjU0MTRjMzU3Y2EyMUUxNTU0NDkxJztcbmNvbnN0IEZPUldBUkRFUl9BRERSRVNTID0gJzB4RGVBRGJlZWZkRUFkYmVlZmRFYWRiRUVGZGVhZGJlRUZkRWFEYmVlRic7XG5jb25zdCBFWFBJUlkgPSBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKSArIDM2NSAqIDg2NDAwO1xuXG5kZXNjcmliZSgnRGVjcnlwdGlvbkRlbGVnYXRpb24gVHJhbnNhY3Rpb25CdWlsZGVyJywgKCkgPT4ge1xuICBsZXQgdHhCdWlsZGVyOiBUcmFuc2FjdGlvbkJ1aWxkZXI7XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgdHhCdWlsZGVyID0gZ2V0QnVpbGRlcignaHRldGgnKSBhcyBUcmFuc2FjdGlvbkJ1aWxkZXI7XG4gICAgdHhCdWlsZGVyLmZlZSh7IGZlZTogJzEwMDAwMDAwMDAnLCBnYXNMaW1pdDogJzIwMDAwMCcgfSk7XG4gICAgdHhCdWlsZGVyLmNvdW50ZXIoMSk7XG4gIH0pO1xuXG4gIC8vIC0tLS0gRmxvdyAxOiByb290IHdhbGxldCwgQ29udHJhY3RDYWxsIHR5cGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICBpdCgnRmxvdyAxOiBzaG91bGQgYnVpbGQgYSBDb250cmFjdENhbGwgdHggd2l0aCBtdWx0aWNhbGwgZGVsZWdhdGlvbiBkYXRhJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGNhbGxkYXRhID0gYnVpbGRNdWx0aWNhbGxEZWxlZ2F0aW9uQ2FsbGRhdGEoREVMRUdBVEVfQUREUkVTUywgW1RPS0VOX0FERFJFU1MsIFRPS0VOX0FERFJFU1NfMl0sIEVYUElSWSk7XG4gICAgdHhCdWlsZGVyLnR5cGUoVHJhbnNhY3Rpb25UeXBlLkNvbnRyYWN0Q2FsbCk7XG4gICAgdHhCdWlsZGVyLmNvbnRyYWN0KEFDTF9BRERSRVNTKTtcbiAgICB0eEJ1aWxkZXIuZGF0YShjYWxsZGF0YSk7XG5cbiAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgIGNvbnN0IGpzb24gPSB0eC50b0pzb24oKTtcblxuICAgIHNob3VsZC5lcXVhbCh0eC50eXBlLCBUcmFuc2FjdGlvblR5cGUuQ29udHJhY3RDYWxsKTtcbiAgICBqc29uLnRvLnNob3VsZC5lcXVhbChBQ0xfQUREUkVTUy50b0xvd2VyQ2FzZSgpKTtcbiAgICBqc29uLmRhdGEuc2hvdWxkLnN0YXJ0V2l0aChhY2xNdWx0aWNhbGxNZXRob2RJZCk7XG4gICAganNvbi52YWx1ZS5zaG91bGQuZXF1YWwoJzAnKTtcbiAgfSk7XG5cbiAgaXQoJ0Zsb3cgMTogc2hvdWxkIHJlYnVpbGQgZnJvbSBoZXgg4oCUIG11bHRpY2FsbCBkZWxlZ2F0aW9uIHJvdW5kLXRyaXAnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgY2FsbGRhdGEgPSBidWlsZE11bHRpY2FsbERlbGVnYXRpb25DYWxsZGF0YShERUxFR0FURV9BRERSRVNTLCBbVE9LRU5fQUREUkVTUywgVE9LRU5fQUREUkVTU18yXSwgRVhQSVJZKTtcbiAgICB0eEJ1aWxkZXIudHlwZShUcmFuc2FjdGlvblR5cGUuQ29udHJhY3RDYWxsKTtcbiAgICB0eEJ1aWxkZXIuY29udHJhY3QoQUNMX0FERFJFU1MpO1xuICAgIHR4QnVpbGRlci5kYXRhKGNhbGxkYXRhKTtcblxuICAgIGNvbnN0IG9yaWdpbmFsVHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICBjb25zdCByYXdIZXggPSBvcmlnaW5hbFR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG5cbiAgICBjb25zdCByZWJ1aWx0QnVpbGRlciA9IGdldEJ1aWxkZXIoJ2h0ZXRoJykgYXMgVHJhbnNhY3Rpb25CdWlsZGVyO1xuICAgIHJlYnVpbHRCdWlsZGVyLmZyb20ocmF3SGV4KTtcbiAgICBjb25zdCByZWJ1aWx0VHggPSBhd2FpdCByZWJ1aWx0QnVpbGRlci5idWlsZCgpO1xuXG4gICAgc2hvdWxkLmVxdWFsKHJlYnVpbHRUeC50b0Jyb2FkY2FzdEZvcm1hdCgpLCByYXdIZXgpO1xuICAgIHJlYnVpbHRUeC50b0pzb24oKS50by5zaG91bGQuZXF1YWwoQUNMX0FERFJFU1MudG9Mb3dlckNhc2UoKSk7XG4gICAgcmVidWlsdFR4LnRvSnNvbigpLmRhdGEuc2hvdWxkLnN0YXJ0V2l0aChhY2xNdWx0aWNhbGxNZXRob2RJZCk7XG4gIH0pO1xuXG4gIC8vIC0tLS0gRmxvdyAyOiBleHBsaWNpdCBEZWNyeXB0aW9uRGVsZWdhdGlvbiB0eXBlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIGl0KCdGbG93IDI6IHNob3VsZCBidWlsZCB3aXRoIGV4cGxpY2l0IERlY3J5cHRpb25EZWxlZ2F0aW9uIHR5cGUnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgY2FsbGRhdGEgPSBidWlsZE11bHRpY2FsbERlbGVnYXRpb25DYWxsZGF0YShERUxFR0FURV9BRERSRVNTLCBbVE9LRU5fQUREUkVTU10sIEVYUElSWSk7XG4gICAgdHhCdWlsZGVyLnR5cGUoVHJhbnNhY3Rpb25UeXBlLkRlY3J5cHRpb25EZWxlZ2F0aW9uKTtcbiAgICB0eEJ1aWxkZXIuY29udHJhY3QoQUNMX0FERFJFU1MpO1xuICAgIHR4QnVpbGRlci5kYXRhKGNhbGxkYXRhKTtcblxuICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgY29uc3QganNvbiA9IHR4LnRvSnNvbigpO1xuXG4gICAgc2hvdWxkLmVxdWFsKHR4LnR5cGUsIFRyYW5zYWN0aW9uVHlwZS5Db250cmFjdENhbGwpO1xuICAgIGpzb24udG8uc2hvdWxkLmVxdWFsKEFDTF9BRERSRVNTLnRvTG93ZXJDYXNlKCkpO1xuICAgIGpzb24uZGF0YS5zaG91bGQuc3RhcnRXaXRoKGFjbE11bHRpY2FsbE1ldGhvZElkKTtcbiAgICBqc29uLnZhbHVlLnNob3VsZC5lcXVhbCgnMCcpO1xuICB9KTtcblxuICBpdCgnRmxvdyAyOiBzaG91bGQgcmVidWlsZCBmcm9tIGhleCDigJQgRGVjcnlwdGlvbkRlbGVnYXRpb24gdHlwZSByb3VuZC10cmlwJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGNhbGxkYXRhID0gYnVpbGRNdWx0aWNhbGxEZWxlZ2F0aW9uQ2FsbGRhdGEoREVMRUdBVEVfQUREUkVTUywgW1RPS0VOX0FERFJFU1NdLCBFWFBJUlkpO1xuICAgIHR4QnVpbGRlci50eXBlKFRyYW5zYWN0aW9uVHlwZS5EZWNyeXB0aW9uRGVsZWdhdGlvbik7XG4gICAgdHhCdWlsZGVyLmNvbnRyYWN0KEFDTF9BRERSRVNTKTtcbiAgICB0eEJ1aWxkZXIuZGF0YShjYWxsZGF0YSk7XG5cbiAgICBjb25zdCBvcmlnaW5hbFR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgY29uc3QgcmF3SGV4ID0gb3JpZ2luYWxUeC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuXG4gICAgLy8gY2xhc3NpZnlUcmFuc2FjdGlvbiBzZWVzIDB4YWM5NjUwZDgg4oaSIENvbnRyYWN0Q2FsbCAobXVsdGljYWxsIG5vdCBtYXBwZWQpXG4gICAgLy8gQ29udHJhY3RDYWxsIHJlYnVpbGQgcGF0aCBoYW5kbGVzIGl0IGlkZW50aWNhbGx5IHRvIERlY3J5cHRpb25EZWxlZ2F0aW9uXG4gICAgY29uc3QgcmVidWlsdEJ1aWxkZXIgPSBnZXRCdWlsZGVyKCdodGV0aCcpIGFzIFRyYW5zYWN0aW9uQnVpbGRlcjtcbiAgICByZWJ1aWx0QnVpbGRlci5mcm9tKHJhd0hleCk7XG4gICAgY29uc3QgcmVidWlsdFR4ID0gYXdhaXQgcmVidWlsdEJ1aWxkZXIuYnVpbGQoKTtcblxuICAgIHNob3VsZC5lcXVhbChyZWJ1aWx0VHgudG9Ccm9hZGNhc3RGb3JtYXQoKSwgcmF3SGV4KTtcbiAgfSk7XG5cbiAgLy8gLS0tLSBGbG93IDM6IGZvcndhcmRlciBjYWxsRnJvbVBhcmVudCBwYXRoIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgaXQoJ0Zsb3cgMzogc2hvdWxkIGJ1aWxkIGEgZm9yd2FyZGVyIGRlbGVnYXRpb24gdHggdGFyZ2V0aW5nIHRoZSBmb3J3YXJkZXInLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgaW5uZXJDYWxsZGF0YSA9IGJ1aWxkTXVsdGljYWxsRGVsZWdhdGlvbkNhbGxkYXRhKERFTEVHQVRFX0FERFJFU1MsIFtUT0tFTl9BRERSRVNTXSwgRVhQSVJZKTtcbiAgICBjb25zdCBvdXRlckNhbGxkYXRhID0gd3JhcEluQ2FsbEZyb21QYXJlbnQoQUNMX0FERFJFU1MsIGlubmVyQ2FsbGRhdGEpO1xuXG4gICAgdHhCdWlsZGVyLnR5cGUoVHJhbnNhY3Rpb25UeXBlLkNvbnRyYWN0Q2FsbCk7XG4gICAgdHhCdWlsZGVyLmNvbnRyYWN0KEZPUldBUkRFUl9BRERSRVNTKTtcbiAgICB0eEJ1aWxkZXIuZGF0YShvdXRlckNhbGxkYXRhKTtcblxuICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgY29uc3QganNvbiA9IHR4LnRvSnNvbigpO1xuXG4gICAgc2hvdWxkLmVxdWFsKHR4LnR5cGUsIFRyYW5zYWN0aW9uVHlwZS5Db250cmFjdENhbGwpO1xuICAgIGpzb24udG8uc2hvdWxkLmVxdWFsKEZPUldBUkRFUl9BRERSRVNTLnRvTG93ZXJDYXNlKCkpO1xuICAgIGpzb24uZGF0YS5zaG91bGQuc3RhcnRXaXRoKGNhbGxGcm9tUGFyZW50TWV0aG9kSWQpO1xuICAgIGpzb24udmFsdWUuc2hvdWxkLmVxdWFsKCcwJyk7XG4gIH0pO1xuXG4gIGl0KCdGbG93IDM6IHNob3VsZCByZWJ1aWxkIGZyb20gaGV4IOKAlCBmb3J3YXJkZXIgZGVsZWdhdGlvbiByb3VuZC10cmlwJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGlubmVyQ2FsbGRhdGEgPSBidWlsZE11bHRpY2FsbERlbGVnYXRpb25DYWxsZGF0YShERUxFR0FURV9BRERSRVNTLCBbVE9LRU5fQUREUkVTU10sIEVYUElSWSk7XG4gICAgY29uc3Qgb3V0ZXJDYWxsZGF0YSA9IHdyYXBJbkNhbGxGcm9tUGFyZW50KEFDTF9BRERSRVNTLCBpbm5lckNhbGxkYXRhKTtcblxuICAgIHR4QnVpbGRlci50eXBlKFRyYW5zYWN0aW9uVHlwZS5Db250cmFjdENhbGwpO1xuICAgIHR4QnVpbGRlci5jb250cmFjdChGT1JXQVJERVJfQUREUkVTUyk7XG4gICAgdHhCdWlsZGVyLmRhdGEob3V0ZXJDYWxsZGF0YSk7XG5cbiAgICBjb25zdCBvcmlnaW5hbFR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgY29uc3QgcmF3SGV4ID0gb3JpZ2luYWxUeC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuXG4gICAgY29uc3QgcmVidWlsdEJ1aWxkZXIgPSBnZXRCdWlsZGVyKCdodGV0aCcpIGFzIFRyYW5zYWN0aW9uQnVpbGRlcjtcbiAgICByZWJ1aWx0QnVpbGRlci5mcm9tKHJhd0hleCk7XG4gICAgY29uc3QgcmVidWlsdFR4ID0gYXdhaXQgcmVidWlsdEJ1aWxkZXIuYnVpbGQoKTtcblxuICAgIHNob3VsZC5lcXVhbChyZWJ1aWx0VHgudG9Ccm9hZGNhc3RGb3JtYXQoKSwgcmF3SGV4KTtcbiAgICByZWJ1aWx0VHgudG9Kc29uKCkudG8uc2hvdWxkLmVxdWFsKEZPUldBUkRFUl9BRERSRVNTLnRvTG93ZXJDYXNlKCkpO1xuICAgIHJlYnVpbHRUeC50b0pzb24oKS5kYXRhLnNob3VsZC5zdGFydFdpdGgoY2FsbEZyb21QYXJlbnRNZXRob2RJZCk7XG4gIH0pO1xuXG4gIC8vIC0tLS0gVmFsaWRhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIGl0KCdzaG91bGQgdGhyb3cgZm9yIERlY3J5cHRpb25EZWxlZ2F0aW9uIHdoZW4gY29udHJhY3QgYWRkcmVzcyBpcyBtaXNzaW5nJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGNhbGxkYXRhID0gYnVpbGRNdWx0aWNhbGxEZWxlZ2F0aW9uQ2FsbGRhdGEoREVMRUdBVEVfQUREUkVTUywgW1RPS0VOX0FERFJFU1NdLCBFWFBJUlkpO1xuICAgIHR4QnVpbGRlci50eXBlKFRyYW5zYWN0aW9uVHlwZS5EZWNyeXB0aW9uRGVsZWdhdGlvbik7XG4gICAgdHhCdWlsZGVyLmRhdGEoY2FsbGRhdGEpO1xuICAgIGF3YWl0IHR4QnVpbGRlci5idWlsZCgpLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ0ludmFsaWQgdHJhbnNhY3Rpb246IG1pc3NpbmcgY29udHJhY3QgYWRkcmVzcycpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGZvciBEZWNyeXB0aW9uRGVsZWdhdGlvbiB3aGVuIGRhdGEgZmllbGQgaXMgbWlzc2luZycsIGFzeW5jICgpID0+IHtcbiAgICB0eEJ1aWxkZXIudHlwZShUcmFuc2FjdGlvblR5cGUuRGVjcnlwdGlvbkRlbGVnYXRpb24pO1xuICAgIHR4QnVpbGRlci5jb250cmFjdChBQ0xfQUREUkVTUyk7XG4gICAgYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCkuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnSW52YWxpZCB0cmFuc2FjdGlvbjogbWlzc2luZyBjb250cmFjdCBjYWxsIGRhdGEgZmllbGQnKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyB3aGVuIGRhdGEoKSBpcyBjYWxsZWQgYmVmb3JlIHR5cGUgaXMgc2V0IHRvIGEgY29udHJhY3QgY2FsbCB0eXBlJywgKCkgPT4ge1xuICAgIGNvbnN0IGNhbGxkYXRhID0gYnVpbGRNdWx0aWNhbGxEZWxlZ2F0aW9uQ2FsbGRhdGEoREVMRUdBVEVfQUREUkVTUywgW1RPS0VOX0FERFJFU1NdLCBFWFBJUlkpO1xuICAgIHNob3VsZC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLmRhdGEoY2FsbGRhdGEpLCAvZGF0YSBjYW4gb25seSBiZSBzZXQgZm9yIGNvbnRyYWN0IGNhbGwgdHJhbnNhY3Rpb24gdHlwZXMvKTtcbiAgfSk7XG59KTtcbiJdfQ==