@bitgo/sdk-coin-flrp 1.1.0

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 (118) hide show
  1. package/.eslintignore +5 -0
  2. package/.eslintrc.json +7 -0
  3. package/.mocharc.yml +8 -0
  4. package/CHANGELOG.md +23 -0
  5. package/LICENSE +191 -0
  6. package/dist/src/flrp.d.ts +91 -0
  7. package/dist/src/flrp.d.ts.map +1 -0
  8. package/dist/src/flrp.js +343 -0
  9. package/dist/src/iface.d.ts +25 -0
  10. package/dist/src/iface.d.ts.map +1 -0
  11. package/dist/src/iface.js +3 -0
  12. package/dist/src/index.d.ts +6 -0
  13. package/dist/src/index.d.ts.map +1 -0
  14. package/dist/src/index.js +45 -0
  15. package/dist/src/lib/atomicInCTransactionBuilder.d.ts +26 -0
  16. package/dist/src/lib/atomicInCTransactionBuilder.d.ts.map +1 -0
  17. package/dist/src/lib/atomicInCTransactionBuilder.js +64 -0
  18. package/dist/src/lib/atomicTransactionBuilder.d.ts +96 -0
  19. package/dist/src/lib/atomicTransactionBuilder.d.ts.map +1 -0
  20. package/dist/src/lib/atomicTransactionBuilder.js +318 -0
  21. package/dist/src/lib/constants.d.ts +170 -0
  22. package/dist/src/lib/constants.d.ts.map +1 -0
  23. package/dist/src/lib/constants.js +227 -0
  24. package/dist/src/lib/delegatorTxBuilder.d.ts +58 -0
  25. package/dist/src/lib/delegatorTxBuilder.d.ts.map +1 -0
  26. package/dist/src/lib/delegatorTxBuilder.js +224 -0
  27. package/dist/src/lib/errors.d.ts +8 -0
  28. package/dist/src/lib/errors.d.ts.map +1 -0
  29. package/dist/src/lib/errors.js +19 -0
  30. package/dist/src/lib/exportInCTxBuilder.d.ts +77 -0
  31. package/dist/src/lib/exportInCTxBuilder.d.ts.map +1 -0
  32. package/dist/src/lib/exportInCTxBuilder.js +199 -0
  33. package/dist/src/lib/exportInPTxBuilder.d.ts +30 -0
  34. package/dist/src/lib/exportInPTxBuilder.d.ts.map +1 -0
  35. package/dist/src/lib/exportInPTxBuilder.js +120 -0
  36. package/dist/src/lib/iface.d.ts +119 -0
  37. package/dist/src/lib/iface.d.ts.map +1 -0
  38. package/dist/src/lib/iface.js +22 -0
  39. package/dist/src/lib/importInCTxBuilder.d.ts +67 -0
  40. package/dist/src/lib/importInCTxBuilder.d.ts.map +1 -0
  41. package/dist/src/lib/importInCTxBuilder.js +403 -0
  42. package/dist/src/lib/importInPTxBuilder.d.ts +73 -0
  43. package/dist/src/lib/importInPTxBuilder.d.ts.map +1 -0
  44. package/dist/src/lib/importInPTxBuilder.js +464 -0
  45. package/dist/src/lib/index.d.ts +12 -0
  46. package/dist/src/lib/index.d.ts.map +1 -0
  47. package/dist/src/lib/index.js +39 -0
  48. package/dist/src/lib/keyPair.d.ts +58 -0
  49. package/dist/src/lib/keyPair.d.ts.map +1 -0
  50. package/dist/src/lib/keyPair.js +142 -0
  51. package/dist/src/lib/permissionlessValidatorTxBuilder.d.ts +81 -0
  52. package/dist/src/lib/permissionlessValidatorTxBuilder.d.ts.map +1 -0
  53. package/dist/src/lib/permissionlessValidatorTxBuilder.js +248 -0
  54. package/dist/src/lib/transaction.d.ts +111 -0
  55. package/dist/src/lib/transaction.d.ts.map +1 -0
  56. package/dist/src/lib/transaction.js +322 -0
  57. package/dist/src/lib/transactionBuilder.d.ts +85 -0
  58. package/dist/src/lib/transactionBuilder.d.ts.map +1 -0
  59. package/dist/src/lib/transactionBuilder.js +167 -0
  60. package/dist/src/lib/transactionBuilderFactory.d.ts +37 -0
  61. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -0
  62. package/dist/src/lib/transactionBuilderFactory.js +91 -0
  63. package/dist/src/lib/types.d.ts +78 -0
  64. package/dist/src/lib/types.d.ts.map +1 -0
  65. package/dist/src/lib/types.js +5 -0
  66. package/dist/src/lib/utils.d.ts +217 -0
  67. package/dist/src/lib/utils.d.ts.map +1 -0
  68. package/dist/src/lib/utils.js +498 -0
  69. package/dist/src/lib/validatorTxBuilder.d.ts +40 -0
  70. package/dist/src/lib/validatorTxBuilder.d.ts.map +1 -0
  71. package/dist/src/lib/validatorTxBuilder.js +180 -0
  72. package/dist/src/register.d.ts +3 -0
  73. package/dist/src/register.d.ts.map +1 -0
  74. package/dist/src/register.js +11 -0
  75. package/dist/src/tflrp.d.ts +8 -0
  76. package/dist/src/tflrp.d.ts.map +1 -0
  77. package/dist/src/tflrp.js +14 -0
  78. package/dist/test/unit/delegatorTxBuilder.test.d.ts +2 -0
  79. package/dist/test/unit/delegatorTxBuilder.test.d.ts.map +1 -0
  80. package/dist/test/unit/delegatorTxBuilder.test.js +233 -0
  81. package/dist/test/unit/flrp.d.ts +2 -0
  82. package/dist/test/unit/flrp.d.ts.map +1 -0
  83. package/dist/test/unit/flrp.js +118 -0
  84. package/dist/test/unit/lib/atomicTransactionBuilder.d.ts +2 -0
  85. package/dist/test/unit/lib/atomicTransactionBuilder.d.ts.map +1 -0
  86. package/dist/test/unit/lib/atomicTransactionBuilder.js +222 -0
  87. package/dist/test/unit/lib/exportInCTxBuilder.d.ts +2 -0
  88. package/dist/test/unit/lib/exportInCTxBuilder.d.ts.map +1 -0
  89. package/dist/test/unit/lib/exportInCTxBuilder.js +584 -0
  90. package/dist/test/unit/lib/exportInPTxBuilder.d.ts +2 -0
  91. package/dist/test/unit/lib/exportInPTxBuilder.d.ts.map +1 -0
  92. package/dist/test/unit/lib/exportInPTxBuilder.js +377 -0
  93. package/dist/test/unit/lib/importInCTxBuilder.d.ts +2 -0
  94. package/dist/test/unit/lib/importInCTxBuilder.d.ts.map +1 -0
  95. package/dist/test/unit/lib/importInCTxBuilder.js +257 -0
  96. package/dist/test/unit/lib/importInPTxBuilder.d.ts +2 -0
  97. package/dist/test/unit/lib/importInPTxBuilder.d.ts.map +1 -0
  98. package/dist/test/unit/lib/importInPTxBuilder.js +500 -0
  99. package/dist/test/unit/lib/transaction.d.ts +2 -0
  100. package/dist/test/unit/lib/transaction.d.ts.map +1 -0
  101. package/dist/test/unit/lib/transaction.js +460 -0
  102. package/dist/test/unit/lib/utils.d.ts +2 -0
  103. package/dist/test/unit/lib/utils.d.ts.map +1 -0
  104. package/dist/test/unit/lib/utils.js +286 -0
  105. package/dist/test/unit/permissionlessValidatorTxBuilder.test.d.ts +2 -0
  106. package/dist/test/unit/permissionlessValidatorTxBuilder.test.d.ts.map +1 -0
  107. package/dist/test/unit/permissionlessValidatorTxBuilder.test.js +271 -0
  108. package/dist/test/unit/smoke.d.ts +2 -0
  109. package/dist/test/unit/smoke.d.ts.map +1 -0
  110. package/dist/test/unit/smoke.js +23 -0
  111. package/dist/test/unit/transactionBuilder.test.d.ts +2 -0
  112. package/dist/test/unit/transactionBuilder.test.d.ts.map +1 -0
  113. package/dist/test/unit/transactionBuilder.test.js +114 -0
  114. package/dist/test/unit/validatorTxBuilder.test.d.ts +2 -0
  115. package/dist/test/unit/validatorTxBuilder.test.d.ts.map +1 -0
  116. package/dist/test/unit/validatorTxBuilder.test.js +293 -0
  117. package/dist/tsconfig.tsbuildinfo +1 -0
  118. package/package.json +57 -0
