@bitgo-beta/sdk-coin-vet 1.0.1-beta.64 → 1.0.1-beta.641

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 (160) hide show
  1. package/dist/src/index.d.ts +1 -0
  2. package/dist/src/index.d.ts.map +1 -1
  3. package/dist/src/index.js +2 -1
  4. package/dist/src/lib/constants.d.ts +28 -0
  5. package/dist/src/lib/constants.d.ts.map +1 -1
  6. package/dist/src/lib/constants.js +30 -2
  7. package/dist/src/lib/iface.d.ts +28 -2
  8. package/dist/src/lib/iface.d.ts.map +1 -1
  9. package/dist/src/lib/iface.js +1 -1
  10. package/dist/src/lib/index.d.ts +21 -0
  11. package/dist/src/lib/index.d.ts.map +1 -1
  12. package/dist/src/lib/index.js +44 -2
  13. package/dist/src/lib/transaction/addressInitializationTransaction.d.ts +31 -0
  14. package/dist/src/lib/transaction/addressInitializationTransaction.d.ts.map +1 -0
  15. package/dist/src/lib/transaction/addressInitializationTransaction.js +170 -0
  16. package/dist/src/lib/transaction/burnNftTransaction.d.ts +29 -0
  17. package/dist/src/lib/transaction/burnNftTransaction.d.ts.map +1 -0
  18. package/dist/src/lib/transaction/burnNftTransaction.js +138 -0
  19. package/dist/src/lib/transaction/claimRewards.d.ts +31 -0
  20. package/dist/src/lib/transaction/claimRewards.d.ts.map +1 -0
  21. package/dist/src/lib/transaction/claimRewards.js +151 -0
  22. package/dist/src/lib/transaction/delegateClauseTransaction.d.ts +27 -0
  23. package/dist/src/lib/transaction/delegateClauseTransaction.d.ts.map +1 -0
  24. package/dist/src/lib/transaction/delegateClauseTransaction.js +158 -0
  25. package/dist/src/lib/transaction/exitDelegation.d.ts +29 -0
  26. package/dist/src/lib/transaction/exitDelegation.d.ts.map +1 -0
  27. package/dist/src/lib/transaction/exitDelegation.js +143 -0
  28. package/dist/src/lib/transaction/flushTokenTransaction.d.ts +20 -0
  29. package/dist/src/lib/transaction/flushTokenTransaction.d.ts.map +1 -0
  30. package/dist/src/lib/transaction/flushTokenTransaction.js +98 -0
  31. package/dist/src/lib/transaction/nftTransaction.d.ts +17 -0
  32. package/dist/src/lib/transaction/nftTransaction.d.ts.map +1 -0
  33. package/dist/src/lib/transaction/nftTransaction.js +108 -0
  34. package/dist/src/lib/transaction/stakeClauseTransaction.d.ts +27 -0
  35. package/dist/src/lib/transaction/stakeClauseTransaction.d.ts.map +1 -0
  36. package/dist/src/lib/transaction/stakeClauseTransaction.js +158 -0
  37. package/dist/src/lib/transaction/stakingTransaction.d.ts +31 -0
  38. package/dist/src/lib/transaction/stakingTransaction.d.ts.map +1 -0
  39. package/dist/src/lib/transaction/stakingTransaction.js +169 -0
  40. package/dist/src/lib/transaction/tokenTransaction.d.ts +14 -0
  41. package/dist/src/lib/transaction/tokenTransaction.d.ts.map +1 -0
  42. package/dist/src/lib/transaction/tokenTransaction.js +95 -0
  43. package/dist/src/lib/transaction/transaction.d.ts +18 -28
  44. package/dist/src/lib/transaction/transaction.d.ts.map +1 -1
  45. package/dist/src/lib/transaction/transaction.js +99 -58
  46. package/dist/src/lib/transaction/validatorRegistrationTransaction.d.ts +32 -0
  47. package/dist/src/lib/transaction/validatorRegistrationTransaction.d.ts.map +1 -0
  48. package/dist/src/lib/transaction/validatorRegistrationTransaction.js +170 -0
  49. package/dist/src/lib/transactionBuilder/addressInitializationBuilder.d.ts +78 -0
  50. package/dist/src/lib/transactionBuilder/addressInitializationBuilder.d.ts.map +1 -0
  51. package/dist/src/lib/transactionBuilder/addressInitializationBuilder.js +158 -0
  52. package/dist/src/lib/transactionBuilder/burnNftBuilder.d.ts +59 -0
  53. package/dist/src/lib/transactionBuilder/burnNftBuilder.d.ts.map +1 -0
  54. package/dist/src/lib/transactionBuilder/burnNftBuilder.js +118 -0
  55. package/dist/src/lib/transactionBuilder/claimRewardsBuilder.d.ts +59 -0
  56. package/dist/src/lib/transactionBuilder/claimRewardsBuilder.d.ts.map +1 -0
  57. package/dist/src/lib/transactionBuilder/claimRewardsBuilder.js +117 -0
  58. package/dist/src/lib/transactionBuilder/delegateTxnBuilder.d.ts +72 -0
  59. package/dist/src/lib/transactionBuilder/delegateTxnBuilder.d.ts.map +1 -0
  60. package/dist/src/lib/transactionBuilder/delegateTxnBuilder.js +133 -0
  61. package/dist/src/lib/transactionBuilder/exitDelegationBuilder.d.ts +59 -0
  62. package/dist/src/lib/transactionBuilder/exitDelegationBuilder.d.ts.map +1 -0
  63. package/dist/src/lib/transactionBuilder/exitDelegationBuilder.js +118 -0
  64. package/dist/src/lib/transactionBuilder/flushTokenTransactionBuilder.d.ts +66 -0
  65. package/dist/src/lib/transactionBuilder/flushTokenTransactionBuilder.d.ts.map +1 -0
  66. package/dist/src/lib/transactionBuilder/flushTokenTransactionBuilder.js +129 -0
  67. package/dist/src/lib/transactionBuilder/nftTransactionBuilder.d.ts +23 -0
  68. package/dist/src/lib/transactionBuilder/nftTransactionBuilder.d.ts.map +1 -0
  69. package/dist/src/lib/transactionBuilder/nftTransactionBuilder.js +93 -0
  70. package/dist/src/lib/transactionBuilder/stakeClauseTxnBuilder.d.ts +73 -0
  71. package/dist/src/lib/transactionBuilder/stakeClauseTxnBuilder.d.ts.map +1 -0
  72. package/dist/src/lib/transactionBuilder/stakeClauseTxnBuilder.js +146 -0
  73. package/dist/src/lib/transactionBuilder/stakingBuilder.d.ts +73 -0
  74. package/dist/src/lib/transactionBuilder/stakingBuilder.d.ts.map +1 -0
  75. package/dist/src/lib/transactionBuilder/stakingBuilder.js +147 -0
  76. package/dist/src/lib/transactionBuilder/tokenTransactionBuilder.d.ts +21 -0
  77. package/dist/src/lib/transactionBuilder/tokenTransactionBuilder.d.ts.map +1 -0
  78. package/dist/src/lib/transactionBuilder/tokenTransactionBuilder.js +70 -0
  79. package/dist/src/lib/transactionBuilder/transactionBuilder.d.ts +10 -9
  80. package/dist/src/lib/transactionBuilder/transactionBuilder.d.ts.map +1 -1
  81. package/dist/src/lib/transactionBuilder/transactionBuilder.js +25 -19
  82. package/dist/src/lib/transactionBuilder/validatorRegistrationBuilder.d.ts +79 -0
  83. package/dist/src/lib/transactionBuilder/validatorRegistrationBuilder.d.ts.map +1 -0
  84. package/dist/src/lib/transactionBuilder/validatorRegistrationBuilder.js +150 -0
  85. package/dist/src/lib/transactionBuilderFactory.d.ts +55 -0
  86. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
  87. package/dist/src/lib/transactionBuilderFactory.js +124 -1
  88. package/dist/src/lib/types.d.ts +21 -0
  89. package/dist/src/lib/types.d.ts.map +1 -1
  90. package/dist/src/lib/types.js +1 -1
  91. package/dist/src/lib/utils.d.ts +102 -1
  92. package/dist/src/lib/utils.d.ts.map +1 -1
  93. package/dist/src/lib/utils.js +277 -8
  94. package/dist/src/register.d.ts.map +1 -1
  95. package/dist/src/register.js +5 -1
  96. package/dist/src/vet.d.ts +94 -3
  97. package/dist/src/vet.d.ts.map +1 -1
  98. package/dist/src/vet.js +505 -10
  99. package/dist/src/vetNFTCollection.d.ts +18 -0
  100. package/dist/src/vetNFTCollection.d.ts.map +1 -0
  101. package/dist/src/vetNFTCollection.js +52 -0
  102. package/dist/src/vetToken.d.ts +1 -1
  103. package/dist/src/vetToken.d.ts.map +1 -1
  104. package/dist/src/vetToken.js +2 -2
  105. package/dist/test/resources/vet.d.ts +88 -0
  106. package/dist/test/resources/vet.d.ts.map +1 -0
  107. package/dist/test/resources/vet.js +143 -0
  108. package/dist/test/transactionBuilder/addressInitializationBuilder.d.ts +2 -0
  109. package/dist/test/transactionBuilder/addressInitializationBuilder.d.ts.map +1 -0
  110. package/dist/test/transactionBuilder/addressInitializationBuilder.js +141 -0
  111. package/dist/test/transactionBuilder/burnNftBuilder.d.ts +2 -0
  112. package/dist/test/transactionBuilder/burnNftBuilder.d.ts.map +1 -0
  113. package/dist/test/transactionBuilder/burnNftBuilder.js +150 -0
  114. package/dist/test/transactionBuilder/claimRewardsBuilder.d.ts +2 -0
  115. package/dist/test/transactionBuilder/claimRewardsBuilder.d.ts.map +1 -0
  116. package/dist/test/transactionBuilder/claimRewardsBuilder.js +183 -0
  117. package/dist/test/transactionBuilder/delegateClauseTxnBuilder.d.ts +2 -0
  118. package/dist/test/transactionBuilder/delegateClauseTxnBuilder.d.ts.map +1 -0
  119. package/dist/test/transactionBuilder/delegateClauseTxnBuilder.js +209 -0
  120. package/dist/test/transactionBuilder/exitDelegationBuilder.d.ts +2 -0
  121. package/dist/test/transactionBuilder/exitDelegationBuilder.d.ts.map +1 -0
  122. package/dist/test/transactionBuilder/exitDelegationBuilder.js +150 -0
  123. package/dist/test/transactionBuilder/flushTokenTransactionBuilder.d.ts +2 -0
  124. package/dist/test/transactionBuilder/flushTokenTransactionBuilder.d.ts.map +1 -0
  125. package/dist/test/transactionBuilder/flushTokenTransactionBuilder.js +132 -0
  126. package/dist/test/transactionBuilder/nftTransactionBuilder.d.ts +2 -0
  127. package/dist/test/transactionBuilder/nftTransactionBuilder.d.ts.map +1 -0
  128. package/dist/test/transactionBuilder/nftTransactionBuilder.js +242 -0
  129. package/dist/test/transactionBuilder/stakeClauseTransactionBuilder.d.ts +2 -0
  130. package/dist/test/transactionBuilder/stakeClauseTransactionBuilder.d.ts.map +1 -0
  131. package/dist/test/transactionBuilder/stakeClauseTransactionBuilder.js +247 -0
  132. package/dist/test/transactionBuilder/stakingTransaction.d.ts +2 -0
  133. package/dist/test/transactionBuilder/stakingTransaction.d.ts.map +1 -0
  134. package/dist/test/transactionBuilder/stakingTransaction.js +250 -0
  135. package/dist/test/transactionBuilder/tokenTransactionBuilder.d.ts +2 -0
  136. package/dist/test/transactionBuilder/tokenTransactionBuilder.d.ts.map +1 -0
  137. package/dist/test/transactionBuilder/tokenTransactionBuilder.js +249 -0
  138. package/dist/test/transactionBuilder/transferBuilder.d.ts +2 -0
  139. package/dist/test/transactionBuilder/transferBuilder.d.ts.map +1 -0
  140. package/dist/test/transactionBuilder/transferBuilder.js +244 -0
  141. package/dist/test/transactionBuilder/validatorRegistrationTxnBuilder.d.ts +2 -0
  142. package/dist/test/transactionBuilder/validatorRegistrationTxnBuilder.d.ts.map +1 -0
  143. package/dist/test/transactionBuilder/validatorRegistrationTxnBuilder.js +231 -0
  144. package/dist/test/unit/keyPair.d.ts +2 -0
  145. package/dist/test/unit/keyPair.d.ts.map +1 -0
  146. package/dist/test/unit/keyPair.js +181 -0
  147. package/dist/test/unit/stakingFlowE2E.d.ts +2 -0
  148. package/dist/test/unit/stakingFlowE2E.d.ts.map +1 -0
  149. package/dist/test/unit/stakingFlowE2E.js +292 -0
  150. package/dist/test/unit/utils.d.ts +2 -0
  151. package/dist/test/unit/utils.d.ts.map +1 -0
  152. package/dist/test/unit/utils.js +106 -0
  153. package/dist/test/unit/vet.d.ts +2 -0
  154. package/dist/test/unit/vet.d.ts.map +1 -0
  155. package/dist/test/unit/vet.js +336 -0
  156. package/dist/tsconfig.tsbuildinfo +1 -0
  157. package/package.json +16 -10
  158. package/.eslintignore +0 -5
  159. package/.mocharc.yml +0 -8
  160. package/CHANGELOG.md +0 -40
