@bitgo-beta/sdk-api 1.10.1-beta.186 → 1.10.1-beta.1860

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 (79) hide show
  1. package/dist/package.json +20 -27
  2. package/dist/src/api.d.ts +8 -5
  3. package/dist/src/api.d.ts.map +1 -1
  4. package/dist/src/api.js +130 -71
  5. package/dist/src/bitgoAPI.d.ts +133 -16
  6. package/dist/src/bitgoAPI.d.ts.map +1 -1
  7. package/dist/src/bitgoAPI.js +796 -306
  8. package/dist/src/encrypt.d.ts +23 -4
  9. package/dist/src/encrypt.d.ts.map +1 -1
  10. package/dist/src/encrypt.js +86 -13
  11. package/dist/src/encryptV2.d.ts +68 -0
  12. package/dist/src/encryptV2.d.ts.map +1 -0
  13. package/dist/src/encryptV2.js +202 -0
  14. package/dist/src/encryptionSession.d.ts +34 -0
  15. package/dist/src/encryptionSession.d.ts.map +1 -0
  16. package/dist/src/encryptionSession.js +95 -0
  17. package/dist/src/index.d.ts +2 -0
  18. package/dist/src/index.d.ts.map +1 -1
  19. package/dist/src/index.js +8 -2
  20. package/dist/src/types.d.ts +64 -44
  21. package/dist/src/types.d.ts.map +1 -1
  22. package/dist/src/types.js +4 -2
  23. package/dist/src/util.d.ts +12 -0
  24. package/dist/src/util.d.ts.map +1 -1
  25. package/dist/src/util.js +57 -4
  26. package/dist/src/v1/blockchain.js +25 -12
  27. package/dist/src/v1/keychains.js +39 -26
  28. package/dist/src/v1/markets.js +10 -5
  29. package/dist/src/v1/pendingapproval.d.ts.map +1 -1
  30. package/dist/src/v1/pendingapproval.js +57 -18
  31. package/dist/src/v1/pendingapprovals.d.ts.map +1 -1
  32. package/dist/src/v1/pendingapprovals.js +41 -7
  33. package/dist/src/v1/signPsbt.d.ts +14 -0
  34. package/dist/src/v1/signPsbt.d.ts.map +1 -0
  35. package/dist/src/v1/signPsbt.js +69 -0
  36. package/dist/src/v1/transactionBuilder.js +221 -91
  37. package/dist/src/v1/travelRule.js +163 -66
  38. package/dist/src/v1/verifyAddress.d.ts +6 -0
  39. package/dist/src/v1/verifyAddress.d.ts.map +1 -0
  40. package/dist/src/v1/verifyAddress.js +50 -0
  41. package/dist/src/v1/wallet.d.ts.map +1 -1
  42. package/dist/src/v1/wallet.js +501 -230
  43. package/dist/src/v1/wallets.js +118 -53
  44. package/dist/test/unit/api.d.ts +2 -0
  45. package/dist/test/unit/api.d.ts.map +1 -0
  46. package/dist/test/unit/api.js +307 -0
  47. package/dist/test/unit/bitgoAPI.d.ts +2 -0
  48. package/dist/test/unit/bitgoAPI.d.ts.map +1 -0
  49. package/dist/test/unit/bitgoAPI.js +1027 -0
  50. package/dist/test/unit/encrypt.d.ts +2 -0
  51. package/dist/test/unit/encrypt.d.ts.map +1 -0
  52. package/dist/test/unit/encrypt.js +415 -0
  53. package/dist/test/unit/hmacStrategy.d.ts +2 -0
  54. package/dist/test/unit/hmacStrategy.d.ts.map +1 -0
  55. package/dist/test/unit/hmacStrategy.js +136 -0
  56. package/dist/test/unit/utils.d.ts +2 -0
  57. package/dist/test/unit/utils.d.ts.map +1 -0
  58. package/dist/test/unit/utils.js +65 -0
  59. package/dist/test/unit/v1/fixtures/accelerate-tx.d.ts +4 -0
  60. package/dist/test/unit/v1/fixtures/accelerate-tx.d.ts.map +1 -0
  61. package/dist/test/unit/v1/fixtures/accelerate-tx.js +53 -0
  62. package/dist/test/unit/v1/fixtures/index.d.ts +3 -0
  63. package/dist/test/unit/v1/fixtures/index.d.ts.map +1 -0
  64. package/dist/test/unit/v1/fixtures/index.js +24 -0
  65. package/dist/test/unit/v1/signPsbt.d.ts +2 -0
  66. package/dist/test/unit/v1/signPsbt.d.ts.map +1 -0
  67. package/dist/test/unit/v1/signPsbt.js +53 -0
  68. package/dist/test/unit/v1/travelRule.d.ts +2 -0
  69. package/dist/test/unit/v1/travelRule.d.ts.map +1 -0
  70. package/dist/test/unit/v1/travelRule.js +173 -0
  71. package/dist/test/unit/v1/wallet.d.ts +2 -0
  72. package/dist/test/unit/v1/wallet.d.ts.map +1 -0
  73. package/dist/test/unit/v1/wallet.js +1658 -0
  74. package/dist/tsconfig.tsbuildinfo +1 -0
  75. package/package.json +20 -27
  76. package/.eslintignore +0 -5
  77. package/CHANGELOG.md +0 -571
  78. package/dist/web/main.js +0 -2
  79. package/dist/web/main.js.LICENSE.txt +0 -110