@@ -0,0 +1,500 @@
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/statics");
40
+ const sdk_core_1 = require("@bitgo/sdk-core");
41
+ const assert = __importStar(require("assert"));
42
+ const bignumber_js_1 = __importDefault(require("bignumber.js"));
43
+ const importInPTxBuilder_1 = require("../../../src/lib/importInPTxBuilder");
44
+ describe('ImportInPTxBuilder', function () {
45
+ const coinConfig = statics_1.coins.get('tflrp');
46
+ let builder;
47
+ beforeEach(function () {
48
+ builder = new importInPTxBuilder_1.ImportInPTxBuilder(coinConfig);
49
+ });
50
+ describe('Constructor', function () {
51
+ it('should initialize with coin config', function () {
52
+ assert.ok(builder);
53
+ assert.ok(builder instanceof importInPTxBuilder_1.ImportInPTxBuilder);
54
+ });
55
+ it('should initialize with default values', function () {
56
+ // Builder should be initialized without throwing errors
57
+ assert.ok(builder);
58
+ });
59
+ });
60
+ describe('UTXO Management', function () {
61
+ it('should add single UTXO', function () {
62
+ const utxo = {
63
+ outputID: 1,
64
+ amount: '1000000000000000000', // 1 FLR
65
+ txid: 'test-txid-single',
66
+ outputidx: '0',
67
+ threshold: 1,
68
+ addresses: ['C-flare1test'],
69
+ };
70
+ assert.doesNotThrow(() => {
71
+ builder.addUtxos([utxo]);
72
+ });
73
+ });
74
+ it('should add multiple UTXOs', function () {
75
+ const utxos = [
76
+ {
77
+ outputID: 1,
78
+ amount: '1000000000000000000', // 1 FLR
79
+ txid: 'test-txid-1',
80
+ outputidx: '0',
81
+ threshold: 1,
82
+ addresses: ['C-flare1test1'],
83
+ },
84
+ {
85
+ outputID: 2,
86
+ amount: '2000000000000000000', // 2 FLR
87
+ txid: 'test-txid-2',
88
+ outputidx: '1',
89
+ threshold: 2,
90
+ addresses: ['C-flare1test2', 'C-flare1test3'],
91
+ },
92
+ {
93
+ outputID: 3,
94
+ amount: '500000000000000000', // 0.5 FLR
95
+ txid: 'test-txid-3',
96
+ outputidx: '0',
97
+ threshold: 1,
98
+ addresses: ['C-flare1test4'],
99
+ },
100
+ ];
101
+ assert.doesNotThrow(() => {
102
+ builder.addUtxos(utxos);
103
+ });
104
+ });
105
+ it('should handle empty UTXO array', function () {
106
+ assert.doesNotThrow(() => {
107
+ builder.addUtxos([]);
108
+ });
109
+ });
110
+ it('should accumulate UTXOs from multiple calls', function () {
111
+ const utxos1 = [
112
+ {
113
+ outputID: 1,
114
+ amount: '1000000000000000000',
115
+ txid: 'test-txid-1',
116
+ outputidx: '0',
117
+ threshold: 1,
118
+ addresses: ['C-flare1test1'],
119
+ },
120
+ ];
121
+ const utxos2 = [
122
+ {
123
+ outputID: 2,
124
+ amount: '2000000000000000000',
125
+ txid: 'test-txid-2',
126
+ outputidx: '0',
127
+ threshold: 1,
128
+ addresses: ['C-flare1test2'],
129
+ },
130
+ ];
131
+ builder.addUtxos(utxos1);
132
+ builder.addUtxos(utxos2);
133
+ // Should not throw
134
+ assert.ok(true);
135
+ });
136
+ });
137
+ describe('Fee Management', function () {
138
+ it('should set valid positive fee', function () {
139
+ const validFees = ['1000', '0', '1000000000000000000', '999999999999999999'];
140
+ validFees.forEach((fee) => {
141
+ assert.doesNotThrow(() => {
142
+ builder.fee(fee);
143
+ }, `Should accept fee: ${fee}`);
144
+ });
145
+ });
146
+ it('should reject negative fees', function () {
147
+ const negativeFees = ['-1', '-1000', '-1000000000000000000'];
148
+ negativeFees.forEach((fee) => {
149
+ assert.throws(() => {
150
+ builder.fee(fee);
151
+ }, sdk_core_1.BuildTransactionError, `Should reject negative fee: ${fee}`);
152
+ });
153
+ });
154
+ it('should handle invalid fee formats (BigNumber behavior)', function () {
155
+ const invalidFees = ['abc', 'not-a-number', '1.5.5', 'infinity'];
156
+ invalidFees.forEach((fee) => {
157
+ // BigNumber doesn't throw for invalid strings, it creates NaN values
158
+ // But our implementation should still accept them (no additional validation)
159
+ assert.doesNotThrow(() => {
160
+ builder.fee(fee);
161
+ }, `BigNumber accepts invalid strings: ${fee}`);
162
+ });
163
+ });
164
+ it('should handle BigNumber fee inputs', function () {
165
+ const bigNumberFee = new bignumber_js_1.default('1000000000000000000');
166
+ assert.doesNotThrow(() => {
167
+ builder.fee(bigNumberFee.toString());
168
+ });
169
+ });
170
+ it('should chain fee setting with other methods', function () {
171
+ const fee = '1000';
172
+ const utxo = {
173
+ outputID: 1,
174
+ amount: '1000000000000000000',
175
+ txid: 'test-txid',
176
+ outputidx: '0',
177
+ threshold: 1,
178
+ addresses: ['C-flare1test'],
179
+ };
180
+ assert.doesNotThrow(() => {
181
+ builder.fee(fee).addUtxos([utxo]);
182
+ });
183
+ });
184
+ });
185
+ describe('Locktime Management', function () {
186
+ it('should set valid locktime values', function () {
187
+ const validLocktimes = [0, 1, 1000, 4294967295]; // Max uint32
188
+ validLocktimes.forEach((locktime) => {
189
+ assert.doesNotThrow(() => {
190
+ builder.locktime(locktime);
191
+ }, `Should accept locktime: ${locktime}`);
192
+ });
193
+ });
194
+ it('should handle negative locktime (no validation)', function () {
195
+ const negativeLocktimes = [-1, -1000];
196
+ negativeLocktimes.forEach((locktime) => {
197
+ assert.doesNotThrow(() => {
198
+ builder.locktime(locktime);
199
+ }, `Should accept negative locktime: ${locktime} (no validation in implementation)`);
200
+ });
201
+ });
202
+ it('should handle boundary values', function () {
203
+ const boundaryValues = [0, 4294967295]; // Min and max uint32
204
+ boundaryValues.forEach((locktime) => {
205
+ assert.doesNotThrow(() => {
206
+ builder.locktime(locktime);
207
+ });
208
+ });
209
+ });
210
+ it('should chain locktime setting with other methods', function () {
211
+ const locktime = 123456;
212
+ const fee = '1000';
213
+ assert.doesNotThrow(() => {
214
+ builder.locktime(locktime).fee(fee);
215
+ });
216
+ });
217
+ });
218
+ describe('Threshold Management', function () {
219
+ it('should set valid threshold values', function () {
220
+ const validThresholds = [1, 2, 5, 10];
221
+ validThresholds.forEach((threshold) => {
222
+ assert.doesNotThrow(() => {
223
+ builder.threshold(threshold);
224
+ }, `Should accept threshold: ${threshold}`);
225
+ });
226
+ });
227
+ it('should reject invalid threshold values', function () {
228
+ const invalidThresholds = [0, -1, -10];
229
+ invalidThresholds.forEach((threshold) => {
230
+ assert.throws(() => {
231
+ builder.threshold(threshold);
232
+ }, sdk_core_1.BuildTransactionError, `Should reject threshold: ${threshold}`);
233
+ });
234
+ });
235
+ it('should handle typical threshold scenarios', function () {
236
+ // Single signature
237
+ assert.doesNotThrow(() => {
238
+ builder.threshold(1);
239
+ });
240
+ // Multi-signature
241
+ assert.doesNotThrow(() => {
242
+ builder.threshold(3);
243
+ });
244
+ });
245
+ it('should chain threshold setting with other methods', function () {
246
+ const threshold = 2;
247
+ const locktime = 123456;
248
+ assert.doesNotThrow(() => {
249
+ builder.threshold(threshold).locktime(locktime);
250
+ });
251
+ });
252
+ });
253
+ describe('Source Chain Management', function () {
254
+ it('should set valid source chain IDs', function () {
255
+ const validChainIds = ['C-flare12345', 'NodeID-flare67890', '0x123456789abcdef', 'abc123def456'];
256
+ validChainIds.forEach((chainId) => {
257
+ assert.doesNotThrow(() => {
258
+ builder.sourceChain(chainId);
259
+ }, `Should accept chain ID: ${chainId}`);
260
+ });
261
+ });
262
+ it('should handle different chain ID formats', function () {
263
+ const chainIds = ['C-chain-id-123', 'P-chain-id-456', 'hex-formatted-id', '1234567890abcdef'];
264
+ chainIds.forEach((chainId) => {
265
+ assert.doesNotThrow(() => {
266
+ builder.sourceChain(chainId);
267
+ });
268
+ });
269
+ });
270
+ });
271
+ describe('Input/Output Creation', function () {
272
+ it('should test public methods only due to protected access', function () {
273
+ // Note: createInputOutput is protected, so we test through public interface
274
+ // Test that we can set parameters that would be used by createInputOutput
275
+ assert.doesNotThrow(() => {
276
+ builder.fee('1000');
277
+ builder.threshold(1);
278
+ // Protected method cannot be tested directly
279
+ });
280
+ });
281
+ it('should handle configuration for output creation', function () {
282
+ const fee = '1000';
283
+ const locktime = 0;
284
+ const threshold = 1;
285
+ assert.doesNotThrow(() => {
286
+ builder.fee(fee).locktime(locktime).threshold(threshold);
287
+ });
288
+ });
289
+ it('should allow setting parameters for large amounts', function () {
290
+ const locktime = 0;
291
+ const threshold = 1;
292
+ assert.doesNotThrow(() => {
293
+ builder.fee('1000').locktime(locktime).threshold(threshold);
294
+ });
295
+ });
296
+ it('should configure for different threshold scenarios', function () {
297
+ const locktime = 0;
298
+ // Test different thresholds
299
+ [1, 2, 3].forEach((threshold) => {
300
+ assert.doesNotThrow(() => {
301
+ builder.threshold(threshold).locktime(locktime);
302
+ });
303
+ });
304
+ });
305
+ });
306
+ describe('Transaction Type Verification', function () {
307
+ it('should verify transaction type (placeholder)', function () {
308
+ const mockTx = { type: 'import' };
309
+ const result = importInPTxBuilder_1.ImportInPTxBuilder.verifyTxType(mockTx);
310
+ assert.strictEqual(result, true); // Placeholder returns true
311
+ });
312
+ it('should handle different transaction objects', function () {
313
+ const testCases = [{}, null, undefined, { type: 'export' }, { data: 'test' }];
314
+ testCases.forEach((testCase, index) => {
315
+ const result = importInPTxBuilder_1.ImportInPTxBuilder.verifyTxType(testCase);
316
+ assert.strictEqual(result, true, `Test case ${index} should return true (placeholder)`);
317
+ });
318
+ });
319
+ it('should verify via instance method', function () {
320
+ const mockTx = { type: 'import' };
321
+ const result = builder.verifyTxType(mockTx);
322
+ assert.strictEqual(result, true);
323
+ });
324
+ });
325
+ describe('Transaction Building Preparation', function () {
326
+ it('should prepare basic import transaction parameters', function () {
327
+ const fee = '1000';
328
+ const locktime = 123456;
329
+ const threshold = 2;
330
+ const chainId = 'C-source-chain-123';
331
+ const utxos = [
332
+ {
333
+ outputID: 1,
334
+ amount: '1000000000000000000',
335
+ txid: 'test-txid',
336
+ outputidx: '0',
337
+ threshold: 1,
338
+ addresses: ['C-flare1test'],
339
+ },
340
+ ];
341
+ // Set all parameters
342
+ builder.fee(fee).locktime(locktime).threshold(threshold).sourceChain(chainId).addUtxos(utxos);
343
+ // Should not throw
344
+ assert.ok(true);
345
+ });
346
+ it('should handle minimal configuration', function () {
347
+ const fee = '0';
348
+ const utxos = [
349
+ {
350
+ outputID: 1,
351
+ amount: '1000000000000000000',
352
+ txid: 'test-txid',
353
+ outputidx: '0',
354
+ threshold: 1,
355
+ addresses: ['C-flare1test'],
356
+ },
357
+ ];
358
+ builder.fee(fee).addUtxos(utxos);
359
+ // Should not throw
360
+ assert.ok(true);
361
+ });
362
+ });
363
+ describe('Complex Scenarios', function () {
364
+ it('should handle multiple UTXOs with different properties', function () {
365
+ const utxos = [
366
+ {
367
+ outputID: 1,
368
+ amount: '1000000000000000000',
369
+ txid: 'test-txid-1',
370
+ outputidx: '0',
371
+ threshold: 1,
372
+ addresses: ['C-flare1single'],
373
+ },
374
+ {
375
+ outputID: 2,
376
+ amount: '2000000000000000000',
377
+ txid: 'test-txid-2',
378
+ outputidx: '1',
379
+ threshold: 2,
380
+ addresses: ['C-flare1multi1', 'C-flare1multi2'],
381
+ },
382
+ {
383
+ outputID: 3,
384
+ amount: '3000000000000000000',
385
+ txid: 'test-txid-3',
386
+ outputidx: '0',
387
+ threshold: 3,
388
+ addresses: ['C-flare1multi1', 'C-flare1multi2', 'C-flare1multi3'],
389
+ },
390
+ ];
391
+ builder.addUtxos(utxos);
392
+ builder.fee('5000'); // Higher fee for complex transaction
393
+ builder.threshold(2);
394
+ // Should handle complex UTXO set
395
+ assert.ok(true);
396
+ });
397
+ it('should handle large transaction parameters', function () {
398
+ const fee = '1000000000000000000'; // 1 FLR fee
399
+ const locktime = 4294967295; // Max uint32
400
+ const threshold = 10; // High threshold
401
+ const chainId = 'very-long-chain-id-with-lots-of-characters-0x123456789abcdef0123456789abcdef';
402
+ builder.fee(fee).locktime(locktime).threshold(threshold).sourceChain(chainId);
403
+ // Should handle large values
404
+ assert.ok(true);
405
+ });
406
+ it('should handle rapid parameter changes', function () {
407
+ // Simulate rapid parameter updates
408
+ builder.fee('1000').fee('2000').fee('3000');
409
+ builder.locktime(100).locktime(200).locktime(300);
410
+ builder.threshold(1).threshold(2).threshold(3);
411
+ // Should handle rapid changes without issues
412
+ assert.ok(true);
413
+ });
414
+ });
415
+ describe('Edge Cases', function () {
416
+ it('should handle zero values where appropriate', function () {
417
+ builder.fee('0');
418
+ builder.locktime(0);
419
+ // threshold of 0 should be invalid
420
+ assert.throws(() => {
421
+ builder.threshold(0);
422
+ }, sdk_core_1.BuildTransactionError);
423
+ });
424
+ it('should handle maximum values', function () {
425
+ const maxFee = '115792089237316195423570985008687907853269984665640564039457584007913129639935'; // Max uint256
426
+ const maxLocktime = 4294967295; // Max uint32
427
+ assert.doesNotThrow(() => {
428
+ builder.fee(maxFee);
429
+ });
430
+ assert.doesNotThrow(() => {
431
+ builder.locktime(maxLocktime);
432
+ });
433
+ });
434
+ it('should maintain state across multiple operations', function () {
435
+ const utxo1 = {
436
+ outputID: 1,
437
+ amount: '1000000000000000000',
438
+ txid: 'test-txid-1',
439
+ outputidx: '0',
440
+ threshold: 1,
441
+ addresses: ['C-flare1test1'],
442
+ };
443
+ const utxo2 = {
444
+ outputID: 2,
445
+ amount: '2000000000000000000',
446
+ txid: 'test-txid-2',
447
+ outputidx: '0',
448
+ threshold: 1,
449
+ addresses: ['C-flare1test2'],
450
+ };
451
+ // Build state incrementally
452
+ builder.fee('1000');
453
+ builder.addUtxos([utxo1]);
454
+ builder.locktime(123456);
455
+ builder.addUtxos([utxo2]);
456
+ builder.threshold(2);
457
+ // State should be maintained across operations
458
+ assert.ok(true);
459
+ });
460
+ });
461
+ describe('Integration Tests', function () {
462
+ it('should handle complete P-chain import flow preparation', function () {
463
+ const fee = '2000';
464
+ const locktime = 654321;
465
+ const threshold = 1;
466
+ const chainId = 'C-source-chain-456';
467
+ const utxos = [
468
+ {
469
+ outputID: 1,
470
+ amount: '6000000000000000000', // 6 FLR (more than output for fees)
471
+ txid: 'integration-test-txid',
472
+ outputidx: '0',
473
+ threshold: 1,
474
+ addresses: ['C-flare1source'],
475
+ },
476
+ ];
477
+ // Complete setup
478
+ builder.fee(fee).locktime(locktime).threshold(threshold).sourceChain(chainId).addUtxos(utxos);
479
+ // All operations should complete without throwing
480
+ assert.ok(true);
481
+ });
482
+ it('should handle method chaining extensively', function () {
483
+ const utxos = [
484
+ {
485
+ outputID: 1,
486
+ amount: '10000000000000000000', // 10 FLR
487
+ txid: 'chain-test-txid',
488
+ outputidx: '0',
489
+ threshold: 1,
490
+ addresses: ['C-flare1test'],
491
+ },
492
+ ];
493
+ // Test extensive method chaining
494
+ assert.doesNotThrow(() => {
495
+ builder.fee('1000').locktime(100000).threshold(1).sourceChain('C-chain-123').addUtxos(utxos);
496
+ });
497
+ });
498
+ });
499
+ });
500
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0SW5QVHhCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L2xpYi9pbXBvcnRJblBUeEJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw0Q0FBdUM7QUFDdkMsOENBQXdEO0FBQ3hELCtDQUFpQztBQUNqQyxnRUFBcUM7QUFDckMsNEVBQXlFO0FBR3pFLFFBQVEsQ0FBQyxvQkFBb0IsRUFBRTtJQUM3QixNQUFNLFVBQVUsR0FBRyxlQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3RDLElBQUksT0FBMkIsQ0FBQztJQUVoQyxVQUFVLENBQUM7UUFDVCxPQUFPLEdBQUcsSUFBSSx1Q0FBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMvQyxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxhQUFhLEVBQUU7UUFDdEIsRUFBRSxDQUFDLG9DQUFvQyxFQUFFO1lBQ3ZDLE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDbkIsTUFBTSxDQUFDLEVBQUUsQ0FBQyxPQUFPLFlBQVksdUNBQWtCLENBQUMsQ0FBQztRQUNuRCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyx1Q0FBdUMsRUFBRTtZQUMxQyx3REFBd0Q7WUFDeEQsTUFBTSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLGlCQUFpQixFQUFFO1FBQzFCLEVBQUUsQ0FBQyx3QkFBd0IsRUFBRTtZQUMzQixNQUFNLElBQUksR0FBbUI7Z0JBQzNCLFFBQVEsRUFBRSxDQUFDO2dCQUNYLE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxRQUFRO2dCQUN2QyxJQUFJLEVBQUUsa0JBQWtCO2dCQUN4QixTQUFTLEVBQUUs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QU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUU5RixrREFBa0Q7WUFDbEQsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQywyQ0FBMkMsRUFBRTtZQUM5QyxNQUFNLEtBQUssR0FBcUI7Z0JBQzlCO29CQUNFLFFBQVEsRUFBRSxDQUFDO29CQUNYLE1BQU0sRUFBRSxzQkFBc0IsRUFBRSxTQUFTO29CQUN6QyxJQUFJLEVBQUUsaUJBQWlCO29CQUN2QixTQUFTLEVBQUUsR0FBRztvQkFDZCxTQUFTLEVBQUUsQ0FBQztvQkFDWixTQUFTLEVBQUUsQ0FBQyxjQUFjLENBQUM7aUJBQzVCO2FBQ0YsQ0FBQztZQUVGLGlDQUFpQztZQUNqQyxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRTtnQkFDdkIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDL0YsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb2lucyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmltcG9ydCB7IEJ1aWxkVHJhbnNhY3Rpb25FcnJvciB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7IEltcG9ydEluUFR4QnVpbGRlciB9IGZyb20gJy4uLy4uLy4uL3NyYy9saWIvaW1wb3J0SW5QVHhCdWlsZGVyJztcbmltcG9ydCB7IERlY29kZWRVdHhvT2JqIH0gZnJvbSAnLi4vLi4vLi4vc3JjL2xpYi9pZmFjZSc7XG5cbmRlc2NyaWJlKCdJbXBvcnRJblBUeEJ1aWxkZXInLCBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IGNvaW5Db25maWcgPSBjb2lucy5nZXQoJ3RmbHJwJyk7XG4gIGxldCBidWlsZGVyOiBJbXBvcnRJblBUeEJ1aWxkZXI7XG5cbiAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgYnVpbGRlciA9IG5ldyBJbXBvcnRJblBUeEJ1aWxkZXIoY29pbkNvbmZpZyk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdDb25zdHJ1Y3RvcicsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIGluaXRpYWxpemUgd2l0aCBjb2luIGNvbmZpZycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFzc2VydC5vayhidWlsZGVyKTtcbiAgICAgIGFzc2VydC5vayhidWlsZGVyIGluc3RhbmNlb2YgSW1wb3J0SW5QVHhCdWlsZGVyKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaW5pdGlhbGl6ZSB3aXRoIGRlZmF1bHQgdmFsdWVzJywgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gQnVpbGRlciBzaG91bGQgYmUgaW5pdGlhbGl6ZWQgd2l0aG91dCB0aHJvd2luZyBlcnJvcnNcbiAgICAgIGFzc2VydC5vayhidWlsZGVyKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1VUWE8gTWFuYWdlbWVudCcsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIGFkZCBzaW5nbGUgVVRYTycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHV0eG86IERlY29kZWRVdHhvT2JqID0ge1xuICAgICAgICBvdXRwdXRJRDogMSxcbiAgICAgICAgYW1vdW50OiAnMTAwMDAwMDAwMDAwMDAwMDAwMCcsIC8vIDEgRkxSXG4gICAgICAgIHR4aWQ6ICd0ZXN0LXR4aWQtc2luZ2xlJyxcbiAgICAgICAgb3V0cHV0aWR4OiAnMCcsXG4gICAgICAgIHRocmVzaG9sZDogMSxcbiAgICAgICAgYWRkcmVzc2VzOiBbJ0MtZmxhcmUxdGVzdCddLFxuICAgICAgfTtcblxuICAgICAgYXNzZXJ0LmRvZXNOb3RUaHJvdygoKSA9PiB7XG4gICAgICAgIGJ1aWxkZXIuYWRkVXR4b3MoW3V0eG9dKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBhZGQgbXVsdGlwbGUgVVRYT3MnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB1dHhvczogRGVjb2RlZFV0eG9PYmpbXSA9IFtcbiAgICAgICAge1xuICAgICAgICAgIG91dHB1dElEOiAxLFxuICAgICAgICAgIGFtb3VudDogJzEwMDAwMDAwMDAwMDAwMDAwMDAnLCAvLyAxIEZMUlxuICAgICAgICAgIHR4aWQ6ICd0ZXN0LXR4aWQtMScsXG4gICAgICAgICAgb3V0cHV0aWR4OiAnMCcsXG4gICAgICAgICAgdGhyZXNob2xkOiAxLFxuICAgICAgICAgIGFkZHJlc3NlczogWydDLWZsYXJlMXRlc3QxJ10sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBvdXRwdXRJRDogMixcbiAgICAgICAgICBhbW91bnQ6ICcyMDAwMDAwMDAwMDAwMDAwMDAwJywgLy8gMiBGTFJcbiAgICAgICAgICB0eGlkOiAndGVzdC10eGlkLTInLFxuICAgICAgICAgIG91dHB1dGlkeDogJzEnLFxuICAgICAgICAgIHRocmVzaG9sZDogMixcbiAgICAgICAgICBhZGRyZXNzZXM6IFsnQy1mbGFyZTF0ZXN0MicsICdDLWZsYXJlMXRlc3QzJ10sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBvdXRwdXRJRDogMyxcbiAgICAgICAgICBhbW91bnQ6ICc1MDAwMDAwMDAwMDAwMDAwMDAnLCAvLyAwLjUgRkxSXG4gICAgICAgICAgdHhpZDogJ3Rlc3QtdHhpZC0zJyxcbiAgICAgICAgICBvdXRwdXRpZHg6ICcwJyxcbiAgICAgICAgICB0aHJlc2hvbGQ6IDEsXG4gICAgICAgICAgYWRkcmVzc2VzOiBbJ0MtZmxhcmUxdGVzdDQnXSxcbiAgICAgICAgfSxcbiAgICAgIF07XG5cbiAgICAgIGFzc2VydC5kb2VzTm90VGhyb3coKCkgPT4ge1xuICAgICAgICBidWlsZGVyLmFkZFV0eG9zKHV0eG9zKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBoYW5kbGUgZW1wdHkgVVRYTyBhcnJheScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFzc2VydC5kb2VzTm90VGhyb3coKCkgPT4ge1xuICAgICAgICBidWlsZGVyLmFkZFV0eG9zKFtdKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBhY2N1bXVsYXRlIFVUWE9zIGZyb20gbXVsdGlwbGUgY2FsbHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB1dHhvczE6IERlY29kZWRVdHhvT2JqW10gPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBvdXRwdXRJRDogMSxcbiAgICAgICAgICBhbW91bnQ6ICcxMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAgICAgICB0eGlkOiAndGVzdC10eGlkLTEnLFxuICAgICAgICAgIG91dHB1dGlkeDogJzAnLFxuICAgICAgICAgIHRocmVzaG9sZDogMSxcbiAgICAgICAgICBhZGRyZXNzZXM6IFsnQy1mbGFyZTF0ZXN0MSddLFxuICAgICAgICB9LFxuICAgICAgXTtcblxuICAgICAgY29uc3QgdXR4b3MyOiBEZWNvZGVkVXR4b09ialtdID0gW1xuICAgICAgICB7XG4gICAgICAgICAgb3V0cHV0SUQ6IDIsXG4gICAgICAgICAgYW1vdW50OiAnMjAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgICAgICAgdHhpZDogJ3Rlc3QtdHhpZC0yJyxcbiAgICAgICAgICBvdXRwdXRpZHg6ICcwJyxcbiAgICAgICAgICB0aHJlc2hvbGQ6IDEsXG4gICAgICAgICAgYWRkcmVzc2VzOiBbJ0MtZmxhcmUxdGVzdDInXSxcbiAgICAgICAgfSxcbiAgICAgIF07XG5cbiAgICAgIGJ1aWxkZXIuYWRkVXR4b3ModXR4b3MxKTtcbiAgICAgIGJ1aWxkZXIuYWRkVXR4b3ModXR4b3MyKTtcblxuICAgICAgLy8gU2hvdWxkIG5vdCB0aHJvd1xuICAgICAgYXNzZXJ0Lm9rKHRydWUpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnRmVlIE1hbmFnZW1lbnQnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBzZXQgdmFsaWQgcG9zaXRpdmUgZmVlJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdmFsaWRGZWVzID0gWycxMDAwJywgJzAnLCAnMTAwMDAwMDAwMDAwMDAwMDAwMCcsICc5OTk5OTk5OTk5OTk5OTk5OTknXTtcblxuICAgICAgdmFsaWRGZWVzLmZvckVhY2goKGZlZSkgPT4ge1xuICAgICAgICBhc3NlcnQuZG9lc05vdFRocm93KCgpID0+IHtcbiAgICAgICAgICBidWlsZGVyLmZlZShmZWUpO1xuICAgICAgICB9LCBgU2hvdWxkIGFjY2VwdCBmZWU6ICR7ZmVlfWApO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlamVjdCBuZWdhdGl2ZSBmZWVzJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgbmVnYXRpdmVGZWVzID0gWyctMScsICctMTAwMCcsICctMTAwMDAwMDAwMDAwMDAwMDAwMCddO1xuXG4gICAgICBuZWdhdGl2ZUZlZXMuZm9yRWFjaCgoZmVlKSA9PiB7XG4gICAgICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgYnVpbGRlci5mZWUoZmVlKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIEJ1aWxkVHJhbnNhY3Rpb25FcnJvcixcbiAgICAgICAgICBgU2hvdWxkIHJlamVjdCBuZWdhdGl2ZSBmZWU6ICR7ZmVlfWBcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBoYW5kbGUgaW52YWxpZCBmZWUgZm9ybWF0cyAoQmlnTnVtYmVyIGJlaGF2aW9yKScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGludmFsaWRGZWVzID0gWydhYmMnLCAnbm90LWEtbnVtYmVyJywgJzEuNS41JywgJ2luZmluaXR5J107XG5cbiAgICAgIGludmFsaWRGZWVzLmZvckVhY2goKGZlZSkgPT4ge1xuICAgICAgICAvLyBCaWdOdW1iZXIgZG9lc24ndCB0aHJvdyBmb3IgaW52YWxpZCBzdHJpbmdzLCBpdCBjcmVhdGVzIE5hTiB2YWx1ZXNcbiAgICAgICAgLy8gQnV0IG91ciBpbXBsZW1lbnRhdGlvbiBzaG91bGQgc3RpbGwgYWNjZXB0IHRoZW0gKG5vIGFkZGl0aW9uYWwgdmFsaWRhdGlvbilcbiAgICAgICAgYXNzZXJ0LmRvZXNOb3RUaHJvdygoKSA9PiB7XG4gICAgICAgICAgYnVpbGRlci5mZWUoZmVlKTtcbiAgICAgICAgfSwgYEJpZ051bWJlciBhY2NlcHRzIGludmFsaWQgc3RyaW5nczogJHtmZWV9YCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGFuZGxlIEJpZ051bWJlciBmZWUgaW5wdXRzJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYmlnTnVtYmVyRmVlID0gbmV3IEJpZ051bWJlcignMTAwMDAwMDAwMDAwMDAwMDAwMCcpO1xuICAgICAgYXNzZXJ0LmRvZXNOb3RUaHJvdygoKSA9PiB7XG4gICAgICAgIGJ1aWxkZXIuZmVlKGJpZ051bWJlckZlZS50b1N0cmluZygpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBjaGFpbiBmZWUgc2V0dGluZyB3aXRoIG90aGVyIG1ldGhvZHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBmZWUgPSAnMTAwMCc7XG4gICAgICBjb25zdCB1dHhvOiBEZWNvZGVkVXR4b09iaiA9IHtcbiAgICAgICAgb3V0cHV0SUQ6IDEsXG4gICAgICAgIGFtb3VudDogJzEwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICAgICB0eGlkOiAndGVzdC10eGlkJyxcbiAgICAgICAgb3V0cHV0aWR4OiAnMCcsXG4gICAgICAgIHRocmVzaG9sZDogMSxcbiAgICAgICAgYWRkcmVzc2VzOiBbJ0MtZmxhcmUxdGVzdCddLFxuICAgICAgfTtcblxuICAgICAgYXNzZXJ0LmRvZXNOb3RUaHJvdygoKSA9PiB7XG4gICAgICAgIGJ1aWxkZXIuZmVlKGZlZSkuYWRkVXR4b3MoW3V0eG9dKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnTG9ja3RpbWUgTWFuYWdlbWVudCcsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIHNldCB2YWxpZCBsb2NrdGltZSB2YWx1ZXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB2YWxpZExvY2t0aW1lcyA9IFswLCAxLCAxMDAwLCA0Mjk0OTY3Mjk1XTsgLy8gTWF4IHVpbnQzMlxuXG4gICAgICB2YWxpZExvY2t0aW1lcy5mb3JFYWNoKChsb2NrdGltZSkgPT4ge1xuICAgICAgICBhc3NlcnQuZG9lc05vdFRocm93KCgpID0+IHtcbiAgICAgICAgICBidWlsZGVyLmxvY2t0aW1lKGxvY2t0aW1lKTtcbiAgICAgICAgfSwgYFNob3VsZCBhY2NlcHQgbG9ja3RpbWU6ICR7bG9ja3RpbWV9YCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGFuZGxlIG5lZ2F0aXZlIGxvY2t0aW1lIChubyB2YWxpZGF0aW9uKScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IG5lZ2F0aXZlTG9ja3RpbWVzID0gWy0xLCAtMTAwMF07XG5cbiAgICAgIG5lZ2F0aXZlTG9ja3RpbWVzLmZvckVhY2goKGxvY2t0aW1lKSA9PiB7XG4gICAgICAgIGFzc2VydC5kb2VzTm90VGhyb3coKCkgPT4ge1xuICAgICAgICAgIGJ1aWxkZXIubG9ja3RpbWUobG9ja3RpbWUpO1xuICAgICAgICB9LCBgU2hvdWxkIGFjY2VwdCBuZWdhdGl2ZSBsb2NrdGltZTogJHtsb2NrdGltZX0gKG5vIHZhbGlkYXRpb24gaW4gaW1wbGVtZW50YXRpb24pYCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGFuZGxlIGJvdW5kYXJ5IHZhbHVlcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGJvdW5kYXJ5VmFsdWVzID0gWzAsIDQyOTQ5NjcyOTVdOyAvLyBNaW4gYW5kIG1heCB1aW50MzJcblxuICAgICAgYm91bmRhcnlWYWx1ZXMuZm9yRWFjaCgobG9ja3RpbWUpID0+IHtcbiAgICAgICAgYXNzZXJ0LmRvZXNOb3RUaHJvdygoKSA9PiB7XG4gICAgICAgICAgYnVpbGRlci5sb2NrdGltZShsb2NrdGltZSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGNoYWluIGxvY2t0aW1lIHNldHRpbmcgd2l0aCBvdGhlciBtZXRob2RzJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgbG9ja3RpbWUgPSAxMjM0NTY7XG4gICAgICBjb25zdCBmZWUgPSAnMTAwMCc7XG5cbiAgICAgIGFzc2VydC5kb2VzTm90VGhyb3coKCkgPT4ge1xuICAgICAgICBidWlsZGVyLmxvY2t0aW1lKGxvY2t0aW1lKS5mZWUoZmVlKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnVGhyZXNob2xkIE1hbmFnZW1lbnQnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBzZXQgdmFsaWQgdGhyZXNob2xkIHZhbHVlcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHZhbGlkVGhyZXNob2xkcyA9IFsxLCAyLCA1LCAxMF07XG5cbiAgICAgIHZhbGlkVGhyZXNob2xkcy5mb3JFYWNoKCh0aHJlc2hvbGQpID0+IHtcbiAgICAgICAgYXNzZXJ0LmRvZXNOb3RUaHJvdygoKSA9PiB7XG4gICAgICAgICAgYnVpbGRlci50aHJlc2hvbGQodGhyZXNob2xkKTtcbiAgICAgICAgfSwgYFNob3VsZCBhY2NlcHQgdGhyZXNob2xkOiAke3RocmVzaG9sZH1gKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZWplY3QgaW52YWxpZCB0aHJlc2hvbGQgdmFsdWVzJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgaW52YWxpZFRocmVzaG9sZHMgPSBbMCwgLTEsIC0xMF07XG5cbiAgICAgIGludmFsaWRUaHJlc2hvbGRzLmZvckVhY2goKHRocmVzaG9sZCkgPT4ge1xuICAgICAgICBhc3NlcnQudGhyb3dzKFxuICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgIGJ1aWxkZXIudGhyZXNob2xkKHRocmVzaG9sZCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBCdWlsZFRyYW5zYWN0aW9uRXJyb3IsXG4gICAgICAgICAgYFNob3VsZCByZWplY3QgdGhyZXNob2xkOiAke3RocmVzaG9sZH1gXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGFuZGxlIHR5cGljYWwgdGhyZXNob2xkIHNjZW5hcmlvcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIFNpbmdsZSBzaWduYXR1cmVcbiAgICAgIGFzc2VydC5kb2VzTm90VGhyb3coKCkgPT4ge1xuICAgICAgICBidWlsZGVyLnRocmVzaG9sZCgxKTtcbiAgICAgIH0pO1xuXG4gICAgICAvLyBNdWx0aS1zaWduYXR1cmVcbiAgICAgIGFzc2VydC5kb2VzTm90VGhyb3coKCkgPT4ge1xuICAgICAgICBidWlsZGVyLnRocmVzaG9sZCgzKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBjaGFpbiB0aHJlc2hvbGQgc2V0dGluZyB3aXRoIG90aGVyIG1ldGhvZHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0aHJlc2hvbGQgPSAyO1xuICAgICAgY29uc3QgbG9ja3RpbWUgPSAxMjM0NTY7XG5cbiAgICAgIGFzc2VydC5kb2VzTm90VGhyb3coKCkgPT4ge1xuICAgICAgICBidWlsZGVyLnRocmVzaG9sZCh0aHJlc2hvbGQpLmxvY2t0aW1lKGxvY2t0aW1lKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnU291cmNlIENoYWluIE1hbmFnZW1lbnQnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBzZXQgdmFsaWQgc291cmNlIGNoYWluIElEcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHZhbGlkQ2hhaW5JZHMgPSBbJ0MtZmxhcmUxMjM0NScsICdOb2RlSUQtZmxhcmU2Nzg5MCcsICcweDEyMzQ1Njc4OWFiY2RlZicsICdhYmMxMjNkZWY0NTYnXTtcblxuICAgICAgdmFsaWRDaGFpbklkcy5mb3JFYWNoKChjaGFpbklkKSA9PiB7XG4gICAgICAgIGFzc2VydC5kb2VzTm90VGhyb3coKCkgPT4ge1xuICAgICAgICAgIGJ1aWxkZXIuc291cmNlQ2hhaW4oY2hhaW5JZCk7XG4gICAgICAgIH0sIGBTaG91bGQgYWNjZXB0IGNoYWluIElEOiAke2NoYWluSWR9YCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGFuZGxlIGRpZmZlcmVudCBjaGFpbiBJRCBmb3JtYXRzJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgY2hhaW5JZHMgPSBbJ0MtY2hhaW4taWQtMTIzJywgJ1AtY2hhaW4taWQtNDU2JywgJ2hleC1mb3JtYXR0ZWQtaWQnLCAnMTIzNDU2Nzg5MGFiY2RlZiddO1xuXG4gICAgICBjaGFpbklkcy5mb3JFYWNoKChjaGFpbklkKSA9PiB7XG4gICAgICAgIGFzc2VydC5kb2VzTm90VGhyb3coKCkgPT4ge1xuICAgICAgICAgIGJ1aWxkZXIuc291cmNlQ2hhaW4oY2hhaW5JZCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdJbnB1dC9PdXRwdXQgQ3JlYXRpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCB0ZXN0IHB1YmxpYyBtZXRob2RzIG9ubHkgZHVlIHRvIHByb3RlY3RlZCBhY2Nlc3MnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBOb3RlOiBjcmVhdGVJbnB1dE91dHB1dCBpcyBwcm90ZWN0ZWQsIHNvIHdlIHRlc3QgdGhyb3VnaCBwdWJsaWMgaW50ZXJmYWNlXG4gICAgICAvLyBUZXN0IHRoYXQgd2UgY2FuIHNldCBwYXJhbWV0ZXJzIHRoYXQgd291bGQgYmUgdXNlZCBieSBjcmVhdGVJbnB1dE91dHB1dFxuICAgICAgYXNzZXJ0LmRvZXNOb3RUaHJvdygoKSA9PiB7XG4gICAgICAgIGJ1aWxkZXIuZmVlKCcxMDAwJyk7XG4gICAgICAgIGJ1aWxkZXIudGhyZXNob2xkKDEpO1xuICAgICAgICAvLyBQcm90ZWN0ZWQgbWV0aG9kIGNhbm5vdCBiZSB0ZXN0ZWQgZGlyZWN0bHlcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBoYW5kbGUgY29uZmlndXJhdGlvbiBmb3Igb3V0cHV0IGNyZWF0aW9uJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZmVlID0gJzEwMDAnO1xuICAgICAgY29uc3QgbG9ja3RpbWUgPSAwO1xuICAgICAgY29uc3QgdGhyZXNob2xkID0gMTtcblxuICAgICAgYXNzZXJ0LmRvZXNOb3RUaHJvdygoKSA9PiB7XG4gICAgICAgIGJ1aWxkZXIuZmVlKGZlZSkubG9ja3RpbWUobG9ja3RpbWUpLnRocmVzaG9sZCh0aHJlc2hvbGQpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGFsbG93IHNldHRpbmcgcGFyYW1ldGVycyBmb3IgbGFyZ2UgYW1vdW50cycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGxvY2t0aW1lID0gMDtcbiAgICAgIGNvbnN0IHRocmVzaG9sZCA9IDE7XG5cbiAgICAgIGFzc2VydC5kb2VzTm90VGhyb3coKCkgPT4ge1xuICAgICAgICBidWlsZGVyLmZlZSgnMTAwMCcpLmxvY2t0aW1lKGxvY2t0aW1lKS50aHJlc2hvbGQodGhyZXNob2xkKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBjb25maWd1cmUgZm9yIGRpZmZlcmVudCB0aHJlc2hvbGQgc2NlbmFyaW9zJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgbG9ja3RpbWUgPSAwO1xuXG4gICAgICAvLyBUZXN0IGRpZmZlcmVudCB0aHJlc2hvbGRzXG4gICAgICBbMSwgMiwgM10uZm9yRWFjaCgodGhyZXNob2xkKSA9PiB7XG4gICAgICAgIGFzc2VydC5kb2VzTm90VGhyb3coKCkgPT4ge1xuICAgICAgICAgIGJ1aWxkZXIudGhyZXNob2xkKHRocmVzaG9sZCkubG9ja3RpbWUobG9ja3RpbWUpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnVHJhbnNhY3Rpb24gVHlwZSBWZXJpZmljYXRpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCB2ZXJpZnkgdHJhbnNhY3Rpb24gdHlwZSAocGxhY2Vob2xkZXIpJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgbW9ja1R4ID0geyB0eXBlOiAnaW1wb3J0JyB9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gSW1wb3J0SW5QVHhCdWlsZGVyLnZlcmlmeVR4VHlwZShtb2NrVHgpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdCwgdHJ1ZSk7IC8vIFBsYWNlaG9sZGVyIHJldHVybnMgdHJ1ZVxuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBoYW5kbGUgZGlmZmVyZW50IHRyYW5zYWN0aW9uIG9iamVjdHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0ZXN0Q2FzZXMgPSBbe30sIG51bGwsIHVuZGVmaW5lZCwgeyB0eXBlOiAnZXhwb3J0JyB9LCB7IGRhdGE6ICd0ZXN0JyB9XTtcblxuICAgICAgdGVzdENhc2VzLmZvckVhY2goKHRlc3RDYXNlLCBpbmRleCkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBJbXBvcnRJblBUeEJ1aWxkZXIudmVyaWZ5VHhUeXBlKHRlc3RDYXNlKTtcbiAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdCwgdHJ1ZSwgYFRlc3QgY2FzZSAke2luZGV4fSBzaG91bGQgcmV0dXJuIHRydWUgKHBsYWNlaG9sZGVyKWApO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZlcmlmeSB2aWEgaW5zdGFuY2UgbWV0aG9kJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgbW9ja1R4ID0geyB0eXBlOiAnaW1wb3J0JyB9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gYnVpbGRlci52ZXJpZnlUeFR5cGUobW9ja1R4KTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQsIHRydWUpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnVHJhbnNhY3Rpb24gQnVpbGRpbmcgUHJlcGFyYXRpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBwcmVwYXJlIGJhc2ljIGltcG9ydCB0cmFuc2FjdGlvbiBwYXJhbWV0ZXJzJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZmVlID0gJzEwMDAnO1xuICAgICAgY29uc3QgbG9ja3RpbWUgPSAxMjM0NTY7XG4gICAgICBjb25zdCB0aHJlc2hvbGQgPSAyO1xuICAgICAgY29uc3QgY2hhaW5JZCA9ICdDLXNvdXJjZS1jaGFpbi0xMjMnO1xuICAgICAgY29uc3QgdXR4b3M6IERlY29kZWRVdHhvT2JqW10gPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBvdXRwdXRJRDogMSxcbiAgICAgICAgICBhbW91bnQ6ICcxMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAgICAgICB0eGlkOiAndGVzdC10eGlkJyxcbiAgICAgICAgICBvdXRwdXRpZHg6ICcwJyxcbiAgICAgICAgICB0aHJlc2hvbGQ6IDEsXG4gICAgICAgICAgYWRkcmVzc2VzOiBbJ0MtZmxhcmUxdGVzdCddLFxuICAgICAgICB9LFxuICAgICAgXTtcblxuICAgICAgLy8gU2V0IGFsbCBwYXJhbWV0ZXJzXG4gICAgICBidWlsZGVyLmZlZShmZWUpLmxvY2t0aW1lKGxvY2t0aW1lKS50aHJlc2hvbGQodGhyZXNob2xkKS5zb3VyY2VDaGFpbihjaGFpbklkKS5hZGRVdHhvcyh1dHhvcyk7XG5cbiAgICAgIC8vIFNob3VsZCBub3QgdGhyb3dcbiAgICAgIGFzc2VydC5vayh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGFuZGxlIG1pbmltYWwgY29uZmlndXJhdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGZlZSA9ICcwJztcbiAgICAgIGNvbnN0IHV0eG9zOiBEZWNvZGVkVXR4b09ialtdID0gW1xuICAgICAgICB7XG4gICAgICAgICAgb3V0cHV0SUQ6IDEsXG4gICAgICAgICAgYW1vdW50OiAnMTAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgICAgICAgdHhpZDogJ3Rlc3QtdHhpZCcsXG4gICAgICAgICAgb3V0cHV0aWR4OiAnMCcsXG4gICAgICAgICAgdGhyZXNob2xkOiAxLFxuICAgICAgICAgIGFkZHJlc3NlczogWydDLWZsYXJlMXRlc3QnXSxcbiAgICAgICAgfSxcbiAgICAgIF07XG5cbiAgICAgIGJ1aWxkZXIuZmVlKGZlZSkuYWRkVXR4b3ModXR4b3MpO1xuXG4gICAgICAvLyBTaG91bGQgbm90IHRocm93XG4gICAgICBhc3NlcnQub2sodHJ1ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdDb21wbGV4IFNjZW5hcmlvcycsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIGhhbmRsZSBtdWx0aXBsZSBVVFhPcyB3aXRoIGRpZmZlcmVudCBwcm9wZXJ0aWVzJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdXR4b3M6IERlY29kZWRVdHhvT2JqW10gPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBvdXRwdXRJRDogMSxcbiAgICAgICAgICBhbW91bnQ6ICcxMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAgICAgICB0eGlkOiAndGVzdC10eGlkLTEnLFxuICAgICAgICAgIG91dHB1dGlkeDogJzAnLFxuICAgICAgICAgIHRocmVzaG9sZDogMSxcbiAgICAgICAgICBhZGRyZXNzZXM6IFsnQy1mbGFyZTFzaW5nbGUnXSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG91dHB1dElEOiAyLFxuICAgICAgICAgIGFtb3VudDogJzIwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICAgICAgIHR4aWQ6ICd0ZXN0LXR4aWQtMicsXG4gICAgICAgICAgb3V0cHV0aWR4OiAnMScsXG4gICAgICAgICAgdGhyZXNob2xkOiAyLFxuICAgICAgICAgIGFkZHJlc3NlczogWydDLWZsYXJlMW11bHRpMScsICdDLWZsYXJlMW11bHRpMiddLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgb3V0cHV0SUQ6IDMsXG4gICAgICAgICAgYW1vdW50OiAnMzAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgICAgICAgdHhpZDogJ3Rlc3QtdHhpZC0zJyxcbiAgICAgICAgICBvdXRwdXRpZHg6ICcwJyxcbiAgICAgICAgICB0aHJlc2hvbGQ6IDMsXG4gICAgICAgICAgYWRkcmVzc2VzOiBbJ0MtZmxhcmUxbXVsdGkxJywgJ0MtZmxhcmUxbXVsdGkyJywgJ0MtZmxhcmUxbXVsdGkzJ10sXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgICBidWlsZGVyLmFkZFV0eG9zKHV0eG9zKTtcbiAgICAgIGJ1aWxkZXIuZmVlKCc1MDAwJyk7IC8vIEhpZ2hlciBmZWUgZm9yIGNvbXBsZXggdHJhbnNhY3Rpb25cbiAgICAgIGJ1aWxkZXIudGhyZXNob2xkKDIpO1xuXG4gICAgICAvLyBTaG91bGQgaGFuZGxlIGNvbXBsZXggVVRYTyBzZXRcbiAgICAgIGFzc2VydC5vayh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGFuZGxlIGxhcmdlIHRyYW5zYWN0aW9uIHBhcmFtZXRlcnMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBmZWUgPSAnMTAwMDAwMDAwMDAwMDAwMDAwMCc7IC8vIDEgRkxSIGZlZVxuICAgICAgY29uc3QgbG9ja3RpbWUgPSA0Mjk0OTY3Mjk1OyAvLyBNYXggdWludDMyXG4gICAgICBjb25zdCB0aHJlc2hvbGQgPSAxMDsgLy8gSGlnaCB0aHJlc2hvbGRcbiAgICAgIGNvbnN0IGNoYWluSWQgPSAndmVyeS1sb25nLWNoYWluLWlkLXdpdGgtbG90cy1vZi1jaGFyYWN0ZXJzLTB4MTIzNDU2Nzg5YWJjZGVmMDEyMzQ1Njc4OWFiY2RlZic7XG5cbiAgICAgIGJ1aWxkZXIuZmVlKGZlZSkubG9ja3RpbWUobG9ja3RpbWUpLnRocmVzaG9sZCh0aHJlc2hvbGQpLnNvdXJjZUNoYWluKGNoYWluSWQpO1xuXG4gICAgICAvLyBTaG91bGQgaGFuZGxlIGxhcmdlIHZhbHVlc1xuICAgICAgYXNzZXJ0Lm9rKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBoYW5kbGUgcmFwaWQgcGFyYW1ldGVyIGNoYW5nZXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBTaW11bGF0ZSByYXBpZCBwYXJhbWV0ZXIgdXBkYXRlc1xuICAgICAgYnVpbGRlci5mZWUoJzEwMDAnKS5mZWUoJzIwMDAnKS5mZWUoJzMwMDAnKTtcbiAgICAgIGJ1aWxkZXIubG9ja3RpbWUoMTAwKS5sb2NrdGltZSgyMDApLmxvY2t0aW1lKDMwMCk7XG4gICAgICBidWlsZGVyLnRocmVzaG9sZCgxKS50aHJlc2hvbGQoMikudGhyZXNob2xkKDMpO1xuXG4gICAgICAvLyBTaG91bGQgaGFuZGxlIHJhcGlkIGNoYW5nZXMgd2l0aG91dCBpc3N1ZXNcbiAgICAgIGFzc2VydC5vayh0cnVlKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0VkZ2UgQ2FzZXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBoYW5kbGUgemVybyB2YWx1ZXMgd2hlcmUgYXBwcm9wcmlhdGUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBidWlsZGVyLmZlZSgnMCcpO1xuICAgICAgYnVpbGRlci5sb2NrdGltZSgwKTtcbiAgICAgIC8vIHRocmVzaG9sZCBvZiAwIHNob3VsZCBiZSBpbnZhbGlkXG4gICAgICBhc3NlcnQudGhyb3dzKCgpID0+IHtcbiAgICAgICAgYnVpbGRlci50aHJlc2hvbGQoMCk7XG4gICAgICB9LCBCdWlsZFRyYW5zYWN0aW9uRXJyb3IpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBoYW5kbGUgbWF4aW11bSB2YWx1ZXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBtYXhGZWUgPSAnMTE1NzkyMDg5MjM3MzE2MTk1NDIzNTcwOTg1MDA4Njg3OTA3ODUzMjY5OTg0NjY1NjQwNTY0MDM5NDU3NTg0MDA3OTEzMTI5NjM5OTM1JzsgLy8gTWF4IHVpbnQyNTZcbiAgICAgIGNvbnN0IG1heExvY2t0aW1lID0gNDI5NDk2NzI5NTsgLy8gTWF4IHVpbnQzMlxuXG4gICAgICBhc3NlcnQuZG9lc05vdFRocm93KCgpID0+IHtcbiAgICAgICAgYnVpbGRlci5mZWUobWF4RmVlKTtcbiAgICAgIH0pO1xuXG4gICAgICBhc3NlcnQuZG9lc05vdFRocm93KCgpID0+IHtcbiAgICAgICAgYnVpbGRlci5sb2NrdGltZShtYXhMb2NrdGltZSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgbWFpbnRhaW4gc3RhdGUgYWNyb3NzIG11bHRpcGxlIG9wZXJhdGlvbnMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB1dHhvMTogRGVjb2RlZFV0eG9PYmogPSB7XG4gICAgICAgIG91dHB1dElEOiAxLFxuICAgICAgICBhbW91bnQ6ICcxMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAgICAgdHhpZDogJ3Rlc3QtdHhpZC0xJyxcbiAgICAgICAgb3V0cHV0aWR4OiAnMCcsXG4gICAgICAgIHRocmVzaG9sZDogMSxcbiAgICAgICAgYWRkcmVzc2VzOiBbJ0MtZmxhcmUxdGVzdDEnXSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHV0eG8yOiBEZWNvZGVkVXR4b09iaiA9IHtcbiAgICAgICAgb3V0cHV0SUQ6IDIsXG4gICAgICAgIGFtb3VudDogJzIwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICAgICB0eGlkOiAndGVzdC10eGlkLTInLFxuICAgICAgICBvdXRwdXRpZHg6ICcwJyxcbiAgICAgICAgdGhyZXNob2xkOiAxLFxuICAgICAgICBhZGRyZXNzZXM6IFsnQy1mbGFyZTF0ZXN0MiddLFxuICAgICAgfTtcblxuICAgICAgLy8gQnVpbGQgc3RhdGUgaW5jcmVtZW50YWxseVxuICAgICAgYnVpbGRlci5mZWUoJzEwMDAnKTtcbiAgICAgIGJ1aWxkZXIuYWRkVXR4b3MoW3V0eG8xXSk7XG4gICAgICBidWlsZGVyLmxvY2t0aW1lKDEyMzQ1Nik7XG4gICAgICBidWlsZGVyLmFkZFV0eG9zKFt1dHhvMl0pO1xuICAgICAgYnVpbGRlci50aHJlc2hvbGQoMik7XG5cbiAgICAgIC8vIFN0YXRlIHNob3VsZCBiZSBtYWludGFpbmVkIGFjcm9zcyBvcGVyYXRpb25zXG4gICAgICBhc3NlcnQub2sodHJ1ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdJbnRlZ3JhdGlvbiBUZXN0cycsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIGhhbmRsZSBjb21wbGV0ZSBQLWNoYWluIGltcG9ydCBmbG93IHByZXBhcmF0aW9uJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZmVlID0gJzIwMDAnO1xuICAgICAgY29uc3QgbG9ja3RpbWUgPSA2NTQzMjE7XG4gICAgICBjb25zdCB0aHJlc2hvbGQgPSAxO1xuICAgICAgY29uc3QgY2hhaW5JZCA9ICdDLXNvdXJjZS1jaGFpbi00NTYnO1xuICAgICAgY29uc3QgdXR4b3M6IERlY29kZWRVdHhvT2JqW10gPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBvdXRwdXRJRDogMSxcbiAgICAgICAgICBhbW91bnQ6ICc2MDAwMDAwMDAwMDAwMDAwMDAwJywgLy8gNiBGTFIgKG1vcmUgdGhhbiBvdXRwdXQgZm9yIGZlZXMpXG4gICAgICAgICAgdHhpZDogJ2ludGVncmF0aW9uLXRlc3QtdHhpZCcsXG4gICAgICAgICAgb3V0cHV0aWR4OiAnMCcsXG4gICAgICAgICAgdGhyZXNob2xkOiAxLFxuICAgICAgICAgIGFkZHJlc3NlczogWydDLWZsYXJlMXNvdXJjZSddLFxuICAgICAgICB9LFxuICAgICAgXTtcblxuICAgICAgLy8gQ29tcGxldGUgc2V0dXBcbiAgICAgIGJ1aWxkZXIuZmVlKGZlZSkubG9ja3RpbWUobG9ja3RpbWUpLnRocmVzaG9sZCh0aHJlc2hvbGQpLnNvdXJjZUNoYWluKGNoYWluSWQpLmFkZFV0eG9zKHV0eG9zKTtcblxuICAgICAgLy8gQWxsIG9wZXJhdGlvbnMgc2hvdWxkIGNvbXBsZXRlIHdpdGhvdXQgdGhyb3dpbmdcbiAgICAgIGFzc2VydC5vayh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGFuZGxlIG1ldGhvZCBjaGFpbmluZyBleHRlbnNpdmVseScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHV0eG9zOiBEZWNvZGVkVXR4b09ialtdID0gW1xuICAgICAgICB7XG4gICAgICAgICAgb3V0cHV0SUQ6IDEsXG4gICAgICAgICAgYW1vdW50OiAnMTAwMDAwMDAwMDAwMDAwMDAwMDAnLCAvLyAxMCBGTFJcbiAgICAgICAgICB0eGlkOiAnY2hhaW4tdGVzdC10eGlkJyxcbiAgICAgICAgICBvdXRwdXRpZHg6ICcwJyxcbiAgICAgICAgICB0aHJlc2hvbGQ6IDEsXG4gICAgICAgICAgYWRkcmVzc2VzOiBbJ0MtZmxhcmUxdGVzdCddLFxuICAgICAgICB9LFxuICAgICAgXTtcblxuICAgICAgLy8gVGVzdCBleHRlbnNpdmUgbWV0aG9kIGNoYWluaW5nXG4gICAgICBhc3NlcnQuZG9lc05vdFRocm93KCgpID0+IHtcbiAgICAgICAgYnVpbGRlci5mZWUoJzEwMDAnKS5sb2NrdGltZSgxMDAwMDApLnRocmVzaG9sZCgxKS5zb3VyY2VDaGFpbignQy1jaGFpbi0xMjMnKS5hZGRVdHhvcyh1dHhvcyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=transaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../../test/unit/lib/transaction.ts"],"names":[],"mappings":""}