@bitgo-beta/sdk-coin-cosmos 1.0.1-alpha.54 → 1.0.1-alpha.55

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 (38) hide show
  1. package/.eslintignore +5 -0
  2. package/.mocharc.yml +8 -0
  3. package/CHANGELOG.md +79 -0
  4. package/package.json +7 -10
  5. package/dist/test/resources/mantra.d.ts +0 -70
  6. package/dist/test/resources/mantra.d.ts.map +0 -1
  7. package/dist/test/resources/mantra.js +0 -80
  8. package/dist/test/testUtils/generators.d.ts +0 -54
  9. package/dist/test/testUtils/generators.d.ts.map +0 -1
  10. package/dist/test/testUtils/generators.js +0 -183
  11. package/dist/test/testUtils/index.d.ts +0 -8
  12. package/dist/test/testUtils/index.d.ts.map +0 -1
  13. package/dist/test/testUtils/index.js +0 -25
  14. package/dist/test/testUtils/types.d.ts +0 -203
  15. package/dist/test/testUtils/types.d.ts.map +0 -1
  16. package/dist/test/testUtils/types.js +0 -7
  17. package/dist/test/testUtils/utils.d.ts +0 -43
  18. package/dist/test/testUtils/utils.d.ts.map +0 -1
  19. package/dist/test/testUtils/utils.js +0 -122
  20. package/dist/test/unit/cosmosSharedCoin.d.ts +0 -2
  21. package/dist/test/unit/cosmosSharedCoin.d.ts.map +0 -1
  22. package/dist/test/unit/cosmosSharedCoin.js +0 -300
  23. package/dist/test/unit/keyPair.d.ts +0 -2
  24. package/dist/test/unit/keyPair.d.ts.map +0 -1
  25. package/dist/test/unit/keyPair.js +0 -73
  26. package/dist/test/unit/register.d.ts +0 -2
  27. package/dist/test/unit/register.d.ts.map +0 -1
  28. package/dist/test/unit/register.js +0 -48
  29. package/dist/test/unit/transactionBuilder/transactionBuilder.d.ts +0 -2
  30. package/dist/test/unit/transactionBuilder/transactionBuilder.d.ts.map +0 -1
  31. package/dist/test/unit/transactionBuilder/transactionBuilder.js +0 -46
  32. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts +0 -2
  33. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts.map +0 -1
  34. package/dist/test/unit/transactionBuilder/transferBuilder.js +0 -186
  35. package/dist/test/unit/utils.d.ts +0 -2
  36. package/dist/test/unit/utils.d.ts.map +0 -1
  37. package/dist/test/unit/utils.js +0 -82
  38. package/dist/tsconfig.tsbuildinfo +0 -1