@@ -0,0 +1,242 @@
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 sdk_core_1 = require("@bitgo-beta/sdk-core");
42
+ const src_1 = require("../../src");
43
+ const testData = __importStar(require("../resources/vet"));
44
+ describe('nftTransactionBuilder', () => {
45
+ const factory = new src_1.TransactionBuilderFactory(statics_1.coins.get('tvet:sdt'));
46
+ /**
47
+ * Sets up an NFT transaction builder with common parameters for testing.
48
+ * @param txBuilder - The transaction builder to set up
49
+ * @param senderAddress - The sender's address
50
+ * @param recipients - The recipients for the transaction
51
+ * @param nftCollectionId - Optional NFT collection ID
52
+ * @param tokenId - Optional token ID
53
+ */
54
+ function setupNFTTransactionBuilder(txBuilder, senderAddress, recipients, nftCollectionId, tokenId) {
55
+ txBuilder.sender(senderAddress);
56
+ txBuilder.gas(21000);
57
+ txBuilder.nonce('64248');
58
+ txBuilder.blockRef('0x014ead140e77bbc1');
59
+ txBuilder.expiration(64);
60
+ txBuilder.gasPriceCoef(128);
61
+ if (nftCollectionId) {
62
+ txBuilder.nftCollectionId(nftCollectionId);
63
+ }
64
+ if (tokenId) {
65
+ txBuilder.tokenId(tokenId);
66
+ }
67
+ txBuilder.recipients(recipients);
68
+ txBuilder.addFeePayerAddress(testData.feePayer.address);
69
+ }
70
+ describe('Succeed', () => {
71
+ it('should build a nft transfer transaction', async function () {
72
+ const transaction = new src_1.NFTTransaction(statics_1.coins.get('tvet:sdt'));
73
+ const txBuilder = factory.getNFTTransactionBuilder(transaction);
74
+ setupNFTTransactionBuilder(txBuilder, testData.addresses.validAddresses[0], testData.nftRecipients, testData.NFT_CONTRACT_ADDRESS, '100131');
75
+ const tx = (await txBuilder.build());
76
+ should_1.default.equal(tx.sender, testData.addresses.validAddresses[0]);
77
+ should_1.default.equal(tx.recipients[0].address, testData.nftRecipients[0].address);
78
+ should_1.default.equal(tx.recipients[0].amount, testData.nftRecipients[0].amount);
79
+ should_1.default.equal(tx.gas, 21000);
80
+ should_1.default.equal(tx.getFee(), '315411764705882352');
81
+ should_1.default.equal(tx.nonce, '64248');
82
+ should_1.default.equal(tx.expiration, 64);
83
+ should_1.default.equal(tx.type, sdk_core_1.TransactionType.SendNFT);
84
+ tx.inputs.length.should.equal(1);
85
+ tx.inputs[0].should.deepEqual({
86
+ address: testData.addresses.validAddresses[0],
87
+ value: testData.nftRecipients[0].amount,
88
+ coin: 'tvet:sdt',
89
+ });
90
+ tx.outputs.length.should.equal(1);
91
+ tx.outputs[0].should.deepEqual({
92
+ address: testData.nftRecipients[0].address,
93
+ value: testData.nftRecipients[0].amount,
94
+ coin: 'tvet:sdt',
95
+ });
96
+ const rawTx = tx.toBroadcastFormat();
97
+ should_1.default.equal(txBuilder.isValidRawTransaction(rawTx), true);
98
+ rawTx.should.equal(testData.UNSIGNED_TRANSACTION_4);
99
+ });
100
+ it('should build a transaction from signed hex', async function () {
101
+ const txBuilder = factory.from(testData.SPONSORED_NFT_TRANSACTION);
102
+ txBuilder.getNonce().should.equal('64248');
103
+ const tx = (await txBuilder.build());
104
+ should_1.default.equal(tx.type, sdk_core_1.TransactionType.SendNFT);
105
+ tx.inputs.length.should.equal(1);
106
+ tx.inputs[0].should.deepEqual({
107
+ address: testData.addresses.validAddresses[3],
108
+ value: '1',
109
+ coin: 'tvet:sdt',
110
+ });
111
+ tx.outputs.length.should.equal(1);
112
+ tx.outputs[0].should.deepEqual({
113
+ address: testData.addresses.validAddresses[0],
114
+ value: '1',
115
+ coin: 'tvet:sdt',
116
+ });
117
+ should_1.default.equal(tx.id, '0xfdd0343df857268994a737494ea9c2ac22b5a1c46c57e89d44c3e7be0fc52d56');
118
+ should_1.default.equal(tx.gas, 21000);
119
+ should_1.default.equal(tx.getFee(), '315411764705882352');
120
+ should_1.default.equal(tx.nonce, '64248');
121
+ should_1.default.equal(tx.expiration, 64);
122
+ should_1.default.equal(tx.nftCollectionId, '0x887d9102f0003f1724d8fd5d4fe95a11572fcd77');
123
+ should_1.default.equal(tx.tokenId, '100131');
124
+ should_1.default.equal(tx.type, sdk_core_1.TransactionType.SendNFT);
125
+ const rawTx = tx.toBroadcastFormat();
126
+ should_1.default.equal(txBuilder.isValidRawTransaction(rawTx), true);
127
+ should_1.default.equal(rawTx, testData.SPONSORED_NFT_TRANSACTION);
128
+ });
129
+ it('should validate a valid signablePayload', async function () {
130
+ const transaction = new src_1.NFTTransaction(statics_1.coins.get('tvet:sdt'));
131
+ const txBuilder = factory.getNFTTransactionBuilder(transaction);
132
+ setupNFTTransactionBuilder(txBuilder, testData.addresses.validAddresses[3], testData.nftRecipients2, testData.NFT_CONTRACT_ADDRESS, '100131');
133
+ const tx = (await txBuilder.build());
134
+ const signablePayload = tx.signablePayload;
135
+ should_1.default.equal(signablePayload.toString('hex'), testData.VALID_NFT_SIGNABLE_PAYLOAD);
136
+ });
137
+ it('should build a unsigned tx and validate its toJson', async function () {
138
+ const transaction = new src_1.NFTTransaction(statics_1.coins.get('tvet:sdt'));
139
+ const txBuilder = factory.getNFTTransactionBuilder(transaction);
140
+ setupNFTTransactionBuilder(txBuilder, testData.addresses.validAddresses[3], testData.nftRecipients2, testData.NFT_CONTRACT_ADDRESS, '100131');
141
+ const tx = (await txBuilder.build());
142
+ const toJson = tx.toJson();
143
+ should_1.default.equal(toJson.sender, testData.addresses.validAddresses[3]);
144
+ should_1.default.deepEqual(toJson.recipients, [
145
+ {
146
+ address: testData.nftRecipients2[0].address,
147
+ amount: testData.nftRecipients2[0].amount,
148
+ },
149
+ ]);
150
+ should_1.default.equal(toJson.nonce, '64248');
151
+ should_1.default.equal(toJson.gas, 21000);
152
+ should_1.default.equal(toJson.gasPriceCoef, 128);
153
+ should_1.default.equal(toJson.expiration, 64);
154
+ should_1.default.equal(toJson.feePayer, testData.feePayer.address);
155
+ should_1.default.equal(toJson.nftCollectionId, testData.NFT_CONTRACT_ADDRESS);
156
+ should_1.default.equal(toJson.tokenId, '100131');
157
+ });
158
+ it('should build a signed tx and validate its toJson', async function () {
159
+ const txBuilder = factory.from(testData.SPONSORED_NFT_TRANSACTION);
160
+ const tx = (await txBuilder.build());
161
+ const toJson = tx.toJson();
162
+ should_1.default.equal(toJson.sender, testData.addresses.validAddresses[3]);
163
+ should_1.default.deepEqual(toJson.recipients, [
164
+ {
165
+ address: testData.nftRecipients2[0].address,
166
+ amount: testData.nftRecipients2[0].amount,
167
+ },
168
+ ]);
169
+ should_1.default.equal(toJson.nonce, '64248');
170
+ should_1.default.equal(toJson.gas, 21000);
171
+ should_1.default.equal(toJson.gasPriceCoef, 128);
172
+ should_1.default.equal(toJson.expiration, 64);
173
+ should_1.default.equal(toJson.nftCollectionId, testData.NFT_CONTRACT_ADDRESS);
174
+ should_1.default.equal(toJson.tokenId, '100131');
175
+ });
176
+ it('should build a unsigned tx then add sender sig and build again', async function () {
177
+ const transaction = new src_1.NFTTransaction(statics_1.coins.get('tvet:sdt'));
178
+ const txBuilder = factory.getNFTTransactionBuilder(transaction);
179
+ setupNFTTransactionBuilder(txBuilder, testData.addresses.validAddresses[3], testData.nftRecipients2, testData.NFT_CONTRACT_ADDRESS, '100131');
180
+ const tx = (await txBuilder.build());
181
+ const unsignedSerializedTx = tx.toBroadcastFormat();
182
+ const builder1 = factory.from(unsignedSerializedTx);
183
+ builder1.addSenderSignature(Buffer.from(testData.senderSig3, 'hex'));
184
+ const senderSignedTx = await builder1.build();
185
+ const senderSignedSerializedTx = senderSignedTx.toBroadcastFormat();
186
+ should_1.default.equal(senderSignedSerializedTx, testData.senderSignedSerializedHex3);
187
+ const builder2 = factory.from(testData.senderSignedSerializedHex3);
188
+ builder2.addSenderSignature(Buffer.from(testData.senderSig3, 'hex'));
189
+ builder2.addFeePayerSignature(Buffer.from(testData.feePayerSig3, 'hex'));
190
+ const completelySignedTx = await builder2.build();
191
+ should_1.default.equal(completelySignedTx.toBroadcastFormat(), testData.completeSignedSerializedHex3);
192
+ should_1.default.equal(completelySignedTx.id, '0xfdd0343df857268994a737494ea9c2ac22b5a1c46c57e89d44c3e7be0fc52d56');
193
+ });
194
+ });
195
+ describe('Fail', () => {
196
+ it('should fail for invalid sender', async function () {
197
+ const transaction = new src_1.Transaction(statics_1.coins.get('tvet:sdt'));
198
+ const builder = factory.getNFTTransactionBuilder(transaction);
199
+ (0, should_1.default)(() => builder.sender('randomString')).throwError('Invalid address randomString');
200
+ });
201
+ it('should fail for invalid recipient', async function () {
202
+ const builder = factory.getNFTTransactionBuilder();
203
+ (0, should_1.default)(() => builder.recipients([testData.invalidRecipients[0]])).throwError('Invalid address randomString');
204
+ (0, should_1.default)(() => builder.recipients([testData.invalidRecipients[1]])).throwError('Value cannot be anything other than 1 for NFT transfer');
205
+ (0, should_1.default)(() => builder.recipients([testData.invalidRecipients[2]])).throwError('Invalid amount format');
206
+ (0, should_1.default)(() => builder.recipients([testData.invalidRecipients[3]])).throwError('Value cannot be anything other than 1 for NFT transfer');
207
+ });
208
+ it('should fail for invalid gas amount', async function () {
209
+ const builder = factory.getNFTTransactionBuilder();
210
+ (0, should_1.default)(() => builder.gas(-1)).throwError('Value cannot be less than zero');
211
+ });
212
+ it('should fail to build if NFT Collection ID is not set', async function () {
213
+ const transaction = new src_1.NFTTransaction(statics_1.coins.get('tvet:sdt'));
214
+ const txBuilder = factory.getNFTTransactionBuilder(transaction);
215
+ setupNFTTransactionBuilder(txBuilder, testData.addresses.validAddresses[0], testData.nftRecipients);
216
+ try {
217
+ await txBuilder.build();
218
+ }
219
+ catch (err) {
220
+ should_1.default.equal(err.message, 'NFT collection id is not set');
221
+ }
222
+ });
223
+ it('should fail to build if Token id is not set', async function () {
224
+ const transaction = new src_1.NFTTransaction(statics_1.coins.get('tvet:sdt'));
225
+ const txBuilder = factory.getNFTTransactionBuilder(transaction);
226
+ setupNFTTransactionBuilder(txBuilder, testData.addresses.validAddresses[0], testData.nftRecipients, testData.NFT_CONTRACT_ADDRESS);
227
+ try {
228
+ await txBuilder.build();
229
+ }
230
+ catch (err) {
231
+ should_1.default.equal(err.message, 'Token id is not set');
232
+ }
233
+ });
234
+ it('should fail on setting invalid contract address', async function () {
235
+ const transaction = new src_1.NFTTransaction(statics_1.coins.get('tvet:vtho'));
236
+ const txBuilder = factory.getNFTTransactionBuilder(transaction);
237
+ setupNFTTransactionBuilder(txBuilder, testData.addresses.validAddresses[0], testData.nftRecipients, undefined, '100131');
238
+ (0, should_1.default)(() => txBuilder.nftCollectionId('InvalidTokenAddress')).throwError('Invalid nftCollectionId, must be a valid contract address');
239
+ });
240
+ });
241
+ });
242
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmZ0VHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC90cmFuc2FjdGlvbkJ1aWxkZXIvbmZ0VHJhbnNhY3Rpb25CdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLGlEQUE0QztBQUM1QyxtREFBdUQ7QUFDdkQsbUNBQTBHO0FBQzFHLDJEQUE2QztBQUU3QyxRQUFRLENBQUMsdUJBQXVCLEVBQUUsR0FBRyxFQUFFO0lBQ3JDLE1BQU0sT0FBTyxHQUFHLElBQUksK0JBQXlCLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBRXJFOzs7Ozs7O09BT0c7SUFDSCxTQUFTLDBCQUEwQixDQUNqQyxTQUFnQyxFQUNoQyxhQUFxQixFQUNyQixVQUFpRCxFQUNqRCxlQUF3QixFQUN4QixPQUFnQjtRQUVoQixTQUFTLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2hDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6QixTQUFTLENBQUMsUUFBUSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDekMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6QixTQUFTLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVCLElBQUksZUFBZSxFQUFFLENBQUM7WUFDcEIsU0FBUyxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUM3QyxDQUFDO1FBQ0QsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLFNBQVMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0IsQ0FBQztRQUNELFNBQVMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDakMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELFFBQVEsQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFO1FBQ3ZCLEVBQUUsQ0FBQyx5Q0FBeUMsRUFBRSxLQUFLO1lBQ2pELE1BQU0sV0FBVyxHQUFHLElBQUksb0JBQWMsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7WUFDOUQsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLHdCQUF3QixDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2hFLDBCQUEwQixDQUN4QixTQUFTLEVBQ1QsUUFBUSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQ3BDLFFBQVEsQ0FBQyxhQUFhLEVBQ3RCLFFBQVEsQ0FBQyxvQkFBb0IsRUFDN0IsUUFBUSxDQUNULENBQUM7WUFDRixNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU0sU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFtQixDQUFDO1lBQ3ZELGdCQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5RCxnQkFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzFFLGdCQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDeEUsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM1QixnQkFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztZQUNoRCxnQkFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ2hDLGdCQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDaEMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSwwQkFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQy9DLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO2dCQUM1QixPQUFPLEVBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO2dCQUM3QyxLQUFLLEVBQUUsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNO2dCQUN2QyxJQUFJLEVBQUUsVUFBVTthQUNqQixDQUFDLENBQUM7WUFDSCxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2xDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztnQkFDN0IsT0FBTyxFQUFFLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTztnQkFDMUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTTtnQkFDdkMsSUFBSSxFQUFFLFVBQVU7YUFDakIsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDckMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzNELEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ3RELENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDRDQUE0QyxFQUFFLEtBQUs7WUFDcEQsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMseUJBQXlCLENBQUMsQ0FBQztZQUNuRSxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUUzQyxNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU0sU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFtQixDQUFDO1lBQ3ZELGdCQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsMEJBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMvQyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztnQkFDNUIsT0FBTyxFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztnQkFDN0MsS0FBSyxFQUFFLEdBQUc7Z0JBQ1YsSUFBSSxFQUFFLFVBQVU7YUFDakIsQ0FBQyxDQUFDO1lBQ0gsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7Z0JBQzdCLE9BQU8sRUFBRSxRQUFRLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7Z0JBQzdDLEtBQUssRUFBRSxHQUFHO2dCQUNWLElBQUksRUFBRSxVQUFVO2FBQ2pCLENBQUMsQ0FBQztZQUNILGdCQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsb0VBQW9FLENBQUMsQ0FBQztZQUMxRixnQkFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzVCLGdCQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO1lBQ2hELGdCQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDaEMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNoQyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsZUFBZSxFQUFFLDRDQUE0QyxDQUFDLENBQUM7WUFDL0UsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztZQUNuQyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLDBCQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDL0MsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDckMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzNELGdCQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUMxRCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyx5Q0FBeUMsRUFBRSxLQUFLO1lBQ2pELE1BQU0sV0FBVyxHQUFHLElBQUksb0JBQWMsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7WUFDOUQsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLHdCQUF3QixDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2hFLDBCQUEwQixDQUN4QixTQUFTLEVBQ1QsUUFBUSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQ3BDLFFBQVEsQ0FBQyxjQUFjLEVBQ3ZCLFFBQVEsQ0FBQyxvQkFBb0IsRUFDN0IsUUFBUSxDQUNULENBQUM7WUFDRixNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU0sU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFnQixDQUFDO1lBQ3BELE1BQU0sZUFBZSxHQUFHLEVBQUUsQ0FBQyxlQUFlLENBQUM7WUFDM0MsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxRQUFRLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUNyRixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxvREFBb0QsRUFBRSxLQUFLO1lBQzVELE1BQU0sV0FBVyxHQUFHLElBQUksb0JBQWMsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7WUFDOUQsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLHdCQUF3QixDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2hFLDBCQUEwQixDQUN4QixTQUFTLEVBQ1QsUUFBUSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQ3BDLFFBQVEsQ0FBQyxjQUFjLEVBQ3ZCLFFBQVEsQ0FBQyxvQkFBb0IsRUFDN0IsUUFBUSxDQUNULENBQUM7WUFDRixNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU0sU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFnQixDQUFDO1lBQ3BELE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMzQixnQkFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbEUsZ0JBQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRTtnQkFDbEM7b0JBQ0UsT0FBTyxFQUFFLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTztvQkFDM0MsTUFBTSxFQUFFLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTTtpQkFDMUM7YUFDRixDQUFDLENBQUM7WUFDSCxnQkFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3BDLGdCQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDaEMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxHQUFHLENBQUMsQ0FBQztZQUN2QyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3BDLGdCQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN6RCxnQkFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBQ3BFLGdCQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDekMsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsa0RBQWtELEVBQUUsS0FBSztZQUMxRCxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1lBQ25FLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTSxTQUFTLENBQUMsS0FBSyxFQUFFLENBQW1CLENBQUM7WUFDdkQsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzNCLGdCQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsRSxnQkFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFO2dCQUNsQztvQkFDRSxPQUFPLEVBQUUsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPO29CQUMzQyxNQUFNLEVBQUUsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNO2lCQUMxQzthQUNGLENBQUMsQ0FBQztZQUNILGdCQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDcEMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNoQyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZDLGdCQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDcEMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRSxRQUFRLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUNwRSxnQkFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3pDLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLGdFQUFnRSxFQUFFLEtBQUs7WUFDeEUsTUFBTSxXQUFXLEdBQUcsSUFBSSxvQkFBYyxDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztZQUM5RCxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsd0JBQXdCLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDaEUsMEJBQTBCLENBQ3hCLFNBQVMsRUFDVCxRQUFRLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFDcEMsUUFBUSxDQUFDLGNBQWMsRUFDdkIsUUFBUSxDQUFDLG9CQUFvQixFQUM3QixRQUFRLENBQ1QsQ0FBQztZQUNGLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTSxTQUFTLENBQUMsS0FBSyxFQUFFLENBQWdCLENBQUM7WUFDcEQsTUFBTSxvQkFBb0IsR0FBRyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUNwRCxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7WUFDcEQsUUFBUSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3JFLE1BQU0sY0FBYyxHQUFHLE1BQU0sUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzlDLE1BQU0sd0JBQXdCLEdBQUcsY0FBYyxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDcEUsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsd0JBQXdCLEVBQUUsUUFBUSxDQUFDLDBCQUEwQixDQUFDLENBQUM7WUFFNUUsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsMEJBQTBCLENBQUMsQ0FBQztZQUNuRSxRQUFRLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDckUsUUFBUSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3pFLE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDbEQsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxRQUFRLENBQUMsNEJBQTRCLENBQUMsQ0FBQztZQUM1RixnQkFBTSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLEVBQUUsb0VBQW9FLENBQUMsQ0FBQztRQUM1RyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUU7UUFDcEIsRUFBRSxDQUFDLGdDQUFnQyxFQUFFLEtBQUs7WUFDeEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxpQkFBVyxDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztZQUMzRCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsd0JBQXdCLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDOUQsSUFBQSxnQkFBTSxFQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsOEJBQThCLENBQUMsQ0FBQztRQUMxRixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxtQ0FBbUMsRUFBRSxLQUFLO1lBQzNDLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBQ25ELElBQUEsZ0JBQU0sRUFBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1lBQzdHLElBQUEsZ0JBQU0sRUFBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FDMUUsd0RBQXdELENBQ3pELENBQUM7WUFDRixJQUFBLGdCQUFNLEVBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsdUJBQXVCLENBQUMsQ0FBQztZQUN0RyxJQUFBLGdCQUFNLEVBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQzFFLHdEQUF3RCxDQUN6RCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsb0NBQW9DLEVBQUUsS0FBSztZQUM1QyxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztZQUNuRCxJQUFBLGdCQUFNLEVBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLGdDQUFnQyxDQUFDLENBQUM7UUFDN0UsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsc0RBQXNELEVBQUUsS0FBSztZQUM5RCxNQUFNLFdBQVcsR0FBRyxJQUFJLG9CQUFjLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1lBQzlELE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNoRSwwQkFBMEIsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ3BHLElBQUksQ0FBQztnQkFDSCxNQUFNLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUMxQixDQUFDO1lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztnQkFDYixnQkFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLDhCQUE4QixDQUFDLENBQUM7WUFDNUQsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDZDQUE2QyxFQUFFLEtBQUs7WUFDckQsTUFBTSxXQUFXLEdBQUcsSUFBSSxvQkFBYyxDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztZQUM5RCxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsd0JBQXdCLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDaEUsMEJBQTBCLENBQ3hCLFNBQVMsRUFDVCxRQUFRLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFDcEMsUUFBUSxDQUFDLGFBQWEsRUFDdEIsUUFBUSxDQUFDLG9CQUFvQixDQUM5QixDQUFDO1lBQ0YsSUFBSSxDQUFDO2dCQUNILE1BQU0sU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzFCLENBQUM7WUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO2dCQUNiLGdCQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUscUJBQXFCLENBQUMsQ0FBQztZQUNuRCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsaURBQWlELEVBQUUsS0FBSztZQUN6RCxNQUFNLFdBQVcsR0FBRyxJQUFJLG9CQUFjLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQy9ELE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNoRSwwQkFBMEIsQ0FDeEIsU0FBUyxFQUNULFFBQVEsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUNwQyxRQUFRLENBQUMsYUFBYSxFQUN0QixTQUFTLEVBQ1QsUUFBUSxDQUNULENBQUM7WUFDRixJQUFBLGdCQUFNLEVBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUN2RSwyREFBMkQsQ0FDNUQsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzaG91bGQgZnJvbSAnc2hvdWxkJztcbmltcG9ydCB7IGNvaW5zIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LCBUcmFuc2FjdGlvbiwgTkZUVHJhbnNhY3Rpb24sIE5GVFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4uLy4uL3NyYyc7XG5pbXBvcnQgKiBhcyB0ZXN0RGF0YSBmcm9tICcuLi9yZXNvdXJjZXMvdmV0JztcblxuZGVzY3JpYmUoJ25mdFRyYW5zYWN0aW9uQnVpbGRlcicsICgpID0+IHtcbiAgY29uc3QgZmFjdG9yeSA9IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5zLmdldCgndHZldDpzZHQnKSk7XG5cbiAgLyoqXG4gICAqIFNldHMgdXAgYW4gTkZUIHRyYW5zYWN0aW9uIGJ1aWxkZXIgd2l0aCBjb21tb24gcGFyYW1ldGVycyBmb3IgdGVzdGluZy5cbiAgICogQHBhcmFtIHR4QnVpbGRlciAtIFRoZSB0cmFuc2FjdGlvbiBidWlsZGVyIHRvIHNldCB1cFxuICAgKiBAcGFyYW0gc2VuZGVyQWRkcmVzcyAtIFRoZSBzZW5kZXIncyBhZGRyZXNzXG4gICAqIEBwYXJhbSByZWNpcGllbnRzIC0gVGhlIHJlY2lwaWVudHMgZm9yIHRoZSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gbmZ0Q29sbGVjdGlvbklkIC0gT3B0aW9uYWwgTkZUIGNvbGxlY3Rpb24gSURcbiAgICogQHBhcmFtIHRva2VuSWQgLSBPcHRpb25hbCB0b2tlbiBJRFxuICAgKi9cbiAgZnVuY3Rpb24gc2V0dXBORlRUcmFuc2FjdGlvbkJ1aWxkZXIoXG4gICAgdHhCdWlsZGVyOiBORlRUcmFuc2FjdGlvbkJ1aWxkZXIsXG4gICAgc2VuZGVyQWRkcmVzczogc3RyaW5nLFxuICAgIHJlY2lwaWVudHM6IHsgYWRkcmVzczogc3RyaW5nOyBhbW91bnQ6IHN0cmluZyB9W10sXG4gICAgbmZ0Q29sbGVjdGlvbklkPzogc3RyaW5nLFxuICAgIHRva2VuSWQ/OiBzdHJpbmdcbiAgKSB7XG4gICAgdHhCdWlsZGVyLnNlbmRlcihzZW5kZXJBZGRyZXNzKTtcbiAgICB0eEJ1aWxkZXIuZ2FzKDIxMDAwKTtcbiAgICB0eEJ1aWxkZXIubm9uY2UoJzY0MjQ4Jyk7XG4gICAgdHhCdWlsZGVyLmJsb2NrUmVmKCcweDAxNGVhZDE0MGU3N2JiYzEnKTtcbiAgICB0eEJ1aWxkZXIuZXhwaXJhdGlvbig2NCk7XG4gICAgdHhCdWlsZGVyLmdhc1ByaWNlQ29lZigxMjgpO1xuICAgIGlmIChuZnRDb2xsZWN0aW9uSWQpIHtcbiAgICAgIHR4QnVpbGRlci5uZnRDb2xsZWN0aW9uSWQobmZ0Q29sbGVjdGlvbklkKTtcbiAgICB9XG4gICAgaWYgKHRva2VuSWQpIHtcbiAgICAgIHR4QnVpbGRlci50b2tlbklkKHRva2VuSWQpO1xuICAgIH1cbiAgICB0eEJ1aWxkZXIucmVjaXBpZW50cyhyZWNpcGllbnRzKTtcbiAgICB0eEJ1aWxkZXIuYWRkRmVlUGF5ZXJBZGRyZXNzKHRlc3REYXRhLmZlZVBheWVyLmFkZHJlc3MpO1xuICB9XG5cbiAgZGVzY3JpYmUoJ1N1Y2NlZWQnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBidWlsZCBhIG5mdCB0cmFuc2ZlciB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gbmV3IE5GVFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndHZldDpzZHQnKSk7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldE5GVFRyYW5zYWN0aW9uQnVpbGRlcih0cmFuc2FjdGlvbik7XG4gICAgICBzZXR1cE5GVFRyYW5zYWN0aW9uQnVpbGRlcihcbiAgICAgICAgdHhCdWlsZGVyLFxuICAgICAgICB0ZXN0RGF0YS5hZGRyZXNzZXMudmFsaWRBZGRyZXNzZXNbMF0sXG4gICAgICAgIHRlc3REYXRhLm5mdFJlY2lwaWVudHMsXG4gICAgICAgIHRlc3REYXRhLk5GVF9DT05UUkFDVF9BRERSRVNTLFxuICAgICAgICAnMTAwMTMxJ1xuICAgICAgKTtcbiAgICAgIGNvbnN0IHR4ID0gKGF3YWl0IHR4QnVpbGRlci5idWlsZCgpKSBhcyBORlRUcmFuc2FjdGlvbjtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC5zZW5kZXIsIHRlc3REYXRhLmFkZHJlc3Nlcy52YWxpZEFkZHJlc3Nlc1swXSk7XG4gICAgICBzaG91bGQuZXF1YWwodHgucmVjaXBpZW50c1swXS5hZGRyZXNzLCB0ZXN0RGF0YS5uZnRSZWNpcGllbnRzWzBdLmFkZHJlc3MpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4LnJlY2lwaWVudHNbMF0uYW1vdW50LCB0ZXN0RGF0YS5uZnRSZWNpcGllbnRzWzBdLmFtb3VudCk7XG4gICAgICBzaG91bGQuZXF1YWwodHguZ2FzLCAyMTAwMCk7XG4gICAgICBzaG91bGQuZXF1YWwodHguZ2V0RmVlKCksICczMTU0MTE3NjQ3MDU4ODIzNTInKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC5ub25jZSwgJzY0MjQ4Jyk7XG4gICAgICBzaG91bGQuZXF1YWwodHguZXhwaXJhdGlvbiwgNjQpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4LnR5cGUsIFRyYW5zYWN0aW9uVHlwZS5TZW5kTkZUKTtcbiAgICAgIHR4LmlucHV0cy5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgdHguaW5wdXRzWzBdLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICBhZGRyZXNzOiB0ZXN0RGF0YS5hZGRyZXNzZXMudmFsaWRBZGRyZXNzZXNbMF0sXG4gICAgICAgIHZhbHVlOiB0ZXN0RGF0YS5uZnRSZWNpcGllbnRzWzBdLmFtb3VudCxcbiAgICAgICAgY29pbjogJ3R2ZXQ6c2R0JyxcbiAgICAgIH0pO1xuICAgICAgdHgub3V0cHV0cy5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgdHgub3V0cHV0c1swXS5zaG91bGQuZGVlcEVxdWFsKHtcbiAgICAgICAgYWRkcmVzczogdGVzdERhdGEubmZ0UmVjaXBpZW50c1swXS5hZGRyZXNzLFxuICAgICAgICB2YWx1ZTogdGVzdERhdGEubmZ0UmVjaXBpZW50c1swXS5hbW91bnQsXG4gICAgICAgIGNvaW46ICd0dmV0OnNkdCcsXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHJhd1R4ID0gdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eEJ1aWxkZXIuaXNWYWxpZFJhd1RyYW5zYWN0aW9uKHJhd1R4KSwgdHJ1ZSk7XG4gICAgICByYXdUeC5zaG91bGQuZXF1YWwodGVzdERhdGEuVU5TSUdORURfVFJBTlNBQ1RJT05fNCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGJ1aWxkIGEgdHJhbnNhY3Rpb24gZnJvbSBzaWduZWQgaGV4JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5mcm9tKHRlc3REYXRhLlNQT05TT1JFRF9ORlRfVFJBTlNBQ1RJT04pO1xuICAgICAgdHhCdWlsZGVyLmdldE5vbmNlKCkuc2hvdWxkLmVxdWFsKCc2NDI0OCcpO1xuXG4gICAgICBjb25zdCB0eCA9IChhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKSkgYXMgTkZUVHJhbnNhY3Rpb247XG4gICAgICBzaG91bGQuZXF1YWwodHgudHlwZSwgVHJhbnNhY3Rpb25UeXBlLlNlbmRORlQpO1xuICAgICAgdHguaW5wdXRzLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICB0eC5pbnB1dHNbMF0uc2hvdWxkLmRlZXBFcXVhbCh7XG4gICAgICAgIGFkZHJlc3M6IHRlc3REYXRhLmFkZHJlc3Nlcy52YWxpZEFkZHJlc3Nlc1szXSxcbiAgICAgICAgdmFsdWU6ICcxJyxcbiAgICAgICAgY29pbjogJ3R2ZXQ6c2R0JyxcbiAgICAgIH0pO1xuICAgICAgdHgub3V0cHV0cy5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgdHgub3V0cHV0c1swXS5zaG91bGQuZGVlcEVxdWFsKHtcbiAgICAgICAgYWRkcmVzczogdGVzdERhdGEuYWRkcmVzc2VzLnZhbGlkQWRkcmVzc2VzWzBdLFxuICAgICAgICB2YWx1ZTogJzEnLFxuICAgICAgICBjb2luOiAndHZldDpzZHQnLFxuICAgICAgfSk7XG4gICAgICBzaG91bGQuZXF1YWwodHguaWQsICcweGZkZDAzNDNkZjg1NzI2ODk5NGE3Mzc0OTRlYTljMmFjMjJiNWExYzQ2YzU3ZTg5ZDQ0YzNlN2JlMGZjNTJkNTYnKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC5nYXMsIDIxMDAwKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC5nZXRGZWUoKSwgJzMxNTQxMTc2NDcwNTg4MjM1MicpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4Lm5vbmNlLCAnNjQyNDgnKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC5leHBpcmF0aW9uLCA2NCk7XG4gICAgICBzaG91bGQuZXF1YWwodHgubmZ0Q29sbGVjdGlvbklkLCAnMHg4ODdkOTEwMmYwMDAzZjE3MjRkOGZkNWQ0ZmU5NWExMTU3MmZjZDc3Jyk7XG4gICAgICBzaG91bGQuZXF1YWwodHgudG9rZW5JZCwgJzEwMDEzMScpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4LnR5cGUsIFRyYW5zYWN0aW9uVHlwZS5TZW5kTkZUKTtcbiAgICAgIGNvbnN0IHJhd1R4ID0gdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eEJ1aWxkZXIuaXNWYWxpZFJhd1RyYW5zYWN0aW9uKHJhd1R4KSwgdHJ1ZSk7XG4gICAgICBzaG91bGQuZXF1YWwocmF3VHgsIHRlc3REYXRhLlNQT05TT1JFRF9ORlRfVFJBTlNBQ1RJT04pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBhIHZhbGlkIHNpZ25hYmxlUGF5bG9hZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gbmV3IE5GVFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndHZldDpzZHQnKSk7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldE5GVFRyYW5zYWN0aW9uQnVpbGRlcih0cmFuc2FjdGlvbik7XG4gICAgICBzZXR1cE5GVFRyYW5zYWN0aW9uQnVpbGRlcihcbiAgICAgICAgdHhCdWlsZGVyLFxuICAgICAgICB0ZXN0RGF0YS5hZGRyZXNzZXMudmFsaWRBZGRyZXNzZXNbM10sXG4gICAgICAgIHRlc3REYXRhLm5mdFJlY2lwaWVudHMyLFxuICAgICAgICB0ZXN0RGF0YS5ORlRfQ09OVFJBQ1RfQUREUkVTUyxcbiAgICAgICAgJzEwMDEzMSdcbiAgICAgICk7XG4gICAgICBjb25zdCB0eCA9IChhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKSkgYXMgVHJhbnNhY3Rpb247XG4gICAgICBjb25zdCBzaWduYWJsZVBheWxvYWQgPSB0eC5zaWduYWJsZVBheWxvYWQ7XG4gICAgICBzaG91bGQuZXF1YWwoc2lnbmFibGVQYXlsb2FkLnRvU3RyaW5nKCdoZXgnKSwgdGVzdERhdGEuVkFMSURfTkZUX1NJR05BQkxFX1BBWUxPQUQpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBidWlsZCBhIHVuc2lnbmVkIHR4IGFuZCB2YWxpZGF0ZSBpdHMgdG9Kc29uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHJhbnNhY3Rpb24gPSBuZXcgTkZUVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0dmV0OnNkdCcpKTtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0TkZUVHJhbnNhY3Rpb25CdWlsZGVyKHRyYW5zYWN0aW9uKTtcbiAgICAgIHNldHVwTkZUVHJhbnNhY3Rpb25CdWlsZGVyKFxuICAgICAgICB0eEJ1aWxkZXIsXG4gICAgICAgIHRlc3REYXRhLmFkZHJlc3Nlcy52YWxpZEFkZHJlc3Nlc1szXSxcbiAgICAgICAgdGVzdERhdGEubmZ0UmVjaXBpZW50czIsXG4gICAgICAgIHRlc3REYXRhLk5GVF9DT05UUkFDVF9BRERSRVNTLFxuICAgICAgICAnMTAwMTMxJ1xuICAgICAgKTtcbiAgICAgIGNvbnN0IHR4ID0gKGF3YWl0IHR4QnVpbGRlci5idWlsZCgpKSBhcyBUcmFuc2FjdGlvbjtcbiAgICAgIGNvbnN0IHRvSnNvbiA9IHR4LnRvSnNvbigpO1xuICAgICAgc2hvdWxkLmVxdWFsKHRvSnNvbi5zZW5kZXIsIHRlc3REYXRhLmFkZHJlc3Nlcy52YWxpZEFkZHJlc3Nlc1szXSk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHRvSnNvbi5yZWNpcGllbnRzLCBbXG4gICAgICAgIHtcbiAgICAgICAgICBhZGRyZXNzOiB0ZXN0RGF0YS5uZnRSZWNpcGllbnRzMlswXS5hZGRyZXNzLFxuICAgICAgICAgIGFtb3VudDogdGVzdERhdGEubmZ0UmVjaXBpZW50czJbMF0uYW1vdW50LFxuICAgICAgICB9LFxuICAgICAgXSk7XG4gICAgICBzaG91bGQuZXF1YWwodG9Kc29uLm5vbmNlLCAnNjQyNDgnKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0b0pzb24uZ2FzLCAyMTAwMCk7XG4gICAgICBzaG91bGQuZXF1YWwodG9Kc29uLmdhc1ByaWNlQ29lZiwgMTI4KTtcbiAgICAgIHNob3VsZC5lcXVhbCh0b0pzb24uZXhwaXJhdGlvbiwgNjQpO1xuICAgICAgc2hvdWxkLmVxdWFsKHRvSnNvbi5mZWVQYXllciwgdGVzdERhdGEuZmVlUGF5ZXIuYWRkcmVzcyk7XG4gICAgICBzaG91bGQuZXF1YWwodG9Kc29uLm5mdENvbGxlY3Rpb25JZCwgdGVzdERhdGEuTkZUX0NPTlRSQUNUX0FERFJFU1MpO1xuICAgICAgc2hvdWxkLmVxdWFsKHRvSnNvbi50b2tlbklkLCAnMTAwMTMxJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGJ1aWxkIGEgc2lnbmVkIHR4IGFuZCB2YWxpZGF0ZSBpdHMgdG9Kc29uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5mcm9tKHRlc3REYXRhLlNQT05TT1JFRF9ORlRfVFJBTlNBQ1RJT04pO1xuICAgICAgY29uc3QgdHggPSAoYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCkpIGFzIE5GVFRyYW5zYWN0aW9uO1xuICAgICAgY29uc3QgdG9Kc29uID0gdHgudG9Kc29uKCk7XG4gICAgICBzaG91bGQuZXF1YWwodG9Kc29uLnNlbmRlciwgdGVzdERhdGEuYWRkcmVzc2VzLnZhbGlkQWRkcmVzc2VzWzNdKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodG9Kc29uLnJlY2lwaWVudHMsIFtcbiAgICAgICAge1xuICAgICAgICAgIGFkZHJlc3M6IHRlc3REYXRhLm5mdFJlY2lwaWVudHMyWzBdLmFkZHJlc3MsXG4gICAgICAgICAgYW1vdW50OiB0ZXN0RGF0YS5uZnRSZWNpcGllbnRzMlswXS5hbW91bnQsXG4gICAgICAgIH0sXG4gICAgICBdKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0b0pzb24ubm9uY2UsICc2NDI0OCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKHRvSnNvbi5nYXMsIDIxMDAwKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0b0pzb24uZ2FzUHJpY2VDb2VmLCAxMjgpO1xuICAgICAgc2hvdWxkLmVxdWFsKHRvSnNvbi5leHBpcmF0aW9uLCA2NCk7XG4gICAgICBzaG91bGQuZXF1YWwodG9Kc29uLm5mdENvbGxlY3Rpb25JZCwgdGVzdERhdGEuTkZUX0NPTlRSQUNUX0FERFJFU1MpO1xuICAgICAgc2hvdWxkLmVxdWFsKHRvSnNvbi50b2tlbklkLCAnMTAwMTMxJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGJ1aWxkIGEgdW5zaWduZWQgdHggdGhlbiBhZGQgc2VuZGVyIHNpZyBhbmQgYnVpbGQgYWdhaW4nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0cmFuc2FjdGlvbiA9IG5ldyBORlRUcmFuc2FjdGlvbihjb2lucy5nZXQoJ3R2ZXQ6c2R0JykpO1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRORlRUcmFuc2FjdGlvbkJ1aWxkZXIodHJhbnNhY3Rpb24pO1xuICAgICAgc2V0dXBORlRUcmFuc2FjdGlvbkJ1aWxkZXIoXG4gICAgICAgIHR4QnVpbGRlcixcbiAgICAgICAgdGVzdERhdGEuYWRkcmVzc2VzLnZhbGlkQWRkcmVzc2VzWzNdLFxuICAgICAgICB0ZXN0RGF0YS5uZnRSZWNpcGllbnRzMixcbiAgICAgICAgdGVzdERhdGEuTkZUX0NPTlRSQUNUX0FERFJFU1MsXG4gICAgICAgICcxMDAxMzEnXG4gICAgICApO1xuICAgICAgY29uc3QgdHggPSAoYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCkpIGFzIFRyYW5zYWN0aW9uO1xuICAgICAgY29uc3QgdW5zaWduZWRTZXJpYWxpemVkVHggPSB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgICAgY29uc3QgYnVpbGRlcjEgPSBmYWN0b3J5LmZyb20odW5zaWduZWRTZXJpYWxpemVkVHgpO1xuICAgICAgYnVpbGRlcjEuYWRkU2VuZGVyU2lnbmF0dXJlKEJ1ZmZlci5mcm9tKHRlc3REYXRhLnNlbmRlclNpZzMsICdoZXgnKSk7XG4gICAgICBjb25zdCBzZW5kZXJTaWduZWRUeCA9IGF3YWl0IGJ1aWxkZXIxLmJ1aWxkKCk7XG4gICAgICBjb25zdCBzZW5kZXJTaWduZWRTZXJpYWxpemVkVHggPSBzZW5kZXJTaWduZWRUeC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgICAgc2hvdWxkLmVxdWFsKHNlbmRlclNpZ25lZFNlcmlhbGl6ZWRUeCwgdGVzdERhdGEuc2VuZGVyU2lnbmVkU2VyaWFsaXplZEhleDMpO1xuXG4gICAgICBjb25zdCBidWlsZGVyMiA9IGZhY3RvcnkuZnJvbSh0ZXN0RGF0YS5zZW5kZXJTaWduZWRTZXJpYWxpemVkSGV4Myk7XG4gICAgICBidWlsZGVyMi5hZGRTZW5kZXJTaWduYXR1cmUoQnVmZmVyLmZyb20odGVzdERhdGEuc2VuZGVyU2lnMywgJ2hleCcpKTtcbiAgICAgIGJ1aWxkZXIyLmFkZEZlZVBheWVyU2lnbmF0dXJlKEJ1ZmZlci5mcm9tKHRlc3REYXRhLmZlZVBheWVyU2lnMywgJ2hleCcpKTtcbiAgICAgIGNvbnN0IGNvbXBsZXRlbHlTaWduZWRUeCA9IGF3YWl0IGJ1aWxkZXIyLmJ1aWxkKCk7XG4gICAgICBzaG91bGQuZXF1YWwoY29tcGxldGVseVNpZ25lZFR4LnRvQnJvYWRjYXN0Rm9ybWF0KCksIHRlc3REYXRhLmNvbXBsZXRlU2lnbmVkU2VyaWFsaXplZEhleDMpO1xuICAgICAgc2hvdWxkLmVxdWFsKGNvbXBsZXRlbHlTaWduZWRUeC5pZCwgJzB4ZmRkMDM0M2RmODU3MjY4OTk0YTczNzQ5NGVhOWMyYWMyMmI1YTFjNDZjNTdlODlkNDRjM2U3YmUwZmM1MmQ1NicpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnRmFpbCcsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGZhaWwgZm9yIGludmFsaWQgc2VuZGVyJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHJhbnNhY3Rpb24gPSBuZXcgVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0dmV0OnNkdCcpKTtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBmYWN0b3J5LmdldE5GVFRyYW5zYWN0aW9uQnVpbGRlcih0cmFuc2FjdGlvbik7XG4gICAgICBzaG91bGQoKCkgPT4gYnVpbGRlci5zZW5kZXIoJ3JhbmRvbVN0cmluZycpKS50aHJvd0Vycm9yKCdJbnZhbGlkIGFkZHJlc3MgcmFuZG9tU3RyaW5nJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgZm9yIGludmFsaWQgcmVjaXBpZW50JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYnVpbGRlciA9IGZhY3RvcnkuZ2V0TkZUVHJhbnNhY3Rpb25CdWlsZGVyKCk7XG4gICAgICBzaG91bGQoKCkgPT4gYnVpbGRlci5yZWNpcGllbnRzKFt0ZXN0RGF0YS5pbnZhbGlkUmVjaXBpZW50c1swXV0pKS50aHJvd0Vycm9yKCdJbnZhbGlkIGFkZHJlc3MgcmFuZG9tU3RyaW5nJyk7XG4gICAgICBzaG91bGQoKCkgPT4gYnVpbGRlci5yZWNpcGllbnRzKFt0ZXN0RGF0YS5pbnZhbGlkUmVjaXBpZW50c1sxXV0pKS50aHJvd0Vycm9yKFxuICAgICAgICAnVmFsdWUgY2Fubm90IGJlIGFueXRoaW5nIG90aGVyIHRoYW4gMSBmb3IgTkZUIHRyYW5zZmVyJ1xuICAgICAgKTtcbiAgICAgIHNob3VsZCgoKSA9PiBidWlsZGVyLnJlY2lwaWVudHMoW3Rlc3REYXRhLmludmFsaWRSZWNpcGllbnRzWzJdXSkpLnRocm93RXJyb3IoJ0ludmFsaWQgYW1vdW50IGZvcm1hdCcpO1xuICAgICAgc2hvdWxkKCgpID0+IGJ1aWxkZXIucmVjaXBpZW50cyhbdGVzdERhdGEuaW52YWxpZFJlY2lwaWVudHNbM11dKSkudGhyb3dFcnJvcihcbiAgICAgICAgJ1ZhbHVlIGNhbm5vdCBiZSBhbnl0aGluZyBvdGhlciB0aGFuIDEgZm9yIE5GVCB0cmFuc2ZlcidcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgZm9yIGludmFsaWQgZ2FzIGFtb3VudCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBmYWN0b3J5LmdldE5GVFRyYW5zYWN0aW9uQnVpbGRlcigpO1xuICAgICAgc2hvdWxkKCgpID0+IGJ1aWxkZXIuZ2FzKC0xKSkudGhyb3dFcnJvcignVmFsdWUgY2Fubm90IGJlIGxlc3MgdGhhbiB6ZXJvJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgdG8gYnVpbGQgaWYgTkZUIENvbGxlY3Rpb24gSUQgaXMgbm90IHNldCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gbmV3IE5GVFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndHZldDpzZHQnKSk7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldE5GVFRyYW5zYWN0aW9uQnVpbGRlcih0cmFuc2FjdGlvbik7XG4gICAgICBzZXR1cE5GVFRyYW5zYWN0aW9uQnVpbGRlcih0eEJ1aWxkZXIsIHRlc3REYXRhLmFkZHJlc3Nlcy52YWxpZEFkZHJlc3Nlc1swXSwgdGVzdERhdGEubmZ0UmVjaXBpZW50cyk7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBzaG91bGQuZXF1YWwoZXJyLm1lc3NhZ2UsICdORlQgY29sbGVjdGlvbiBpZCBpcyBub3Qgc2V0Jyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgdG8gYnVpbGQgaWYgVG9rZW4gaWQgaXMgbm90IHNldCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gbmV3IE5GVFRyYW5zYWN0aW9uKGNvaW5zLmdldCgndHZldDpzZHQnKSk7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldE5GVFRyYW5zYWN0aW9uQnVpbGRlcih0cmFuc2FjdGlvbik7XG4gICAgICBzZXR1cE5GVFRyYW5zYWN0aW9uQnVpbGRlcihcbiAgICAgICAgdHhCdWlsZGVyLFxuICAgICAgICB0ZXN0RGF0YS5hZGRyZXNzZXMudmFsaWRBZGRyZXNzZXNbMF0sXG4gICAgICAgIHRlc3REYXRhLm5mdFJlY2lwaWVudHMsXG4gICAgICAgIHRlc3REYXRhLk5GVF9DT05UUkFDVF9BRERSRVNTXG4gICAgICApO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgc2hvdWxkLmVxdWFsKGVyci5tZXNzYWdlLCAnVG9rZW4gaWQgaXMgbm90IHNldCcpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIG9uIHNldHRpbmcgaW52YWxpZCBjb250cmFjdCBhZGRyZXNzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHJhbnNhY3Rpb24gPSBuZXcgTkZUVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0dmV0OnZ0aG8nKSk7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldE5GVFRyYW5zYWN0aW9uQnVpbGRlcih0cmFuc2FjdGlvbik7XG4gICAgICBzZXR1cE5GVFRyYW5zYWN0aW9uQnVpbGRlcihcbiAgICAgICAgdHhCdWlsZGVyLFxuICAgICAgICB0ZXN0RGF0YS5hZGRyZXNzZXMudmFsaWRBZGRyZXNzZXNbMF0sXG4gICAgICAgIHRlc3REYXRhLm5mdFJlY2lwaWVudHMsXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgJzEwMDEzMSdcbiAgICAgICk7XG4gICAgICBzaG91bGQoKCkgPT4gdHhCdWlsZGVyLm5mdENvbGxlY3Rpb25JZCgnSW52YWxpZFRva2VuQWRkcmVzcycpKS50aHJvd0Vycm9yKFxuICAgICAgICAnSW52YWxpZCBuZnRDb2xsZWN0aW9uSWQsIG11c3QgYmUgYSB2YWxpZCBjb250cmFjdCBhZGRyZXNzJ1xuICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=stakeClauseTransactionBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stakeClauseTransactionBuilder.d.ts","sourceRoot":"","sources":["../../../test/transactionBuilder/stakeClauseTransactionBuilder.ts"],"names":[],"mappings":""}
@@ -0,0 +1,247 @@
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 statics_1 = require("@bitgo-beta/statics");
40
+ const lib_1 = require("../../src/lib");
41
+ const should_1 = __importDefault(require("should"));
42
+ const constants_1 = require("../../src/lib/constants");
43
+ const ethereumjs_abi_1 = __importDefault(require("ethereumjs-abi"));
44
+ const testData = __importStar(require("../resources/vet"));
45
+ describe('VET Staking Transaction', function () {
46
+ const factory = new lib_1.TransactionBuilderFactory(statics_1.coins.get('tvet'));
47
+ const stakingContractAddress = constants_1.STARGATE_CONTRACT_ADDRESS_TESTNET;
48
+ const amountToStake = '10000000000000000000000'; // 10000 VET in wei
49
+ const levelId = 8; // Test level ID
50
+ // Helper function to create a basic transaction builder with common properties
51
+ const createBasicTxBuilder = () => {
52
+ const txBuilder = factory.getStakingActivateBuilder();
53
+ txBuilder.sender('0x9378c12BD7502A11F770a5C1F223c959B2805dA9');
54
+ txBuilder.chainTag(0x27); // Testnet chain tag
55
+ txBuilder.blockRef('0x0000000000000000');
56
+ txBuilder.expiration(64);
57
+ txBuilder.gas(100000);
58
+ txBuilder.gasPriceCoef(0);
59
+ txBuilder.nonce('12345');
60
+ return txBuilder;
61
+ };
62
+ it('should build a staking transaction', async function () {
63
+ const txBuilder = factory.getStakingActivateBuilder();
64
+ txBuilder.stakingContractAddress(stakingContractAddress);
65
+ txBuilder.amountToStake(amountToStake);
66
+ txBuilder.levelId(levelId);
67
+ txBuilder.sender('0x9378c12BD7502A11F770a5C1F223c959B2805dA9');
68
+ txBuilder.chainTag(0x27); // Testnet chain tag
69
+ txBuilder.blockRef('0x0000000000000000');
70
+ txBuilder.expiration(64);
71
+ txBuilder.gas(100000);
72
+ txBuilder.gasPriceCoef(0);
73
+ txBuilder.nonce('12345');
74
+ const tx = await txBuilder.build();
75
+ should_1.default.exist(tx);
76
+ tx.should.be.instanceof(lib_1.Transaction);
77
+ tx.should.be.instanceof(lib_1.StakeClauseTransaction);
78
+ const stakingTx = tx;
79
+ stakingTx.stakingContractAddress.should.equal(stakingContractAddress);
80
+ stakingTx.amountToStake.should.equal(amountToStake);
81
+ stakingTx.levelId.should.equal(levelId);
82
+ // Verify clauses
83
+ stakingTx.clauses.length.should.equal(1);
84
+ should_1.default.exist(stakingTx.clauses[0].to);
85
+ stakingTx.clauses[0].to?.should.equal(stakingContractAddress);
86
+ stakingTx.clauses[0].value.should.equal(amountToStake);
87
+ // Verify transaction data is correctly encoded using ethereumABI
88
+ should_1.default.exist(stakingTx.clauses[0].data);
89
+ const txData = stakingTx.clauses[0].data;
90
+ txData.should.startWith(constants_1.STAKE_CLAUSE_METHOD_ID);
91
+ // Verify the encoded data matches what we expect from ethereumABI
92
+ const methodName = 'stake';
93
+ const types = ['uint8'];
94
+ const params = [levelId];
95
+ const method = ethereumjs_abi_1.default.methodID(methodName, types);
96
+ const args = ethereumjs_abi_1.default.rawEncode(types, params);
97
+ const expectedData = '0x' + Buffer.concat([method, args]).toString('hex');
98
+ txData.should.equal(expectedData);
99
+ // Verify recipients
100
+ stakingTx.recipients.length.should.equal(1);
101
+ stakingTx.recipients[0].address.should.equal(stakingContractAddress);
102
+ stakingTx.recipients[0].amount.should.equal(amountToStake);
103
+ });
104
+ describe('Failure scenarios', function () {
105
+ it('should throw error when stakingContractAddress is missing', async function () {
106
+ const txBuilder = createBasicTxBuilder();
107
+ txBuilder.amountToStake(amountToStake);
108
+ txBuilder.levelId(levelId);
109
+ await txBuilder.build().should.be.rejectedWith('Staking contract address is required');
110
+ });
111
+ it('should throw error when levelId is missing', async function () {
112
+ const txBuilder = createBasicTxBuilder();
113
+ txBuilder.stakingContractAddress(stakingContractAddress);
114
+ txBuilder.amountToStake(amountToStake);
115
+ await txBuilder.build().should.be.rejectedWith('Level ID is required');
116
+ });
117
+ it('should throw error when amountToStake is missing', async function () {
118
+ const txBuilder = createBasicTxBuilder();
119
+ txBuilder.stakingContractAddress(stakingContractAddress);
120
+ txBuilder.levelId(levelId);
121
+ await txBuilder.build().should.be.rejectedWith('Amount to stake is required');
122
+ });
123
+ it('should throw error when stakingContractAddress is invalid', async function () {
124
+ const txBuilder = createBasicTxBuilder();
125
+ // Invalid address (wrong format)
126
+ (0, should_1.default)(() => {
127
+ txBuilder.stakingContractAddress('invalid-address');
128
+ }).throw(/Invalid address/);
129
+ });
130
+ it('should throw error when amountToStake is not a valid number string', async function () {
131
+ const txBuilder = createBasicTxBuilder();
132
+ txBuilder.stakingContractAddress(stakingContractAddress);
133
+ txBuilder.levelId(levelId);
134
+ // Invalid amount (not a number)
135
+ txBuilder.amountToStake('not-a-number');
136
+ // Should fail when building the transaction due to invalid amount
137
+ await txBuilder.build().should.be.rejected();
138
+ });
139
+ it('should allow zero amountToStake but encode it properly', async function () {
140
+ const txBuilder = createBasicTxBuilder();
141
+ txBuilder.stakingContractAddress(stakingContractAddress);
142
+ txBuilder.levelId(levelId);
143
+ txBuilder.amountToStake('0');
144
+ const tx = await txBuilder.build();
145
+ tx.should.be.instanceof(lib_1.StakeClauseTransaction);
146
+ const stakingTx = tx;
147
+ // Verify the amount is correctly set to zero
148
+ stakingTx.amountToStake.should.equal('0');
149
+ // Verify the transaction data is correctly encoded with levelId for stake
150
+ // Expected data for stake(8) where 8 is levelId
151
+ const expectedData = '0x604f21770000000000000000000000000000000000000000000000000000000000000008';
152
+ stakingTx.clauses[0].data.should.equal(expectedData);
153
+ });
154
+ it('should build transaction with undefined sender but include it in inputs', async function () {
155
+ const txBuilder = factory.getStakingActivateBuilder();
156
+ txBuilder.stakingContractAddress(stakingContractAddress);
157
+ txBuilder.amountToStake(amountToStake);
158
+ txBuilder.levelId(levelId);
159
+ txBuilder.chainTag(0x27);
160
+ txBuilder.blockRef('0x0000000000000000');
161
+ txBuilder.expiration(64);
162
+ txBuilder.gas(100000);
163
+ txBuilder.gasPriceCoef(0);
164
+ txBuilder.nonce('12345');
165
+ // Not setting sender
166
+ const tx = await txBuilder.build();
167
+ tx.should.be.instanceof(lib_1.StakeClauseTransaction);
168
+ const stakingTx = tx;
169
+ // Verify the transaction has inputs but with undefined address
170
+ stakingTx.inputs.length.should.equal(1);
171
+ should_1.default.not.exist(stakingTx.inputs[0].address);
172
+ // Verify the transaction has the correct output
173
+ stakingTx.outputs.length.should.equal(1);
174
+ stakingTx.outputs[0].address.should.equal(stakingContractAddress);
175
+ stakingTx.outputs[0].value.should.equal(amountToStake);
176
+ });
177
+ it('should use network default chainTag when not explicitly set', async function () {
178
+ const txBuilder = factory.getStakingActivateBuilder();
179
+ txBuilder.stakingContractAddress(stakingContractAddress);
180
+ txBuilder.amountToStake(amountToStake);
181
+ txBuilder.levelId(levelId);
182
+ // Not setting chainTag
183
+ txBuilder.blockRef('0x0000000000000000');
184
+ txBuilder.expiration(64);
185
+ txBuilder.gas(100000);
186
+ txBuilder.gasPriceCoef(0);
187
+ txBuilder.nonce('12345');
188
+ txBuilder.sender('0x9378c12BD7502A11F770a5C1F223c959B2805dA9');
189
+ const tx = await txBuilder.build();
190
+ tx.should.be.instanceof(lib_1.StakeClauseTransaction);
191
+ const stakingTx = tx;
192
+ // Verify the chainTag is set to the testnet default (39)
193
+ stakingTx.chainTag.should.equal(39);
194
+ });
195
+ it('should verify ABI encoding matches expected output for different amounts', async function () {
196
+ const txBuilder = createBasicTxBuilder();
197
+ txBuilder.stakingContractAddress(stakingContractAddress);
198
+ txBuilder.levelId(levelId);
199
+ // Test with a different amount
200
+ const differentAmount = '500000000000000000'; // 0.5 VET
201
+ txBuilder.amountToStake(differentAmount);
202
+ const tx = await txBuilder.build();
203
+ const stakingTx = tx;
204
+ // Manually encode the expected data for stake method
205
+ const methodName = 'stake';
206
+ const types = ['uint8'];
207
+ const params = [levelId];
208
+ const method = ethereumjs_abi_1.default.methodID(methodName, types);
209
+ const args = ethereumjs_abi_1.default.rawEncode(types, params);
210
+ const expectedData = '0x' + Buffer.concat([method, args]).toString('hex');
211
+ // Verify the transaction data matches our manual encoding
212
+ stakingTx.clauses[0].data.should.equal(expectedData);
213
+ stakingTx.clauses[0].data.should.startWith(constants_1.STAKE_CLAUSE_METHOD_ID);
214
+ });
215
+ it('should handle extremely large stake amounts correctly', async function () {
216
+ const txBuilder = createBasicTxBuilder();
217
+ txBuilder.stakingContractAddress(stakingContractAddress);
218
+ txBuilder.levelId(levelId);
219
+ // Test with a very large amount (near uint256 max)
220
+ const largeAmount = '115792089237316195423570985008687907853269984665640564039457584007913129639935'; // 2^256 - 1
221
+ txBuilder.amountToStake(largeAmount);
222
+ const tx = await txBuilder.build();
223
+ const stakingTx = tx;
224
+ // Verify the amount is stored correctly
225
+ stakingTx.amountToStake.should.equal(largeAmount);
226
+ // The data should still be properly encoded
227
+ stakingTx.clauses[0].data.should.startWith(constants_1.STAKE_CLAUSE_METHOD_ID);
228
+ // Verify recipients
229
+ stakingTx.recipients[0].amount.should.equal(largeAmount);
230
+ });
231
+ it('should build a signed tx and validate its toJson', async function () {
232
+ const txBuilder = factory.from(testData.STAKE_CLAUSE_TRANSACTION);
233
+ const tx = txBuilder.transaction;
234
+ const toJson = tx.toJson();
235
+ toJson.id.should.equal('0xe003dbe6db08e71b962aa97ba5cb9e69810f52db41d31111fe39654281c6227c');
236
+ toJson.stakingContractAddress?.should.equal('0x1e02b2953adefec225cf0ec49805b1146a4429c1');
237
+ toJson.amountToStake?.should.equal(amountToStake);
238
+ toJson.nonce.should.equal('0xf536788f0c121df3');
239
+ toJson.gas.should.equal(338631);
240
+ toJson.gasPriceCoef.should.equal(128);
241
+ toJson.expiration.should.equal(400);
242
+ toJson.chainTag.should.equal(39);
243
+ toJson.levelId?.should.equal(8);
244
+ });
245
+ });
246
+ });
247
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rha2VDbGF1c2VUcmFuc2FjdGlvbkJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3RyYW5zYWN0aW9uQnVpbGRlci9zdGFrZUNsYXVzZVRyYW5zYWN0aW9uQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGlEQUE0QztBQUM1Qyx1Q0FBK0Y7QUFDL0Ysb0RBQTRCO0FBQzVCLHVEQUFvRztBQUNwRyxvRUFBeUM7QUFDekMsMkRBQTZDO0FBRTdDLFFBQVEsQ0FBQyx5QkFBeUIsRUFBRTtJQUNsQyxNQUFNLE9BQU8sR0FBRyxJQUFJLCtCQUF5QixDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNqRSxNQUFNLHNCQUFzQixHQUFHLDZDQUFpQyxDQUFDO0lBQ2pFLE1BQU0sYUFBYSxHQUFHLHlCQUF5QixDQUFDLENBQUMsbUJBQW1CO0lBQ3BFLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLGdCQUFnQjtJQUVuQywrRUFBK0U7SUFDL0UsTUFBTSxvQkFBb0IsR0FBRyxHQUFHLEVBQUU7UUFDaEMsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFDdEQsU0FBUyxDQUFDLE1BQU0sQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO1FBQy9ELFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxvQkFBb0I7UUFDOUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3pDLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDekIsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QixTQUFTLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFCLFNBQVMsQ0FBQyxLQUFLLENBQUMs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QUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3BDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNqQyxNQUFNLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29pbnMgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksIFRyYW5zYWN0aW9uLCBTdGFrZUNsYXVzZVRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vLi4vc3JjL2xpYic7XG5pbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgeyBTVEFLRV9DTEFVU0VfTUVUSE9EX0lELCBTVEFSR0FURV9DT05UUkFDVF9BRERSRVNTX1RFU1RORVQgfSBmcm9tICcuLi8uLi9zcmMvbGliL2NvbnN0YW50cyc7XG5pbXBvcnQgRXRoZXJldW1BYmkgZnJvbSAnZXRoZXJldW1qcy1hYmknO1xuaW1wb3J0ICogYXMgdGVzdERhdGEgZnJvbSAnLi4vcmVzb3VyY2VzL3ZldCc7XG5cbmRlc2NyaWJlKCdWRVQgU3Rha2luZyBUcmFuc2FjdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgZmFjdG9yeSA9IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5zLmdldCgndHZldCcpKTtcbiAgY29uc3Qgc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyA9IFNUQVJHQVRFX0NPTlRSQUNUX0FERFJFU1NfVEVTVE5FVDtcbiAgY29uc3QgYW1vdW50VG9TdGFrZSA9ICcxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCc7IC8vIDEwMDAwIFZFVCBpbiB3ZWlcbiAgY29uc3QgbGV2ZWxJZCA9IDg7IC8vIFRlc3QgbGV2ZWwgSURcblxuICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gY3JlYXRlIGEgYmFzaWMgdHJhbnNhY3Rpb24gYnVpbGRlciB3aXRoIGNvbW1vbiBwcm9wZXJ0aWVzXG4gIGNvbnN0IGNyZWF0ZUJhc2ljVHhCdWlsZGVyID0gKCkgPT4ge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0U3Rha2luZ0FjdGl2YXRlQnVpbGRlcigpO1xuICAgIHR4QnVpbGRlci5zZW5kZXIoJzB4OTM3OGMxMkJENzUwMkExMUY3NzBhNUMxRjIyM2M5NTlCMjgwNWRBOScpO1xuICAgIHR4QnVpbGRlci5jaGFpblRhZygweDI3KTsgLy8gVGVzdG5ldCBjaGFpbiB0YWdcbiAgICB0eEJ1aWxkZXIuYmxvY2tSZWYoJzB4MDAwMDAwMDAwMDAwMDAwMCcpO1xuICAgIHR4QnVpbGRlci5leHBpcmF0aW9uKDY0KTtcbiAgICB0eEJ1aWxkZXIuZ2FzKDEwMDAwMCk7XG4gICAgdHhCdWlsZGVyLmdhc1ByaWNlQ29lZigwKTtcbiAgICB0eEJ1aWxkZXIubm9uY2UoJzEyMzQ1Jyk7XG4gICAgcmV0dXJuIHR4QnVpbGRlcjtcbiAgfTtcblxuICBpdCgnc2hvdWxkIGJ1aWxkIGEgc3Rha2luZyB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldFN0YWtpbmdBY3RpdmF0ZUJ1aWxkZXIoKTtcbiAgICB0eEJ1aWxkZXIuc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyhzdGFraW5nQ29udHJhY3RBZGRyZXNzKTtcbiAgICB0eEJ1aWxkZXIuYW1vdW50VG9TdGFrZShhbW91bnRUb1N0YWtlKTtcbiAgICB0eEJ1aWxkZXIubGV2ZWxJZChsZXZlbElkKTtcbiAgICB0eEJ1aWxkZXIuc2VuZGVyKCcweDkzNzhjMTJCRDc1MDJBMTFGNzcwYTVDMUYyMjNjOTU5QjI4MDVkQTknKTtcbiAgICB0eEJ1aWxkZXIuY2hhaW5UYWcoMHgyNyk7IC8vIFRlc3RuZXQgY2hhaW4gdGFnXG4gICAgdHhCdWlsZGVyLmJsb2NrUmVmKCcweDAwMDAwMDAwMDAwMDAwMDAnKTtcbiAgICB0eEJ1aWxkZXIuZXhwaXJhdGlvbig2NCk7XG4gICAgdHhCdWlsZGVyLmdhcygxMDAwMDApO1xuICAgIHR4QnVpbGRlci5nYXNQcmljZUNvZWYoMCk7XG4gICAgdHhCdWlsZGVyLm5vbmNlKCcxMjM0NScpO1xuXG4gICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICBzaG91bGQuZXhpc3QodHgpO1xuICAgIHR4LnNob3VsZC5iZS5pbnN0YW5jZW9mKFRyYW5zYWN0aW9uKTtcbiAgICB0eC5zaG91bGQuYmUuaW5zdGFuY2VvZihTdGFrZUNsYXVzZVRyYW5zYWN0aW9uKTtcblxuICAgIGNvbnN0IHN0YWtpbmdUeCA9IHR4IGFzIFN0YWtlQ2xhdXNlVHJhbnNhY3Rpb247XG4gICAgc3Rha2luZ1R4LnN0YWtpbmdDb250cmFjdEFkZHJlc3Muc2hvdWxkLmVxdWFsKHN0YWtpbmdDb250cmFjdEFkZHJlc3MpO1xuICAgIHN0YWtpbmdUeC5hbW91bnRUb1N0YWtlLnNob3VsZC5lcXVhbChhbW91bnRUb1N0YWtlKTtcbiAgICBzdGFraW5nVHgubGV2ZWxJZC5zaG91bGQuZXF1YWwobGV2ZWxJZCk7XG5cbiAgICAvLyBWZXJpZnkgY2xhdXNlc1xuICAgIHN0YWtpbmdUeC5jbGF1c2VzLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgc2hvdWxkLmV4aXN0KHN0YWtpbmdUeC5jbGF1c2VzWzBdLnRvKTtcbiAgICBzdGFraW5nVHguY2xhdXNlc1swXS50bz8uc2hvdWxkLmVxdWFsKHN0YWtpbmdDb250cmFjdEFkZHJlc3MpO1xuICAgIHN0YWtpbmdUeC5jbGF1c2VzWzBdLnZhbHVlLnNob3VsZC5lcXVhbChhbW91bnRUb1N0YWtlKTtcblxuICAgIC8vIFZlcmlmeSB0cmFuc2FjdGlvbiBkYXRhIGlzIGNvcnJlY3RseSBlbmNvZGVkIHVzaW5nIGV0aGVyZXVtQUJJXG4gICAgc2hvdWxkLmV4aXN0KHN0YWtpbmdUeC5jbGF1c2VzWzBdLmRhdGEpO1xuICAgIGNvbnN0IHR4RGF0YSA9IHN0YWtpbmdUeC5jbGF1c2VzWzBdLmRhdGE7XG4gICAgdHhEYXRhLnNob3VsZC5zdGFydFdpdGgoU1RBS0VfQ0xBVVNFX01FVEhPRF9JRCk7XG5cbiAgICAvLyBWZXJpZnkgdGhlIGVuY29kZWQgZGF0YSBtYXRjaGVzIHdoYXQgd2UgZXhwZWN0IGZyb20gZXRoZXJldW1BQklcbiAgICBjb25zdCBtZXRob2ROYW1lID0gJ3N0YWtlJztcbiAgICBjb25zdCB0eXBlcyA9IFsndWludDgnXTtcbiAgICBjb25zdCBwYXJhbXMgPSBbbGV2ZWxJZF07XG5cbiAgICBjb25zdCBtZXRob2QgPSBFdGhlcmV1bUFiaS5tZXRob2RJRChtZXRob2ROYW1lLCB0eXBlcyk7XG4gICAgY29uc3QgYXJncyA9IEV0aGVyZXVtQWJpLnJhd0VuY29kZSh0eXBlcywgcGFyYW1zKTtcbiAgICBjb25zdCBleHBlY3RlZERhdGEgPSAnMHgnICsgQnVmZmVyLmNvbmNhdChbbWV0aG9kLCBhcmdzXSkudG9TdHJpbmcoJ2hleCcpO1xuXG4gICAgdHhEYXRhLnNob3VsZC5lcXVhbChleHBlY3RlZERhdGEpO1xuXG4gICAgLy8gVmVyaWZ5IHJlY2lwaWVudHNcbiAgICBzdGFraW5nVHgucmVjaXBpZW50cy5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgIHN0YWtpbmdUeC5yZWNpcGllbnRzWzBdLmFkZHJlc3Muc2hvdWxkLmVxdWFsKHN0YWtpbmdDb250cmFjdEFkZHJlc3MpO1xuICAgIHN0YWtpbmdUeC5yZWNpcGllbnRzWzBdLmFtb3VudC5zaG91bGQuZXF1YWwoYW1vdW50VG9TdGFrZSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdGYWlsdXJlIHNjZW5hcmlvcycsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIHRocm93IGVycm9yIHdoZW4gc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyBpcyBtaXNzaW5nJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gY3JlYXRlQmFzaWNUeEJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci5hbW91bnRUb1N0YWtlKGFtb3VudFRvU3Rha2UpO1xuICAgICAgdHhCdWlsZGVyLmxldmVsSWQobGV2ZWxJZCk7XG5cbiAgICAgIGF3YWl0IHR4QnVpbGRlci5idWlsZCgpLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ1N0YWtpbmcgY29udHJhY3QgYWRkcmVzcyBpcyByZXF1aXJlZCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciB3aGVuIGxldmVsSWQgaXMgbWlzc2luZycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGNyZWF0ZUJhc2ljVHhCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIuc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyhzdGFraW5nQ29udHJhY3RBZGRyZXNzKTtcbiAgICAgIHR4QnVpbGRlci5hbW91bnRUb1N0YWtlKGFtb3VudFRvU3Rha2UpO1xuXG4gICAgICBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKS5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdMZXZlbCBJRCBpcyByZXF1aXJlZCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciB3aGVuIGFtb3VudFRvU3Rha2UgaXMgbWlzc2luZycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGNyZWF0ZUJhc2ljVHhCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIuc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyhzdGFraW5nQ29udHJhY3RBZGRyZXNzKTtcbiAgICAgIHR4QnVpbGRlci5sZXZlbElkKGxldmVsSWQpO1xuXG4gICAgICBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKS5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdBbW91bnQgdG8gc3Rha2UgaXMgcmVxdWlyZWQnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgZXJyb3Igd2hlbiBzdGFraW5nQ29udHJhY3RBZGRyZXNzIGlzIGludmFsaWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBjcmVhdGVCYXNpY1R4QnVpbGRlcigpO1xuXG4gICAgICAvLyBJbnZhbGlkIGFkZHJlc3MgKHdyb25nIGZvcm1hdClcbiAgICAgIHNob3VsZCgoKSA9PiB7XG4gICAgICAgIHR4QnVpbGRlci5zdGFraW5nQ29udHJhY3RBZGRyZXNzKCdpbnZhbGlkLWFkZHJlc3MnKTtcbiAgICAgIH0pLnRocm93KC9JbnZhbGlkIGFkZHJlc3MvKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgZXJyb3Igd2hlbiBhbW91bnRUb1N0YWtlIGlzIG5vdCBhIHZhbGlkIG51bWJlciBzdHJpbmcnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBjcmVhdGVCYXNpY1R4QnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyLnN0YWtpbmdDb250cmFjdEFkZHJlc3Moc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyk7XG4gICAgICB0eEJ1aWxkZXIubGV2ZWxJZChsZXZlbElkKTtcblxuICAgICAgLy8gSW52YWxpZCBhbW91bnQgKG5vdCBhIG51bWJlcilcbiAgICAgIHR4QnVpbGRlci5hbW91bnRUb1N0YWtlKCdub3QtYS1udW1iZXInKTtcblxuICAgICAgLy8gU2hvdWxkIGZhaWwgd2hlbiBidWlsZGluZyB0aGUgdHJhbnNhY3Rpb24gZHVlIHRvIGludmFsaWQgYW1vdW50XG4gICAgICBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKS5zaG91bGQuYmUucmVqZWN0ZWQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYWxsb3cgemVybyBhbW91bnRUb1N0YWtlIGJ1dCBlbmNvZGUgaXQgcHJvcGVybHknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBjcmVhdGVCYXNpY1R4QnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyLnN0YWtpbmdDb250cmFjdEFkZHJlc3Moc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyk7XG4gICAgICB0eEJ1aWxkZXIubGV2ZWxJZChsZXZlbElkKTtcbiAgICAgIHR4QnVpbGRlci5hbW91bnRUb1N0YWtlKCcwJyk7XG5cbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICB0eC5zaG91bGQuYmUuaW5zdGFuY2VvZihTdGFrZUNsYXVzZVRyYW5zYWN0aW9uKTtcblxuICAgICAgY29uc3Qgc3Rha2luZ1R4ID0gdHggYXMgU3Rha2VDbGF1c2VUcmFuc2FjdGlvbjtcbiAgICAgIC8vIFZlcmlmeSB0aGUgYW1vdW50IGlzIGNvcnJlY3RseSBzZXQgdG8gemVyb1xuICAgICAgc3Rha2luZ1R4LmFtb3VudFRvU3Rha2Uuc2hvdWxkLmVxdWFsKCcwJyk7XG5cbiAgICAgIC8vIFZlcmlmeSB0aGUgdHJhbnNhY3Rpb24gZGF0YSBpcyBjb3JyZWN0bHkgZW5jb2RlZCB3aXRoIGxldmVsSWQgZm9yIHN0YWtlXG4gICAgICAvLyBFeHBlY3RlZCBkYXRhIGZvciBzdGFrZSg4KSB3aGVyZSA4IGlzIGxldmVsSWRcbiAgICAgIGNvbnN0IGV4cGVjdGVkRGF0YSA9ICcweDYwNGYyMTc3MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOCc7XG4gICAgICBzdGFraW5nVHguY2xhdXNlc1swXS5kYXRhLnNob3VsZC5lcXVhbChleHBlY3RlZERhdGEpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBidWlsZCB0cmFuc2FjdGlvbiB3aXRoIHVuZGVmaW5lZCBzZW5kZXIgYnV0IGluY2x1ZGUgaXQgaW4gaW5wdXRzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRTdGFraW5nQWN0aXZhdGVCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIuc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyhzdGFraW5nQ29udHJhY3RBZGRyZXNzKTtcbiAgICAgIHR4QnVpbGRlci5hbW91bnRUb1N0YWtlKGFtb3VudFRvU3Rha2UpO1xuICAgICAgdHhCdWlsZGVyLmxldmVsSWQobGV2ZWxJZCk7XG4gICAgICB0eEJ1aWxkZXIuY2hhaW5UYWcoMHgyNyk7XG4gICAgICB0eEJ1aWxkZXIuYmxvY2tSZWYoJzB4MDAwMDAwMDAwMDAwMDAwMCcpO1xuICAgICAgdHhCdWlsZGVyLmV4cGlyYXRpb24oNjQpO1xuICAgICAgdHhCdWlsZGVyLmdhcygxMDAwMDApO1xuICAgICAgdHhCdWlsZGVyLmdhc1ByaWNlQ29lZigwKTtcbiAgICAgIHR4QnVpbGRlci5ub25jZSgnMTIzNDUnKTtcbiAgICAgIC8vIE5vdCBzZXR0aW5nIHNlbmRlclxuXG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgdHguc2hvdWxkLmJlLmluc3RhbmNlb2YoU3Rha2VDbGF1c2VUcmFuc2FjdGlvbik7XG5cbiAgICAgIGNvbnN0IHN0YWtpbmdUeCA9IHR4IGFzIFN0YWtlQ2xhdXNlVHJhbnNhY3Rpb247XG4gICAgICAvLyBWZXJpZnkgdGhlIHRyYW5zYWN0aW9uIGhhcyBpbnB1dHMgYnV0IHdpdGggdW5kZWZpbmVkIGFkZHJlc3NcbiAgICAgIHN0YWtpbmdUeC5pbnB1dHMubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICAgIHNob3VsZC5ub3QuZXhpc3Qoc3Rha2luZ1R4LmlucHV0c1swXS5hZGRyZXNzKTtcblxuICAgICAgLy8gVmVyaWZ5IHRoZSB0cmFuc2FjdGlvbiBoYXMgdGhlIGNvcnJlY3Qgb3V0cHV0XG4gICAgICBzdGFraW5nVHgub3V0cHV0cy5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgc3Rha2luZ1R4Lm91dHB1dHNbMF0uYWRkcmVzcy5zaG91bGQuZXF1YWwoc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyk7XG4gICAgICBzdGFraW5nVHgub3V0cHV0c1swXS52YWx1ZS5zaG91bGQuZXF1YWwoYW1vdW50VG9TdGFrZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHVzZSBuZXR3b3JrIGRlZmF1bHQgY2hhaW5UYWcgd2hlbiBub3QgZXhwbGljaXRseSBzZXQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldFN0YWtpbmdBY3RpdmF0ZUJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci5zdGFraW5nQ29udHJhY3RBZGRyZXNzKHN0YWtpbmdDb250cmFjdEFkZHJlc3MpO1xuICAgICAgdHhCdWlsZGVyLmFtb3VudFRvU3Rha2UoYW1vdW50VG9TdGFrZSk7XG4gICAgICB0eEJ1aWxkZXIubGV2ZWxJZChsZXZlbElkKTtcbiAgICAgIC8vIE5vdCBzZXR0aW5nIGNoYWluVGFnXG4gICAgICB0eEJ1aWxkZXIuYmxvY2tSZWYoJzB4MDAwMDAwMDAwMDAwMDAwMCcpO1xuICAgICAgdHhCdWlsZGVyLmV4cGlyYXRpb24oNjQpO1xuICAgICAgdHhCdWlsZGVyLmdhcygxMDAwMDApO1xuICAgICAgdHhCdWlsZGVyLmdhc1ByaWNlQ29lZigwKTtcbiAgICAgIHR4QnVpbGRlci5ub25jZSgnMTIzNDUnKTtcbiAgICAgIHR4QnVpbGRlci5zZW5kZXIoJzB4OTM3OGMxMkJENzUwMkExMUY3NzBhNUMxRjIyM2M5NTlCMjgwNWRBOScpO1xuXG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgdHguc2hvdWxkLmJlLmluc3RhbmNlb2YoU3Rha2VDbGF1c2VUcmFuc2FjdGlvbik7XG5cbiAgICAgIGNvbnN0IHN0YWtpbmdUeCA9IHR4IGFzIFN0YWtlQ2xhdXNlVHJhbnNhY3Rpb247XG4gICAgICAvLyBWZXJpZnkgdGhlIGNoYWluVGFnIGlzIHNldCB0byB0aGUgdGVzdG5ldCBkZWZhdWx0ICgzOSlcbiAgICAgIHN0YWtpbmdUeC5jaGFpblRhZy5zaG91bGQuZXF1YWwoMzkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2ZXJpZnkgQUJJIGVuY29kaW5nIG1hdGNoZXMgZXhwZWN0ZWQgb3V0cHV0IGZvciBkaWZmZXJlbnQgYW1vdW50cycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGNyZWF0ZUJhc2ljVHhCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIuc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyhzdGFraW5nQ29udHJhY3RBZGRyZXNzKTtcbiAgICAgIHR4QnVpbGRlci5sZXZlbElkKGxldmVsSWQpO1xuXG4gICAgICAvLyBUZXN0IHdpdGggYSBkaWZmZXJlbnQgYW1vdW50XG4gICAgICBjb25zdCBkaWZmZXJlbnRBbW91bnQgPSAnNTAwMDAwMDAwMDAwMDAwMDAwJzsgLy8gMC41IFZFVFxuICAgICAgdHhCdWlsZGVyLmFtb3VudFRvU3Rha2UoZGlmZmVyZW50QW1vdW50KTtcblxuICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIGNvbnN0IHN0YWtpbmdUeCA9IHR4IGFzIFN0YWtlQ2xhdXNlVHJhbnNhY3Rpb247XG5cbiAgICAgIC8vIE1hbnVhbGx5IGVuY29kZSB0aGUgZXhwZWN0ZWQgZGF0YSBmb3Igc3Rha2UgbWV0aG9kXG4gICAgICBjb25zdCBtZXRob2ROYW1lID0gJ3N0YWtlJztcbiAgICAgIGNvbnN0IHR5cGVzID0gWyd1aW50OCddO1xuICAgICAgY29uc3QgcGFyYW1zID0gW2xldmVsSWRdO1xuXG4gICAgICBjb25zdCBtZXRob2QgPSBFdGhlcmV1bUFiaS5tZXRob2RJRChtZXRob2ROYW1lLCB0eXBlcyk7XG4gICAgICBjb25zdCBhcmdzID0gRXRoZXJldW1BYmkucmF3RW5jb2RlKHR5cGVzLCBwYXJhbXMpO1xuICAgICAgY29uc3QgZXhwZWN0ZWREYXRhID0gJzB4JyArIEJ1ZmZlci5jb25jYXQoW21ldGhvZCwgYXJnc10pLnRvU3RyaW5nKCdoZXgnKTtcblxuICAgICAgLy8gVmVyaWZ5IHRoZSB0cmFuc2FjdGlvbiBkYXRhIG1hdGNoZXMgb3VyIG1hbnVhbCBlbmNvZGluZ1xuICAgICAgc3Rha2luZ1R4LmNsYXVzZXNbMF0uZGF0YS5zaG91bGQuZXF1YWwoZXhwZWN0ZWREYXRhKTtcbiAgICAgIHN0YWtpbmdUeC5jbGF1c2VzWzBdLmRhdGEuc2hvdWxkLnN0YXJ0V2l0aChTVEFLRV9DTEFVU0VfTUVUSE9EX0lEKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGFuZGxlIGV4dHJlbWVseSBsYXJnZSBzdGFrZSBhbW91bnRzIGNvcnJlY3RseScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGNyZWF0ZUJhc2ljVHhCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIuc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyhzdGFraW5nQ29udHJhY3RBZGRyZXNzKTtcbiAgICAgIHR4QnVpbGRlci5sZXZlbElkKGxldmVsSWQpO1xuXG4gICAgICAvLyBUZXN0IHdpdGggYSB2ZXJ5IGxhcmdlIGFtb3VudCAobmVhciB1aW50MjU2IG1heClcbiAgICAgIGNvbnN0IGxhcmdlQW1vdW50ID0gJzExNTc5MjA4OTIzNzMxNjE5NTQyMzU3MDk4NTAwODY4NzkwNzg1MzI2OTk4NDY2NTY0MDU2NDAzOTQ1NzU4NDAwNzkxMzEyOTYzOTkzNSc7IC8vIDJeMjU2IC0gMVxuICAgICAgdHhCdWlsZGVyLmFtb3VudFRvU3Rha2UobGFyZ2VBbW91bnQpO1xuXG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgY29uc3Qgc3Rha2luZ1R4ID0gdHggYXMgU3Rha2VDbGF1c2VUcmFuc2FjdGlvbjtcblxuICAgICAgLy8gVmVyaWZ5IHRoZSBhbW91bnQgaXMgc3RvcmVkIGNvcnJlY3RseVxuICAgICAgc3Rha2luZ1R4LmFtb3VudFRvU3Rha2Uuc2hvdWxkLmVxdWFsKGxhcmdlQW1vdW50KTtcblxuICAgICAgLy8gVGhlIGRhdGEgc2hvdWxkIHN0aWxsIGJlIHByb3Blcmx5IGVuY29kZWRcbiAgICAgIHN0YWtpbmdUeC5jbGF1c2VzWzBdLmRhdGEuc2hvdWxkLnN0YXJ0V2l0aChTVEFLRV9DTEFVU0VfTUVUSE9EX0lEKTtcblxuICAgICAgLy8gVmVyaWZ5IHJlY2lwaWVudHNcbiAgICAgIHN0YWtpbmdUeC5yZWNpcGllbnRzWzBdLmFtb3VudC5zaG91bGQuZXF1YWwobGFyZ2VBbW91bnQpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBidWlsZCBhIHNpZ25lZCB0eCBhbmQgdmFsaWRhdGUgaXRzIHRvSnNvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZnJvbSh0ZXN0RGF0YS5TVEFLRV9DTEFVU0VfVFJBTlNBQ1RJT04pO1xuICAgICAgY29uc3QgdHggPSB0eEJ1aWxkZXIudHJhbnNhY3Rpb24gYXMgU3Rha2VDbGF1c2VUcmFuc2FjdGlvbjtcbiAgICAgIGNvbnN0IHRvSnNvbiA9IHR4LnRvSnNvbigpO1xuICAgICAgdG9Kc29uLmlkLnNob3VsZC5lcXVhbCgnMHhlMDAzZGJlNmRiMDhlNzFiOTYyYWE5N2JhNWNiOWU2OTgxMGY1MmRiNDFkMzExMTFmZTM5NjU0MjgxYzYyMjdjJyk7XG4gICAgICB0b0pzb24uc3Rha2luZ0NvbnRyYWN0QWRkcmVzcz8uc2hvdWxkLmVxdWFsKCcweDFlMDJiMjk1M2FkZWZlYzIyNWNmMGVjNDk4MDViMTE0NmE0NDI5YzEnKTtcbiAgICAgIHRvSnNvbi5hbW91bnRUb1N0YWtlPy5zaG91bGQuZXF1YWwoYW1vdW50VG9TdGFrZSk7XG4gICAgICB0b0pzb24ubm9uY2Uuc2hvdWxkLmVxdWFsKCcweGY1MzY3ODhmMGMxMjFkZjMnKTtcbiAgICAgIHRvSnNvbi5nYXMuc2hvdWxkLmVxdWFsKDMzODYzMSk7XG4gICAgICB0b0pzb24uZ2FzUHJpY2VDb2VmLnNob3VsZC5lcXVhbCgxMjgpO1xuICAgICAgdG9Kc29uLmV4cGlyYXRpb24uc2hvdWxkLmVxdWFsKDQwMCk7XG4gICAgICB0b0pzb24uY2hhaW5UYWcuc2hvdWxkLmVxdWFsKDM5KTtcbiAgICAgIHRvSnNvbi5sZXZlbElkPy5zaG91bGQuZXF1YWwoOCk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=stakingTransaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stakingTransaction.d.ts","sourceRoot":"","sources":["../../../test/transactionBuilder/stakingTransaction.ts"],"names":[],"mappings":""}