@bitgo-beta/sdk-coin-iota 1.0.1-beta.42 → 1.0.1-beta.420

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.
Files changed (69) hide show
  1. package/README.md +1 -1
  2. package/dist/src/iota.d.ts +134 -23
  3. package/dist/src/iota.d.ts.map +1 -1
  4. package/dist/src/iota.js +286 -46
  5. package/dist/src/lib/constants.d.ts +59 -6
  6. package/dist/src/lib/constants.d.ts.map +1 -1
  7. package/dist/src/lib/constants.js +76 -8
  8. package/dist/src/lib/iface.d.ts +174 -2
  9. package/dist/src/lib/iface.d.ts.map +1 -1
  10. package/dist/src/lib/iface.js +1 -1
  11. package/dist/src/lib/index.d.ts +1 -0
  12. package/dist/src/lib/index.d.ts.map +1 -1
  13. package/dist/src/lib/index.js +4 -2
  14. package/dist/src/lib/keyPair.d.ts +100 -6
  15. package/dist/src/lib/keyPair.d.ts.map +1 -1
  16. package/dist/src/lib/keyPair.js +103 -10
  17. package/dist/src/lib/transaction.d.ts +175 -5
  18. package/dist/src/lib/transaction.d.ts.map +1 -1
  19. package/dist/src/lib/transaction.js +390 -6
  20. package/dist/src/lib/transactionBuilder.d.ts +109 -9
  21. package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
  22. package/dist/src/lib/transactionBuilder.js +200 -14
  23. package/dist/src/lib/transactionBuilderFactory.d.ts +98 -2
  24. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
  25. package/dist/src/lib/transactionBuilderFactory.js +132 -5
  26. package/dist/src/lib/transferBuilder.d.ts +52 -2
  27. package/dist/src/lib/transferBuilder.d.ts.map +1 -1
  28. package/dist/src/lib/transferBuilder.js +86 -3
  29. package/dist/src/lib/transferTransaction.d.ts +124 -0
  30. package/dist/src/lib/transferTransaction.d.ts.map +1 -0
  31. package/dist/src/lib/transferTransaction.js +341 -0
  32. package/dist/src/lib/utils.d.ts +108 -7
  33. package/dist/src/lib/utils.d.ts.map +1 -1
  34. package/dist/src/lib/utils.js +146 -11
  35. package/dist/test/resources/iota.d.ts +35 -0
  36. package/dist/test/resources/iota.d.ts.map +1 -0
  37. package/dist/test/resources/iota.js +93 -0
  38. package/dist/test/unit/helpers/testHelpers.d.ts +57 -0
  39. package/dist/test/unit/helpers/testHelpers.d.ts.map +1 -0
  40. package/dist/test/unit/helpers/testHelpers.js +176 -0
  41. package/dist/test/unit/index.d.ts +2 -0
  42. package/dist/test/unit/index.d.ts.map +1 -0
  43. package/dist/test/unit/index.js +16 -0
  44. package/dist/test/unit/iota.d.ts +2 -0
  45. package/dist/test/unit/iota.d.ts.map +1 -0
  46. package/dist/test/unit/iota.js +501 -0
  47. package/dist/test/unit/keyPair.d.ts +2 -0
  48. package/dist/test/unit/keyPair.d.ts.map +1 -0
  49. package/dist/test/unit/keyPair.js +108 -0
  50. package/dist/test/unit/transactionBuilder/transactionBuilder.d.ts +2 -0
  51. package/dist/test/unit/transactionBuilder/transactionBuilder.d.ts.map +1 -0
  52. package/dist/test/unit/transactionBuilder/transactionBuilder.js +188 -0
  53. package/dist/test/unit/transactionBuilder/transactionBuilderFactory.d.ts +2 -0
  54. package/dist/test/unit/transactionBuilder/transactionBuilderFactory.d.ts.map +1 -0
  55. package/dist/test/unit/transactionBuilder/transactionBuilderFactory.js +178 -0
  56. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts +2 -0
  57. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts.map +1 -0
  58. package/dist/test/unit/transactionBuilder/transferBuilder.js +438 -0
  59. package/dist/test/unit/transferTransaction.d.ts +2 -0
  60. package/dist/test/unit/transferTransaction.d.ts.map +1 -0
  61. package/dist/test/unit/transferTransaction.js +218 -0
  62. package/dist/test/unit/utils.d.ts +2 -0
  63. package/dist/test/unit/utils.d.ts.map +1 -0
  64. package/dist/test/unit/utils.js +252 -0
  65. package/dist/tsconfig.tsbuildinfo +1 -0
  66. package/package.json +16 -10
  67. package/.eslintignore +0 -5
  68. package/.mocharc.yml +0 -8
  69. package/CHANGELOG.md +0 -28
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=keyPair.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyPair.d.ts","sourceRoot":"","sources":["../../../test/unit/keyPair.ts"],"names":[],"mappings":""}
@@ -0,0 +1,108 @@
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
+ const assert_1 = __importDefault(require("assert"));
7
+ const src_1 = require("../../src");
8
+ const utils_1 = __importDefault(require("../../src/lib/utils"));
9
+ const should_1 = __importDefault(require("should"));
10
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
11
+ const sdk_lib_mpc_1 = require("@bitgo-beta/sdk-lib-mpc");
12
+ const sdk_test_1 = require("@bitgo-beta/sdk-test");
13
+ const sdk_api_1 = require("@bitgo-beta/sdk-api");
14
+ describe('Iota KeyPair', function () {
15
+ let rootKeychain;
16
+ let rootPublicKey;
17
+ let MPC;
18
+ let hdTree;
19
+ let bitgo;
20
+ let basecoin;
21
+ before(async () => {
22
+ hdTree = await sdk_lib_mpc_1.Ed25519Bip32HdTree.initialize();
23
+ MPC = await sdk_core_1.Eddsa.initialize(hdTree);
24
+ const A = MPC.keyShare(1, 2, 3);
25
+ const B = MPC.keyShare(2, 2, 3);
26
+ const C = MPC.keyShare(3, 2, 3);
27
+ const A_combine = MPC.keyCombine(A.uShare, [B.yShares[1], C.yShares[1]]);
28
+ const commonKeychain = A_combine.pShare.y + A_combine.pShare.chaincode;
29
+ rootKeychain = MPC.deriveUnhardened(commonKeychain, 'm/0');
30
+ rootPublicKey = Buffer.from(rootKeychain, 'hex').slice(0, 32).toString('hex');
31
+ bitgo = sdk_test_1.TestBitGo.decorate(sdk_api_1.BitGoAPI, { env: 'mock' });
32
+ bitgo.safeRegister('tiota', src_1.Iota.createInstance);
33
+ basecoin = bitgo.coin('tiota');
34
+ });
35
+ describe('KeyPair Creation', () => {
36
+ it('should create keypair with public and private keys from empty value', async () => {
37
+ const keyPair = new src_1.KeyPair();
38
+ const keys = keyPair.getKeys();
39
+ should_1.default.exist(keys.prv);
40
+ should_1.default.exist(keys.pub);
41
+ const address = await utils_1.default.getAddressFromPublicKey(keys.pub);
42
+ should_1.default.exist(address);
43
+ });
44
+ it('should create keypair from derived public key', () => {
45
+ const keyPair = new src_1.KeyPair({ pub: rootPublicKey });
46
+ keyPair.getKeys().pub.should.equal(rootPublicKey);
47
+ utils_1.default.isValidPublicKey(rootPublicKey).should.be.true();
48
+ });
49
+ it('should create keypair from random seed', () => {
50
+ const keyPair = basecoin.generateKeyPair();
51
+ keyPair.should.have.property('pub');
52
+ keyPair.should.have.property('prv');
53
+ basecoin.isValidPub(keyPair.pub).should.equal(true);
54
+ });
55
+ it('should create keypair without private key', () => {
56
+ const keyPair = new src_1.KeyPair({ pub: rootPublicKey });
57
+ const keys = keyPair.getKeys();
58
+ keys.should.have.property('pub');
59
+ keys.pub.should.equal(rootPublicKey);
60
+ should_1.default.not.exist(keys.prv);
61
+ });
62
+ const invalidPublicKeys = [
63
+ { pub: '01D63D', description: 'invalid format' },
64
+ { pub: '0x' + 'a'.repeat(64), description: '0x prefix' },
65
+ { pub: 'abc123', description: 'too short' },
66
+ { pub: 'a'.repeat(128), description: 'too long' },
67
+ ];
68
+ invalidPublicKeys.forEach(({ pub, description }) => {
69
+ it(`should reject public key with ${description}`, () => {
70
+ assert_1.default.throws(() => new src_1.KeyPair({ pub }));
71
+ });
72
+ });
73
+ });
74
+ describe('KeyPair Operations', () => {
75
+ it('should generate random keypair each time', () => {
76
+ const keyPair1 = basecoin.generateKeyPair();
77
+ const keyPair2 = basecoin.generateKeyPair();
78
+ keyPair1.pub.should.not.equal(keyPair2.pub);
79
+ keyPair1.prv.should.not.equal(keyPair2.prv);
80
+ });
81
+ it('should validate generated public keys', () => {
82
+ const keyPair = basecoin.generateKeyPair();
83
+ basecoin.isValidPub(keyPair.pub).should.equal(true);
84
+ utils_1.default.isValidPublicKey(keyPair.pub).should.be.true();
85
+ });
86
+ });
87
+ describe('Address Derivation', () => {
88
+ it('should derive valid address from public key', () => {
89
+ const keyPair = new src_1.KeyPair({ pub: rootPublicKey });
90
+ const address = keyPair.getAddress();
91
+ should_1.default.exist(address);
92
+ utils_1.default.isValidAddress(address).should.be.true();
93
+ });
94
+ it('should derive same address from same public key', () => {
95
+ const address1 = utils_1.default.getAddressFromPublicKey(rootPublicKey);
96
+ const address2 = utils_1.default.getAddressFromPublicKey(rootPublicKey);
97
+ address1.should.equal(address2);
98
+ });
99
+ it('should derive different addresses from different public keys', () => {
100
+ const keyPair1 = basecoin.generateKeyPair();
101
+ const keyPair2 = basecoin.generateKeyPair();
102
+ const address1 = utils_1.default.getAddressFromPublicKey(keyPair1.pub);
103
+ const address2 = utils_1.default.getAddressFromPublicKey(keyPair2.pub);
104
+ address1.should.not.equal(address2);
105
+ });
106
+ });
107
+ });
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5UGFpci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3QvdW5pdC9rZXlQYWlyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLG1DQUEwQztBQUMxQyxnRUFBd0M7QUFDeEMsb0RBQTRCO0FBQzVCLG1EQUE2QztBQUM3Qyx5REFBcUU7QUFDckUsbURBQStEO0FBQy9ELGlEQUErQztBQUUvQyxRQUFRLENBQUMsY0FBYyxFQUFFO0lBQ3ZCLElBQUksWUFBWSxDQUFDO0lBQ2pCLElBQUksYUFBYSxDQUFDO0lBQ2xCLElBQUksR0FBVSxDQUFDO0lBQ2YsSUFBSSxNQUFjLENBQUM7SUFDbkIsSUFBSSxLQUFtQixDQUFDO0lBQ3hCLElBQUksUUFBUSxDQUFDO0lBRWIsTUFBTSxDQUFDLEtBQUssSUFBSSxFQUFFO1FBQ2hCLE1BQU0sR0FBRyxNQUFNLGdDQUFrQixDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQy9DLEdBQUcsR0FBRyxNQUFNLGdCQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNoQyxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDaEMsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRWhDLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFekUsTUFBTSxjQUFj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QUFFLENBQUMsOERBQThELEVBQUUsR0FBRyxFQUFFO1lBQ3RFLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUM1QyxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsZUFBZSxFQUFFLENBQUM7WUFFNUMsTUFBTSxRQUFRLEdBQUcsZUFBSyxDQUFDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM3RCxNQUFNLFFBQVEsR0FBRyxlQUFLLENBQUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBRTdELFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN0QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgeyBLZXlQYWlyLCBJb3RhIH0gZnJvbSAnLi4vLi4vc3JjJztcbmltcG9ydCB1dGlscyBmcm9tICcuLi8uLi9zcmMvbGliL3V0aWxzJztcbmltcG9ydCBzaG91bGQgZnJvbSAnc2hvdWxkJztcbmltcG9ydCB7IEVkZHNhIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgRWQyNTUxOUJpcDMySGRUcmVlLCBIRFRyZWUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstbGliLW1wYyc7XG5pbXBvcnQgeyBUZXN0Qml0R28sIFRlc3RCaXRHb0FQSSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay10ZXN0JztcbmltcG9ydCB7IEJpdEdvQVBJIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWFwaSc7XG5cbmRlc2NyaWJlKCdJb3RhIEtleVBhaXInLCBmdW5jdGlvbiAoKSB7XG4gIGxldCByb290S2V5Y2hhaW47XG4gIGxldCByb290UHVibGljS2V5O1xuICBsZXQgTVBDOiBFZGRzYTtcbiAgbGV0IGhkVHJlZTogSERUcmVlO1xuICBsZXQgYml0Z286IFRlc3RCaXRHb0FQSTtcbiAgbGV0IGJhc2Vjb2luO1xuXG4gIGJlZm9yZShhc3luYyAoKSA9PiB7XG4gICAgaGRUcmVlID0gYXdhaXQgRWQyNTUxOUJpcDMySGRUcmVlLmluaXRpYWxpemUoKTtcbiAgICBNUEMgPSBhd2FpdCBFZGRzYS5pbml0aWFsaXplKGhkVHJlZSk7XG4gICAgY29uc3QgQSA9IE1QQy5rZXlTaGFyZSgxLCAyLCAzKTtcbiAgICBjb25zdCBCID0gTVBDLmtleVNoYXJlKDIsIDIsIDMpO1xuICAgIGNvbnN0IEMgPSBNUEMua2V5U2hhcmUoMywgMiwgMyk7XG5cbiAgICBjb25zdCBBX2NvbWJpbmUgPSBNUEMua2V5Q29tYmluZShBLnVTaGFyZSwgW0IueVNoYXJlc1sxXSwgQy55U2hhcmVzWzFdXSk7XG5cbiAgICBjb25zdCBjb21tb25LZXljaGFpbiA9IEFfY29tYmluZS5wU2hhcmUueSArIEFfY29tYmluZS5wU2hhcmUuY2hhaW5jb2RlO1xuICAgIHJvb3RLZXljaGFpbiA9IE1QQy5kZXJpdmVVbmhhcmRlbmVkKGNvbW1vbktleWNoYWluLCAnbS8wJyk7XG4gICAgcm9vdFB1YmxpY0tleSA9IEJ1ZmZlci5mcm9tKHJvb3RLZXljaGFpbiwgJ2hleCcpLnNsaWNlKDAsIDMyKS50b1N0cmluZygnaGV4Jyk7XG4gICAgYml0Z28gPSBUZXN0Qml0R28uZGVjb3JhdGUoQml0R29BUEksIHsgZW52OiAnbW9jaycgfSk7XG4gICAgYml0Z28uc2FmZVJlZ2lzdGVyKCd0aW90YScsIElvdGEuY3JlYXRlSW5zdGFuY2UpO1xuICAgIGJhc2Vjb2luID0gYml0Z28uY29pbigndGlvdGEnKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0tleVBhaXIgQ3JlYXRpb24nLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBjcmVhdGUga2V5cGFpciB3aXRoIHB1YmxpYyBhbmQgcHJpdmF0ZSBrZXlzIGZyb20gZW1wdHkgdmFsdWUnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBrZXlQYWlyID0gbmV3IEtleVBhaXIoKTtcbiAgICAgIGNvbnN0IGtleXMgPSBrZXlQYWlyLmdldEtleXMoKTtcblxuICAgICAgc2hvdWxkLmV4aXN0KGtleXMucHJ2KTtcbiAgICAgIHNob3VsZC5leGlzdChrZXlzLnB1Yik7XG5cbiAgICAgIGNvbnN0IGFkZHJlc3MgPSBhd2FpdCB1dGlscy5nZXRBZGRyZXNzRnJvbVB1YmxpY0tleShrZXlzLnB1Yik7XG4gICAgICBzaG91bGQuZXhpc3QoYWRkcmVzcyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGNyZWF0ZSBrZXlwYWlyIGZyb20gZGVyaXZlZCBwdWJsaWMga2V5JywgKCkgPT4ge1xuICAgICAgY29uc3Qga2V5UGFpciA9IG5ldyBLZXlQYWlyKHsgcHViOiByb290UHVibGljS2V5IH0pO1xuICAgICAga2V5UGFpci5nZXRLZXlzKCkucHViLnNob3VsZC5lcXVhbChyb290UHVibGljS2V5KTtcbiAgICAgIHV0aWxzLmlzVmFsaWRQdWJsaWNLZXkocm9vdFB1YmxpY0tleSkuc2hvdWxkLmJlLnRydWUoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgY3JlYXRlIGtleXBhaXIgZnJvbSByYW5kb20gc2VlZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGtleVBhaXIgPSBiYXNlY29pbi5nZW5lcmF0ZUtleVBhaXIoKTtcbiAgICAgIGtleVBhaXIuc2hvdWxkLmhhdmUucHJvcGVydHkoJ3B1YicpO1xuICAgICAga2V5UGFpci5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgncHJ2Jyk7XG4gICAgICBiYXNlY29pbi5pc1ZhbGlkUHViKGtleVBhaXIucHViKS5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGNyZWF0ZSBrZXlwYWlyIHdpdGhvdXQgcHJpdmF0ZSBrZXknLCAoKSA9PiB7XG4gICAgICBjb25zdCBrZXlQYWlyID0gbmV3IEtleVBhaXIoeyBwdWI6IHJvb3RQdWJsaWNLZXkgfSk7XG4gICAgICBjb25zdCBrZXlzID0ga2V5UGFpci5nZXRLZXlzKCk7XG5cbiAgICAgIGtleXMuc2hvdWxkLmhhdmUucHJvcGVydHkoJ3B1YicpO1xuICAgICAga2V5cy5wdWIuc2hvdWxkLmVxdWFsKHJvb3RQdWJsaWNLZXkpO1xuICAgICAgc2hvdWxkLm5vdC5leGlzdChrZXlzLnBydik7XG4gICAgfSk7XG5cbiAgICBjb25zdCBpbnZhbGlkUHVibGljS2V5cyA9IFtcbiAgICAgIHsgcHViOiAnMDFENjNEJywgZGVzY3JpcHRpb246ICdpbnZhbGlkIGZvcm1hdCcgfSxcbiAgICAgIHsgcHViOiAnMHgnICsgJ2EnLnJlcGVhdCg2NCksIGRlc2NyaXB0aW9uOiAnMHggcHJlZml4JyB9LFxuICAgICAgeyBwdWI6ICdhYmMxMjMnLCBkZXNjcmlwdGlvbjogJ3RvbyBzaG9ydCcgfSxcbiAgICAgIHsgcHViOiAnYScucmVwZWF0KDEyOCksIGRlc2NyaXB0aW9uOiAndG9vIGxvbmcnIH0sXG4gICAgXTtcblxuICAgIGludmFsaWRQdWJsaWNLZXlzLmZvckVhY2goKHsgcHViLCBkZXNjcmlwdGlvbiB9KSA9PiB7XG4gICAgICBpdChgc2hvdWxkIHJlamVjdCBwdWJsaWMga2V5IHdpdGggJHtkZXNjcmlwdGlvbn1gLCAoKSA9PiB7XG4gICAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gbmV3IEtleVBhaXIoeyBwdWIgfSkpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdLZXlQYWlyIE9wZXJhdGlvbnMnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBnZW5lcmF0ZSByYW5kb20ga2V5cGFpciBlYWNoIHRpbWUnLCAoKSA9PiB7XG4gICAgICBjb25zdCBrZXlQYWlyMSA9IGJhc2Vjb2luLmdlbmVyYXRlS2V5UGFpcigpO1xuICAgICAgY29uc3Qga2V5UGFpcjIgPSBiYXNlY29pbi5nZW5lcmF0ZUtleVBhaXIoKTtcblxuICAgICAga2V5UGFpcjEucHViLnNob3VsZC5ub3QuZXF1YWwoa2V5UGFpcjIucHViKTtcbiAgICAgIGtleVBhaXIxLnBydi5zaG91bGQubm90LmVxdWFsKGtleVBhaXIyLnBydik7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIGdlbmVyYXRlZCBwdWJsaWMga2V5cycsICgpID0+IHtcbiAgICAgIGNvbnN0IGtleVBhaXIgPSBiYXNlY29pbi5nZW5lcmF0ZUtleVBhaXIoKTtcbiAgICAgIGJhc2Vjb2luLmlzVmFsaWRQdWIoa2V5UGFpci5wdWIpLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICAgIHV0aWxzLmlzVmFsaWRQdWJsaWNLZXkoa2V5UGFpci5wdWIpLnNob3VsZC5iZS50cnVlKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdBZGRyZXNzIERlcml2YXRpb24nLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBkZXJpdmUgdmFsaWQgYWRkcmVzcyBmcm9tIHB1YmxpYyBrZXknLCAoKSA9PiB7XG4gICAgICBjb25zdCBrZXlQYWlyID0gbmV3IEtleVBhaXIoeyBwdWI6IHJvb3RQdWJsaWNLZXkgfSk7XG4gICAgICBjb25zdCBhZGRyZXNzID0ga2V5UGFpci5nZXRBZGRyZXNzKCk7XG5cbiAgICAgIHNob3VsZC5leGlzdChhZGRyZXNzKTtcbiAgICAgIHV0aWxzLmlzVmFsaWRBZGRyZXNzKGFkZHJlc3MpLnNob3VsZC5iZS50cnVlKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGRlcml2ZSBzYW1lIGFkZHJlc3MgZnJvbSBzYW1lIHB1YmxpYyBrZXknLCAoKSA9PiB7XG4gICAgICBjb25zdCBhZGRyZXNzMSA9IHV0aWxzLmdldEFkZHJlc3NGcm9tUHVibGljS2V5KHJvb3RQdWJsaWNLZXkpO1xuICAgICAgY29uc3QgYWRkcmVzczIgPSB1dGlscy5nZXRBZGRyZXNzRnJvbVB1YmxpY0tleShyb290UHVibGljS2V5KTtcblxuICAgICAgYWRkcmVzczEuc2hvdWxkLmVxdWFsKGFkZHJlc3MyKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZGVyaXZlIGRpZmZlcmVudCBhZGRyZXNzZXMgZnJvbSBkaWZmZXJlbnQgcHVibGljIGtleXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBrZXlQYWlyMSA9IGJhc2Vjb2luLmdlbmVyYXRlS2V5UGFpcigpO1xuICAgICAgY29uc3Qga2V5UGFpcjIgPSBiYXNlY29pbi5nZW5lcmF0ZUtleVBhaXIoKTtcblxuICAgICAgY29uc3QgYWRkcmVzczEgPSB1dGlscy5nZXRBZGRyZXNzRnJvbVB1YmxpY0tleShrZXlQYWlyMS5wdWIpO1xuICAgICAgY29uc3QgYWRkcmVzczIgPSB1dGlscy5nZXRBZGRyZXNzRnJvbVB1YmxpY0tleShrZXlQYWlyMi5wdWIpO1xuXG4gICAgICBhZGRyZXNzMS5zaG91bGQubm90LmVxdWFsKGFkZHJlc3MyKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=transactionBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/transactionBuilder.ts"],"names":[],"mappings":""}
@@ -0,0 +1,188 @@
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
+ const should_1 = __importDefault(require("should"));
7
+ const bignumber_js_1 = __importDefault(require("bignumber.js"));
8
+ const testHelpers_1 = require("../helpers/testHelpers");
9
+ describe('Iota Transaction Builder', () => {
10
+ const factory = (0, testHelpers_1.getFactory)();
11
+ describe('Address Validation', () => {
12
+ it('should validate correct addresses', function () {
13
+ const builder = factory.getTransferBuilder();
14
+ testHelpers_1.testData.addresses.validAddresses.forEach((address) => {
15
+ should_1.default.doesNotThrow(() => builder.validateAddress({ address }));
16
+ });
17
+ });
18
+ it('should reject invalid addresses', function () {
19
+ const builder = factory.getTransferBuilder();
20
+ testHelpers_1.testData.addresses.invalidAddresses.forEach((address) => {
21
+ (0, should_1.default)(() => builder.validateAddress({ address })).throwError();
22
+ });
23
+ });
24
+ it('should throw error for empty address', function () {
25
+ const builder = factory.getTransferBuilder();
26
+ (0, should_1.default)(() => builder.validateAddress({ address: '' })).throwError(/Invalid address/);
27
+ });
28
+ });
29
+ describe('Value Validation', () => {
30
+ const validCases = [
31
+ { value: new bignumber_js_1.default(0), description: 'zero value' },
32
+ { value: new bignumber_js_1.default(1000), description: 'positive values' },
33
+ { value: new bignumber_js_1.default('1000000000000000000'), description: 'large values' },
34
+ { value: new bignumber_js_1.default(100.5), description: 'decimal values' },
35
+ ];
36
+ validCases.forEach(({ value, description }) => {
37
+ it(`should validate ${description}`, function () {
38
+ const builder = factory.getTransferBuilder();
39
+ should_1.default.doesNotThrow(() => builder.validateValue(value));
40
+ });
41
+ });
42
+ const invalidCases = [
43
+ { value: new bignumber_js_1.default(-1), error: 'Value cannot be less than zero', description: 'negative values' },
44
+ { value: new bignumber_js_1.default(NaN), error: 'Invalid amount format', description: 'NaN values' },
45
+ ];
46
+ invalidCases.forEach(({ value, error, description }) => {
47
+ it(`should reject ${description}`, function () {
48
+ const builder = factory.getTransferBuilder();
49
+ (0, should_1.default)(() => builder.validateValue(value)).throwError(error);
50
+ });
51
+ });
52
+ });
53
+ describe('Raw Transaction Validation', () => {
54
+ it('should validate proper raw transaction', async function () {
55
+ const tx = await (0, testHelpers_1.createTransferBuilderWithGas)().build();
56
+ const rawTx = await tx.toBroadcastFormat();
57
+ const newBuilder = factory.getTransferBuilder();
58
+ should_1.default.doesNotThrow(() => newBuilder.validateRawTransaction(rawTx));
59
+ });
60
+ const invalidRawTxCases = [
61
+ { value: 'invalidRawTx', error: 'Invalid raw transaction', description: 'invalid string' },
62
+ { value: '', error: 'Invalid raw transaction: Undefined', description: 'empty string' },
63
+ { value: undefined, error: 'Invalid raw transaction: Undefined', description: 'undefined' },
64
+ ];
65
+ invalidRawTxCases.forEach(({ value, error, description }) => {
66
+ it(`should reject ${description}`, function () {
67
+ const builder = factory.getTransferBuilder();
68
+ (0, should_1.default)(() => builder.validateRawTransaction(value)).throwError(error);
69
+ });
70
+ });
71
+ });
72
+ describe('Transaction Validation', () => {
73
+ it('should validate complete transaction', async function () {
74
+ const tx = (await (0, testHelpers_1.createTransferBuilderWithGas)().build());
75
+ const newBuilder = factory.getTransferBuilder();
76
+ should_1.default.doesNotThrow(() => newBuilder.validateTransaction(tx));
77
+ });
78
+ it('should throw error for undefined transaction', function () {
79
+ const builder = factory.getTransferBuilder();
80
+ (0, should_1.default)(() => builder.validateTransaction(undefined)).throwError(/Transaction is required for validation/);
81
+ });
82
+ it('should throw error for transaction with invalid sender', async function () {
83
+ const tx = (await (0, testHelpers_1.createTransferBuilderWithGas)().build());
84
+ tx.sender = 'invalidAddress';
85
+ const newBuilder = factory.getTransferBuilder();
86
+ (0, should_1.default)(() => newBuilder.validateTransaction(tx)).throwError();
87
+ });
88
+ });
89
+ describe('Builder Setter Methods', () => {
90
+ it('should set and change sender correctly', function () {
91
+ const builder = factory.getTransferBuilder();
92
+ builder.sender(testHelpers_1.testData.sender.address);
93
+ should_1.default.equal(builder.transaction.sender, testHelpers_1.testData.sender.address);
94
+ builder.sender(testHelpers_1.testData.gasSponsor.address);
95
+ should_1.default.equal(builder.transaction.sender, testHelpers_1.testData.gasSponsor.address);
96
+ });
97
+ it('should validate sender address when setting', function () {
98
+ const builder = factory.getTransferBuilder();
99
+ (0, should_1.default)(() => builder.sender('invalidAddress')).throwError('Invalid address invalidAddress');
100
+ });
101
+ it('should set all gas parameters', function () {
102
+ const builder = factory.getTransferBuilder();
103
+ builder.gasData(testHelpers_1.testData.gasData);
104
+ should_1.default.equal(builder.transaction.gasBudget, testHelpers_1.testData.GAS_BUDGET);
105
+ should_1.default.equal(builder.transaction.gasPrice, testHelpers_1.testData.GAS_PRICE);
106
+ should_1.default.deepEqual(builder.transaction.gasPaymentObjects, testHelpers_1.testData.gasPaymentObjects);
107
+ });
108
+ const invalidGasDataCases = [
109
+ { gasBudget: -1000, description: 'negative gas budget' },
110
+ { gasPrice: -100, description: 'negative gas price' },
111
+ ];
112
+ invalidGasDataCases.forEach(({ gasBudget, gasPrice, description }) => {
113
+ it(`should reject ${description}`, function () {
114
+ const builder = factory.getTransferBuilder();
115
+ (0, should_1.default)(() => builder.gasData({
116
+ gasBudget: gasBudget ?? testHelpers_1.testData.GAS_BUDGET,
117
+ gasPrice: gasPrice ?? testHelpers_1.testData.GAS_PRICE,
118
+ gasPaymentObjects: testHelpers_1.testData.gasPaymentObjects,
119
+ })).throwError();
120
+ });
121
+ });
122
+ it('should throw error for empty gas payment objects', function () {
123
+ const builder = factory.getTransferBuilder();
124
+ (0, should_1.default)(() => builder.gasData({
125
+ gasBudget: testHelpers_1.testData.GAS_BUDGET,
126
+ gasPrice: testHelpers_1.testData.GAS_PRICE,
127
+ gasPaymentObjects: [],
128
+ })).throwError('Gas input objects list is empty');
129
+ });
130
+ it('should set gas sponsor correctly', function () {
131
+ const builder = factory.getTransferBuilder();
132
+ builder.gasSponsor(testHelpers_1.testData.gasSponsor.address);
133
+ should_1.default.equal(builder.transaction.gasSponsor, testHelpers_1.testData.gasSponsor.address);
134
+ });
135
+ it('should validate gas sponsor address', function () {
136
+ const builder = factory.getTransferBuilder();
137
+ (0, should_1.default)(() => builder.gasSponsor('invalidAddress')).throwError('Invalid address invalidAddress');
138
+ });
139
+ it('should allow sender to be gas sponsor', function () {
140
+ const builder = factory.getTransferBuilder();
141
+ builder.sender(testHelpers_1.testData.sender.address);
142
+ builder.gasSponsor(testHelpers_1.testData.sender.address);
143
+ should_1.default.equal(builder.transaction.gasSponsor, testHelpers_1.testData.sender.address);
144
+ });
145
+ });
146
+ describe('Builder Initialization', () => {
147
+ it('should initialize builder from existing transaction', async function () {
148
+ const originalTx = (await (0, testHelpers_1.createTransferBuilderWithGas)().build());
149
+ const newBuilder = factory.getTransferBuilder(originalTx);
150
+ should_1.default.equal(newBuilder.transaction.sender, originalTx.sender);
151
+ should_1.default.equal(newBuilder.transaction.gasBudget, originalTx.gasBudget);
152
+ });
153
+ });
154
+ describe('Transaction Building', () => {
155
+ it('should build transaction with all required fields', async function () {
156
+ const tx = (await (0, testHelpers_1.createTransferBuilderWithGas)().build());
157
+ should_1.default.exist(tx);
158
+ should_1.default.equal(tx.sender, testHelpers_1.testData.sender.address);
159
+ should_1.default.equal(tx.isSimulateTx, false);
160
+ });
161
+ it('should build simulation transaction without gas data', async function () {
162
+ const tx = (await (0, testHelpers_1.createBasicTransferBuilder)().build());
163
+ should_1.default.exist(tx);
164
+ should_1.default.equal(tx.isSimulateTx, true);
165
+ });
166
+ it('should support method chaining', async function () {
167
+ const tx = (await factory
168
+ .getTransferBuilder()
169
+ .sender(testHelpers_1.testData.sender.address)
170
+ .recipients(testHelpers_1.testData.recipients)
171
+ .paymentObjects(testHelpers_1.testData.paymentObjects)
172
+ .gasData(testHelpers_1.testData.gasData)
173
+ .gasSponsor(testHelpers_1.testData.gasSponsor.address)
174
+ .build());
175
+ should_1.default.exist(tx);
176
+ should_1.default.equal(tx.sender, testHelpers_1.testData.sender.address);
177
+ should_1.default.equal(tx.gasSponsor, testHelpers_1.testData.gasSponsor.address);
178
+ });
179
+ });
180
+ describe('Transaction Type', () => {
181
+ it('should return correct transaction type', async function () {
182
+ const builder = (0, testHelpers_1.createTransferBuilderWithGas)();
183
+ const tx = await builder.build();
184
+ should_1.default.equal(builder.transactionType, tx.type);
185
+ });
186
+ });
187
+ });
188
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L3RyYW5zYWN0aW9uQnVpbGRlci90cmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxvREFBNEI7QUFFNUIsZ0VBQXFDO0FBQ3JDLHdEQUF3SDtBQUV4SCxRQUFRLENBQUMsMEJBQTBCLEVBQUUsR0FBRyxFQUFFO0lBQ3hDLE1BQU0sT0FBTyxHQUFHLElBQUEsd0JBQVUsR0FBRSxDQUFDO0lBRTdCLFFBQVEsQ0FBQyxvQkFBb0IsRUFBRSxHQUFHLEVBQUU7UUFDbEMsRUFBRSxDQUFDLG1DQUFtQyxFQUFFO1lBQ3RDLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzdDLHNCQUFRLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtnQkFDcEQsZ0JBQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNsRSxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLGlDQUFpQyxFQUFFO1lBQ3BDLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzdDLHNCQUFRLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUN0RCxJQUFBLGdCQUFNLEVBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNsRSxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFD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Q0FBQyxFQUFFLENBQUMsQ0FBQztZQUNqQixnQkFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLHNCQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2pELGdCQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxVQUFVLEVBQUUsc0JBQVEsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDM0QsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxrQkFBa0IsRUFBRSxHQUFHLEVBQUU7UUFDaEMsRUFBRSxDQUFDLHdDQUF3QyxFQUFFLEtBQUs7WUFDaEQsTUFBTSxPQUFPLEdBQUcsSUFBQSwwQ0FBNEIsR0FBRSxDQUFDO1lBQy9DLE1BQU0sRUFBRSxHQUFHLE1BQU0sT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2pDLGdCQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzaG91bGQgZnJvbSAnc2hvdWxkJztcbmltcG9ydCB7IFRyYW5zZmVyVHJhbnNhY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9zcmMnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IHsgY3JlYXRlQmFzaWNUcmFuc2ZlckJ1aWxkZXIsIGNyZWF0ZVRyYW5zZmVyQnVpbGRlcldpdGhHYXMsIGdldEZhY3RvcnksIHRlc3REYXRhIH0gZnJvbSAnLi4vaGVscGVycy90ZXN0SGVscGVycyc7XG5cbmRlc2NyaWJlKCdJb3RhIFRyYW5zYWN0aW9uIEJ1aWxkZXInLCAoKSA9PiB7XG4gIGNvbnN0IGZhY3RvcnkgPSBnZXRGYWN0b3J5KCk7XG5cbiAgZGVzY3JpYmUoJ0FkZHJlc3MgVmFsaWRhdGlvbicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIGNvcnJlY3QgYWRkcmVzc2VzJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYnVpbGRlciA9IGZhY3RvcnkuZ2V0VHJhbnNmZXJCdWlsZGVyKCk7XG4gICAgICB0ZXN0RGF0YS5hZGRyZXNzZXMudmFsaWRBZGRyZXNzZXMuZm9yRWFjaCgoYWRkcmVzcykgPT4ge1xuICAgICAgICBzaG91bGQuZG9lc05vdFRocm93KCgpID0+IGJ1aWxkZXIudmFsaWRhdGVBZGRyZXNzKHsgYWRkcmVzcyB9KSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVqZWN0IGludmFsaWQgYWRkcmVzc2VzJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYnVpbGRlciA9IGZhY3RvcnkuZ2V0VHJhbnNmZXJCdWlsZGVyKCk7XG4gICAgICB0ZXN0RGF0YS5hZGRyZXNzZXMuaW52YWxpZEFkZHJlc3Nlcy5mb3JFYWNoKChhZGRyZXNzKSA9PiB7XG4gICAgICAgIHNob3VsZCgoKSA9PiBidWlsZGVyLnZhbGlkYXRlQWRkcmVzcyh7IGFkZHJlc3MgfSkpLnRocm93RXJyb3IoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciBmb3IgZW1wdHkgYWRkcmVzcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBmYWN0b3J5LmdldFRyYW5zZmVyQnVpbGRlcigpO1xuICAgICAgc2hvdWxkKCgpID0+IGJ1aWxkZXIudmFsaWRhdGVBZGRyZXNzKHsgYWRkcmVzczogJycgfSkpLnRocm93RXJyb3IoL0ludmFsaWQgYWRkcmVzcy8pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnVmFsdWUgVmFsaWRhdGlvbicsICgpID0+IHtcbiAgICBjb25zdCB2YWxpZENhc2VzID0gW1xuICAgICAgeyB2YWx1ZTogbmV3IEJpZ051bWJlcigwKSwgZGVzY3JpcHRpb246ICd6ZXJvIHZhbHVlJyB9LFxuICAgICAgeyB2YWx1ZTogbmV3IEJpZ051bWJlcigxMDAwKSwgZGVzY3JpcHRpb246ICdwb3NpdGl2ZSB2YWx1ZXMnIH0sXG4gICAgICB7IHZhbHVlOiBuZXcgQmlnTnVtYmVyKCcxMDAwMDAwMDAwMDAwMDAwMDAwJyksIGRlc2NyaXB0aW9uOiAnbGFyZ2UgdmFsdWVzJyB9LFxuICAgICAgeyB2YWx1ZTogbmV3IEJpZ051bWJlcigxMDAuNSksIGRlc2NyaXB0aW9uOiAnZGVjaW1hbCB2YWx1ZXMnIH0sXG4gICAgXTtcblxuICAgIHZhbGlkQ2FzZXMuZm9yRWFjaCgoeyB2YWx1ZSwgZGVzY3JpcHRpb24gfSkgPT4ge1xuICAgICAgaXQoYHNob3VsZCB2YWxpZGF0ZSAke2Rlc2NyaXB0aW9ufWAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgYnVpbGRlciA9IGZhY3RvcnkuZ2V0VHJhbnNmZXJCdWlsZGVyKCk7XG4gICAgICAgIHNob3VsZC5kb2VzTm90VGhyb3coKCkgPT4gYnVpbGRlci52YWxpZGF0ZVZhbHVlKHZhbHVlKSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGludmFsaWRDYXNlcyA9IFtcbiAgICAgIHsgdmFsdWU6IG5ldyBCaWdOdW1iZXIoLTEpLCBlcnJvcjogJ1ZhbHVlIGNhbm5vdCBiZSBsZXNzIHRoYW4gemVybycsIGRlc2NyaXB0aW9uOiAnbmVnYXRpdmUgdmFsdWVzJyB9LFxuICAgICAgeyB2YWx1ZTogbmV3IEJpZ051bWJlcihOYU4pLCBlcnJvcjogJ0ludmFsaWQgYW1vdW50IGZvcm1hdCcsIGRlc2NyaXB0aW9uOiAnTmFOIHZhbHVlcycgfSxcbiAgICBdO1xuXG4gICAgaW52YWxpZENhc2VzLmZvckVhY2goKHsgdmFsdWUsIGVycm9yLCBkZXNjcmlwdGlvbiB9KSA9PiB7XG4gICAgICBpdChgc2hvdWxkIHJlamVjdCAke2Rlc2NyaXB0aW9ufWAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgYnVpbGRlciA9IGZhY3RvcnkuZ2V0VHJhbnNmZXJCdWlsZGVyKCk7XG4gICAgICAgIHNob3VsZCgoKSA9PiBidWlsZGVyLnZhbGlkYXRlVmFsdWUodmFsdWUpKS50aHJvd0Vycm9yKGVycm9yKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnUmF3IFRyYW5zYWN0aW9uIFZhbGlkYXRpb24nLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBwcm9wZXIgcmF3IHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHggPSBhd2FpdCBjcmVhdGVUcmFuc2ZlckJ1aWxkZXJXaXRoR2FzKCkuYnVpbGQoKTtcbiAgICAgIGNvbnN0IHJhd1R4ID0gYXdhaXQgdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcblxuICAgICAgY29uc3QgbmV3QnVpbGRlciA9IGZhY3RvcnkuZ2V0VHJhbnNmZXJCdWlsZGVyKCk7XG4gICAgICBzaG91bGQuZG9lc05vdFRocm93KCgpID0+IG5ld0J1aWxkZXIudmFsaWRhdGVSYXdUcmFuc2FjdGlvbihyYXdUeCkpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgaW52YWxpZFJhd1R4Q2FzZXMgPSBbXG4gICAgICB7IHZhbHVlOiAnaW52YWxpZFJhd1R4JywgZXJyb3I6ICdJbnZhbGlkIHJhdyB0cmFuc2FjdGlvbicsIGRlc2NyaXB0aW9uOiAnaW52YWxpZCBzdHJpbmcnIH0sXG4gICAgICB7IHZhbHVlOiAnJywgZXJyb3I6ICdJbnZhbGlkIHJhdyB0cmFuc2FjdGlvbjogVW5kZWZpbmVkJywgZGVzY3JpcHRpb246ICdlbXB0eSBzdHJpbmcnIH0sXG4gICAgICB7IHZhbHVlOiB1bmRlZmluZWQgYXMgYW55LCBlcnJvcjogJ0ludmFsaWQgcmF3IHRyYW5zYWN0aW9uOiBVbmRlZmluZWQnLCBkZXNjcmlwdGlvbjogJ3VuZGVmaW5lZCcgfSxcbiAgICBdO1xuXG4gICAgaW52YWxpZFJhd1R4Q2FzZXMuZm9yRWFjaCgoeyB2YWx1ZSwgZXJyb3IsIGRlc2NyaXB0aW9uIH0pID0+IHtcbiAgICAgIGl0KGBzaG91bGQgcmVqZWN0ICR7ZGVzY3JpcHRpb259YCwgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCBidWlsZGVyID0gZmFjdG9yeS5nZXRUcmFuc2ZlckJ1aWxkZXIoKTtcbiAgICAgICAgc2hvdWxkKCgpID0+IGJ1aWxkZXIudmFsaWRhdGVSYXdUcmFuc2FjdGlvbih2YWx1ZSkpLnRocm93RXJyb3IoZXJyb3IpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdUcmFuc2FjdGlvbiBWYWxpZGF0aW9uJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgY29tcGxldGUgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eCA9IChhd2FpdCBjcmVhdGVUcmFuc2ZlckJ1aWxkZXJXaXRoR2FzKCkuYnVpbGQoKSkgYXMgVHJhbnNmZXJUcmFuc2FjdGlvbjtcbiAgICAgIGNvbnN0IG5ld0J1aWxkZXIgPSBmYWN0b3J5LmdldFRyYW5zZmVyQnVpbGRlcigpO1xuICAgICAgc2hvdWxkLmRvZXNOb3RUaHJvdygoKSA9PiBuZXdCdWlsZGVyLnZhbGlkYXRlVHJhbnNhY3Rpb24odHgpKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgZXJyb3IgZm9yIHVuZGVmaW5lZCB0cmFuc2FjdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBmYWN0b3J5LmdldFRyYW5zZmVyQnVpbGRlcigpO1xuICAgICAgc2hvdWxkKCgpID0+IGJ1aWxkZXIudmFsaWRhdGVUcmFuc2FjdGlvbih1bmRlZmluZWQpKS50aHJvd0Vycm9yKC9UcmFuc2FjdGlvbiBpcyByZXF1aXJlZCBmb3IgdmFsaWRhdGlvbi8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciBmb3IgdHJhbnNhY3Rpb24gd2l0aCBpbnZhbGlkIHNlbmRlcicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4ID0gKGF3YWl0IGNyZWF0ZVRyYW5zZmVyQnVpbGRlcldpdGhHYXMoKS5idWlsZCgpKSBhcyBUcmFuc2ZlclRyYW5zYWN0aW9uO1xuICAgICAgdHguc2VuZGVyID0gJ2ludmFsaWRBZGRyZXNzJztcblxuICAgICAgY29uc3QgbmV3QnVpbGRlciA9IGZhY3RvcnkuZ2V0VHJhbnNmZXJCdWlsZGVyKCk7XG4gICAgICBzaG91bGQoKCkgPT4gbmV3QnVpbGRlci52YWxpZGF0ZVRyYW5zYWN0aW9uKHR4KSkudGhyb3dFcnJvcigpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnQnVpbGRlciBTZXR0ZXIgTWV0aG9kcycsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHNldCBhbmQgY2hhbmdlIHNlbmRlciBjb3JyZWN0bHknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBidWlsZGVyID0gZmFjdG9yeS5nZXRUcmFuc2ZlckJ1aWxkZXIoKTtcbiAgICAgIGJ1aWxkZXIuc2VuZGVyKHRlc3REYXRhLnNlbmRlci5hZGRyZXNzKTtcbiAgICAgIHNob3VsZC5lcXVhbChidWlsZGVyLnRyYW5zYWN0aW9uLnNlbmRlciwgdGVzdERhdGEuc2VuZGVyLmFkZHJlc3MpO1xuXG4gICAgICBidWlsZGVyLnNlbmRlcih0ZXN0RGF0YS5nYXNTcG9uc29yLmFkZHJlc3MpO1xuICAgICAgc2hvdWxkLmVxdWFsKGJ1aWxkZXIudHJhbnNhY3Rpb24uc2VuZGVyLCB0ZXN0RGF0YS5nYXNTcG9uc29yLmFkZHJlc3MpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBzZW5kZXIgYWRkcmVzcyB3aGVuIHNldHRpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBidWlsZGVyID0gZmFjdG9yeS5nZXRUcmFuc2ZlckJ1aWxkZXIoKTtcbiAgICAgIHNob3VsZCgoKSA9PiBidWlsZGVyLnNlbmRlcignaW52YWxpZEFkZHJlc3MnKSkudGhyb3dFcnJvcignSW52YWxpZCBhZGRyZXNzIGludmFsaWRBZGRyZXNzJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHNldCBhbGwgZ2FzIHBhcmFtZXRlcnMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBidWlsZGVyID0gZmFjdG9yeS5nZXRUcmFuc2ZlckJ1aWxkZXIoKTtcbiAgICAgIGJ1aWxkZXIuZ2FzRGF0YSh0ZXN0RGF0YS5nYXNEYXRhKTtcblxuICAgICAgc2hvdWxkLmVxdWFsKGJ1aWxkZXIudHJhbnNhY3Rpb24uZ2FzQnVkZ2V0LCB0ZXN0RGF0YS5HQVNfQlVER0VUKTtcbiAgICAgIHNob3VsZC5lcXVhbChidWlsZGVyLnRyYW5zYWN0aW9uLmdhc1ByaWNlLCB0ZXN0RGF0YS5HQVNfUFJJQ0UpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbChidWlsZGVyLnRyYW5zYWN0aW9uLmdhc1BheW1lbnRPYmplY3RzLCB0ZXN0RGF0YS5nYXNQYXltZW50T2JqZWN0cyk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBpbnZhbGlkR2FzRGF0YUNhc2VzID0gW1xuICAgICAgeyBnYXNCdWRnZXQ6IC0xMDAwLCBkZXNjcmlwdGlvbjogJ25lZ2F0aXZlIGdhcyBidWRnZXQnIH0sXG4gICAgICB7IGdhc1ByaWNlOiAtMTAwLCBkZXNjcmlwdGlvbjogJ25lZ2F0aXZlIGdhcyBwcmljZScgfSxcbiAgICBdO1xuXG4gICAgaW52YWxpZEdhc0RhdGFDYXNlcy5mb3JFYWNoKCh7IGdhc0J1ZGdldCwgZ2FzUHJpY2UsIGRlc2NyaXB0aW9uIH0pID0+IHtcbiAgICAgIGl0KGBzaG91bGQgcmVqZWN0ICR7ZGVzY3JpcHRpb259YCwgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCBidWlsZGVyID0gZmFjdG9yeS5nZXRUcmFuc2ZlckJ1aWxkZXIoKTtcbiAgICAgICAgc2hvdWxkKCgpID0+XG4gICAgICAgICAgYnVpbGRlci5nYXNEYXRhKHtcbiAgICAgICAgICAgIGdhc0J1ZGdldDogZ2FzQnVkZ2V0ID8/IHRlc3REYXRhLkdBU19CVURHRVQsXG4gICAgICAgICAgICBnYXNQcmljZTogZ2FzUHJpY2UgPz8gdGVzdERhdGEuR0FTX1BSSUNFLFxuICAgICAgICAgICAgZ2FzUGF5bWVudE9iamVjdHM6IHRlc3REYXRhLmdhc1BheW1lbnRPYmplY3RzLFxuICAgICAgICAgIH0pXG4gICAgICAgICkudGhyb3dFcnJvcigpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGVycm9yIGZvciBlbXB0eSBnYXMgcGF5bWVudCBvYmplY3RzJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYnVpbGRlciA9IGZhY3RvcnkuZ2V0VHJhbnNmZXJCdWlsZGVyKCk7XG4gICAgICBzaG91bGQoKCkgPT5cbiAgICAgICAgYnVpbGRlci5nYXNEYXRhKHtcbiAgICAgICAgICBnYXNCdWRnZXQ6IHRlc3REYXRhLkdBU19CVURHRVQsXG4gICAgICAgICAgZ2FzUHJpY2U6IHRlc3REYXRhLkdBU19QUklDRSxcbiAgICAgICAgICBnYXNQYXltZW50T2JqZWN0czogW10sXG4gICAgICAgIH0pXG4gICAgICApLnRocm93RXJyb3IoJ0dhcyBpbnB1dCBvYmplY3RzIGxpc3QgaXMgZW1wdHknKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgc2V0IGdhcyBzcG9uc29yIGNvcnJlY3RseScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBmYWN0b3J5LmdldFRyYW5zZmVyQnVpbGRlcigpO1xuICAgICAgYnVpbGRlci5nYXNTcG9uc29yKHRlc3REYXRhLmdhc1Nwb25zb3IuYWRkcmVzcyk7XG4gICAgICBzaG91bGQuZXF1YWwoYnVpbGRlci50cmFuc2FjdGlvbi5nYXNTcG9uc29yLCB0ZXN0RGF0YS5nYXNTcG9uc29yLmFkZHJlc3MpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBnYXMgc3BvbnNvciBhZGRyZXNzJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYnVpbGRlciA9IGZhY3RvcnkuZ2V0VHJhbnNmZXJCdWlsZGVyKCk7XG4gICAgICBzaG91bGQoKCkgPT4gYnVpbGRlci5nYXNTcG9uc29yKCdpbnZhbGlkQWRkcmVzcycpKS50aHJvd0Vycm9yKCdJbnZhbGlkIGFkZHJlc3MgaW52YWxpZEFkZHJlc3MnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYWxsb3cgc2VuZGVyIHRvIGJlIGdhcyBzcG9uc29yJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYnVpbGRlciA9IGZhY3RvcnkuZ2V0VHJhbnNmZXJCdWlsZGVyKCk7XG4gICAgICBidWlsZGVyLnNlbmRlcih0ZXN0RGF0YS5zZW5kZXIuYWRkcmVzcyk7XG4gICAgICBidWlsZGVyLmdhc1Nwb25zb3IodGVzdERhdGEuc2VuZGVyLmFkZHJlc3MpO1xuICAgICAgc2hvdWxkLmVxdWFsKGJ1aWxkZXIudHJhbnNhY3Rpb24uZ2FzU3BvbnNvciwgdGVzdERhdGEuc2VuZGVyLmFkZHJlc3MpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnQnVpbGRlciBJbml0aWFsaXphdGlvbicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGluaXRpYWxpemUgYnVpbGRlciBmcm9tIGV4aXN0aW5nIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qgb3JpZ2luYWxUeCA9IChhd2FpdCBjcmVhdGVUcmFuc2ZlckJ1aWxkZXJXaXRoR2FzKCkuYnVpbGQoKSkgYXMgVHJhbnNmZXJUcmFuc2FjdGlvbjtcbiAgICAgIGNvbnN0IG5ld0J1aWxkZXIgPSBmYWN0b3J5LmdldFRyYW5zZmVyQnVpbGRlcihvcmlnaW5hbFR4KTtcblxuICAgICAgc2hvdWxkLmVxdWFsKChuZXdCdWlsZGVyLnRyYW5zYWN0aW9uIGFzIFRyYW5zZmVyVHJhbnNhY3Rpb24pLnNlbmRlciwgb3JpZ2luYWxUeC5zZW5kZXIpO1xuICAgICAgc2hvdWxkLmVxdWFsKChuZXdCdWlsZGVyLnRyYW5zYWN0aW9uIGFzIFRyYW5zZmVyVHJhbnNhY3Rpb24pLmdhc0J1ZGdldCwgb3JpZ2luYWxUeC5nYXNCdWRnZXQpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnVHJhbnNhY3Rpb24gQnVpbGRpbmcnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBidWlsZCB0cmFuc2FjdGlvbiB3aXRoIGFsbCByZXF1aXJlZCBmaWVsZHMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eCA9IChhd2FpdCBjcmVhdGVUcmFuc2ZlckJ1aWxkZXJXaXRoR2FzKCkuYnVpbGQoKSkgYXMgVHJhbnNmZXJUcmFuc2FjdGlvbjtcblxuICAgICAgc2hvdWxkLmV4aXN0KHR4KTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC5zZW5kZXIsIHRlc3REYXRhLnNlbmRlci5hZGRyZXNzKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC5pc1NpbXVsYXRlVHgsIGZhbHNlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYnVpbGQgc2ltdWxhdGlvbiB0cmFuc2FjdGlvbiB3aXRob3V0IGdhcyBkYXRhJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHggPSAoYXdhaXQgY3JlYXRlQmFzaWNUcmFuc2ZlckJ1aWxkZXIoKS5idWlsZCgpKSBhcyBUcmFuc2ZlclRyYW5zYWN0aW9uO1xuXG4gICAgICBzaG91bGQuZXhpc3QodHgpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4LmlzU2ltdWxhdGVUeCwgdHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHN1cHBvcnQgbWV0aG9kIGNoYWluaW5nJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHggPSAoYXdhaXQgZmFjdG9yeVxuICAgICAgICAuZ2V0VHJhbnNmZXJCdWlsZGVyKClcbiAgICAgICAgLnNlbmRlcih0ZXN0RGF0YS5zZW5kZXIuYWRkcmVzcylcbiAgICAgICAgLnJlY2lwaWVudHModGVzdERhdGEucmVjaXBpZW50cylcbiAgICAgICAgLnBheW1lbnRPYmplY3RzKHRlc3REYXRhLnBheW1lbnRPYmplY3RzKVxuICAgICAgICAuZ2FzRGF0YSh0ZXN0RGF0YS5nYXNEYXRhKVxuICAgICAgICAuZ2FzU3BvbnNvcih0ZXN0RGF0YS5nYXNTcG9uc29yLmFkZHJlc3MpXG4gICAgICAgIC5idWlsZCgpKSBhcyBUcmFuc2ZlclRyYW5zYWN0aW9uO1xuXG4gICAgICBzaG91bGQuZXhpc3QodHgpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4LnNlbmRlciwgdGVzdERhdGEuc2VuZGVyLmFkZHJlc3MpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4Lmdhc1Nwb25zb3IsIHRlc3REYXRhLmdhc1Nwb25zb3IuYWRkcmVzcyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdUcmFuc2FjdGlvbiBUeXBlJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIGNvcnJlY3QgdHJhbnNhY3Rpb24gdHlwZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBjcmVhdGVUcmFuc2ZlckJ1aWxkZXJXaXRoR2FzKCk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IGJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIHNob3VsZC5lcXVhbChidWlsZGVyLnRyYW5zYWN0aW9uVHlwZSwgdHgudHlwZSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=transactionBuilderFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transactionBuilderFactory.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/transactionBuilderFactory.ts"],"names":[],"mappings":""}
@@ -0,0 +1,178 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ const should_1 = __importDefault(require("should"));
40
+ const statics_1 = require("@bitgo-beta/statics");
41
+ const src_1 = require("../../../src");
42
+ const testData = __importStar(require("../../resources/iota"));
43
+ const testHelpers_1 = require("../helpers/testHelpers");
44
+ describe('Iota Transaction Builder Factory', () => {
45
+ const factory = new src_1.TransactionBuilderFactory(statics_1.coins.get('tiota'));
46
+ describe('getTransferBuilder', () => {
47
+ it('should create a transfer builder', function () {
48
+ const builder = factory.getTransferBuilder();
49
+ should_1.default.exist(builder);
50
+ (0, should_1.default)(builder instanceof src_1.TransferBuilder).be.true();
51
+ });
52
+ it('should create a transfer builder with existing transaction', async function () {
53
+ const txBuilder = (0, testHelpers_1.createTransferBuilderWithGas)();
54
+ const tx = (await txBuilder.build());
55
+ const newBuilder = factory.getTransferBuilder(tx);
56
+ should_1.default.exist(newBuilder);
57
+ (0, should_1.default)(newBuilder instanceof src_1.TransferBuilder).be.true();
58
+ const rebuiltTx = (await newBuilder.build());
59
+ should_1.default.equal(rebuiltTx.sender, tx.sender);
60
+ should_1.default.deepEqual(rebuiltTx.recipients, tx.recipients);
61
+ });
62
+ });
63
+ describe('from', () => {
64
+ const formats = [
65
+ {
66
+ name: 'hex string',
67
+ convert: (rawTx) => Buffer.from(rawTx, 'base64').toString('hex'),
68
+ },
69
+ {
70
+ name: 'Uint8Array',
71
+ convert: (rawTx) => Buffer.from(rawTx, 'base64'),
72
+ },
73
+ ];
74
+ formats.forEach(({ name, convert }) => {
75
+ it(`should create builder from raw transaction in ${name} format`, async function () {
76
+ const txBuilder = (0, testHelpers_1.createTransferBuilderWithGas)();
77
+ const tx = (await txBuilder.build());
78
+ const rawTx = await tx.toBroadcastFormat();
79
+ const convertedTx = convert(rawTx);
80
+ const rebuiltBuilder = factory.from(convertedTx);
81
+ should_1.default.exist(rebuiltBuilder);
82
+ (0, should_1.default)(rebuiltBuilder instanceof src_1.TransferBuilder).be.true();
83
+ const rebuiltTx = (await rebuiltBuilder.build());
84
+ rebuiltTx.sender.should.equal(testData.sender.address);
85
+ rebuiltTx.recipients.length.should.equal(testData.recipients.length);
86
+ rebuiltTx.recipients[0].address.should.equal(testData.recipients[0].address);
87
+ rebuiltTx.recipients[0].amount.should.equal(testData.recipients[0].amount);
88
+ should_1.default.exist(rebuiltTx.paymentObjects);
89
+ rebuiltTx.paymentObjects?.length.should.equal(testData.paymentObjects.length);
90
+ });
91
+ });
92
+ });
93
+ describe('Error Handling', () => {
94
+ it('should throw error for invalid raw transaction', function () {
95
+ (0, should_1.default)(() => factory.from('invalid-raw-transaction')).throwError();
96
+ });
97
+ it('should throw error for empty raw transaction', function () {
98
+ (0, should_1.default)(() => factory.from('')).throwError();
99
+ });
100
+ it('should throw error for unsupported transaction type', async function () {
101
+ // This would require creating a transaction with unsupported commands
102
+ // For now, we test that invalid data throws an error
103
+ const invalidData = Buffer.from('not-a-valid-transaction').toString('base64');
104
+ (0, should_1.default)(() => factory.from(invalidData)).throwError();
105
+ });
106
+ it('should throw error when getWalletInitializationBuilder is called', function () {
107
+ (0, should_1.default)(() => factory.getWalletInitializationBuilder()).throwError('Method not implemented.');
108
+ });
109
+ });
110
+ describe('Transaction Rebuilding and Modification', () => {
111
+ it('should allow creating transactions with modified gas budget', async function () {
112
+ const txBuilder = (0, testHelpers_1.createTransferBuilderWithGas)();
113
+ const tx = (await txBuilder.build());
114
+ should_1.default.equal(tx.gasBudget, testData.GAS_BUDGET);
115
+ const modifiedBuilder = factory.getTransferBuilder();
116
+ modifiedBuilder.sender(testData.sender.address);
117
+ modifiedBuilder.recipients(testData.recipients);
118
+ modifiedBuilder.paymentObjects(testData.paymentObjects);
119
+ modifiedBuilder.gasData({
120
+ gasBudget: testData.GAS_BUDGET * 2,
121
+ gasPrice: testData.GAS_PRICE,
122
+ gasPaymentObjects: testData.gasPaymentObjects,
123
+ });
124
+ const modifiedTx = (await modifiedBuilder.build());
125
+ should_1.default.equal(modifiedTx.gasBudget, testData.GAS_BUDGET * 2);
126
+ });
127
+ it('should build transaction with gas sponsor', async function () {
128
+ const txBuilder = (0, testHelpers_1.createTransferBuilderWithGas)();
129
+ txBuilder.gasSponsor(testData.gasSponsor.address);
130
+ const tx = (await txBuilder.build());
131
+ should_1.default.equal(tx.sender, testData.sender.address);
132
+ should_1.default.equal(tx.gasSponsor, testData.gasSponsor.address);
133
+ should_1.default.notEqual(tx.sender, tx.gasSponsor);
134
+ });
135
+ it('should maintain transaction ID for identical transactions', async function () {
136
+ const txBuilder1 = (0, testHelpers_1.createTransferBuilderWithGas)();
137
+ const tx1 = (await txBuilder1.build());
138
+ const txBuilder2 = (0, testHelpers_1.createTransferBuilderWithGas)();
139
+ const tx2 = (await txBuilder2.build());
140
+ should_1.default.equal(tx1.id, tx2.id);
141
+ });
142
+ });
143
+ describe('Builder Initialization', () => {
144
+ it('should initialize builder with transaction correctly', async function () {
145
+ const originalBuilder = (0, testHelpers_1.createTransferBuilderWithGas)();
146
+ const originalTx = (await originalBuilder.build());
147
+ const newBuilder = factory.getTransferBuilder(originalTx);
148
+ const newTx = (await newBuilder.build());
149
+ should_1.default.equal(newTx.sender, originalTx.sender);
150
+ should_1.default.deepEqual(newTx.recipients, originalTx.recipients);
151
+ should_1.default.equal(newTx.gasBudget, originalTx.gasBudget);
152
+ should_1.default.equal(newTx.gasPrice, originalTx.gasPrice);
153
+ });
154
+ });
155
+ describe('Round Trip Conversion', () => {
156
+ it('should handle JSON round trip', async function () {
157
+ const originalBuilder = (0, testHelpers_1.createTransferBuilderWithGas)();
158
+ const originalTx = (await originalBuilder.build());
159
+ const json = originalTx.toJson();
160
+ const newTx = new src_1.TransferTransaction(statics_1.coins.get('tiota'));
161
+ newTx.parseFromJSON(json);
162
+ const newBuilder = factory.getTransferBuilder(newTx);
163
+ const rebuiltTx = (await newBuilder.build());
164
+ should_1.default.equal(rebuiltTx.sender, originalTx.sender);
165
+ should_1.default.deepEqual(rebuiltTx.recipients, originalTx.recipients);
166
+ });
167
+ it('should serialize to consistent format', async function () {
168
+ const builder1 = (0, testHelpers_1.createTransferBuilderWithGas)();
169
+ const tx1 = (await builder1.build());
170
+ const serialized1 = await tx1.toBroadcastFormat();
171
+ const builder2 = (0, testHelpers_1.createTransferBuilderWithGas)();
172
+ const tx2 = (await builder2.build());
173
+ const serialized2 = await tx2.toBroadcastFormat();
174
+ should_1.default.equal(serialized1, serialized2);
175
+ });
176
+ });
177
+ });
178
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvdW5pdC90cmFuc2FjdGlvbkJ1aWxkZXIvdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9EQUE0QjtBQUM1QixpREFBNEM7QUFDNUMsc0NBQStGO0FBQy9GLCtEQUFpRDtBQUNqRCx3REFBc0U7QUFFdEUsUUFBUSxDQUFDLGtDQUFrQyxFQUFFLEdBQUcsRUFBRTtJQUNoRCxNQUFNLE9BQU8sR0FBRyxJQUFJLCtCQUF5QixDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUVsRSxRQUFRLENBQUMsb0JBQW9CLEVBQUUsR0FBRyxFQUFFO1FBQ2xDLEVBQUUsQ0FBQyxrQ0FBa0MsRUFBRTtZQUNyQyxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUM3QyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN0QixJQUFBLGdCQUFNLEVBQUMsT0FBTyxZQUFZLHFCQUFlLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkQsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsNERBQTRELEVBQUUsS0FBSztZQUNwRSxNQUFNLFNBQVMsR0FBRyxJQUFBLDBDQUE0QixHQUFFLENBQUM7WUFDakQsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBd0IsQ0FBQztZQUU1RCxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDbEQsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDekIsSUFBQSxnQkFBTSxFQUFD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Qy9DLE1BQU0sUUFBUSxHQUFHLElBQUEsMENBQTRCLEdBQUUsQ0FBQztZQUNoRCxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sUUFBUSxDQUFDLEtBQUssRUFBRSxDQUF3QixDQUFDO1lBQzVELE1BQU0sV0FBVyxHQUFHLE1BQU0sR0FBRyxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFFbEQsTUFBTSxRQUFRLEdBQUcsSUFBQSwwQ0FBNEIsR0FBRSxDQUFDO1lBQ2hELE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxRQUFRLENBQUMsS0FBSyxFQUFFLENBQXdCLENBQUM7WUFDNUQsTUFBTSxXQUFXLEdBQUcsTUFBTSxHQUFHLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUVsRCxnQkFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDekMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHNob3VsZCBmcm9tICdzaG91bGQnO1xuaW1wb3J0IHsgY29pbnMgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksIFRyYW5zZmVyQnVpbGRlciwgVHJhbnNmZXJUcmFuc2FjdGlvbiB9IGZyb20gJy4uLy4uLy4uL3NyYyc7XG5pbXBvcnQgKiBhcyB0ZXN0RGF0YSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvaW90YSc7XG5pbXBvcnQgeyBjcmVhdGVUcmFuc2ZlckJ1aWxkZXJXaXRoR2FzIH0gZnJvbSAnLi4vaGVscGVycy90ZXN0SGVscGVycyc7XG5cbmRlc2NyaWJlKCdJb3RhIFRyYW5zYWN0aW9uIEJ1aWxkZXIgRmFjdG9yeScsICgpID0+IHtcbiAgY29uc3QgZmFjdG9yeSA9IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5zLmdldCgndGlvdGEnKSk7XG5cbiAgZGVzY3JpYmUoJ2dldFRyYW5zZmVyQnVpbGRlcicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGNyZWF0ZSBhIHRyYW5zZmVyIGJ1aWxkZXInLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBidWlsZGVyID0gZmFjdG9yeS5nZXRUcmFuc2ZlckJ1aWxkZXIoKTtcbiAgICAgIHNob3VsZC5leGlzdChidWlsZGVyKTtcbiAgICAgIHNob3VsZChidWlsZGVyIGluc3RhbmNlb2YgVHJhbnNmZXJCdWlsZGVyKS5iZS50cnVlKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGNyZWF0ZSBhIHRyYW5zZmVyIGJ1aWxkZXIgd2l0aCBleGlzdGluZyB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGNyZWF0ZVRyYW5zZmVyQnVpbGRlcldpdGhHYXMoKTtcbiAgICAgIGNvbnN0IHR4ID0gKGF3YWl0IHR4QnVpbGRlci5idWlsZCgpKSBhcyBUcmFuc2ZlclRyYW5zYWN0aW9uO1xuXG4gICAgICBjb25zdCBuZXdCdWlsZGVyID0gZmFjdG9yeS5nZXRUcmFuc2ZlckJ1aWxkZXIodHgpO1xuICAgICAgc2hvdWxkLmV4aXN0KG5ld0J1aWxkZXIpO1xuICAgICAgc2hvdWxkKG5ld0J1aWxkZXIgaW5zdGFuY2VvZiBUcmFuc2ZlckJ1aWxkZXIpLmJlLnRydWUoKTtcblxuICAgICAgY29uc3QgcmVidWlsdFR4ID0gKGF3YWl0IG5ld0J1aWxkZXIuYnVpbGQoKSkgYXMgVHJhbnNmZXJUcmFuc2FjdGlvbjtcbiAgICAgIHNob3VsZC5lcXVhbChyZWJ1aWx0VHguc2VuZGVyLCB0eC5zZW5kZXIpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbChyZWJ1aWx0VHgucmVjaXBpZW50cywgdHgucmVjaXBpZW50cyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdmcm9tJywgKCkgPT4ge1xuICAgIGNvbnN0IGZvcm1hdHMgPSBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdoZXggc3RyaW5nJyxcbiAgICAgICAgY29udmVydDogKHJhd1R4OiBzdHJpbmcpID0+IEJ1ZmZlci5mcm9tKHJhd1R4LCAnYmFzZTY0JykudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ1VpbnQ4QXJyYXknLFxuICAgICAgICBjb252ZXJ0OiAocmF3VHg6IHN0cmluZykgPT4gQnVmZmVyLmZyb20ocmF3VHgsICdiYXNlNjQnKSxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIGZvcm1hdHMuZm9yRWFjaCgoeyBuYW1lLCBjb252ZXJ0IH0pID0+IHtcbiAgICAgIGl0KGBzaG91bGQgY3JlYXRlIGJ1aWxkZXIgZnJvbSByYXcgdHJhbnNhY3Rpb24gaW4gJHtuYW1lfSBmb3JtYXRgLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGNyZWF0ZVRyYW5zZmVyQnVpbGRlcldpdGhHYXMoKTtcbiAgICAgICAgY29uc3QgdHggPSAoYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCkpIGFzIFRyYW5zZmVyVHJhbnNhY3Rpb247XG4gICAgICAgIGNvbnN0IHJhd1R4ID0gYXdhaXQgdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICAgICAgY29uc3QgY29udmVydGVkVHggPSBjb252ZXJ0KHJhd1R4KTtcblxuICAgICAgICBjb25zdCByZWJ1aWx0QnVpbGRlciA9IGZhY3RvcnkuZnJvbShjb252ZXJ0ZWRUeCk7XG4gICAgICAgIHNob3VsZC5leGlzdChyZWJ1aWx0QnVpbGRlcik7XG4gICAgICAgIHNob3VsZChyZWJ1aWx0QnVpbGRlciBpbnN0YW5jZW9mIFRyYW5zZmVyQnVpbGRlcikuYmUudHJ1ZSgpO1xuXG4gICAgICAgIGNvbnN0IHJlYnVpbHRUeCA9IChhd2FpdCByZWJ1aWx0QnVpbGRlci5idWlsZCgpKSBhcyBUcmFuc2ZlclRyYW5zYWN0aW9uO1xuICAgICAgICByZWJ1aWx0VHguc2VuZGVyLnNob3VsZC5lcXVhbCh0ZXN0RGF0YS5zZW5kZXIuYWRkcmVzcyk7XG4gICAgICAgIHJlYnVpbHRUeC5yZWNpcGllbnRzLmxlbmd0aC5zaG91bGQuZXF1YWwodGVzdERhdGEucmVjaXBpZW50cy5sZW5ndGgpO1xuICAgICAgICByZWJ1aWx0VHgucmVjaXBpZW50c1swXS5hZGRyZXNzLnNob3VsZC5lcXVhbCh0ZXN0RGF0YS5yZWNpcGllbnRzWzBdLmFkZHJlc3MpO1xuICAgICAgICByZWJ1aWx0VHgucmVjaXBpZW50c1swXS5hbW91bnQuc2hvdWxkLmVxdWFsKHRlc3REYXRhLnJlY2lwaWVudHNbMF0uYW1vdW50KTtcbiAgICAgICAgc2hvdWxkLmV4aXN0KHJlYnVpbHRUeC5wYXltZW50T2JqZWN0cyk7XG4gICAgICAgIHJlYnVpbHRUeC5wYXltZW50T2JqZWN0cz8ubGVuZ3RoLnNob3VsZC5lcXVhbCh0ZXN0RGF0YS5wYXltZW50T2JqZWN0cy5sZW5ndGgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdFcnJvciBIYW5kbGluZycsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHRocm93IGVycm9yIGZvciBpbnZhbGlkIHJhdyB0cmFuc2FjdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNob3VsZCgoKSA9PiBmYWN0b3J5LmZyb20oJ2ludmFsaWQtcmF3LXRyYW5zYWN0aW9uJykpLnRocm93RXJyb3IoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgZXJyb3IgZm9yIGVtcHR5IHJhdyB0cmFuc2FjdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNob3VsZCgoKSA9PiBmYWN0b3J5LmZyb20oJycpKS50aHJvd0Vycm9yKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGVycm9yIGZvciB1bnN1cHBvcnRlZCB0cmFuc2FjdGlvbiB0eXBlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gVGhpcyB3b3VsZCByZXF1aXJlIGNyZWF0aW5nIGEgdHJhbnNhY3Rpb24gd2l0aCB1bnN1cHBvcnRlZCBjb21tYW5kc1xuICAgICAgLy8gRm9yIG5vdywgd2UgdGVzdCB0aGF0IGludmFsaWQgZGF0YSB0aHJvd3MgYW4gZXJyb3JcbiAgICAgIGNvbnN0IGludmFsaWREYXRhID0gQnVmZmVyLmZyb20oJ25vdC1hLXZhbGlkLXRyYW5zYWN0aW9uJykudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICAgICAgc2hvdWxkKCgpID0+IGZhY3RvcnkuZnJvbShpbnZhbGlkRGF0YSkpLnRocm93RXJyb3IoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgZXJyb3Igd2hlbiBnZXRXYWxsZXRJbml0aWFsaXphdGlvbkJ1aWxkZXIgaXMgY2FsbGVkJywgZnVuY3Rpb24gKCkge1xuICAgICAgc2hvdWxkKCgpID0+IGZhY3RvcnkuZ2V0V2FsbGV0SW5pdGlhbGl6YXRpb25CdWlsZGVyKCkpLnRocm93RXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdUcmFuc2FjdGlvbiBSZWJ1aWxkaW5nIGFuZCBNb2RpZmljYXRpb24nLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBhbGxvdyBjcmVhdGluZyB0cmFuc2FjdGlvbnMgd2l0aCBtb2RpZmllZCBnYXMgYnVkZ2V0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gY3JlYXRlVHJhbnNmZXJCdWlsZGVyV2l0aEdhcygpO1xuICAgICAgY29uc3QgdHggPSAoYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCkpIGFzIFRyYW5zZmVyVHJhbnNhY3Rpb247XG4gICAgICBzaG91bGQuZXF1YWwodHguZ2FzQnVkZ2V0LCB0ZXN0RGF0YS5HQVNfQlVER0VUKTtcblxuICAgICAgY29uc3QgbW9kaWZpZWRCdWlsZGVyID0gZmFjdG9yeS5nZXRUcmFuc2ZlckJ1aWxkZXIoKTtcbiAgICAgIG1vZGlmaWVkQnVpbGRlci5zZW5kZXIodGVzdERhdGEuc2VuZGVyLmFkZHJlc3MpO1xuICAgICAgbW9kaWZpZWRCdWlsZGVyLnJlY2lwaWVudHModGVzdERhdGEucmVjaXBpZW50cyk7XG4gICAgICBtb2RpZmllZEJ1aWxkZXIucGF5bWVudE9iamVjdHModGVzdERhdGEucGF5bWVudE9iamVjdHMpO1xuICAgICAgbW9kaWZpZWRCdWlsZGVyLmdhc0RhdGEoe1xuICAgICAgICBnYXNCdWRnZXQ6IHRlc3REYXRhLkdBU19CVURHRVQgKiAyLFxuICAgICAgICBnYXNQcmljZTogdGVzdERhdGEuR0FTX1BSSUNFLFxuICAgICAgICBnYXNQYXltZW50T2JqZWN0czogdGVzdERhdGEuZ2FzUGF5bWVudE9iamVjdHMsXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgbW9kaWZpZWRUeCA9IChhd2FpdCBtb2RpZmllZEJ1aWxkZXIuYnVpbGQoKSkgYXMgVHJhbnNmZXJUcmFuc2FjdGlvbjtcbiAgICAgIHNob3VsZC5lcXVhbChtb2RpZmllZFR4Lmdhc0J1ZGdldCwgdGVzdERhdGEuR0FTX0JVREdFVCAqIDIpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBidWlsZCB0cmFuc2FjdGlvbiB3aXRoIGdhcyBzcG9uc29yJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gY3JlYXRlVHJhbnNmZXJCdWlsZGVyV2l0aEdhcygpO1xuICAgICAgdHhCdWlsZGVyLmdhc1Nwb25zb3IodGVzdERhdGEuZ2FzU3BvbnNvci5hZGRyZXNzKTtcblxuICAgICAgY29uc3QgdHggPSAoYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCkpIGFzIFRyYW5zZmVyVHJhbnNhY3Rpb247XG4gICAgICBzaG91bGQuZXF1YWwodHguc2VuZGVyLCB0ZXN0RGF0YS5zZW5kZXIuYWRkcmVzcyk7XG4gICAgICBzaG91bGQuZXF1YWwodHguZ2FzU3BvbnNvciwgdGVzdERhdGEuZ2FzU3BvbnNvci5hZGRyZXNzKTtcbiAgICAgIHNob3VsZC5ub3RFcXVhbCh0eC5zZW5kZXIsIHR4Lmdhc1Nwb25zb3IpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBtYWludGFpbiB0cmFuc2FjdGlvbiBJRCBmb3IgaWRlbnRpY2FsIHRyYW5zYWN0aW9ucycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlcjEgPSBjcmVhdGVUcmFuc2ZlckJ1aWxkZXJXaXRoR2FzKCk7XG4gICAgICBjb25zdCB0eDEgPSAoYXdhaXQgdHhCdWlsZGVyMS5idWlsZCgpKSBhcyBUcmFuc2ZlclRyYW5zYWN0aW9uO1xuXG4gICAgICBjb25zdCB0eEJ1aWxkZXIyID0gY3JlYXRlVHJhbnNmZXJCdWlsZGVyV2l0aEdhcygpO1xuICAgICAgY29uc3QgdHgyID0gKGF3YWl0IHR4QnVpbGRlcjIuYnVpbGQoKSkgYXMgVHJhbnNmZXJUcmFuc2FjdGlvbjtcblxuICAgICAgc2hvdWxkLmVxdWFsKHR4MS5pZCwgdHgyLmlkKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0J1aWxkZXIgSW5pdGlhbGl6YXRpb24nLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBpbml0aWFsaXplIGJ1aWxkZXIgd2l0aCB0cmFuc2FjdGlvbiBjb3JyZWN0bHknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBvcmlnaW5hbEJ1aWxkZXIgPSBjcmVhdGVUcmFuc2ZlckJ1aWxkZXJXaXRoR2FzKCk7XG4gICAgICBjb25zdCBvcmlnaW5hbFR4ID0gKGF3YWl0IG9yaWdpbmFsQnVpbGRlci5idWlsZCgpKSBhcyBUcmFuc2ZlclRyYW5zYWN0aW9uO1xuXG4gICAgICBjb25zdCBuZXdCdWlsZGVyID0gZmFjdG9yeS5nZXRUcmFuc2ZlckJ1aWxkZXIob3JpZ2luYWxUeCk7XG4gICAgICBjb25zdCBuZXdUeCA9IChhd2FpdCBuZXdCdWlsZGVyLmJ1aWxkKCkpIGFzIFRyYW5zZmVyVHJhbnNhY3Rpb247XG5cbiAgICAgIHNob3VsZC5lcXVhbChuZXdUeC5zZW5kZXIsIG9yaWdpbmFsVHguc2VuZGVyKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwobmV3VHgucmVjaXBpZW50cywgb3JpZ2luYWxUeC5yZWNpcGllbnRzKTtcbiAgICAgIHNob3VsZC5lcXVhbChuZXdUeC5nYXNCdWRnZXQsIG9yaWdpbmFsVHguZ2FzQnVkZ2V0KTtcbiAgICAgIHNob3VsZC5lcXVhbChuZXdUeC5nYXNQcmljZSwgb3JpZ2luYWxUeC5nYXNQcmljZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdSb3VuZCBUcmlwIENvbnZlcnNpb24nLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBoYW5kbGUgSlNPTiByb3VuZCB0cmlwJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qgb3JpZ2luYWxCdWlsZGVyID0gY3JlYXRlVHJhbnNmZXJCdWlsZGVyV2l0aEdhcygpO1xuICAgICAgY29uc3Qgb3JpZ2luYWxUeCA9IChhd2FpdCBvcmlnaW5hbEJ1aWxkZXIuYnVpbGQoKSkgYXMgVHJhbnNmZXJUcmFuc2FjdGlvbjtcbiAgICAgIGNvbnN0IGpzb24gPSBvcmlnaW5hbFR4LnRvSnNvbigpO1xuXG4gICAgICBjb25zdCBuZXdUeCA9IG5ldyBUcmFuc2ZlclRyYW5zYWN0aW9uKGNvaW5zLmdldCgndGlvdGEnKSk7XG4gICAgICBuZXdUeC5wYXJzZUZyb21KU09OKGpzb24pO1xuICAgICAgY29uc3QgbmV3QnVpbGRlciA9IGZhY3RvcnkuZ2V0VHJhbnNmZXJCdWlsZGVyKG5ld1R4KTtcbiAgICAgIGNvbnN0IHJlYnVpbHRUeCA9IChhd2FpdCBuZXdCdWlsZGVyLmJ1aWxkKCkpIGFzIFRyYW5zZmVyVHJhbnNhY3Rpb247XG5cbiAgICAgIHNob3VsZC5lcXVhbChyZWJ1aWx0VHguc2VuZGVyLCBvcmlnaW5hbFR4LnNlbmRlcik7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHJlYnVpbHRUeC5yZWNpcGllbnRzLCBvcmlnaW5hbFR4LnJlY2lwaWVudHMpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBzZXJpYWxpemUgdG8gY29uc2lzdGVudCBmb3JtYXQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBidWlsZGVyMSA9IGNyZWF0ZVRyYW5zZmVyQnVpbGRlcldpdGhHYXMoKTtcbiAgICAgIGNvbnN0IHR4MSA9IChhd2FpdCBidWlsZGVyMS5idWlsZCgpKSBhcyBUcmFuc2ZlclRyYW5zYWN0aW9uO1xuICAgICAgY29uc3Qgc2VyaWFsaXplZDEgPSBhd2FpdCB0eDEudG9Ccm9hZGNhc3RGb3JtYXQoKTtcblxuICAgICAgY29uc3QgYnVpbGRlcjIgPSBjcmVhdGVUcmFuc2ZlckJ1aWxkZXJXaXRoR2FzKCk7XG4gICAgICBjb25zdCB0eDIgPSAoYXdhaXQgYnVpbGRlcjIuYnVpbGQoKSkgYXMgVHJhbnNmZXJUcmFuc2FjdGlvbjtcbiAgICAgIGNvbnN0IHNlcmlhbGl6ZWQyID0gYXdhaXQgdHgyLnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG5cbiAgICAgIHNob3VsZC5lcXVhbChzZXJpYWxpemVkMSwgc2VyaWFsaXplZDIpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=transferBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transferBuilder.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/transferBuilder.ts"],"names":[],"mappings":""}