@@ -0,0 +1,173 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const sinon = __importStar(require("sinon"));
37
+ const should = __importStar(require("should"));
38
+ const bitgoAPI_1 = require("../../../src/bitgoAPI");
39
+ const TravelRule = require('../../../src/v1/travelRule');
40
+ // Use a real 33-byte compressed public key from the utxo-lib test vector set.
41
+ const KNOWN_RECIPIENT_PUB = '0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798';
42
+ describe('TravelRule unit tests', () => {
43
+ let bitgo;
44
+ let travel;
45
+ beforeEach(() => {
46
+ bitgo = new bitgoAPI_1.BitGoAPI({ env: 'test' });
47
+ travel = new TravelRule(bitgo);
48
+ });
49
+ afterEach(() => {
50
+ sinon.restore();
51
+ });
52
+ // ---------------------------------------------------------------------------
53
+ // decryptReceivedTravelInfo (sync)
54
+ // ---------------------------------------------------------------------------
55
+ describe('decryptReceivedTravelInfo', () => {
56
+ it('throws when tx param is missing', () => {
57
+ should.throws(() => travel.decryptReceivedTravelInfo({}), /expecting tx param to be object/);
58
+ });
59
+ it('returns tx unchanged when receivedTravelInfo is empty', () => {
60
+ const tx = { receivedTravelInfo: [] };
61
+ const result = travel.decryptReceivedTravelInfo({ tx });
62
+ result.should.equal(tx);
63
+ });
64
+ it('returns tx unchanged when receivedTravelInfo is not present', () => {
65
+ const tx = { id: 'txid123' };
66
+ const result = travel.decryptReceivedTravelInfo({ tx });
67
+ result.should.equal(tx);
68
+ });
69
+ });
70
+ // ---------------------------------------------------------------------------
71
+ // decryptReceivedTravelInfoAsync
72
+ // ---------------------------------------------------------------------------
73
+ describe('decryptReceivedTravelInfoAsync', () => {
74
+ it('throws when tx param is missing', async () => {
75
+ await travel.decryptReceivedTravelInfoAsync({}).should.be.rejectedWith(/expecting tx param to be object/);
76
+ });
77
+ it('returns tx unchanged when receivedTravelInfo is empty', async () => {
78
+ const tx = { receivedTravelInfo: [] };
79
+ const result = await travel.decryptReceivedTravelInfoAsync({ tx });
80
+ result.should.equal(tx);
81
+ });
82
+ it('returns tx unchanged when receivedTravelInfo is not present', async () => {
83
+ const tx = { id: 'txid456' };
84
+ const result = await travel.decryptReceivedTravelInfoAsync({ tx });
85
+ result.should.equal(tx);
86
+ });
87
+ it('calls decryptAsync for each travel info entry', async () => {
88
+ const decryptStub = sinon.stub(bitgo, 'decryptAsync').resolves(JSON.stringify({ fromUserName: 'Alice' }));
89
+ const xprv = 'xprv9s21ZrQH143K2fJ91S4BRsupcYrE6mmY96fcX5HkhoTrrwmwjd16Cn87cWinJjByrfpojjx7ezsJLx7TAKLT8m8hM5Kax9YcoxnBeJZ3t2k';
90
+ const keychain = { xprv };
91
+ const tx = {
92
+ receivedTravelInfo: [
93
+ {
94
+ toPubKeyPath: 'm/0/0',
95
+ fromPubKey: KNOWN_RECIPIENT_PUB,
96
+ encryptedTravelInfo: 'someEncryptedBlob',
97
+ travelInfo: '',
98
+ transactionId: 'txid1',
99
+ outputIndex: 0,
100
+ },
101
+ ],
102
+ };
103
+ const result = await travel.decryptReceivedTravelInfoAsync({ tx, keychain });
104
+ decryptStub.callCount.should.equal(1);
105
+ result.should.equal(tx);
106
+ });
107
+ });
108
+ // ---------------------------------------------------------------------------
109
+ // prepareParams (sync)
110
+ // ---------------------------------------------------------------------------
111
+ describe('prepareParams', () => {
112
+ it('throws when recipient is missing', () => {
113
+ should.throws(() => travel.prepareParams({
114
+ txid: 'abc123',
115
+ travelInfo: { fromUserName: 'Alice' },
116
+ }), /invalid or missing recipient/);
117
+ });
118
+ it('throws when travelInfo is missing', () => {
119
+ should.throws(() => travel.prepareParams({
120
+ txid: 'abc123',
121
+ recipient: { enterprise: 'SDKTest', pubKey: KNOWN_RECIPIENT_PUB, outputIndex: '0' },
122
+ }), /invalid or missing travelInfo/);
123
+ });
124
+ it('calls bitgo.encrypt and returns expected shape', () => {
125
+ const encryptStub = sinon.stub(bitgo, 'encrypt').returns('encryptedBlob');
126
+ const result = travel.prepareParams({
127
+ txid: 'abc123',
128
+ recipient: { enterprise: 'SDKTest', pubKey: KNOWN_RECIPIENT_PUB, outputIndex: '0' },
129
+ travelInfo: { fromUserName: 'Alice', toAddress: '1BitGo' },
130
+ });
131
+ encryptStub.callCount.should.equal(1);
132
+ result.should.have.property('txid', 'abc123');
133
+ result.should.have.property('toPubKey', KNOWN_RECIPIENT_PUB);
134
+ result.should.have.property('fromPubKey').which.is.a.String();
135
+ result.should.have.property('encryptedTravelInfo', 'encryptedBlob');
136
+ });
137
+ });
138
+ // ---------------------------------------------------------------------------
139
+ // prepareParamsAsync
140
+ // ---------------------------------------------------------------------------
141
+ describe('prepareParamsAsync', () => {
142
+ it('throws when recipient is missing', async () => {
143
+ await travel
144
+ .prepareParamsAsync({
145
+ txid: 'abc123',
146
+ travelInfo: { fromUserName: 'Alice' },
147
+ })
148
+ .should.be.rejectedWith(/invalid or missing recipient/);
149
+ });
150
+ it('throws when travelInfo is missing', async () => {
151
+ await travel
152
+ .prepareParamsAsync({
153
+ txid: 'abc123',
154
+ recipient: { enterprise: 'SDKTest', pubKey: KNOWN_RECIPIENT_PUB, outputIndex: '0' },
155
+ })
156
+ .should.be.rejectedWith(/invalid or missing travelInfo/);
157
+ });
158
+ it('calls encryptAsync and returns expected output shape', async () => {
159
+ const encryptStub = sinon.stub(bitgo, 'encryptAsync').resolves('asyncEncryptedBlob');
160
+ const result = await travel.prepareParamsAsync({
161
+ txid: 'txid789',
162
+ recipient: { enterprise: 'SDKTest', pubKey: KNOWN_RECIPIENT_PUB, outputIndex: '1' },
163
+ travelInfo: { fromUserName: 'Bob', toAddress: '1BitGo' },
164
+ });
165
+ encryptStub.callCount.should.equal(1);
166
+ result.should.have.property('txid', 'txid789');
167
+ result.should.have.property('toPubKey', KNOWN_RECIPIENT_PUB);
168
+ result.should.have.property('fromPubKey').which.is.a.String();
169
+ result.should.have.property('encryptedTravelInfo', 'asyncEncryptedBlob');
170
+ });
171
+ });
172
+ });
173
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhdmVsUnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvdW5pdC92MS90cmF2ZWxSdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkNBQStCO0FBQy9CLCtDQUFpQztBQUNqQyxvREFBaUQ7QUFFakQsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLDRCQUE0QixDQUFDLENBQUM7QUFFekQsOEVBQThFO0FBQzlFLE1BQU0sbUJBQW1CLEdBQUcsb0VBQW9FLENBQUM7QUFFakcsUUFBUSxDQUFDLHVCQUF1QixFQUFFLEdBQUcsRUFBRTtJQUNyQyxJQUFJLEtBQWUsQ0FBQztJQUNwQixJQUFJLE1BQXlCLENBQUM7SUFFOUIsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUNkLEtBQUssR0FBRyxJQUFJLG1CQUFRLENBQUMsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUN0QyxNQUFNLEdBQUcsSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQyxDQUFDLENBQUM7SUFFSCxTQUFTLENBQUMsR0FBRyxFQUFFO1FBQ2IsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2xCLENBQUMsQ0FBQyxDQUFDO0lBRUgsOEVBQThFO0lBQzlFLG1DQUFtQztJQUNuQyw4RUFBOEU7SUFDOUUsUUFBUSxDQUFDLDJCQUEyQixFQUFFLEdBQUcsRUFBRTtRQUN6QyxFQUFFLENBQUMsaUNBQWlDLEVBQUUsR0FBRyxFQUFFO1lBQ3pDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLHlCQUF5QixDQUFDLEVBQUUsQ0FBQyxFQUFFLGlDQUFpQyxDQUFDLENBQUM7UUFDL0YsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsdURBQXVELEVBQUUsR0FBRyxFQUFFO1lBQy9ELE1BQU0sRUFBRSxHQUFH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QyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBzaW5vbiBmcm9tICdzaW5vbic7XG5pbXBvcnQgKiBhcyBzaG91bGQgZnJvbSAnc2hvdWxkJztcbmltcG9ydCB7IEJpdEdvQVBJIH0gZnJvbSAnLi4vLi4vLi4vc3JjL2JpdGdvQVBJJztcblxuY29uc3QgVHJhdmVsUnVsZSA9IHJlcXVpcmUoJy4uLy4uLy4uL3NyYy92MS90cmF2ZWxSdWxlJyk7XG5cbi8vIFVzZSBhIHJlYWwgMzMtYnl0ZSBjb21wcmVzc2VkIHB1YmxpYyBrZXkgZnJvbSB0aGUgdXR4by1saWIgdGVzdCB2ZWN0b3Igc2V0LlxuY29uc3QgS05PV05fUkVDSVBJRU5UX1BVQiA9ICcwMjc5YmU2NjdlZjlkY2JiYWM1NWEwNjI5NWNlODcwYjA3MDI5YmZjZGIyZGNlMjhkOTU5ZjI4MTViMTZmODE3OTgnO1xuXG5kZXNjcmliZSgnVHJhdmVsUnVsZSB1bml0IHRlc3RzJywgKCkgPT4ge1xuICBsZXQgYml0Z286IEJpdEdvQVBJO1xuICBsZXQgdHJhdmVsOiB0eXBlb2YgVHJhdmVsUnVsZTtcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBiaXRnbyA9IG5ldyBCaXRHb0FQSSh7IGVudjogJ3Rlc3QnIH0pO1xuICAgIHRyYXZlbCA9IG5ldyBUcmF2ZWxSdWxlKGJpdGdvKTtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICBzaW5vbi5yZXN0b3JlKCk7XG4gIH0pO1xuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBkZWNyeXB0UmVjZWl2ZWRUcmF2ZWxJbmZvIChzeW5jKVxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgZGVzY3JpYmUoJ2RlY3J5cHRSZWNlaXZlZFRyYXZlbEluZm8nLCAoKSA9PiB7XG4gICAgaXQoJ3Rocm93cyB3aGVuIHR4IHBhcmFtIGlzIG1pc3NpbmcnLCAoKSA9PiB7XG4gICAgICBzaG91bGQudGhyb3dzKCgpID0+IHRyYXZlbC5kZWNyeXB0UmVjZWl2ZWRUcmF2ZWxJbmZvKHt9KSwgL2V4cGVjdGluZyB0eCBwYXJhbSB0byBiZSBvYmplY3QvKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZXR1cm5zIHR4IHVuY2hhbmdlZCB3aGVuIHJlY2VpdmVkVHJhdmVsSW5mbyBpcyBlbXB0eScsICgpID0+IHtcbiAgICAgIGNvbnN0IHR4ID0geyByZWNlaXZlZFRyYXZlbEluZm86IFtdIH07XG4gICAgICBjb25zdCByZXN1bHQgPSB0cmF2ZWwuZGVjcnlwdFJlY2VpdmVkVHJhdmVsSW5mbyh7IHR4IH0pO1xuICAgICAgcmVzdWx0LnNob3VsZC5lcXVhbCh0eCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmV0dXJucyB0eCB1bmNoYW5nZWQgd2hlbiByZWNlaXZlZFRyYXZlbEluZm8gaXMgbm90IHByZXNlbnQnLCAoKSA9PiB7XG4gICAgICBjb25zdCB0eCA9IHsgaWQ6ICd0eGlkMTIzJyB9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gdHJhdmVsLmRlY3J5cHRSZWNlaXZlZFRyYXZlbEluZm8oeyB0eCB9KTtcbiAgICAgIHJlc3VsdC5zaG91bGQuZXF1YWwodHgpO1xuICAgIH0pO1xuICB9KTtcblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gZGVjcnlwdFJlY2VpdmVkVHJhdmVsSW5mb0FzeW5jXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICBkZXNjcmliZSgnZGVjcnlwdFJlY2VpdmVkVHJhdmVsSW5mb0FzeW5jJywgKCkgPT4ge1xuICAgIGl0KCd0aHJvd3Mgd2hlbiB0eCBwYXJhbSBpcyBtaXNzaW5nJywgYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgdHJhdmVsLmRlY3J5cHRSZWNlaXZlZFRyYXZlbEluZm9Bc3luYyh7fSkuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgvZXhwZWN0aW5nIHR4IHBhcmFtIHRvIGJlIG9iamVjdC8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JldHVybnMgdHggdW5jaGFuZ2VkIHdoZW4gcmVjZWl2ZWRUcmF2ZWxJbmZvIGlzIGVtcHR5JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHggPSB7IHJlY2VpdmVkVHJhdmVsSW5mbzogW10gfTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRyYXZlbC5kZWNyeXB0UmVjZWl2ZWRUcmF2ZWxJbmZvQXN5bmMoeyB0eCB9KTtcbiAgICAgIHJlc3VsdC5zaG91bGQuZXF1YWwodHgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JldHVybnMgdHggdW5jaGFuZ2VkIHdoZW4gcmVjZWl2ZWRUcmF2ZWxJbmZvIGlzIG5vdCBwcmVzZW50JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHggPSB7IGlkOiAndHhpZDQ1NicgfTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRyYXZlbC5kZWNyeXB0UmVjZWl2ZWRUcmF2ZWxJbmZvQXN5bmMoeyB0eCB9KTtcbiAgICAgIHJlc3VsdC5zaG91bGQuZXF1YWwodHgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2NhbGxzIGRlY3J5cHRBc3luYyBmb3IgZWFjaCB0cmF2ZWwgaW5mbyBlbnRyeScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGRlY3J5cHRTdHViID0gc2lub24uc3R1YihiaXRnbywgJ2RlY3J5cHRBc3luYycpLnJlc29sdmVzKEpTT04uc3RyaW5naWZ5KHsgZnJvbVVzZXJOYW1lOiAnQWxpY2UnIH0pKTtcblxuICAgICAgY29uc3QgeHBydiA9XG4gICAgICAgICd4cHJ2OXMyMVpyUUgxNDNLMmZKOTFTNEJSc3VwY1lyRTZtbVk5NmZjWDVIa2hvVHJyd213amQxNkNuODdjV2luSmpCeXJmcG9qang3ZXpzSkx4N1RBS0xUOG04aE01S2F4OVljb3huQmVKWjN0MmsnO1xuICAgICAgY29uc3Qga2V5Y2hhaW4gPSB7IHhwcnYgfTtcbiAgICAgIGNvbnN0IHR4ID0ge1xuICAgICAgICByZWNlaXZlZFRyYXZlbEluZm86IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0b1B1YktleVBhdGg6ICdtLzAvMCcsXG4gICAgICAgICAgICBmcm9tUHViS2V5OiBLTk9XTl9SRUNJUElFTlRfUFVCLFxuICAgICAgICAgICAgZW5jcnlwdGVkVHJhdmVsSW5mbzogJ3NvbWVFbmNyeXB0ZWRCbG9iJyxcbiAgICAgICAgICAgIHRyYXZlbEluZm86ICcnLFxuICAgICAgICAgICAgdHJhbnNhY3Rpb25JZDogJ3R4aWQxJyxcbiAgICAgICAgICAgIG91dHB1dEluZGV4OiAwLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0cmF2ZWwuZGVjcnlwdFJlY2VpdmVkVHJhdmVsSW5mb0FzeW5jKHsgdHgsIGtleWNoYWluIH0pO1xuICAgICAgZGVjcnlwdFN0dWIuY2FsbENvdW50LnNob3VsZC5lcXVhbCgxKTtcbiAgICAgIHJlc3VsdC5zaG91bGQuZXF1YWwodHgpO1xuICAgIH0pO1xuICB9KTtcblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gcHJlcGFyZVBhcmFtcyAoc3luYylcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIGRlc2NyaWJlKCdwcmVwYXJlUGFyYW1zJywgKCkgPT4ge1xuICAgIGl0KCd0aHJvd3Mgd2hlbiByZWNpcGllbnQgaXMgbWlzc2luZycsICgpID0+IHtcbiAgICAgIHNob3VsZC50aHJvd3MoXG4gICAgICAgICgpID0+XG4gICAgICAgICAgdHJhdmVsLnByZXBhcmVQYXJhbXMoe1xuICAgICAgICAgICAgdHhpZDogJ2FiYzEyMycsXG4gICAgICAgICAgICB0cmF2ZWxJbmZvOiB7IGZyb21Vc2VyTmFtZTogJ0FsaWNlJyB9LFxuICAgICAgICAgIH0pLFxuICAgICAgICAvaW52YWxpZCBvciBtaXNzaW5nIHJlY2lwaWVudC9cbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgndGhyb3dzIHdoZW4gdHJhdmVsSW5mbyBpcyBtaXNzaW5nJywgKCkgPT4ge1xuICAgICAgc2hvdWxkLnRocm93cyhcbiAgICAgICAgKCkgPT5cbiAgICAgICAgICB0cmF2ZWwucHJlcGFyZVBhcmFtcyh7XG4gICAgICAgICAgICB0eGlkOiAnYWJjMTIzJyxcbiAgICAgICAgICAgIHJlY2lwaWVudDogeyBlbnRlcnByaXNlOiAnU0RLVGVzdCcsIHB1YktleTogS05PV05fUkVDSVBJRU5UX1BVQiwgb3V0cHV0SW5kZXg6ICcwJyB9LFxuICAgICAgICAgIH0pLFxuICAgICAgICAvaW52YWxpZCBvciBtaXNzaW5nIHRyYXZlbEluZm8vXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ2NhbGxzIGJpdGdvLmVuY3J5cHQgYW5kIHJldHVybnMgZXhwZWN0ZWQgc2hhcGUnLCAoKSA9PiB7XG4gICAgICBjb25zdCBlbmNyeXB0U3R1YiA9IHNpbm9uLnN0dWIoYml0Z28sICdlbmNyeXB0JykucmV0dXJucygnZW5jcnlwdGVkQmxvYicpO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSB0cmF2ZWwucHJlcGFyZVBhcmFtcyh7XG4gICAgICAgIHR4aWQ6ICdhYmMxMjMnLFxuICAgICAgICByZWNpcGllbnQ6IHsgZW50ZXJwcmlzZTogJ1NES1Rlc3QnLCBwdWJLZXk6IEtOT1dOX1JFQ0lQSUVOVF9QVUIsIG91dHB1dEluZGV4OiAnMCcgfSxcbiAgICAgICAgdHJhdmVsSW5mbzogeyBmcm9tVXNlck5hbWU6ICdBbGljZScsIHRvQWRkcmVzczogJzFCaXRHbycgfSxcbiAgICAgIH0pO1xuXG4gICAgICBlbmNyeXB0U3R1Yi5jYWxsQ291bnQuc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgcmVzdWx0LnNob3VsZC5oYXZlLnByb3BlcnR5KCd0eGlkJywgJ2FiYzEyMycpO1xuICAgICAgcmVzdWx0LnNob3VsZC5oYXZlLnByb3BlcnR5KCd0b1B1YktleScsIEtOT1dOX1JFQ0lQSUVOVF9QVUIpO1xuICAgICAgcmVzdWx0LnNob3VsZC5oYXZlLnByb3BlcnR5KCdmcm9tUHViS2V5Jykud2hpY2guaXMuYS5TdHJpbmcoKTtcbiAgICAgIHJlc3VsdC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnZW5jcnlwdGVkVHJhdmVsSW5mbycsICdlbmNyeXB0ZWRCbG9iJyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBwcmVwYXJlUGFyYW1zQXN5bmNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIGRlc2NyaWJlKCdwcmVwYXJlUGFyYW1zQXN5bmMnLCAoKSA9PiB7XG4gICAgaXQoJ3Rocm93cyB3aGVuIHJlY2lwaWVudCBpcyBtaXNzaW5nJywgYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgdHJhdmVsXG4gICAgICAgIC5wcmVwYXJlUGFyYW1zQXN5bmMoe1xuICAgICAgICAgIHR4aWQ6ICdhYmMxMjMnLFxuICAgICAgICAgIHRyYXZlbEluZm86IHsgZnJvbVVzZXJOYW1lOiAnQWxpY2UnIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKC9pbnZhbGlkIG9yIG1pc3NpbmcgcmVjaXBpZW50Lyk7XG4gICAgfSk7XG5cbiAgICBpdCgndGhyb3dzIHdoZW4gdHJhdmVsSW5mbyBpcyBtaXNzaW5nJywgYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgdHJhdmVsXG4gICAgICAgIC5wcmVwYXJlUGFyYW1zQXN5bmMoe1xuICAgICAgICAgIHR4aWQ6ICdhYmMxMjMnLFxuICAgICAgICAgIHJlY2lwaWVudDogeyBlbnRlcnByaXNlOiAnU0RLVGVzdCcsIHB1YktleTogS05PV05fUkVDSVBJRU5UX1BVQiwgb3V0cHV0SW5kZXg6ICcwJyB9LFxuICAgICAgICB9KVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgvaW52YWxpZCBvciBtaXNzaW5nIHRyYXZlbEluZm8vKTtcbiAgICB9KTtcblxuICAgIGl0KCdjYWxscyBlbmNyeXB0QXN5bmMgYW5kIHJldHVybnMgZXhwZWN0ZWQgb3V0cHV0IHNoYXBlJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgZW5jcnlwdFN0dWIgPSBzaW5vbi5zdHViKGJpdGdvLCAnZW5jcnlwdEFzeW5jJykucmVzb2x2ZXMoJ2FzeW5jRW5jcnlwdGVkQmxvYicpO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0cmF2ZWwucHJlcGFyZVBhcmFtc0FzeW5jKHtcbiAgICAgICAgdHhpZDogJ3R4aWQ3ODknLFxuICAgICAgICByZWNpcGllbnQ6IHsgZW50ZXJwcmlzZTogJ1NES1Rlc3QnLCBwdWJLZXk6IEtOT1dOX1JFQ0lQSUVOVF9QVUIsIG91dHB1dEluZGV4OiAnMScgfSxcbiAgICAgICAgdHJhdmVsSW5mbzogeyBmcm9tVXNlck5hbWU6ICdCb2InLCB0b0FkZHJlc3M6ICcxQml0R28nIH0sXG4gICAgICB9KTtcblxuICAgICAgZW5jcnlwdFN0dWIuY2FsbENvdW50LnNob3VsZC5lcXVhbCgxKTtcbiAgICAgIHJlc3VsdC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgndHhpZCcsICd0eGlkNzg5Jyk7XG4gICAgICByZXN1bHQuc2hvdWxkLmhhdmUucHJvcGVydHkoJ3RvUHViS2V5JywgS05PV05fUkVDSVBJRU5UX1BVQik7XG4gICAgICByZXN1bHQuc2hvdWxkLmhhdmUucHJvcGVydHkoJ2Zyb21QdWJLZXknKS53aGljaC5pcy5hLlN0cmluZygpO1xuICAgICAgcmVzdWx0LnNob3VsZC5oYXZlLnByb3BlcnR5KCdlbmNyeXB0ZWRUcmF2ZWxJbmZvJywgJ2FzeW5jRW5jcnlwdGVkQmxvYicpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=wallet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../../../test/unit/v1/wallet.ts"],"names":[],"mappings":""}