@@ -1,300 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const should_1 = __importDefault(require("should"));
7
- const bignumber_js_1 = __importDefault(require("bignumber.js"));
8
- const sinon_1 = __importDefault(require("sinon"));
9
- const encoding_1 = require("@cosmjs/encoding");
10
- const sdk_test_1 = require("@bitgo-beta/sdk-test");
11
- const sdk_api_1 = require("@bitgo-beta/sdk-api");
12
- const statics_1 = require("@bitgo-beta/statics");
13
- const src_1 = require("../../src");
14
- const testUtils_1 = require("../testUtils");
15
- describe('Cosmos Shared Coin', function () {
16
- const availableCoins = (0, testUtils_1.getAvailableTestCoins)();
17
- // TODO: COIN-5039 - Running tests for each coin in parallel to improve test performance
18
- // Loop through each available coin and run tests
19
- availableCoins.forEach((coinName) => {
20
- describe(`${coinName.toUpperCase()} Cosmos Shared Coin`, function () {
21
- let bitgo;
22
- let cosmosCoin;
23
- let utils;
24
- const testData = (0, testUtils_1.getTestData)(coinName);
25
- const testTx = testData.testSendTx;
26
- const testTxWithMemo = testData.testTxWithMemo;
27
- const coin = statics_1.coins.get(testData.testnetCoin);
28
- const network = coin.network;
29
- before(function () {
30
- bitgo = sdk_test_1.TestBitGo.decorate(sdk_api_1.BitGoAPI, { env: 'test' });
31
- bitgo.safeRegister(testData.testnetCoin, src_1.CosmosSharedCoin.createInstance);
32
- bitgo.safeRegister(testData.mainnetCoin, src_1.CosmosSharedCoin.createInstance);
33
- bitgo.initializeTestVars();
34
- cosmosCoin = bitgo.coin(testData.testnetCoin);
35
- utils = new src_1.Utils(network);
36
- });
37
- it('should instantiate the coin', function () {
38
- should_1.default.exist(cosmosCoin);
39
- cosmosCoin.should.be.an.instanceof(src_1.CosmosSharedCoin);
40
- });
41
- it('should return the right info', function () {
42
- const testCoin = bitgo.coin(testData.testnetCoin);
43
- const mainnetCoin = bitgo.coin(testData.mainnetCoin);
44
- testCoin.getChain().should.equal(testData.testnetCoin);
45
- testCoin.getFamily().should.equal(testData.family);
46
- testCoin.getFullName().should.equal(testData.testnetName);
47
- testCoin.getBaseFactor().should.equal(Math.pow(10, testData.decimalPlaces));
48
- mainnetCoin.getChain().should.equal(testData.mainnetCoin);
49
- mainnetCoin.getFamily().should.equal(testData.family);
50
- mainnetCoin.getFullName().should.equal(testData.mainnetName);
51
- mainnetCoin.getBaseFactor().should.equal(Math.pow(10, testData.decimalPlaces));
52
- });
53
- it('should throw if instantiated without a staticsCoin', function () {
54
- const tempBitgo = sdk_test_1.TestBitGo.decorate(sdk_api_1.BitGoAPI, { env: 'test' });
55
- (0, should_1.default)(() => src_1.CosmosSharedCoin.createInstance(tempBitgo)).throwError('missing required constructor parameter staticsCoin');
56
- });
57
- it('should throw if instantiated with invalid network configuration', function () {
58
- const tempBitgo = sdk_test_1.TestBitGo.decorate(sdk_api_1.BitGoAPI, { env: 'test' });
59
- const invalidCoin = Object.assign({}, coin, { network: {} });
60
- (0, should_1.default)(() => src_1.CosmosSharedCoin.createInstance(tempBitgo, invalidCoin)).throwError('Invalid network configuration: missing required Cosmos network parameters');
61
- });
62
- describe('getBaseFactor', function () {
63
- it('should return the correct base factor', function () {
64
- const baseFactor = cosmosCoin.getBaseFactor();
65
- should_1.default.equal(baseFactor, Math.pow(10, testData.decimalPlaces));
66
- });
67
- });
68
- describe('getBuilder', function () {
69
- it('should return a transaction builder', function () {
70
- const builder = cosmosCoin.getBuilder();
71
- should_1.default.exist(builder);
72
- });
73
- });
74
- describe('getDenomination', function () {
75
- it('should return the correct denomination', function () {
76
- should_1.default.equal(cosmosCoin.getDenomination(), network.denom);
77
- });
78
- });
79
- describe('getGasAmountDetails', function () {
80
- it('should return the correct gas amount details', function () {
81
- const gasAmountDetails = cosmosCoin.getGasAmountDetails();
82
- should_1.default.deepEqual(gasAmountDetails, {
83
- gasAmount: network.gasAmount,
84
- gasLimit: network.gasLimit,
85
- });
86
- });
87
- });
88
- describe('getNetwork', function () {
89
- it('should return the correct network', function () {
90
- const returnedNetwork = cosmosCoin.getNetwork();
91
- should_1.default.deepEqual(returnedNetwork, network);
92
- });
93
- });
94
- describe('getKeyPair', function () {
95
- it('should return a key pair', function () {
96
- const keyPair = cosmosCoin.getKeyPair((0, encoding_1.toHex)((0, encoding_1.fromBase64)(testData.pubKey)));
97
- should_1.default.exist(keyPair);
98
- });
99
- });
100
- describe('getAddressFromPublicKey', function () {
101
- it('should return the correct address', function () {
102
- const address = cosmosCoin.getAddressFromPublicKey((0, encoding_1.toHex)((0, encoding_1.fromBase64)(testData.pubKey)));
103
- should_1.default.equal(address, testData.senderAddress);
104
- });
105
- });
106
- describe('Address Validation', () => {
107
- it('should get address details without memoId', function () {
108
- const addressDetails = cosmosCoin.getAddressDetails(testData.addresses.noMemoIdAddress);
109
- addressDetails.address.should.equal(testData.addresses.noMemoIdAddress);
110
- should_1.default.not.exist(addressDetails.memoId);
111
- });
112
- it('should get address details with memoId', function () {
113
- const addressDetails = cosmosCoin.getAddressDetails(testData.addresses.validMemoIdAddress);
114
- addressDetails.address.should.equal(testData.addresses.validMemoIdAddress.split('?')[0]);
115
- if (addressDetails.memoId) {
116
- addressDetails.memoId.should.equal('2');
117
- }
118
- else {
119
- should_1.default.fail('Expected memoId to be defined', null);
120
- }
121
- });
122
- it('should throw on invalid memo id address', () => {
123
- (() => {
124
- cosmosCoin.getAddressDetails(testData.addresses.invalidMemoIdAddress);
125
- }).should.throw();
126
- });
127
- it('should throw on multiple memo id address', () => {
128
- (() => {
129
- cosmosCoin.getAddressDetails(testData.addresses.multipleMemoIdAddress);
130
- }).should.throw();
131
- });
132
- it('should validate wallet receive address', async function () {
133
- const receiveAddress = {
134
- address: `${testData.addresses.address1}?memoId=7`,
135
- coinSpecific: {
136
- rootAddress: testData.addresses.address1,
137
- memoID: '7',
138
- },
139
- };
140
- // as VerifyTransactionOptions
141
- const isValid = await cosmosCoin.isWalletAddress(receiveAddress);
142
- isValid.should.equal(true);
143
- });
144
- it('should validate account addresses correctly', () => {
145
- should_1.default.equal(utils.isValidAddress(testData.addresses.address1), true);
146
- should_1.default.equal(utils.isValidAddress(testData.addresses.address2), true);
147
- should_1.default.equal(utils.isValidAddress('dfjk35y'), false);
148
- should_1.default.equal(utils.isValidAddress(undefined), false);
149
- should_1.default.equal(utils.isValidAddress(''), false);
150
- should_1.default.equal(utils.isValidAddress(testData.addresses.validMemoIdAddress), true);
151
- should_1.default.equal(utils.isValidAddress(testData.addresses.invalidMemoIdAddress), false);
152
- should_1.default.equal(utils.isValidAddress(testData.addresses.multipleMemoIdAddress), false);
153
- });
154
- it('should validate validator addresses correctly', () => {
155
- should_1.default.equal(utils.isValidValidatorAddress(testData.addresses.validatorAddress1), true);
156
- should_1.default.equal(utils.isValidValidatorAddress(testData.addresses.validatorAddress2), true);
157
- should_1.default.equal(utils.isValidValidatorAddress('dfjk35y'), false);
158
- should_1.default.equal(utils.isValidValidatorAddress(undefined), false);
159
- should_1.default.equal(utils.isValidValidatorAddress(''), false);
160
- });
161
- });
162
- describe('Verify transaction: ', () => {
163
- it('should succeed to verify transaction', async function () {
164
- const txPrebuild = {
165
- txHex: testTx.signedTxBase64,
166
- txInfo: {},
167
- };
168
- const txParams = {
169
- recipients: [
170
- {
171
- address: testTx.recipient,
172
- amount: testTx.sendAmount,
173
- },
174
- ],
175
- };
176
- const verification = {};
177
- const isTransactionVerified = await cosmosCoin.verifyTransaction({
178
- txParams,
179
- txPrebuild,
180
- verification,
181
- });
182
- isTransactionVerified.should.equal(true);
183
- });
184
- it('should succeed to verify sendMany transaction', async function () {
185
- const txPrebuild = {
186
- txHex: testTx.signedTxBase64,
187
- txInfo: {},
188
- };
189
- const txParams = {
190
- recipients: [
191
- {
192
- address: testTx.recipient,
193
- amount: testTx.sendAmount,
194
- },
195
- ],
196
- };
197
- const verification = {};
198
- const isTransactionVerified = await cosmosCoin.verifyTransaction({
199
- txParams,
200
- txPrebuild,
201
- verification,
202
- });
203
- isTransactionVerified.should.equal(true);
204
- });
205
- it('should fail to verify transaction with invalid param', async function () {
206
- const txPrebuild = {};
207
- const txParams = { recipients: undefined };
208
- await cosmosCoin
209
- .verifyTransaction({ txParams, txPrebuild })
210
- .should.be.rejectedWith('missing required tx prebuild property txHex');
211
- });
212
- });
213
- describe('Explain Transaction: ', () => {
214
- it('should explain a transfer transaction', async function () {
215
- const explainedTransaction = await cosmosCoin.explainTransaction({
216
- txHex: testTx.signedTxBase64,
217
- });
218
- explainedTransaction.should.deepEqual({
219
- displayOrder: ['id', 'outputs', 'outputAmount', 'changeOutputs', 'changeAmount', 'fee', 'type'],
220
- id: testTx.hash,
221
- outputs: [
222
- {
223
- address: testTx.recipient,
224
- amount: testTx.sendAmount,
225
- },
226
- ],
227
- outputAmount: testTx.sendAmount,
228
- changeOutputs: [],
229
- changeAmount: '0',
230
- fee: { fee: testTx.feeAmount },
231
- type: 0,
232
- });
233
- });
234
- it('should explain a transfer transaction with memo', async function () {
235
- const explainedTransaction = await cosmosCoin.explainTransaction({
236
- txHex: testTxWithMemo.signedTxBase64,
237
- });
238
- explainedTransaction.should.deepEqual({
239
- displayOrder: ['id', 'outputs', 'outputAmount', 'changeOutputs', 'changeAmount', 'fee', 'type'],
240
- id: testTxWithMemo.hash,
241
- outputs: [
242
- {
243
- address: testTxWithMemo.recipient,
244
- amount: testTxWithMemo.sendAmount,
245
- memo: testTxWithMemo.memo,
246
- },
247
- ],
248
- outputAmount: testTxWithMemo.sendAmount,
249
- changeOutputs: [],
250
- changeAmount: '0',
251
- fee: { fee: testTxWithMemo.feeAmount },
252
- type: 0,
253
- });
254
- });
255
- it('should fail to explain transaction with missing params', async function () {
256
- try {
257
- await cosmosCoin.explainTransaction({ txHex: '' });
258
- }
259
- catch (error) {
260
- should_1.default.equal(error.message, 'missing required txHex parameter');
261
- }
262
- });
263
- it('should fail to explain transaction with invalid params', async function () {
264
- try {
265
- await cosmosCoin.explainTransaction({ txHex: 'randomString' });
266
- }
267
- catch (error) {
268
- should_1.default.equal(error.message.startsWith('Invalid transaction:'), true);
269
- }
270
- });
271
- });
272
- describe('Parse Transactions: ', () => {
273
- const transferInputsResponse = {
274
- address: testTx.recipient,
275
- amount: new bignumber_js_1.default(testTx.sendAmount).plus(testTx.feeAmount).toFixed(),
276
- };
277
- const transferOutputsResponse = {
278
- address: testTx.recipient,
279
- amount: testTx.sendAmount,
280
- };
281
- it('should parse a transfer transaction', async function () {
282
- const parsedTransaction = await cosmosCoin.parseTransaction({ txHex: testTx.signedTxBase64 });
283
- parsedTransaction.should.deepEqual({
284
- inputs: [transferInputsResponse],
285
- outputs: [transferOutputsResponse],
286
- });
287
- });
288
- it('should fail to parse a transfer transaction when explainTransaction response is undefined', async function () {
289
- const stub = sinon_1.default.stub(src_1.CosmosSharedCoin.prototype, 'explainTransaction');
290
- stub.resolves(undefined);
291
- await cosmosCoin
292
- .parseTransaction({ txHex: testTx.signedTxBase64 })
293
- .should.be.rejectedWith('Invalid transaction');
294
- stub.restore();
295
- });
296
- });
297
- });
298
- });
299
- });
300
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29zbW9zU2hhcmVkQ29pbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3QvdW5pdC9jb3Ntb3NTaGFyZWRDb2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLGdFQUFxQztBQUNyQyxrREFBMEI7QUFDMUIsK0NBQXFEO0FBRXJELG1EQUErRDtBQUMvRCxpREFBK0M7QUFDL0MsaURBQTJEO0FBQzNELG1DQUFvRDtBQUNwRCw0Q0FBa0U7QUFFbEUsUUFBUSxDQUFDLG9CQUFvQixFQUFFO0lBQzdCLE1BQU0sY0FBYyxHQUFHLElBQUEsaUNBQXFCLEdBQUUsQ0FBQztJQUMvQyx5RkFBeUY7SUFDekYsaURBQWlEO0lBQ2pELGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtRQUNsQyxRQUFRLENBQUMsR0FBRyxRQUFRLENBQUMsV0FBVyxFQUFFLHFCQUFxQixFQUFFO1lBQ3ZELElBQUksS0FBbUIsQ0FBQztZQUN4QixJQUFJLFVBQTRCLENBQUM7WUFDakMsSUFBSSxLQUFZLENBQUM7WUFDakIsTUFBTSxRQUFRLEdBQUcsSUFBQSx1QkFBVyxFQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3ZDLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxVQUFrRCxDQUFDO1lBQzNFLE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQyxjQUEwRCxDQUFDO1lBQzNGLE1BQU0sSUFBSSxHQUFHLGVBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzdDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUF3QixDQUFDO1lBRTlDLE1BQU0sQ0FBQztnQkFDTCxLQUFLLEdBQUcsb0JBQVMsQ0FBQyxRQUFRLENBQUMsa0JBQVEsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO2dCQUN0RCxLQUFLLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxXQUFX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SCxFQUFFLENBQUMsMkZBQTJGLEVBQUUsS0FBSztvQkFDbkcsTUFBTSxJQUFJLEdBQUcsZUFBSyxDQUFDLElBQUksQ0FBQyxzQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztvQkFDMUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztvQkFDekIsTUFBTSxVQUFVO3lCQUNiLGdCQUFnQixDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQzt5QkFDbEQsTUFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMscUJBQXFCLENBQUMsQ0FBQztvQkFDakQsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNqQixDQUFDLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHNob3VsZCBmcm9tICdzaG91bGQnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IHNpbm9uIGZyb20gJ3Npbm9uJztcbmltcG9ydCB7IGZyb21CYXNlNjQsIHRvSGV4IH0gZnJvbSAnQGNvc21qcy9lbmNvZGluZyc7XG5pbXBvcnQgeyBWZXJpZnlBZGRyZXNzT3B0aW9ucywgVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgVGVzdEJpdEdvLCBUZXN0Qml0R29BUEkgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstdGVzdCc7XG5pbXBvcnQgeyBCaXRHb0FQSSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1hcGknO1xuaW1wb3J0IHsgY29pbnMsIENvc21vc05ldHdvcmsgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IENvc21vc1NoYXJlZENvaW4sIFV0aWxzIH0gZnJvbSAnLi4vLi4vc3JjJztcbmltcG9ydCB7IGdldEF2YWlsYWJsZVRlc3RDb2lucywgZ2V0VGVzdERhdGEgfSBmcm9tICcuLi90ZXN0VXRpbHMnO1xuXG5kZXNjcmliZSgnQ29zbW9zIFNoYXJlZCBDb2luJywgZnVuY3Rpb24gKCkge1xuICBjb25zdCBhdmFpbGFibGVDb2lucyA9IGdldEF2YWlsYWJsZVRlc3RDb2lucygpO1xuICAvLyBUT0RPOiBDT0lOLTUwMzkgLSAgUnVubmluZyB0ZXN0cyBmb3IgZWFjaCBjb2luIGluIHBhcmFsbGVsIHRvIGltcHJvdmUgdGVzdCBwZXJmb3JtYW5jZVxuICAvLyBMb29wIHRocm91Z2ggZWFjaCBhdmFpbGFibGUgY29pbiBhbmQgcnVuIHRlc3RzXG4gIGF2YWlsYWJsZUNvaW5zLmZvckVhY2goKGNvaW5OYW1lKSA9PiB7XG4gICAgZGVzY3JpYmUoYCR7Y29pbk5hbWUudG9VcHBlckNhc2UoKX0gQ29zbW9zIFNoYXJlZCBDb2luYCwgZnVuY3Rpb24gKCkge1xuICAgICAgbGV0IGJpdGdvOiBUZXN0Qml0R29BUEk7XG4gICAgICBsZXQgY29zbW9zQ29pbjogQ29zbW9zU2hhcmVkQ29pbjtcbiAgICAgIGxldCB1dGlsczogVXRpbHM7XG4gICAgICBjb25zdCB0ZXN0RGF0YSA9IGdldFRlc3REYXRhKGNvaW5OYW1lKTtcbiAgICAgIGNvbnN0IHRlc3RUeCA9IHRlc3REYXRhLnRlc3RTZW5kVHggYXMgUmVxdWlyZWQ8dHlwZW9mIHRlc3REYXRhLnRlc3RTZW5kVHg+O1xuICAgICAgY29uc3QgdGVzdFR4V2l0aE1lbW8gPSB0ZXN0RGF0YS50ZXN0VHhXaXRoTWVtbyBhcyBSZXF1aXJlZDx0eXBlb2YgdGVzdERhdGEudGVzdFR4V2l0aE1lbW8+O1xuICAgICAgY29uc3QgY29pbiA9IGNvaW5zLmdldCh0ZXN0RGF0YS50ZXN0bmV0Q29pbik7XG4gICAgICBjb25zdCBuZXR3b3JrID0gY29pbi5uZXR3b3JrIGFzIENvc21vc05ldHdvcms7XG5cbiAgICAgIGJlZm9yZShmdW5jdGlvbiAoKSB7XG4gICAgICAgIGJpdGdvID0gVGVzdEJpdEdvLmRlY29yYXRlKEJpdEdvQVBJLCB7IGVudjogJ3Rlc3QnIH0pO1xuICAgICAgICBiaXRnby5zYWZlUmVnaXN0ZXIodGVzdERhdGEudGVzdG5ldENvaW4sIENvc21vc1NoYXJlZENvaW4uY3JlYXRlSW5zdGFuY2UpO1xuICAgICAgICBiaXRnby5zYWZlUmVnaXN0ZXIodGVzdERhdGEubWFpbm5ldENvaW4sIENvc21vc1NoYXJlZENvaW4uY3JlYXRlSW5zdGFuY2UpO1xuICAgICAgICBiaXRnby5pbml0aWFsaXplVGVzdFZhcnMoKTtcbiAgICAgICAgY29zbW9zQ29pbiA9IGJpdGdvLmNvaW4odGVzdERhdGEudGVzdG5ldENvaW4pIGFzIENvc21vc1NoYXJlZENvaW47XG4gICAgICAgIHV0aWxzID0gbmV3IFV0aWxzKG5ldHdvcmspO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgaW5zdGFudGlhdGUgdGhlIGNvaW4nLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHNob3VsZC5leGlzdChjb3Ntb3NDb2luKTtcbiAgICAgICAgY29zbW9zQ29pbi5zaG91bGQuYmUuYW4uaW5zdGFuY2VvZihDb3Ntb3NTaGFyZWRDb2luKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHJldHVybiB0aGUgcmlnaHQgaW5mbycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgdGVzdENvaW4gPSBiaXRnby5jb2luKHRlc3REYXRhLnRlc3RuZXRDb2luKTtcbiAgICAgICAgY29uc3QgbWFpbm5ldENvaW4gPSBiaXRnby5jb2luKHRlc3REYXRhLm1haW5uZXRDb2luKTtcbiAgICAgICAgdGVzdENvaW4uZ2V0Q2hhaW4oKS5zaG91bGQuZXF1YWwodGVzdERhdGEudGVzdG5ldENvaW4pO1xuICAgICAgICB0ZXN0Q29pbi5nZXRGYW1pbHkoKS5zaG91bGQuZXF1YWwodGVzdERhdGEuZmFtaWx5KTtcbiAgICAgICAgdGVzdENvaW4uZ2V0RnVsbE5hbWUoKS5zaG91bGQuZXF1YWwodGVzdERhdGEudGVzdG5ldE5hbWUpO1xuICAgICAgICB0ZXN0Q29pbi5nZXRCYXNlRmFjdG9yKCkuc2hvdWxkLmVxdWFsKE1hdGgucG93KDEwLCB0ZXN0RGF0YS5kZWNpbWFsUGxhY2VzKSk7XG5cbiAgICAgICAgbWFpbm5ldENvaW4uZ2V0Q2hhaW4oKS5zaG91bGQuZXF1YWwodGVzdERhdGEubWFpbm5ldENvaW4pO1xuICAgICAgICBtYWlubmV0Q29pbi5nZXRGYW1pbHkoKS5zaG91bGQuZXF1YWwodGVzdERhdGEuZmFtaWx5KTtcbiAgICAgICAgbWFpbm5ldENvaW4uZ2V0RnVsbE5hbWUoKS5zaG91bGQuZXF1YWwodGVzdERhdGEubWFpbm5ldE5hbWUpO1xuICAgICAgICBtYWlubmV0Q29pbi5nZXRCYXNlRmFjdG9yKCkuc2hvdWxkLmVxdWFsKE1hdGgucG93KDEwLCB0ZXN0RGF0YS5kZWNpbWFsUGxhY2VzKSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCB0aHJvdyBpZiBpbnN0YW50aWF0ZWQgd2l0aG91dCBhIHN0YXRpY3NDb2luJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCB0ZW1wQml0Z28gPSBUZXN0Qml0R28uZGVjb3JhdGUoQml0R29BUEksIHsgZW52OiAndGVzdCcgfSk7XG4gICAgICAgIHNob3VsZCgoKSA9PiBDb3Ntb3NTaGFyZWRDb2luLmNyZWF0ZUluc3RhbmNlKHRlbXBCaXRnbykpLnRocm93RXJyb3IoXG4gICAgICAgICAgJ21pc3NpbmcgcmVxdWlyZWQgY29uc3RydWN0b3IgcGFyYW1ldGVyIHN0YXRpY3NDb2luJ1xuICAgICAgICApO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgdGhyb3cgaWYgaW5zdGFudGlhdGVkIHdpdGggaW52YWxpZCBuZXR3b3JrIGNvbmZpZ3VyYXRpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHRlbXBCaXRnbyA9IFRlc3RCaXRHby5kZWNvcmF0ZShCaXRHb0FQSSwgeyBlbnY6ICd0ZXN0JyB9KTtcbiAgICAgICAgY29uc3QgaW52YWxpZENvaW4gPSBPYmplY3QuYXNzaWduKHt9LCBjb2luLCB7IG5ldHdvcms6IHt9IH0pO1xuICAgICAgICBzaG91bGQoKCkgPT4gQ29zbW9zU2hhcmVkQ29pbi5jcmVhdGVJbnN0YW5jZSh0ZW1wQml0Z28sIGludmFsaWRDb2luKSkudGhyb3dFcnJvcihcbiAgICAgICAgICAnSW52YWxpZCBuZXR3b3JrIGNvbmZpZ3VyYXRpb246IG1pc3NpbmcgcmVxdWlyZWQgQ29zbW9zIG5ldHdvcmsgcGFyYW1ldGVycydcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuXG4gICAgICBkZXNjcmliZSgnZ2V0QmFzZUZhY3RvcicsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaXQoJ3Nob3VsZCByZXR1cm4gdGhlIGNvcnJlY3QgYmFzZSBmYWN0b3InLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgY29uc3QgYmFzZUZhY3RvciA9IGNvc21vc0NvaW4uZ2V0QmFzZUZhY3RvcigpO1xuICAgICAgICAgIHNob3VsZC5lcXVhbChiYXNlRmFjdG9yLCBNYXRoLnBvdygxMCwgdGVzdERhdGEuZGVjaW1hbFBsYWNlcykpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBkZXNjcmliZSgnZ2V0QnVpbGRlcicsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaXQoJ3Nob3VsZCByZXR1cm4gYSB0cmFuc2FjdGlvbiBidWlsZGVyJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGNvbnN0IGJ1aWxkZXIgPSBjb3Ntb3NDb2luLmdldEJ1aWxkZXIoKTtcbiAgICAgICAgICBzaG91bGQuZXhpc3QoYnVpbGRlcik7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIGRlc2NyaWJlKCdnZXREZW5vbWluYXRpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGl0KCdzaG91bGQgcmV0dXJuIHRoZSBjb3JyZWN0IGRlbm9taW5hdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBzaG91bGQuZXF1YWwoY29zbW9zQ29pbi5nZXREZW5vbWluYXRpb24oKSwgbmV0d29yay5kZW5vbSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIGRlc2NyaWJlKCdnZXRHYXNBbW91bnREZXRhaWxzJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBpdCgnc2hvdWxkIHJldHVybiB0aGUgY29ycmVjdCBnYXMgYW1vdW50IGRldGFpbHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgY29uc3QgZ2FzQW1vdW50RGV0YWlscyA9IGNvc21vc0NvaW4uZ2V0R2FzQW1vdW50RGV0YWlscygpO1xuICAgICAgICAgIHNob3VsZC5kZWVwRXF1YWwoZ2FzQW1vdW50RGV0YWlscywge1xuICAgICAgICAgICAgZ2FzQW1vdW50OiBuZXR3b3JrLmdhc0Ftb3VudCxcbiAgICAgICAgICAgIGdhc0xpbWl0OiBuZXR3b3JrLmdhc0xpbWl0LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBkZXNjcmliZSgnZ2V0TmV0d29yaycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaXQoJ3Nob3VsZCByZXR1cm4gdGhlIGNvcnJlY3QgbmV0d29yaycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBjb25zdCByZXR1cm5lZE5ldHdvcmsgPSBjb3Ntb3NDb2luLmdldE5ldHdvcmsoKTtcbiAgICAgICAgICBzaG91bGQuZGVlcEVxdWFsKHJldHVybmVkTmV0d29yaywgbmV0d29yayk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIGRlc2NyaWJlKCdnZXRLZXlQYWlyJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBpdCgnc2hvdWxkIHJldHVybiBhIGtleSBwYWlyJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGNvbnN0IGtleVBhaXIgPSBjb3Ntb3NDb2luLmdldEtleVBhaXIodG9IZXgoZnJvbUJhc2U2NCh0ZXN0RGF0YS5wdWJLZXkpKSk7XG4gICAgICAgICAgc2hvdWxkLmV4aXN0KGtleVBhaXIpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBkZXNjcmliZSgnZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXknLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGl0KCdzaG91bGQgcmV0dXJuIHRoZSBjb3JyZWN0IGFkZHJlc3MnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgY29uc3QgYWRkcmVzcyA9IGNvc21vc0NvaW4uZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXkodG9IZXgoZnJvbUJhc2U2NCh0ZXN0RGF0YS5wdWJLZXkpKSk7XG4gICAgICAgICAgc2hvdWxkLmVxdWFsKGFkZHJlc3MsIHRlc3REYXRhLnNlbmRlckFkZHJlc3MpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBkZXNjcmliZSgnQWRkcmVzcyBWYWxpZGF0aW9uJywgKCkgPT4ge1xuICAgICAgICBpdCgnc2hvdWxkIGdldCBhZGRyZXNzIGRldGFpbHMgd2l0aG91dCBtZW1vSWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgY29uc3QgYWRkcmVzc0RldGFpbHMgPSBjb3Ntb3NDb2luLmdldEFkZHJlc3NEZXRhaWxzKHRlc3REYXRhLmFkZHJlc3Nlcy5ub01lbW9JZEFkZHJlc3MpO1xuICAgICAgICAgIGFkZHJlc3NEZXRhaWxzLmFkZHJlc3Muc2hvdWxkLmVxdWFsKHRlc3REYXRhLmFkZHJlc3Nlcy5ub01lbW9JZEFkZHJlc3MpO1xuICAgICAgICAgIHNob3VsZC5ub3QuZXhpc3QoYWRkcmVzc0RldGFpbHMubWVtb0lkKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaXQoJ3Nob3VsZCBnZXQgYWRkcmVzcyBkZXRhaWxzIHdpdGggbWVtb0lkJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGNvbnN0IGFkZHJlc3NEZXRhaWxzID0gY29zbW9zQ29pbi5nZXRBZGRyZXNzRGV0YWlscyh0ZXN0RGF0YS5hZGRyZXNzZXMudmFsaWRNZW1vSWRBZGRyZXNzKTtcbiAgICAgICAgICBhZGRyZXNzRGV0YWlscy5hZGRyZXNzLnNob3VsZC5lcXVhbCh0ZXN0RGF0YS5hZGRyZXNzZXMudmFsaWRNZW1vSWRBZGRyZXNzLnNwbGl0KCc/JylbMF0pO1xuICAgICAgICAgIGlmIChhZGRyZXNzRGV0YWlscy5tZW1vSWQpIHtcbiAgICAgICAgICAgIGFkZHJlc3NEZXRhaWxzLm1lbW9JZC5zaG91bGQuZXF1YWwoJzInKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2hvdWxkLmZhaWwoJ0V4cGVjdGVkIG1lbW9JZCB0byBiZSBkZWZpbmVkJywgbnVsbCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBpdCgnc2hvdWxkIHRocm93IG9uIGludmFsaWQgbWVtbyBpZCBhZGRyZXNzJywgKCkgPT4ge1xuICAgICAgICAgICgoKSA9PiB7XG4gICAgICAgICAgICBjb3Ntb3NDb2luLmdldEFkZHJlc3NEZXRhaWxzKHRlc3REYXRhLmFkZHJlc3Nlcy5pbnZhbGlkTWVtb0lkQWRkcmVzcyk7XG4gICAgICAgICAgfSkuc2hvdWxkLnRocm93KCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGl0KCdzaG91bGQgdGhyb3cgb24gbXVsdGlwbGUgbWVtbyBpZCBhZGRyZXNzJywgKCkgPT4ge1xuICAgICAgICAgICgoKSA9PiB7XG4gICAgICAgICAgICBjb3Ntb3NDb2luLmdldEFkZHJlc3NEZXRhaWxzKHRlc3REYXRhLmFkZHJlc3Nlcy5tdWx0aXBsZU1lbW9JZEFkZHJlc3MpO1xuICAgICAgICAgIH0pLnNob3VsZC50aHJvdygpO1xuICAgICAgICB9KTtcblxuICAgICAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIHdhbGxldCByZWNlaXZlIGFkZHJlc3MnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgY29uc3QgcmVjZWl2ZUFkZHJlc3MgPSB7XG4gICAgICAgICAgICBhZGRyZXNzOiBgJHt0ZXN0RGF0YS5hZGRyZXNzZXMuYWRkcmVzczF9P21lbW9JZD03YCxcbiAgICAgICAgICAgIGNvaW5TcGVjaWZpYzoge1xuICAgICAgICAgICAgICByb290QWRkcmVzczogdGVzdERhdGEuYWRkcmVzc2VzLmFkZHJlc3MxLFxuICAgICAgICAgICAgICBtZW1vSUQ6ICc3JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfTtcbiAgICAgICAgICAvLyBhcyBWZXJpZnlUcmFuc2FjdGlvbk9wdGlvbnNcbiAgICAgICAgICBjb25zdCBpc1ZhbGlkID0gYXdhaXQgY29zbW9zQ29pbi5pc1dhbGxldEFkZHJlc3MocmVjZWl2ZUFkZHJlc3MgYXMgVmVyaWZ5QWRkcmVzc09wdGlvbnMpO1xuICAgICAgICAgIGlzVmFsaWQuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgICAgICB9KTtcblxuICAgICAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIGFjY291bnQgYWRkcmVzc2VzIGNvcnJlY3RseScsICgpID0+IHtcbiAgICAgICAgICBzaG91bGQuZXF1YWwodXRpbHMuaXNWYWxpZEFkZHJlc3ModGVzdERhdGEuYWRkcmVzc2VzLmFkZHJlc3MxKSwgdHJ1ZSk7XG4gICAgICAgICAgc2hvdWxkLmVxdWFsKHV0aWxzLmlzVmFsaWRBZGRyZXNzKHRlc3REYXRhLmFkZHJlc3Nlcy5hZGRyZXNzMiksIHRydWUpO1xuICAgICAgICAgIHNob3VsZC5lcXVhbCh1dGlscy5pc1ZhbGlkQWRkcmVzcygnZGZqazM1eScpLCBmYWxzZSk7XG4gICAgICAgICAgc2hvdWxkLmVxdWFsKHV0aWxzLmlzVmFsaWRBZGRyZXNzKHVuZGVmaW5lZCBhcyB1bmtub3duIGFzIHN0cmluZyksIGZhbHNlKTtcbiAgICAgICAgICBzaG91bGQuZXF1YWwodXRpbHMuaXNWYWxpZEFkZHJlc3MoJycpLCBmYWxzZSk7XG4gICAgICAgICAgc2hvdWxkLmVxdWFsKHV0aWxzLmlzVmFsaWRBZGRyZXNzKHRlc3REYXRhLmFkZHJlc3Nlcy52YWxpZE1lbW9JZEFkZHJlc3MpLCB0cnVlKTtcbiAgICAgICAgICBzaG91bGQuZXF1YWwodXRpbHMuaXNWYWxpZEFkZHJlc3ModGVzdERhdGEuYWRkcmVzc2VzLmludmFsaWRNZW1vSWRBZGRyZXNzKSwgZmFsc2UpO1xuICAgICAgICAgIHNob3VsZC5lcXVhbCh1dGlscy5pc1ZhbGlkQWRkcmVzcyh0ZXN0RGF0YS5hZGRyZXNzZXMubXVsdGlwbGVNZW1vSWRBZGRyZXNzKSwgZmFsc2UpO1xuICAgICAgICB9KTtcblxuICAgICAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIHZhbGlkYXRvciBhZGRyZXNzZXMgY29ycmVjdGx5JywgKCkgPT4ge1xuICAgICAgICAgIHNob3VsZC5lcXVhbCh1dGlscy5pc1ZhbGlkVmFsaWRhdG9yQWRkcmVzcyh0ZXN0RGF0YS5hZGRyZXNzZXMudmFsaWRhdG9yQWRkcmVzczEpLCB0cnVlKTtcbiAgICAgICAgICBzaG91bGQuZXF1YWwodXRpbHMuaXNWYWxpZFZhbGlkYXRvckFkZHJlc3ModGVzdERhdGEuYWRkcmVzc2VzLnZhbGlkYXRvckFkZHJlc3MyKSwgdHJ1ZSk7XG4gICAgICAgICAgc2hvdWxkLmVxdWFsKHV0aWxzLmlzVmFsaWRWYWxpZGF0b3JBZGRyZXNzKCdkZmprMzV5JyksIGZhbHNlKTtcbiAgICAgICAgICBzaG91bGQuZXF1YWwodXRpbHMuaXNWYWxpZFZhbGlkYXRvckFkZHJlc3ModW5kZWZpbmVkIGFzIHVua25vd24gYXMgc3RyaW5nKSwgZmFsc2UpO1xuICAgICAgICAgIHNob3VsZC5lcXVhbCh1dGlscy5pc1ZhbGlkVmFsaWRhdG9yQWRkcmVzcygnJyksIGZhbHNlKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgZGVzY3JpYmUoJ1ZlcmlmeSB0cmFuc2FjdGlvbjogJywgKCkgPT4ge1xuICAgICAgICBpdCgnc2hvdWxkIHN1Y2NlZWQgdG8gdmVyaWZ5IHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSB7XG4gICAgICAgICAgICB0eEhleDogdGVzdFR4LnNpZ25lZFR4QmFzZTY0LFxuICAgICAgICAgICAgdHhJbmZvOiB7fSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGNvbnN0IHR4UGFyYW1zID0ge1xuICAgICAgICAgICAgcmVjaXBpZW50czogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYWRkcmVzczogdGVzdFR4LnJlY2lwaWVudCxcbiAgICAgICAgICAgICAgICBhbW91bnQ6IHRlc3RUeC5zZW5kQW1vdW50LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGNvbnN0IHZlcmlmaWNhdGlvbiA9IHt9O1xuICAgICAgICAgIGNvbnN0IGlzVHJhbnNhY3Rpb25WZXJpZmllZCA9IGF3YWl0IGNvc21vc0NvaW4udmVyaWZ5VHJhbnNhY3Rpb24oe1xuICAgICAgICAgICAgdHhQYXJhbXMsXG4gICAgICAgICAgICB0eFByZWJ1aWxkLFxuICAgICAgICAgICAgdmVyaWZpY2F0aW9uLFxuICAgICAgICAgIH0gYXMgVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zKTtcbiAgICAgICAgICBpc1RyYW5zYWN0aW9uVmVyaWZpZWQuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgICAgICB9KTtcblxuICAgICAgICBpdCgnc2hvdWxkIHN1Y2NlZWQgdG8gdmVyaWZ5IHNlbmRNYW55IHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGNvbnN0IHR4UHJlYnVpbGQgPSB7XG4gICAgICAgICAgICB0eEhleDogdGVzdFR4LnNpZ25lZFR4QmFzZTY0LFxuICAgICAgICAgICAgdHhJbmZvOiB7fSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGNvbnN0IHR4UGFyYW1zID0ge1xuICAgICAgICAgICAgcmVjaXBpZW50czogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYWRkcmVzczogdGVzdFR4LnJlY2lwaWVudCxcbiAgICAgICAgICAgICAgICBhbW91bnQ6IHRlc3RUeC5zZW5kQW1vdW50LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGNvbnN0IHZlcmlmaWNhdGlvbiA9IHt9O1xuICAgICAgICAgIGNvbnN0IGlzVHJhbnNhY3Rpb25WZXJpZmllZCA9IGF3YWl0IGNvc21vc0NvaW4udmVyaWZ5VHJhbnNhY3Rpb24oe1xuICAgICAgICAgICAgdHhQYXJhbXMsXG4gICAgICAgICAgICB0eFByZWJ1aWxkLFxuICAgICAgICAgICAgdmVyaWZpY2F0aW9uLFxuICAgICAgICAgIH0gYXMgVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zKTtcbiAgICAgICAgICBpc1RyYW5zYWN0aW9uVmVyaWZpZWQuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgICAgICB9KTtcblxuICAgICAgICBpdCgnc2hvdWxkIGZhaWwgdG8gdmVyaWZ5IHRyYW5zYWN0aW9uIHdpdGggaW52YWxpZCBwYXJhbScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBjb25zdCB0eFByZWJ1aWxkID0ge307XG4gICAgICAgICAgY29uc3QgdHhQYXJhbXMgPSB7IHJlY2lwaWVudHM6IHVuZGVmaW5lZCB9O1xuICAgICAgICAgIGF3YWl0IGNvc21vc0NvaW5cbiAgICAgICAgICAgIC52ZXJpZnlUcmFuc2FjdGlvbih7IHR4UGFyYW1zLCB0eFByZWJ1aWxkIH0gYXMgVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zKVxuICAgICAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ21pc3NpbmcgcmVxdWlyZWQgdHggcHJlYnVpbGQgcHJvcGVydHkgdHhIZXgnKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgZGVzY3JpYmUoJ0V4cGxhaW4gVHJhbnNhY3Rpb246ICcsICgpID0+IHtcbiAgICAgICAgaXQoJ3Nob3VsZCBleHBsYWluIGEgdHJhbnNmZXIgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgY29uc3QgZXhwbGFpbmVkVHJhbnNhY3Rpb24gPSBhd2FpdCBjb3Ntb3NDb2luLmV4cGxhaW5UcmFuc2FjdGlvbih7XG4gICAgICAgICAgICB0eEhleDogdGVzdFR4LnNpZ25lZFR4QmFzZTY0LFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGV4cGxhaW5lZFRyYW5zYWN0aW9uLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICAgICAgZGlzcGxheU9yZGVyOiBbJ2lkJywgJ291dHB1dHMnLCAnb3V0cHV0QW1vdW50JywgJ2NoYW5nZU91dHB1dHMnLCAnY2hhbmdlQW1vdW50JywgJ2ZlZScsICd0eXBlJ10sXG4gICAgICAgICAgICBpZDogdGVzdFR4Lmhhc2gsXG4gICAgICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzOiB0ZXN0VHgucmVjaXBpZW50LFxuICAgICAgICAgICAgICAgIGFtb3VudDogdGVzdFR4LnNlbmRBbW91bnQsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgb3V0cHV0QW1vdW50OiB0ZXN0VHguc2VuZEFtb3VudCxcbiAgICAgICAgICAgIGNoYW5nZU91dHB1dHM6IFtdLFxuICAgICAgICAgICAgY2hhbmdlQW1vdW50OiAnMCcsXG4gICAgICAgICAgICBmZWU6IHsgZmVlOiB0ZXN0VHguZmVlQW1vdW50IH0sXG4gICAgICAgICAgICB0eXBlOiAwLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBpdCgnc2hvdWxkIGV4cGxhaW4gYSB0cmFuc2ZlciB0cmFuc2FjdGlvbiB3aXRoIG1lbW8nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgY29uc3QgZXhwbGFpbmVkVHJhbnNhY3Rpb24gPSBhd2FpdCBjb3Ntb3NDb2luLmV4cGxhaW5UcmFuc2FjdGlvbih7XG4gICAgICAgICAgICB0eEhleDogdGVzdFR4V2l0aE1lbW8uc2lnbmVkVHhCYXNlNjQsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgZXhwbGFpbmVkVHJhbnNhY3Rpb24uc2hvdWxkLmRlZXBFcXVhbCh7XG4gICAgICAgICAgICBkaXNwbGF5T3JkZXI6IFsnaWQnLCAnb3V0cHV0cycsICdvdXRwdXRBbW91bnQnLCAnY2hhbmdlT3V0cHV0cycsICdjaGFuZ2VBbW91bnQnLCAnZmVlJywgJ3R5cGUnXSxcbiAgICAgICAgICAgIGlkOiB0ZXN0VHhXaXRoTWVtby5oYXNoLFxuICAgICAgICAgICAgb3V0cHV0czogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYWRkcmVzczogdGVzdFR4V2l0aE1lbW8ucmVjaXBpZW50LFxuICAgICAgICAgICAgICAgIGFtb3VudDogdGVzdFR4V2l0aE1lbW8uc2VuZEFtb3VudCxcbiAgICAgICAgICAgICAgICBtZW1vOiB0ZXN0VHhXaXRoTWVtby5tZW1vLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIG91dHB1dEFtb3VudDogdGVzdFR4V2l0aE1lbW8uc2VuZEFtb3VudCxcbiAgICAgICAgICAgIGNoYW5nZU91dHB1dHM6IFtdLFxuICAgICAgICAgICAgY2hhbmdlQW1vdW50OiAnMCcsXG4gICAgICAgICAgICBmZWU6IHsgZmVlOiB0ZXN0VHhXaXRoTWVtby5mZWVBbW91bnQgfSxcbiAgICAgICAgICAgIHR5cGU6IDAsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGl0KCdzaG91bGQgZmFpbCB0byBleHBsYWluIHRyYW5zYWN0aW9uIHdpdGggbWlzc2luZyBwYXJhbXMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IGNvc21vc0NvaW4uZXhwbGFpblRyYW5zYWN0aW9uKHsgdHhIZXg6ICcnIH0pO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBzaG91bGQuZXF1YWwoZXJyb3IubWVzc2FnZSwgJ21pc3NpbmcgcmVxdWlyZWQgdHhIZXggcGFyYW1ldGVyJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBpdCgnc2hvdWxkIGZhaWwgdG8gZXhwbGFpbiB0cmFuc2FjdGlvbiB3aXRoIGludmFsaWQgcGFyYW1zJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCBjb3Ntb3NDb2luLmV4cGxhaW5UcmFuc2FjdGlvbih7IHR4SGV4OiAncmFuZG9tU3RyaW5nJyB9KTtcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgc2hvdWxkLmVxdWFsKGVycm9yLm1lc3NhZ2Uuc3RhcnRzV2l0aCgnSW52YWxpZCB0cmFuc2FjdGlvbjonKSwgdHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBkZXNjcmliZSgnUGFyc2UgVHJhbnNhY3Rpb25zOiAnLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHRyYW5zZmVySW5wdXRzUmVzcG9uc2UgPSB7XG4gICAgICAgICAgYWRkcmVzczogdGVzdFR4LnJlY2lwaWVudCxcbiAgICAgICAgICBhbW91bnQ6IG5ldyBCaWdOdW1iZXIodGVzdFR4LnNlbmRBbW91bnQpLnBsdXModGVzdFR4LmZlZUFtb3VudCkudG9GaXhlZCgpLFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHRyYW5zZmVyT3V0cHV0c1Jlc3BvbnNlID0ge1xuICAgICAgICAgIGFkZHJlc3M6IHRlc3RUeC5yZWNpcGllbnQsXG4gICAgICAgICAgYW1vdW50OiB0ZXN0VHguc2VuZEFtb3VudCxcbiAgICAgICAgfTtcblxuICAgICAgICBpdCgnc2hvdWxkIHBhcnNlIGEgdHJhbnNmZXIgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgY29uc3QgcGFyc2VkVHJhbnNhY3Rpb24gPSBhd2FpdCBjb3Ntb3NDb2luLnBhcnNlVHJhbnNhY3Rpb24oeyB0eEhleDogdGVzdFR4LnNpZ25lZFR4QmFzZTY0IH0pO1xuXG4gICAgICAgICAgcGFyc2VkVHJhbnNhY3Rpb24uc2hvdWxkLmRlZXBFcXVhbCh7XG4gICAgICAgICAgICBpbnB1dHM6IFt0cmFuc2ZlcklucHV0c1Jlc3BvbnNlXSxcbiAgICAgICAgICAgIG91dHB1dHM6IFt0cmFuc2Zlck91dHB1dHNSZXNwb25zZV0sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGl0KCdzaG91bGQgZmFpbCB0byBwYXJzZSBhIHRyYW5zZmVyIHRyYW5zYWN0aW9uIHdoZW4gZXhwbGFpblRyYW5zYWN0aW9uIHJlc3BvbnNlIGlzIHVuZGVmaW5lZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBjb25zdCBzdHViID0gc2lub24uc3R1YihDb3Ntb3NTaGFyZWRDb2luLnByb3RvdHlwZSwgJ2V4cGxhaW5UcmFuc2FjdGlvbicpO1xuICAgICAgICAgIHN0dWIucmVzb2x2ZXModW5kZWZpbmVkKTtcbiAgICAgICAgICBhd2FpdCBjb3Ntb3NDb2luXG4gICAgICAgICAgICAucGFyc2VUcmFuc2FjdGlvbih7IHR4SGV4OiB0ZXN0VHguc2lnbmVkVHhCYXNlNjQgfSlcbiAgICAgICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdJbnZhbGlkIHRyYW5zYWN0aW9uJyk7XG4gICAgICAgICAgc3R1Yi5yZXN0b3JlKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=keyPair.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"keyPair.d.ts","sourceRoot":"","sources":["../../../test/unit/keyPair.ts"],"names":[],"mappings":""}
@@ -1,73 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const assert_1 = __importDefault(require("assert"));
7
- const should_1 = __importDefault(require("should"));
8
- const encoding_1 = require("@cosmjs/encoding");
9
- const statics_1 = require("@bitgo-beta/statics");
10
- const src_1 = require("../../src");
11
- const testUtils_1 = require("../testUtils");
12
- describe('Cosmos KeyPair', function () {
13
- const availableCoins = (0, testUtils_1.getAvailableTestCoins)();
14
- // TODO: COIN-5039 - Running tests for each coin in parallel to improve test performance
15
- // Loop through each available coin and run tests
16
- availableCoins.forEach((coinName) => {
17
- describe(`${coinName} KeyPair`, function () {
18
- const testData = (0, testUtils_1.getTestData)(coinName);
19
- const coin = statics_1.coins.get(testData.testnetCoin);
20
- describe('should create a valid KeyPair', () => {
21
- it('from an empty value', () => {
22
- const keyPairObj = new src_1.KeyPair();
23
- const keys = keyPairObj.getKeys();
24
- should_1.default.exists(keys.prv);
25
- should_1.default.exists(keys.pub);
26
- should_1.default.equal(keys.prv?.length, 64);
27
- should_1.default.equal(keys.pub.length, 66);
28
- const extendedKeys = keyPairObj.getExtendedKeys();
29
- should_1.default.exists(extendedKeys.xprv);
30
- should_1.default.exists(extendedKeys.xpub);
31
- });
32
- it('from a private key', () => {
33
- const privateKey = testData.privateKey;
34
- const keyPairObj = new src_1.KeyPair({ prv: (0, encoding_1.toHex)((0, encoding_1.fromBase64)(privateKey)) }, coin);
35
- const keys = keyPairObj.getKeys();
36
- should_1.default.exists(keys.prv);
37
- should_1.default.exists(keys.pub);
38
- should_1.default.equal(keys.prv, (0, encoding_1.toHex)((0, encoding_1.fromBase64)(testData.privateKey)));
39
- should_1.default.equal(keys.pub, (0, encoding_1.toHex)((0, encoding_1.fromBase64)(testData.pubKey)));
40
- should_1.default.equal(keyPairObj.getAddress(), testData.senderAddress);
41
- assert_1.default.throws(() => keyPairObj.getExtendedKeys());
42
- });
43
- });
44
- describe('should fail to create a KeyPair', () => {
45
- it('from an invalid privateKey', () => {
46
- assert_1.default.throws(() => new src_1.KeyPair({ prv: '' }, coin), (e) => e.message === 'Unsupported private key');
47
- });
48
- it('from an invalid publicKey', () => {
49
- assert_1.default.throws(() => new src_1.KeyPair({ pub: '' }, coin), (e) => e.message.startsWith('Unsupported public key'));
50
- });
51
- it('from an undefined seed', () => {
52
- const undefinedBuffer = undefined;
53
- assert_1.default.throws(() => new src_1.KeyPair({ seed: undefinedBuffer }, coin), (e) => e.message.startsWith('Invalid key pair options'));
54
- });
55
- it('from an undefined private key', () => {
56
- const undefinedStr = undefined;
57
- assert_1.default.throws(() => new src_1.KeyPair({ prv: undefinedStr }, coin), (e) => e.message.startsWith('Invalid key pair options'));
58
- });
59
- it('from an undefined public key', () => {
60
- const undefinedStr = undefined;
61
- assert_1.default.throws(() => new src_1.KeyPair({ pub: undefinedStr }, coin), (e) => e.message.startsWith('Invalid key pair options'));
62
- });
63
- });
64
- describe('get unique address ', () => {
65
- it('from a private key', () => {
66
- const keyPair = new src_1.KeyPair({ prv: (0, encoding_1.toHex)((0, encoding_1.fromBase64)(testData.privateKey)) }, coin);
67
- should_1.default.equal(keyPair.getAddress(), testData.senderAddress);
68
- });
69
- });
70
- });
71
- });
72
- });
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5UGFpci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3QvdW5pdC9rZXlQYWlyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLG9EQUE0QjtBQUM1QiwrQ0FBcUQ7QUFDckQsaURBQTRDO0FBQzVDLG1DQUFvQztBQUNwQyw0Q0FBa0U7QUFFbEUsUUFBUSxDQUFDLGdCQUFnQixFQUFFO0lBQ3pCLE1BQU0sY0FBYyxHQUFHLElBQUEsaUNBQXFCLEdBQUUsQ0FBQztJQUMvQyx5RkFBeUY7SUFDekYsaURBQWlEO0lBQ2pELGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtRQUNsQyxRQUFRLENBQUMsR0FBRyxRQUFRLFVBQVUsRUFBRTtZQUM5QixNQUFNLFFBQVEsR0FBRyxJQUFBLHVCQUFXLEVBQUMsUUFBUSxDQUFDLENBQUM7WUFDdkMsTUFBTSxJQUFJLEdBQUcsZUFBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7WUFFN0MsUUFBUSxDQUFDLCtCQUErQixFQUFFLEdBQUcsRUFBRTtnQkFDN0MsRUFBRSxDQUFDLHFCQUFxQixFQUFFLEdBQUcsRUFBRTtvQkFDN0IsTUFBTSxVQUFVLEdBQUcsSUFBSSxhQUFPLEVBQUUsQ0FBQztvQkFDakMsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUNsQyxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ3hCLGdCQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDeEIsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQ25DLGdCQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLEVB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Q0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCBzaG91bGQgZnJvbSAnc2hvdWxkJztcbmltcG9ydCB7IGZyb21CYXNlNjQsIHRvSGV4IH0gZnJvbSAnQGNvc21qcy9lbmNvZGluZyc7XG5pbXBvcnQgeyBjb2lucyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgS2V5UGFpciB9IGZyb20gJy4uLy4uL3NyYyc7XG5pbXBvcnQgeyBnZXRBdmFpbGFibGVUZXN0Q29pbnMsIGdldFRlc3REYXRhIH0gZnJvbSAnLi4vdGVzdFV0aWxzJztcblxuZGVzY3JpYmUoJ0Nvc21vcyBLZXlQYWlyJywgZnVuY3Rpb24gKCkge1xuICBjb25zdCBhdmFpbGFibGVDb2lucyA9IGdldEF2YWlsYWJsZVRlc3RDb2lucygpO1xuICAvLyBUT0RPOiBDT0lOLTUwMzkgLSAgUnVubmluZyB0ZXN0cyBmb3IgZWFjaCBjb2luIGluIHBhcmFsbGVsIHRvIGltcHJvdmUgdGVzdCBwZXJmb3JtYW5jZVxuICAvLyBMb29wIHRocm91Z2ggZWFjaCBhdmFpbGFibGUgY29pbiBhbmQgcnVuIHRlc3RzXG4gIGF2YWlsYWJsZUNvaW5zLmZvckVhY2goKGNvaW5OYW1lKSA9PiB7XG4gICAgZGVzY3JpYmUoYCR7Y29pbk5hbWV9IEtleVBhaXJgLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0ZXN0RGF0YSA9IGdldFRlc3REYXRhKGNvaW5OYW1lKTtcbiAgICAgIGNvbnN0IGNvaW4gPSBjb2lucy5nZXQodGVzdERhdGEudGVzdG5ldENvaW4pO1xuXG4gICAgICBkZXNjcmliZSgnc2hvdWxkIGNyZWF0ZSBhIHZhbGlkIEtleVBhaXInLCAoKSA9PiB7XG4gICAgICAgIGl0KCdmcm9tIGFuIGVtcHR5IHZhbHVlJywgKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGtleVBhaXJPYmogPSBuZXcgS2V5UGFpcigpO1xuICAgICAgICAgIGNvbnN0IGtleXMgPSBrZXlQYWlyT2JqLmdldEtleXMoKTtcbiAgICAgICAgICBzaG91bGQuZXhpc3RzKGtleXMucHJ2KTtcbiAgICAgICAgICBzaG91bGQuZXhpc3RzKGtleXMucHViKTtcbiAgICAgICAgICBzaG91bGQuZXF1YWwoa2V5cy5wcnY/Lmxlbmd0aCwgNjQpO1xuICAgICAgICAgIHNob3VsZC5lcXVhbChrZXlzLnB1Yi5sZW5ndGgsIDY2KTtcblxuICAgICAgICAgIGNvbnN0IGV4dGVuZGVkS2V5cyA9IGtleVBhaXJPYmouZ2V0RXh0ZW5kZWRLZXlzKCk7XG4gICAgICAgICAgc2hvdWxkLmV4aXN0cyhleHRlbmRlZEtleXMueHBydik7XG4gICAgICAgICAgc2hvdWxkLmV4aXN0cyhleHRlbmRlZEtleXMueHB1Yik7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGl0KCdmcm9tIGEgcHJpdmF0ZSBrZXknLCAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgcHJpdmF0ZUtleSA9IHRlc3REYXRhLnByaXZhdGVLZXk7XG4gICAgICAgICAgY29uc3Qga2V5UGFpck9iaiA9IG5ldyBLZXlQYWlyKHsgcHJ2OiB0b0hleChmcm9tQmFzZTY0KHByaXZhdGVLZXkpKSB9LCBjb2luKTtcbiAgICAgICAgICBjb25zdCBrZXlzID0ga2V5UGFpck9iai5nZXRLZXlzKCk7XG4gICAgICAgICAgc2hvdWxkLmV4aXN0cyhrZXlzLnBydik7XG4gICAgICAgICAgc2hvdWxkLmV4aXN0cyhrZXlzLnB1Yik7XG4gICAgICAgICAgc2hvdWxkLmVxdWFsKGtleXMucHJ2LCB0b0hleChmcm9tQmFzZTY0KHRlc3REYXRhLnByaXZhdGVLZXkpKSk7XG4gICAgICAgICAgc2hvdWxkLmVxdWFsKGtleXMucHViLCB0b0hleChmcm9tQmFzZTY0KHRlc3REYXRhLnB1YktleSkpKTtcbiAgICAgICAgICBzaG91bGQuZXF1YWwoa2V5UGFpck9iai5nZXRBZGRyZXNzKCksIHRlc3REYXRhLnNlbmRlckFkZHJlc3MpO1xuXG4gICAgICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiBrZXlQYWlyT2JqLmdldEV4dGVuZGVkS2V5cygpKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgZGVzY3JpYmUoJ3Nob3VsZCBmYWlsIHRvIGNyZWF0ZSBhIEtleVBhaXInLCAoKSA9PiB7XG4gICAgICAgIGl0KCdmcm9tIGFuIGludmFsaWQgcHJpdmF0ZUtleScsICgpID0+IHtcbiAgICAgICAgICBhc3NlcnQudGhyb3dzKFxuICAgICAgICAgICAgKCkgPT4gbmV3IEtleVBhaXIoeyBwcnY6ICcnIH0sIGNvaW4pLFxuICAgICAgICAgICAgKGU6IGFueSkgPT4gZS5tZXNzYWdlID09PSAnVW5zdXBwb3J0ZWQgcHJpdmF0ZSBrZXknXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaXQoJ2Zyb20gYW4gaW52YWxpZCBwdWJsaWNLZXknLCAoKSA9PiB7XG4gICAgICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgICAgICgpID0+IG5ldyBLZXlQYWlyKHsgcHViOiAnJyB9LCBjb2luKSxcbiAgICAgICAgICAgIChlOiBhbnkpID0+IGUubWVzc2FnZS5zdGFydHNXaXRoKCdVbnN1cHBvcnRlZCBwdWJsaWMga2V5JylcbiAgICAgICAgICApO1xuICAgICAgICB9KTtcblxuICAgICAgICBpdCgnZnJvbSBhbiB1bmRlZmluZWQgc2VlZCcsICgpID0+IHtcbiAgICAgICAgICBjb25zdCB1bmRlZmluZWRCdWZmZXIgPSB1bmRlZmluZWQgYXMgdW5rbm93biBhcyBCdWZmZXI7XG4gICAgICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgICAgICgpID0+IG5ldyBLZXlQYWlyKHsgc2VlZDogdW5kZWZpbmVkQnVmZmVyIH0sIGNvaW4pLFxuICAgICAgICAgICAgKGU6IGFueSkgPT4gZS5tZXNzYWdlLnN0YXJ0c1dpdGgoJ0ludmFsaWQga2V5IHBhaXIgb3B0aW9ucycpXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaXQoJ2Zyb20gYW4gdW5kZWZpbmVkIHByaXZhdGUga2V5JywgKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHVuZGVmaW5lZFN0cjogc3RyaW5nID0gdW5kZWZpbmVkIGFzIHVua25vd24gYXMgc3RyaW5nO1xuICAgICAgICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAgICAgICAoKSA9PiBuZXcgS2V5UGFpcih7IHBydjogdW5kZWZpbmVkU3RyIH0sIGNvaW4pLFxuICAgICAgICAgICAgKGU6IGFueSkgPT4gZS5tZXNzYWdlLnN0YXJ0c1dpdGgoJ0ludmFsaWQga2V5IHBhaXIgb3B0aW9ucycpXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaXQoJ2Zyb20gYW4gdW5kZWZpbmVkIHB1YmxpYyBrZXknLCAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgdW5kZWZpbmVkU3RyOiBzdHJpbmcgPSB1bmRlZmluZWQgYXMgdW5rbm93biBhcyBzdHJpbmc7XG4gICAgICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgICAgICgpID0+IG5ldyBLZXlQYWlyKHsgcHViOiB1bmRlZmluZWRTdHIgfSwgY29pbiksXG4gICAgICAgICAgICAoZTogYW55KSA9PiBlLm1lc3NhZ2Uuc3RhcnRzV2l0aCgnSW52YWxpZCBrZXkgcGFpciBvcHRpb25zJylcbiAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBkZXNjcmliZSgnZ2V0IHVuaXF1ZSBhZGRyZXNzICcsICgpID0+IHtcbiAgICAgICAgaXQoJ2Zyb20gYSBwcml2YXRlIGtleScsICgpID0+IHtcbiAgICAgICAgICBjb25zdCBrZXlQYWlyID0gbmV3IEtleVBhaXIoeyBwcnY6IHRvSGV4KGZyb21CYXNlNjQodGVzdERhdGEucHJpdmF0ZUtleSkpIH0sIGNvaW4pO1xuICAgICAgICAgIHNob3VsZC5lcXVhbChrZXlQYWlyLmdldEFkZHJlc3MoKSwgdGVzdERhdGEuc2VuZGVyQWRkcmVzcyk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=register.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../test/unit/register.ts"],"names":[],"mappings":""}
@@ -1,48 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const sinon_1 = __importDefault(require("sinon"));
7
- const should_1 = __importDefault(require("should"));
8
- const sdk_api_1 = require("@bitgo-beta/sdk-api");
9
- const statics_1 = require("@bitgo-beta/statics");
10
- const src_1 = require("../../src");
11
- describe('Cosmos Register', function () {
12
- let bitgo;
13
- let registerSpy;
14
- let cosmosCoins;
15
- before(function () {
16
- // Get all coins with the SHARED_COSMOS_SDK feature
17
- cosmosCoins = new Set(statics_1.coins.filter((coin) => coin.features.includes(statics_1.CoinFeature.SHARED_COSMOS_SDK)).map((coin) => coin.name));
18
- });
19
- beforeEach(function () {
20
- bitgo = new sdk_api_1.BitGoAPI({ env: 'test' });
21
- registerSpy = sinon_1.default.spy(bitgo, 'register');
22
- });
23
- afterEach(function () {
24
- registerSpy.restore();
25
- });
26
- it('should register all cosmos coins', function () {
27
- (0, src_1.register)(bitgo);
28
- // Verify that register was called for each cosmos coin
29
- should_1.default.equal(registerSpy.callCount, cosmosCoins.size);
30
- // Verify that each call was for a cosmos coin with the correct factory
31
- for (let i = 0; i < registerSpy.callCount; i++) {
32
- const call = registerSpy.getCall(i);
33
- const coinName = call.args[0];
34
- const factory = call.args[1];
35
- should_1.default.ok(cosmosCoins.has(coinName), `${coinName} should be a cosmos coin`);
36
- should_1.default.equal(factory, src_1.CosmosSharedCoin.createInstance);
37
- }
38
- });
39
- it('should register each coin only once', function () {
40
- (0, src_1.register)(bitgo);
41
- // Get the list of registered coins
42
- const registeredCoins = registerSpy.getCalls().map((call) => call.args[0]);
43
- // Check for duplicates
44
- const uniqueCoins = new Set(registeredCoins);
45
- should_1.default.equal(uniqueCoins.size, registeredCoins.length, 'There should be no duplicate coin registrations');
46
- });
47
- });
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3VuaXQvcmVnaXN0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxrREFBMEI7QUFDMUIsb0RBQTRCO0FBQzVCLGlEQUErQztBQUMvQyxpREFBeUQ7QUFDekQsbUNBQXVEO0FBRXZELFFBQVEsQ0FBQyxpQkFBaUIsRUFBRTtJQUMxQixJQUFJLEtBQWUsQ0FBQztJQUNwQixJQUFJLFdBQTJCLENBQUM7SUFDaEMsSUFBSSxXQUF3QixDQUFDO0lBRTdCLE1BQU0sQ0FBQztRQUNMLG1EQUFtRDtRQUNuRCxXQUFXLEdBQUcsSUFBSSxHQUFHLENBQ25CLGVBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLHFCQUFXLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUN2RyxDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7SUFFSCxVQUFVLENBQUM7UUFDVCxLQUFLLEdBQUcsSUFBSSxrQkFBUSxDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDdEMsV0FBVyxHQUFHLGVBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQzdDLENBQUMsQ0FBQyxDQUFDO0lBRUgsU0FBUyxDQUFDO1FBQ1IsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3hCLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLGtDQUFrQyxFQUFFO1FBQ3JDLElBQUEsY0FBUSxFQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWhCLHVEQUF1RDtRQUN2RCxnQkFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV0RCx1RUFBdUU7UUFDdkUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUMvQyxNQUFNLElBQUksR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUU3QixnQkFBTSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEdBQUcsUUFBUSwwQkFBMEIsQ0FBQyxDQUFDO1lBQzVFLGdCQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxzQkFBZ0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN6RCxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMscUNBQXFDLEVBQUU7UUFDeEMsSUFBQSxjQUFRLEVBQUMsS0FBSyxDQUFDLENBQUM7UUFFaEIsbUNBQW1DO1FBQ25DLE1BQU0sZUFBZSxHQUFHLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUUzRSx1QkFBdUI7UUFDdkIsTUFBTSxXQUFXLEdBQUcsSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDN0MsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsTUFBTSxFQUFFLGlEQUFpRCxDQUFDLENBQUM7SUFDNUcsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzaW5vbiBmcm9tICdzaW5vbic7XG5pbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgeyBCaXRHb0FQSSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1hcGknO1xuaW1wb3J0IHsgQ29pbkZlYXR1cmUsIGNvaW5zIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyByZWdpc3RlciwgQ29zbW9zU2hhcmVkQ29pbiB9IGZyb20gJy4uLy4uL3NyYyc7XG5cbmRlc2NyaWJlKCdDb3Ntb3MgUmVnaXN0ZXInLCBmdW5jdGlvbiAoKSB7XG4gIGxldCBiaXRnbzogQml0R29BUEk7XG4gIGxldCByZWdpc3RlclNweTogc2lub24uU2lub25TcHk7XG4gIGxldCBjb3Ntb3NDb2luczogU2V0PHN0cmluZz47XG5cbiAgYmVmb3JlKGZ1bmN0aW9uICgpIHtcbiAgICAvLyBHZXQgYWxsIGNvaW5zIHdpdGggdGhlIFNIQVJFRF9DT1NNT1NfU0RLIGZlYXR1cmVcbiAgICBjb3Ntb3NDb2lucyA9IG5ldyBTZXQoXG4gICAgICBjb2lucy5maWx0ZXIoKGNvaW4pID0+IGNvaW4uZmVhdHVyZXMuaW5jbHVkZXMoQ29pbkZlYXR1cmUuU0hBUkVEX0NPU01PU19TREspKS5tYXAoKGNvaW4pID0+IGNvaW4ubmFtZSlcbiAgICApO1xuICB9KTtcblxuICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICBiaXRnbyA9IG5ldyBCaXRHb0FQSSh7IGVudjogJ3Rlc3QnIH0pO1xuICAgIHJlZ2lzdGVyU3B5ID0gc2lub24uc3B5KGJpdGdvLCAncmVnaXN0ZXInKTtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICByZWdpc3RlclNweS5yZXN0b3JlKCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmVnaXN0ZXIgYWxsIGNvc21vcyBjb2lucycsIGZ1bmN0aW9uICgpIHtcbiAgICByZWdpc3RlcihiaXRnbyk7XG5cbiAgICAvLyBWZXJpZnkgdGhhdCByZWdpc3RlciB3YXMgY2FsbGVkIGZvciBlYWNoIGNvc21vcyBjb2luXG4gICAgc2hvdWxkLmVxdWFsKHJlZ2lzdGVyU3B5LmNhbGxDb3VudCwgY29zbW9zQ29pbnMuc2l6ZSk7XG5cbiAgICAvLyBWZXJpZnkgdGhhdCBlYWNoIGNhbGwgd2FzIGZvciBhIGNvc21vcyBjb2luIHdpdGggdGhlIGNvcnJlY3QgZmFjdG9yeVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVnaXN0ZXJTcHkuY2FsbENvdW50OyBpKyspIHtcbiAgICAgIGNvbnN0IGNhbGwgPSByZWdpc3RlclNweS5nZXRDYWxsKGkpO1xuICAgICAgY29uc3QgY29pbk5hbWUgPSBjYWxsLmFyZ3NbMF07XG4gICAgICBjb25zdCBmYWN0b3J5ID0gY2FsbC5hcmdzWzFdO1xuXG4gICAgICBzaG91bGQub2soY29zbW9zQ29pbnMuaGFzKGNvaW5OYW1lKSwgYCR7Y29pbk5hbWV9IHNob3VsZCBiZSBhIGNvc21vcyBjb2luYCk7XG4gICAgICBzaG91bGQuZXF1YWwoZmFjdG9yeSwgQ29zbW9zU2hhcmVkQ29pbi5jcmVhdGVJbnN0YW5jZSk7XG4gICAgfVxuICB9KTtcblxuICBpdCgnc2hvdWxkIHJlZ2lzdGVyIGVhY2ggY29pbiBvbmx5IG9uY2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgcmVnaXN0ZXIoYml0Z28pO1xuXG4gICAgLy8gR2V0IHRoZSBsaXN0IG9mIHJlZ2lzdGVyZWQgY29pbnNcbiAgICBjb25zdCByZWdpc3RlcmVkQ29pbnMgPSByZWdpc3RlclNweS5nZXRDYWxscygpLm1hcCgoY2FsbCkgPT4gY2FsbC5hcmdzWzBdKTtcblxuICAgIC8vIENoZWNrIGZvciBkdXBsaWNhdGVzXG4gICAgY29uc3QgdW5pcXVlQ29pbnMgPSBuZXcgU2V0KHJlZ2lzdGVyZWRDb2lucyk7XG4gICAgc2hvdWxkLmVxdWFsKHVuaXF1ZUNvaW5zLnNpemUsIHJlZ2lzdGVyZWRDb2lucy5sZW5ndGgsICdUaGVyZSBzaG91bGQgYmUgbm8gZHVwbGljYXRlIGNvaW4gcmVnaXN0cmF0aW9ucycpO1xuICB9KTtcbn0pO1xuIl19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=transactionBuilder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/transactionBuilder.ts"],"names":[],"mappings":""}
@@ -1,46 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const should_1 = __importDefault(require("should"));
7
- const sdk_core_1 = require("@bitgo-beta/sdk-core");
8
- const testUtils_1 = require("../../testUtils");
9
- describe('Cosmos Transaction Builder', function () {
10
- const availableCoins = (0, testUtils_1.getAvailableTestCoins)();
11
- // TODO: COIN-5039 - Running tests for each coin in parallel to improve test performance
12
- // Loop through each available coin and run tests
13
- availableCoins.forEach((coinName) => {
14
- describe(`${coinName.toUpperCase()} Transaction Builder`, function () {
15
- const testData = (0, testUtils_1.getTestData)(coinName);
16
- const factory = (0, testUtils_1.getBuilderFactory)(testData.testnetCoin);
17
- const testTx = testData.testSendTx;
18
- it('should build a signed tx from signed tx data', async function () {
19
- const txBuilder = factory.from(testTx.signedTxBase64);
20
- const tx = await txBuilder.build();
21
- should_1.default.equal(tx.type, sdk_core_1.TransactionType.Send);
22
- // Should recreate the same raw tx data when re-build and turned to broadcast format
23
- const rawTx = tx.toBroadcastFormat();
24
- should_1.default.equal(rawTx, testTx.signedTxBase64);
25
- });
26
- describe('gasBudget tests', async () => {
27
- it('should succeed for valid gasBudget', function () {
28
- const builder = factory.getTransferBuilder();
29
- should_1.default.doesNotThrow(() => builder.gasBudget(testTx.gasBudget));
30
- });
31
- it('should throw for invalid gasBudget', function () {
32
- const builder = factory.getTransferBuilder();
33
- const invalidGasBudget = { amount: testTx.gasBudget.amount, gasLimit: 0 };
34
- (0, should_1.default)(() => builder.gasBudget(invalidGasBudget)).throw('Invalid gas limit 0');
35
- });
36
- });
37
- it('validateAddress', function () {
38
- const builder = factory.getTransferBuilder();
39
- const invalidAddress = { address: 'randomString' };
40
- should_1.default.doesNotThrow(() => builder.validateAddress({ address: testTx.sender }));
41
- (0, should_1.default)(() => builder.validateAddress(invalidAddress)).throwError('transactionBuilder: address isValidAddress check failed: ' + invalidAddress.address);
42
- });
43
- });
44
- });
45
- });
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L3RyYW5zYWN0aW9uQnVpbGRlci90cmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsbURBQXVEO0FBRXZELCtDQUF3RjtBQUV4RixRQUFRLENBQUMsNEJBQTRCLEVBQUU7SUFDckMsTUFBTSxjQUFjLEdBQUcsSUFBQSxpQ0FBcUIsR0FBRSxDQUFDO0lBQy9DLHlGQUF5RjtJQUN6RixpREFBaUQ7SUFDakQsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1FBQ2xDLFFBQVEsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxXQUFXLEVBQUUsc0JBQXNCLEVBQUU7WUFDeEQsTUFBTSxRQUFRLEdBQUcsSUFBQSx1QkFBVyxFQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3ZDLE1BQU0sT0FBTyxHQUFHLElBQUEsNkJBQWlCLEVBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3hELE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxVQUFrRCxDQUFDO1lBRTNFLEVBQUUsQ0FBQyw4Q0FBOEMsRUFBRSxLQUFLO2dCQUN0RCxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFDdEQsTUFBTSxFQUFFLEdBQUcsTUFBTSxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ25DLGdCQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsMEJBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDNUMsb0ZBQW9GO2dCQUNwRixNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztnQkFDckMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUM3QyxDQUFDLENBQUMsQ0FBQztZQUVILFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxLQUFLLElBQUksRUFBRTtnQkFDckMsRUFBRSxDQUFDLG9DQUFvQyxFQUFFO29CQUN2QyxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztvQkFDN0MsZ0JBQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsU0FBVSxDQUFDLENBQUMsQ0FBQztnQkFDbEUsQ0FBQyxDQUFDLENBQUM7Z0JBRUgsRUFBRSxDQUFDLG9DQUFvQyxFQUFFO29CQUN2QyxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztvQkFDN0MsTUFBTSxnQkFBZ0IsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsU0FBVSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUM7b0JBQzNFLElBQUEsZ0JBQU0sRUFBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztnQkFDakYsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztZQUVILEVBQUUsQ0FBQyxpQkFBaUIsRUFBRTtnQkFDcEIsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixFQUFFLENBQUM7Z0JBQzdDLE1BQU0sY0FBYyxHQUFHLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxDQUFDO2dCQUNuRCxnQkFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQy9FLElBQUEsZ0JBQU0sRUFBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUM5RCwyREFBMkQsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUNyRixDQUFDO1lBQ0osQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5cbmltcG9ydCB7IGdldEF2YWlsYWJsZVRlc3RDb2lucywgZ2V0QnVpbGRlckZhY3RvcnksIGdldFRlc3REYXRhIH0gZnJvbSAnLi4vLi4vdGVzdFV0aWxzJztcblxuZGVzY3JpYmUoJ0Nvc21vcyBUcmFuc2FjdGlvbiBCdWlsZGVyJywgZnVuY3Rpb24gKCkge1xuICBjb25zdCBhdmFpbGFibGVDb2lucyA9IGdldEF2YWlsYWJsZVRlc3RDb2lucygpO1xuICAvLyBUT0RPOiBDT0lOLTUwMzkgLSAgUnVubmluZyB0ZXN0cyBmb3IgZWFjaCBjb2luIGluIHBhcmFsbGVsIHRvIGltcHJvdmUgdGVzdCBwZXJmb3JtYW5jZVxuICAvLyBMb29wIHRocm91Z2ggZWFjaCBhdmFpbGFibGUgY29pbiBhbmQgcnVuIHRlc3RzXG4gIGF2YWlsYWJsZUNvaW5zLmZvckVhY2goKGNvaW5OYW1lKSA9PiB7XG4gICAgZGVzY3JpYmUoYCR7Y29pbk5hbWUudG9VcHBlckNhc2UoKX0gVHJhbnNhY3Rpb24gQnVpbGRlcmAsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHRlc3REYXRhID0gZ2V0VGVzdERhdGEoY29pbk5hbWUpO1xuICAgICAgY29uc3QgZmFjdG9yeSA9IGdldEJ1aWxkZXJGYWN0b3J5KHRlc3REYXRhLnRlc3RuZXRDb2luKTtcbiAgICAgIGNvbnN0IHRlc3RUeCA9IHRlc3REYXRhLnRlc3RTZW5kVHggYXMgUmVxdWlyZWQ8dHlwZW9mIHRlc3REYXRhLnRlc3RTZW5kVHg+O1xuXG4gICAgICBpdCgnc2hvdWxkIGJ1aWxkIGEgc2lnbmVkIHR4IGZyb20gc2lnbmVkIHR4IGRhdGEnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZnJvbSh0ZXN0VHguc2lnbmVkVHhCYXNlNjQpO1xuICAgICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgICBzaG91bGQuZXF1YWwodHgudHlwZSwgVHJhbnNhY3Rpb25UeXBlLlNlbmQpO1xuICAgICAgICAvLyBTaG91bGQgcmVjcmVhdGUgdGhlIHNhbWUgcmF3IHR4IGRhdGEgd2hlbiByZS1idWlsZCBhbmQgdHVybmVkIHRvIGJyb2FkY2FzdCBmb3JtYXRcbiAgICAgICAgY29uc3QgcmF3VHggPSB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgICAgICBzaG91bGQuZXF1YWwocmF3VHgsIHRlc3RUeC5zaWduZWRUeEJhc2U2NCk7XG4gICAgICB9KTtcblxuICAgICAgZGVzY3JpYmUoJ2dhc0J1ZGdldCB0ZXN0cycsIGFzeW5jICgpID0+IHtcbiAgICAgICAgaXQoJ3Nob3VsZCBzdWNjZWVkIGZvciB2YWxpZCBnYXNCdWRnZXQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgY29uc3QgYnVpbGRlciA9IGZhY3RvcnkuZ2V0VHJhbnNmZXJCdWlsZGVyKCk7XG4gICAgICAgICAgc2hvdWxkLmRvZXNOb3RUaHJvdygoKSA9PiBidWlsZGVyLmdhc0J1ZGdldCh0ZXN0VHguZ2FzQnVkZ2V0ISkpO1xuICAgICAgICB9KTtcblxuICAgICAgICBpdCgnc2hvdWxkIHRocm93IGZvciBpbnZhbGlkIGdhc0J1ZGdldCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBjb25zdCBidWlsZGVyID0gZmFjdG9yeS5nZXRUcmFuc2ZlckJ1aWxkZXIoKTtcbiAgICAgICAgICBjb25zdCBpbnZhbGlkR2FzQnVkZ2V0ID0geyBhbW91bnQ6IHRlc3RUeC5nYXNCdWRnZXQhLmFtb3VudCwgZ2FzTGltaXQ6IDAgfTtcbiAgICAgICAgICBzaG91bGQoKCkgPT4gYnVpbGRlci5nYXNCdWRnZXQoaW52YWxpZEdhc0J1ZGdldCkpLnRocm93KCdJbnZhbGlkIGdhcyBsaW1pdCAwJyk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCd2YWxpZGF0ZUFkZHJlc3MnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IGJ1aWxkZXIgPSBmYWN0b3J5LmdldFRyYW5zZmVyQnVpbGRlcigpO1xuICAgICAgICBjb25zdCBpbnZhbGlkQWRkcmVzcyA9IHsgYWRkcmVzczogJ3JhbmRvbVN0cmluZycgfTtcbiAgICAgICAgc2hvdWxkLmRvZXNOb3RUaHJvdygoKSA9PiBidWlsZGVyLnZhbGlkYXRlQWRkcmVzcyh7IGFkZHJlc3M6IHRlc3RUeC5zZW5kZXIgfSkpO1xuICAgICAgICBzaG91bGQoKCkgPT4gYnVpbGRlci52YWxpZGF0ZUFkZHJlc3MoaW52YWxpZEFkZHJlc3MpKS50aHJvd0Vycm9yKFxuICAgICAgICAgICd0cmFuc2FjdGlvbkJ1aWxkZXI6IGFkZHJlc3MgaXNWYWxpZEFkZHJlc3MgY2hlY2sgZmFpbGVkOiAnICsgaW52YWxpZEFkZHJlc3MuYWRkcmVzc1xuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=transferBuilder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transferBuilder.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/transferBuilder.ts"],"names":[],"mappings":""}