@bitgo-beta/sdk-api 1.10.1-beta.1222 → 1.10.1-beta.1223

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 (53) hide show
  1. package/dist/package.json +7 -7
  2. package/package.json +7 -7
  3. package/dist/src/api.d.ts +0 -47
  4. package/dist/src/api.d.ts.map +0 -1
  5. package/dist/src/api.js +0 -215
  6. package/dist/src/bitgoAPI.d.ts +0 -597
  7. package/dist/src/bitgoAPI.d.ts.map +0 -1
  8. package/dist/src/bitgoAPI.js +0 -1837
  9. package/dist/src/encrypt.d.ts +0 -14
  10. package/dist/src/encrypt.d.ts.map +0 -1
  11. package/dist/src/encrypt.js +0 -81
  12. package/dist/src/index.d.ts +0 -6
  13. package/dist/src/index.d.ts.map +0 -1
  14. package/dist/src/index.js +0 -22
  15. package/dist/src/types.d.ts +0 -268
  16. package/dist/src/types.d.ts.map +0 -1
  17. package/dist/src/types.js +0 -7
  18. package/dist/src/util.d.ts +0 -16
  19. package/dist/src/util.d.ts.map +0 -1
  20. package/dist/src/util.js +0 -64
  21. package/dist/src/v1/blockchain.d.ts +0 -5
  22. package/dist/src/v1/blockchain.d.ts.map +0 -1
  23. package/dist/src/v1/blockchain.js +0 -127
  24. package/dist/src/v1/keychains.d.ts +0 -5
  25. package/dist/src/v1/keychains.d.ts.map +0 -1
  26. package/dist/src/v1/keychains.js +0 -320
  27. package/dist/src/v1/markets.d.ts +0 -5
  28. package/dist/src/v1/markets.d.ts.map +0 -1
  29. package/dist/src/v1/markets.js +0 -68
  30. package/dist/src/v1/pendingapproval.d.ts +0 -6
  31. package/dist/src/v1/pendingapproval.d.ts.map +0 -1
  32. package/dist/src/v1/pendingapproval.js +0 -361
  33. package/dist/src/v1/pendingapprovals.d.ts +0 -6
  34. package/dist/src/v1/pendingapprovals.d.ts.map +0 -1
  35. package/dist/src/v1/pendingapprovals.js +0 -102
  36. package/dist/src/v1/signPsbt.d.ts +0 -14
  37. package/dist/src/v1/signPsbt.d.ts.map +0 -1
  38. package/dist/src/v1/signPsbt.js +0 -69
  39. package/dist/src/v1/transactionBuilder.d.ts +0 -5
  40. package/dist/src/v1/transactionBuilder.d.ts.map +0 -1
  41. package/dist/src/v1/transactionBuilder.js +0 -941
  42. package/dist/src/v1/travelRule.d.ts +0 -5
  43. package/dist/src/v1/travelRule.d.ts.map +0 -1
  44. package/dist/src/v1/travelRule.js +0 -294
  45. package/dist/src/v1/verifyAddress.d.ts +0 -6
  46. package/dist/src/v1/verifyAddress.d.ts.map +0 -1
  47. package/dist/src/v1/verifyAddress.js +0 -50
  48. package/dist/src/v1/wallet.d.ts +0 -6
  49. package/dist/src/v1/wallet.d.ts.map +0 -1
  50. package/dist/src/v1/wallet.js +0 -2299
  51. package/dist/src/v1/wallets.d.ts +0 -5
  52. package/dist/src/v1/wallets.d.ts.map +0 -1
  53. package/dist/src/v1/wallets.js +0 -528
@@ -1,361 +0,0 @@
1
- "use strict";
2
- /**
3
- * @hidden
4
- */
5
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- var desc = Object.getOwnPropertyDescriptor(m, k);
8
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
- desc = { enumerable: true, get: function() { return m[k]; } };
10
- }
11
- Object.defineProperty(o, k2, desc);
12
- }) : (function(o, m, k, k2) {
13
- if (k2 === undefined) k2 = k;
14
- o[k2] = m[k];
15
- }));
16
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
- Object.defineProperty(o, "default", { enumerable: true, value: v });
18
- }) : function(o, v) {
19
- o["default"] = v;
20
- });
21
- var __importStar = (this && this.__importStar) || (function () {
22
- var ownKeys = function(o) {
23
- ownKeys = Object.getOwnPropertyNames || function (o) {
24
- var ar = [];
25
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
- return ar;
27
- };
28
- return ownKeys(o);
29
- };
30
- return function (mod) {
31
- if (mod && mod.__esModule) return mod;
32
- var result = {};
33
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
- __setModuleDefault(result, mod);
35
- return result;
36
- };
37
- })();
38
- var __importDefault = (this && this.__importDefault) || function (mod) {
39
- return (mod && mod.__esModule) ? mod : { "default": mod };
40
- };
41
- /**
42
- */
43
- // Pending Approval Object
44
- // Handles approving, rejecting and getting information on pending approvals
45
- //
46
- // Copyright 2015, BitGo, Inc. All Rights Reserved.
47
- //
48
- const sdk_core_1 = require("@bitgo-beta/sdk-core");
49
- const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
50
- const lodash_1 = __importDefault(require("lodash"));
51
- const util_1 = require("../util");
52
- //
53
- // Constructor
54
- //
55
- const PendingApproval = function (bitgo, pendingApproval, wallet) {
56
- // @ts-expect-error - no implicit this
57
- this.bitgo = bitgo;
58
- // @ts-expect-error - no implicit this
59
- this.pendingApproval = pendingApproval;
60
- // @ts-expect-error - no implicit this
61
- this.wallet = wallet;
62
- };
63
- //
64
- // id
65
- // Get the id of this pending approval.
66
- //
67
- PendingApproval.prototype.id = function () {
68
- return this.pendingApproval.id;
69
- };
70
- //
71
- // ownerType
72
- // Get the owner type (wallet or enterprise)
73
- // Pending approvals can be approved or modified by different scopes (depending on how they were created)
74
- // If a pending approval is owned by a wallet, then it can be approved by administrators of the wallet
75
- // If a pending approval is owned by an enterprise, then it can be approved by administrators of the enterprise
76
- //
77
- PendingApproval.prototype.ownerType = function (params, callback) {
78
- params = params || {};
79
- sdk_core_1.common.validateParams(params, [], [], callback);
80
- if (this.pendingApproval.walletId) {
81
- return 'wallet';
82
- }
83
- else if (this.pendingApproval.enterprise) {
84
- return 'enterprise';
85
- }
86
- else {
87
- throw new Error('unexpected pending approval owner: neither walletId nor enterprise was present');
88
- }
89
- };
90
- //
91
- // walletId
92
- // Get the wallet ID that owns / is associated with the pending approval
93
- //
94
- PendingApproval.prototype.walletId = function () {
95
- return this.pendingApproval.walletId;
96
- };
97
- //
98
- // enterpriseId
99
- // Get the enterprise ID that owns / is associated with the pending approval
100
- //
101
- PendingApproval.prototype.enterpriseId = function () {
102
- return this.pendingApproval.enterprise;
103
- };
104
- //
105
- // state
106
- // Get the state of the pending approval
107
- //
108
- PendingApproval.prototype.state = function () {
109
- return this.pendingApproval.state;
110
- };
111
- //
112
- // creator
113
- // Get the id of the user that performed the action resulting in this pending approval
114
- //
115
- PendingApproval.prototype.creator = function () {
116
- return this.pendingApproval.creator;
117
- };
118
- //
119
- // type
120
- // Get the type of the pending approval (what it approves)
121
- // Example: transactionRequest, tagUpdateRequest, policyRuleRequest
122
- //
123
- PendingApproval.prototype.type = function () {
124
- if (!this.pendingApproval.info) {
125
- throw new Error('pending approval info is not available');
126
- }
127
- return this.pendingApproval.info.type;
128
- };
129
- //
130
- // type
131
- // Get information about the pending approval
132
- //
133
- PendingApproval.prototype.info = function () {
134
- return this.pendingApproval.info;
135
- };
136
- //
137
- // approvalsRequired
138
- // get the number of approvals that are required for this pending approval to be approved.
139
- // Defaults to 1 if approvalsRequired doesn't exist on the object
140
- //
141
- PendingApproval.prototype.approvalsRequired = function () {
142
- return this.pendingApproval.approvalsRequired || 1;
143
- };
144
- //
145
- // url
146
- // Gets the url for this pending approval
147
- //
148
- PendingApproval.prototype.url = function (extra) {
149
- extra = extra || '';
150
- return this.bitgo.url('/pendingapprovals/' + this.id() + extra);
151
- };
152
- //
153
- // get
154
- // Refetches this pending approval and returns it
155
- //
156
- PendingApproval.prototype.get = function (params, callback) {
157
- params = params || {};
158
- sdk_core_1.common.validateParams(params, [], [], callback);
159
- const self = this;
160
- return Promise.resolve(this.bitgo.get(this.url()).result())
161
- .then(function (res) {
162
- self.pendingApproval = res;
163
- return self;
164
- })
165
- .then(callback)
166
- .catch(callback);
167
- };
168
- //
169
- // Helper function to ensure that self.wallet is set
170
- //
171
- PendingApproval.prototype.populateWallet = function () {
172
- const self = this;
173
- if (!self.wallet) {
174
- return self.bitgo
175
- .wallets()
176
- .get({ id: self.info().transactionRequest.sourceWallet })
177
- .then(function (wallet) {
178
- if (!wallet) {
179
- throw new Error('unexpected - unable to get wallet using sourcewallet');
180
- }
181
- self.wallet = wallet;
182
- });
183
- }
184
- if (self.wallet.id() !== self.info().transactionRequest.sourceWallet) {
185
- throw new Error('unexpected source wallet for pending approval');
186
- }
187
- return Promise.resolve(); // otherwise returns undefined
188
- };
189
- //
190
- // helper function to recreate and sign a transaction on a wallet
191
- // we should hopefully be able to move this logic server side soon
192
- //
193
- PendingApproval.prototype.recreateAndSignTransaction = function (params, callback) {
194
- params = lodash_1.default.extend({}, params);
195
- sdk_core_1.common.validateParams(params, ['txHex'], [], callback);
196
- const transaction = utxolib.bitgo.createTransactionFromHex(params.txHex, utxolib.networks.bitcoin);
197
- if (!transaction.outs) {
198
- throw new Error('transaction had no outputs or failed to parse successfully');
199
- }
200
- const network = utxolib.networks[sdk_core_1.common.Environments[this.bitgo.getEnv()].network];
201
- params.recipients = {};
202
- const self = this;
203
- return (0, util_1.tryPromise)(function () {
204
- if (self.info().transactionRequest.recipients) {
205
- // recipients object found on the pending approvals - use it
206
- params.recipients = self.info().transactionRequest.recipients;
207
- return;
208
- }
209
- if (transaction.outs.length <= 2) {
210
- transaction.outs.forEach(function (out) {
211
- const outAddress = utxolib.address.fromOutputScript(out.script, network);
212
- if (self.info().transactionRequest.destinationAddress === outAddress) {
213
- // If this is the destination, then spend to it
214
- params.recipients[outAddress] = out.value;
215
- }
216
- });
217
- return;
218
- }
219
- // This looks like a sendmany
220
- // Attempt to figure out the outputs by choosing all outputs that were not going back to the wallet as change addresses
221
- return self.wallet.addresses({ chain: 1, sort: -1, limit: 500 }).then(function (result) {
222
- const changeAddresses = lodash_1.default.keyBy(result.addresses, 'address');
223
- transaction.outs.forEach(function (out) {
224
- const outAddress = utxolib.address.fromOutputScript(out.script, network);
225
- if (!changeAddresses[outAddress]) {
226
- // If this is not a change address, then spend to it
227
- params.recipients[outAddress] = out.value;
228
- }
229
- });
230
- });
231
- }).then(function () {
232
- return self.wallet.createAndSignTransaction(params);
233
- });
234
- };
235
- //
236
- // constructApprovalTx
237
- // constructs/signs a transaction for this pending approval, returning the txHex (but not sending it)
238
- //
239
- PendingApproval.prototype.constructApprovalTx = function (params, callback) {
240
- params = params || {};
241
- sdk_core_1.common.validateParams(params, [], ['walletPassphrase'], callback);
242
- if (this.type() === 'transactionRequest' && !(params.walletPassphrase || params.xprv)) {
243
- throw new Error('wallet passphrase or xprv required to approve a transactionRequest');
244
- }
245
- if (params.useOriginalFee) {
246
- if (!lodash_1.default.isBoolean(params.useOriginalFee)) {
247
- throw new Error('invalid type for useOriginalFeeRate');
248
- }
249
- if (params.fee || params.feeRate || params.feeTxConfirmTarget) {
250
- throw new Error('cannot specify a fee/feerate/feeTxConfirmTarget as well as useOriginalFee');
251
- }
252
- }
253
- const self = this;
254
- return (0, util_1.tryPromise)(function () {
255
- if (self.type() === 'transactionRequest') {
256
- const extendParams = { txHex: self.info().transactionRequest.transaction };
257
- if (params.useOriginalFee) {
258
- extendParams.fee = self.info().transactionRequest.fee;
259
- }
260
- return self.populateWallet().then(function () {
261
- return self.recreateAndSignTransaction(lodash_1.default.extend(params, extendParams));
262
- });
263
- }
264
- });
265
- };
266
- //
267
- // approve
268
- // sets the pending approval to an approved state
269
- //
270
- PendingApproval.prototype.approve = function (params, callback) {
271
- params = params || {};
272
- sdk_core_1.common.validateParams(params, [], ['walletPassphrase', 'otp'], callback);
273
- let canRecreateTransaction = true;
274
- if (this.type() === 'transactionRequest') {
275
- if (!params.walletPassphrase && !params.xprv) {
276
- canRecreateTransaction = false;
277
- }
278
- // check the wallet balance and compare it with the transaction amount and fee
279
- if (lodash_1.default.isUndefined(params.forceRecreate) && lodash_1.default.isObject(lodash_1.default.get(this, 'wallet.wallet'))) {
280
- const requestedAmount = this.pendingApproval.info.transactionRequest.requestedAmount || 0;
281
- const walletBalance = this.wallet.wallet.spendableBalance;
282
- const delta = Math.abs(requestedAmount - walletBalance);
283
- if (delta <= 10000) {
284
- // it's a sweep because we're within 10k satoshis of the wallet balance
285
- canRecreateTransaction = false;
286
- }
287
- }
288
- }
289
- const self = this;
290
- return (0, util_1.tryPromise)(function () {
291
- if (self.type() === 'transactionRequest') {
292
- if (params.tx) {
293
- // the approval tx was reconstructed and explicitly specified - pass it through
294
- return {
295
- tx: params.tx,
296
- };
297
- }
298
- // this user may not have spending privileges or a passphrase may not have been passed in
299
- if (!canRecreateTransaction) {
300
- return {
301
- tx: self.info().transactionRequest.transaction,
302
- };
303
- }
304
- return self.populateWallet().then(function () {
305
- const recreationParams = lodash_1.default.extend({}, params, { txHex: self.info().transactionRequest.transaction }, self.info().transactionRequest.buildParams);
306
- // delete the old build params because we want 'recreateAndSign' to recreate the transaction
307
- delete recreationParams.fee;
308
- delete recreationParams.unspents;
309
- delete recreationParams.txInfo;
310
- delete recreationParams.estimatedSize;
311
- delete recreationParams.changeAddresses;
312
- return self.recreateAndSignTransaction(recreationParams);
313
- });
314
- }
315
- })
316
- .then(function (transaction) {
317
- const approvalParams = { state: 'approved', otp: params.otp };
318
- if (transaction) {
319
- approvalParams.tx = transaction.tx;
320
- }
321
- return Promise.resolve(self.bitgo.put(self.url()).send(approvalParams).result()).then(callback).catch(callback);
322
- })
323
- .catch(function (error) {
324
- if (!canRecreateTransaction &&
325
- (error.message.indexOf('could not find unspent output for input') !== -1 ||
326
- error.message.indexOf('transaction conflicts with an existing transaction in the send queue') !== -1)) {
327
- throw new Error('unspents expired, wallet passphrase or xprv required to recreate transaction');
328
- }
329
- if (lodash_1.default.isUndefined(params.forceRecreate) &&
330
- error.message.indexOf('could not find unspent output for input') !== -1) {
331
- // if the unspents can't be found, we must retry with a newly constructed transaction, so we delete the tx and try again
332
- // deleting params.tx will force the code to reach the 'recreateAndSignTransaction' function
333
- delete params.tx;
334
- params.forceRecreate = true;
335
- self.approve(params, callback);
336
- }
337
- else {
338
- throw error;
339
- }
340
- });
341
- };
342
- //
343
- // rejected
344
- // sets the pending approval to a rejected state
345
- //
346
- PendingApproval.prototype.reject = function (params, callback) {
347
- params = params || {};
348
- sdk_core_1.common.validateParams(params, [], [], callback);
349
- return Promise.resolve(this.bitgo.put(this.url()).send({ state: 'rejected' }).result())
350
- .then(callback)
351
- .catch(callback);
352
- };
353
- //
354
- // cancel
355
- // rejects the pending approval
356
- //
357
- PendingApproval.prototype.cancel = function (params, callback) {
358
- return this.reject(params, callback);
359
- };
360
- module.exports = PendingApproval;
361
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVuZGluZ2FwcHJvdmFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3YxL3BlbmRpbmdhcHByb3ZhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7O0dBRUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSDtHQUNHO0FBQ0gsMEJBQTBCO0FBQzFCLDRFQUE0RTtBQUM1RSxFQUFFO0FBQ0Ysb0RBQW9EO0FBQ3BELEVBQUU7QUFDRixtREFBOEM7QUFDOUMsOERBQWdEO0FBRWhELG9EQUF1QjtBQUN2QixrQ0FBcUM7QUFFckMsRUFBRTtBQUNGLGNBQWM7QUFDZCxFQUFFO0FBQ0YsTUFBTSxlQUFlLEdBQUcsVUFBVSxLQUFLLEVBQUUsZUFBZSxFQUFFLE1BQU07SUFDOUQsc0NBQXNDO0lBQ3RDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ25CLHNDQUFzQztJQUN0QyxJQUFJLENBQUMsZUFBZSxHQUFHLGVBQWUsQ0FBQztJQUN2QyxzQ0FBc0M7SUFDdEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7QUFDdkIsQ0FBQyxDQUFDO0FBRUYsRUFBRTtBQUNGLEtBQUs7QUFDTCx1Q0FBdUM7QUFDdkMsRUFBRTtBQUNGLGVBQWUsQ0FBQyxTQUFTLENBQUMsRUFBRSxHQUFHO0lBQzdCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7QUFDakMsQ0FBQyxDQUFDO0FBRUYsRUFBRTtBQUNGLFlBQVk7QUFDWiw0Q0FBNEM7QUFDNUMseUdBQXlHO0FBQ3pHLHNHQUFzRztBQUN0RywrR0FBK0c7QUFDL0csRUFBRTtBQUNGLGVBQWUsQ0FBQyxTQUFTLENBQUMsU0FBUyxHQUFHLFVBQVUsTUFBTSxFQUFFLFFBQVE7SUFDOUQsTUFBTSxHQUFHLE1BQU0sSUFBSSxFQUFFLENBQUM7SUFDdEIsaUJBQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFF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LENBQUMsUUFBUSxDQUFDLENBQUM7QUFDckIsQ0FBQyxDQUFDO0FBRUYsRUFBRTtBQUNGLFNBQVM7QUFDVCwrQkFBK0I7QUFDL0IsRUFBRTtBQUNGLGVBQWUsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLFVBQVUsTUFBTSxFQUFFLFFBQVE7SUFDM0QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztBQUN2QyxDQUFDLENBQUM7QUFFRixpQkFBUyxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBoaWRkZW5cbiAqL1xuXG4vKipcbiAqL1xuLy8gUGVuZGluZyBBcHByb3ZhbCBPYmplY3Rcbi8vIEhhbmRsZXMgYXBwcm92aW5nLCByZWplY3RpbmcgYW5kIGdldHRpbmcgaW5mb3JtYXRpb24gb24gcGVuZGluZyBhcHByb3ZhbHNcbi8vXG4vLyBDb3B5cmlnaHQgMjAxNSwgQml0R28sIEluYy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vL1xuaW1wb3J0IHsgY29tbW9uIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5cbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyB0cnlQcm9taXNlIH0gZnJvbSAnLi4vdXRpbCc7XG5cbi8vXG4vLyBDb25zdHJ1Y3RvclxuLy9cbmNvbnN0IFBlbmRpbmdBcHByb3ZhbCA9IGZ1bmN0aW9uIChiaXRnbywgcGVuZGluZ0FwcHJvdmFsLCB3YWxsZXQpIHtcbiAgLy8gQHRzLWV4cGVjdC1lcnJvciAtIG5vIGltcGxpY2l0IHRoaXNcbiAgdGhpcy5iaXRnbyA9IGJpdGdvO1xuICAvLyBAdHMtZXhwZWN0LWVycm9yIC0gbm8gaW1wbGljaXQgdGhpc1xuICB0aGlzLnBlbmRpbmdBcHByb3ZhbCA9IHBlbmRpbmdBcHByb3ZhbDtcbiAgLy8gQHRzLWV4cGVjdC1lcnJvciAtIG5vIGltcGxpY2l0IHRoaXNcbiAgdGhpcy53YWxsZXQgPSB3YWxsZXQ7XG59O1xuXG4vL1xuLy8gaWRcbi8vIEdldCB0aGUgaWQgb2YgdGhpcyBwZW5kaW5nIGFwcHJvdmFsLlxuLy9cblBlbmRpbmdBcHByb3ZhbC5wcm90b3R5cGUuaWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLnBlbmRpbmdBcHByb3ZhbC5pZDtcbn07XG5cbi8vXG4vLyBvd25lclR5cGVcbi8vIEdldCB0aGUgb3duZXIgdHlwZSAod2FsbGV0IG9yIGVudGVycHJpc2UpXG4vLyBQZW5kaW5nIGFwcHJvdmFscyBjYW4gYmUgYXBwcm92ZWQgb3IgbW9kaWZpZWQgYnkgZGlmZmVyZW50IHNjb3BlcyAoZGVwZW5kaW5nIG9uIGhvdyB0aGV5IHdlcmUgY3JlYXRlZClcbi8vIElmIGEgcGVuZGluZyBhcHByb3ZhbCBpcyBvd25lZCBieSBhIHdhbGxldCwgdGhlbiBpdCBjYW4gYmUgYXBwcm92ZWQgYnkgYWRtaW5pc3RyYXRvcnMgb2YgdGhlIHdhbGxldFxuLy8gSWYgYSBwZW5kaW5nIGFwcHJvdmFsIGlzIG93bmVkIGJ5IGFuIGVudGVycHJpc2UsIHRoZW4gaXQgY2FuIGJlIGFwcHJvdmVkIGJ5IGFkbWluaXN0cmF0b3JzIG9mIHRoZSBlbnRlcnByaXNlXG4vL1xuUGVuZGluZ0FwcHJvdmFsLnByb3RvdHlwZS5vd25lclR5cGUgPSBmdW5jdGlvbiAocGFyYW1zLCBjYWxsYmFjaykge1xuICBwYXJhbXMgPSBwYXJhbXMgfHwge307XG4gIGNvbW1vbi52YWxpZGF0ZVBhcmFtcyhwYXJhbXMsIFtdLCBbXSwgY2FsbGJhY2spO1xuXG4gIGlmICh0aGlzLnBlbmRpbmdBcHByb3ZhbC53YWxsZXRJZCkge1xuICAgIHJldHVybiAnd2FsbGV0JztcbiAgfSBlbHNlIGlmICh0aGlzLnBlbmRpbmdBcHByb3ZhbC5lbnRlcnByaXNlKSB7XG4gICAgcmV0dXJuICdlbnRlcnByaXNlJztcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3VuZXhwZWN0ZWQgcGVuZGluZyBhcHByb3ZhbCBvd25lcjogbmVpdGhlciB3YWxsZXRJZCBub3IgZW50ZXJwcmlzZSB3YXMgcHJlc2VudCcpO1xuICB9XG59O1xuXG4vL1xuLy8gd2FsbGV0SWRcbi8vIEdldCB0aGUgd2FsbGV0IElEIHRoYXQgb3ducyAvIGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgcGVuZGluZyBhcHByb3ZhbFxuLy9cblBlbmRpbmdBcHByb3ZhbC5wcm90b3R5cGUud2FsbGV0SWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLnBlbmRpbmdBcHByb3ZhbC53YWxsZXRJZDtcbn07XG5cbi8vXG4vLyBlbnRlcnByaXNlSWRcbi8vIEdldCB0aGUgZW50ZXJwcmlzZSBJRCB0aGF0IG93bnMgLyBpcyBhc3NvY2lhdGVkIHdpdGggdGhlIHBlbmRpbmcgYXBwcm92YWxcbi8vXG5QZW5kaW5nQXBwcm92YWwucHJvdG90eXBlLmVudGVycHJpc2VJZCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMucGVuZGluZ0FwcHJvdmFsLmVudGVycHJpc2U7XG59O1xuXG4vL1xuLy8gc3RhdGVcbi8vIEdldCB0aGUgc3RhdGUgb2YgdGhlIHBlbmRpbmcgYXBwcm92YWxcbi8vXG5QZW5kaW5nQXBwcm92YWwucHJvdG90eXBlLnN0YXRlID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5wZW5kaW5nQXBwcm92YWwuc3RhdGU7XG59O1xuXG4vL1xuLy8gY3JlYXRvclxuLy8gR2V0IHRoZSBpZCBvZiB0aGUgdXNlciB0aGF0IHBlcmZvcm1lZCB0aGUgYWN0aW9uIHJlc3VsdGluZyBpbiB0aGlzIHBlbmRpbmcgYXBwcm92YWxcbi8vXG5QZW5kaW5nQXBwcm92YWwucHJvdG90eXBlLmNyZWF0b3IgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLnBlbmRpbmdBcHByb3ZhbC5jcmVhdG9yO1xufTtcblxuLy9cbi8vIHR5cGVcbi8vIEdldCB0aGUgdHlwZSBvZiB0aGUgcGVuZGluZyBhcHByb3ZhbCAod2hhdCBpdCBhcHByb3Zlcylcbi8vIEV4YW1wbGU6IHRyYW5zYWN0aW9uUmVxdWVzdCwgdGFnVXBkYXRlUmVxdWVzdCwgcG9saWN5UnVsZVJlcXVlc3Rcbi8vXG5QZW5kaW5nQXBwcm92YWwucHJvdG90eXBlLnR5cGUgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghdGhpcy5wZW5kaW5nQXBwcm92YWwuaW5mbykge1xuICAgIHRocm93IG5ldyBFcnJvcigncGVuZGluZyBhcHByb3ZhbCBpbmZvIGlzIG5vdCBhdmFpbGFibGUnKTtcbiAgfVxuICByZXR1cm4gdGhpcy5wZW5kaW5nQXBwcm92YWwuaW5mby50eXBlO1xufTtcblxuLy9cbi8vIHR5cGVcbi8vIEdldCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcGVuZGluZyBhcHByb3ZhbFxuLy9cblBlbmRpbmdBcHByb3ZhbC5wcm90b3R5cGUuaW5mbyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMucGVuZGluZ0FwcHJvdmFsLmluZm87XG59O1xuXG4vL1xuLy8gYXBwcm92YWxzUmVxdWlyZWRcbi8vIGdldCB0aGUgbnVtYmVyIG9mIGFwcHJvdmFscyB0aGF0IGFyZSByZXF1aXJlZCBmb3IgdGhpcyBwZW5kaW5nIGFwcHJvdmFsIHRvIGJlIGFwcHJvdmVkLlxuLy8gRGVmYXVsdHMgdG8gMSBpZiBhcHByb3ZhbHNSZXF1aXJlZCBkb2Vzbid0IGV4aXN0IG9uIHRoZSBvYmplY3Rcbi8vXG5QZW5kaW5nQXBwcm92YWwucHJvdG90eXBlLmFwcHJvdmFsc1JlcXVpcmVkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5wZW5kaW5nQXBwcm92YWwuYXBwcm92YWxzUmVxdWlyZWQgfHwgMTtcbn07XG5cbi8vXG4vLyB1cmxcbi8vIEdldHMgdGhlIHVybCBmb3IgdGhpcyBwZW5kaW5nIGFwcHJvdmFsXG4vL1xuUGVuZGluZ0FwcHJvdmFsLnByb3RvdHlwZS51cmwgPSBmdW5jdGlvbiAoZXh0cmEpIHtcbiAgZXh0cmEgPSBleHRyYSB8fCAnJztcbiAgcmV0dXJuIHRoaXMuYml0Z28udXJsKCcvcGVuZGluZ2FwcHJvdmFscy8nICsgdGhpcy5pZCgpICsgZXh0cmEpO1xufTtcblxuLy9cbi8vIGdldFxuLy8gUmVmZXRjaGVzIHRoaXMgcGVuZGluZyBhcHByb3ZhbCBhbmQgcmV0dXJucyBpdFxuLy9cblBlbmRpbmdBcHByb3ZhbC5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKHBhcmFtcywgY2FsbGJhY2spIHtcbiAgcGFyYW1zID0gcGFyYW1zIHx8IHt9O1xuICBjb21tb24udmFsaWRhdGVQYXJhbXMocGFyYW1zLCBbXSwgW10sIGNhbGxiYWNrKTtcblxuICBjb25zdCBzZWxmID0gdGhpcztcbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLmJpdGdvLmdldCh0aGlzLnVybCgpKS5yZXN1bHQoKSlcbiAgICAudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICBzZWxmLnBlbmRpbmdBcHByb3ZhbCA9IHJlcztcbiAgICAgIHJldHVybiBzZWxmO1xuICAgIH0pXG4gICAgLnRoZW4oY2FsbGJhY2spXG4gICAgLmNhdGNoKGNhbGxiYWNrKTtcbn07XG5cbi8vXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gZW5zdXJlIHRoYXQgc2VsZi53YWxsZXQgaXMgc2V0XG4vL1xuUGVuZGluZ0FwcHJvdmFsLnByb3RvdHlwZS5wb3B1bGF0ZVdhbGxldCA9IGZ1bmN0aW9uICgpIHtcbiAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gIGlmICghc2VsZi53YWxsZXQpIHtcbiAgICByZXR1cm4gc2VsZi5iaXRnb1xuICAgICAgLndhbGxldHMoKVxuICAgICAgLmdldCh7IGlkOiBzZWxmLmluZm8oKS50cmFuc2FjdGlvblJlcXVlc3Quc291cmNlV2FsbGV0IH0pXG4gICAgICAudGhlbihmdW5jdGlvbiAod2FsbGV0KSB7XG4gICAgICAgIGlmICghd2FsbGV0KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bmV4cGVjdGVkIC0gdW5hYmxlIHRvIGdldCB3YWxsZXQgdXNpbmcgc291cmNld2FsbGV0Jyk7XG4gICAgICAgIH1cbiAgICAgICAgc2VsZi53YWxsZXQgPSB3YWxsZXQ7XG4gICAgICB9KTtcbiAgfVxuXG4gIGlmIChzZWxmLndhbGxldC5pZCgpICE9PSBzZWxmLmluZm8oKS50cmFuc2FjdGlvblJlcXVlc3Quc291cmNlV2FsbGV0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd1bmV4cGVjdGVkIHNvdXJjZSB3YWxsZXQgZm9yIHBlbmRpbmcgYXBwcm92YWwnKTtcbiAgfVxuXG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsgLy8gb3RoZXJ3aXNlIHJldHVybnMgdW5kZWZpbmVkXG59O1xuXG4vL1xuLy8gaGVscGVyIGZ1bmN0aW9uIHRvIHJlY3JlYXRlIGFuZCBzaWduIGEgdHJhbnNhY3Rpb24gb24gYSB3YWxsZXRcbi8vIHdlIHNob3VsZCBob3BlZnVsbHkgYmUgYWJsZSB0byBtb3ZlIHRoaXMgbG9naWMgc2VydmVyIHNpZGUgc29vblxuLy9cblBlbmRpbmdBcHByb3ZhbC5wcm90b3R5cGUucmVjcmVhdGVBbmRTaWduVHJhbnNhY3Rpb24gPSBmdW5jdGlvbiAocGFyYW1zLCBjYWxsYmFjaykge1xuICBwYXJhbXMgPSBfLmV4dGVuZCh7fSwgcGFyYW1zKTtcbiAgY29tbW9uLnZhbGlkYXRlUGFyYW1zKHBhcmFtcywgWyd0eEhleCddLCBbXSwgY2FsbGJhY2spO1xuXG4gIGNvbnN0IHRyYW5zYWN0aW9uID0gdXR4b2xpYi5iaXRnby5jcmVhdGVUcmFuc2FjdGlvbkZyb21IZXgocGFyYW1zLnR4SGV4LCB1dHhvbGliLm5ldHdvcmtzLmJpdGNvaW4pO1xuICBpZiAoIXRyYW5zYWN0aW9uLm91dHMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3RyYW5zYWN0aW9uIGhhZCBubyBvdXRwdXRzIG9yIGZhaWxlZCB0byBwYXJzZSBzdWNjZXNzZnVsbHknKTtcbiAgfVxuXG4gIGNvbnN0IG5ldHdvcmsgPSB1dHhvbGliLm5ldHdvcmtzW2NvbW1vbi5FbnZpcm9ubWVudHNbdGhpcy5iaXRnby5nZXRFbnYoKV0ubmV0d29ya107XG4gIHBhcmFtcy5yZWNpcGllbnRzID0ge307XG5cbiAgY29uc3Qgc2VsZiA9IHRoaXM7XG5cbiAgcmV0dXJuIHRyeVByb21pc2UoZnVuY3Rpb24gKCkge1xuICAgIGlmIChzZWxmLmluZm8oKS50cmFuc2FjdGlvblJlcXVlc3QucmVjaXBpZW50cykge1xuICAgICAgLy8gcmVjaXBpZW50cyBvYmplY3QgZm91bmQgb24gdGhlIHBlbmRpbmcgYXBwcm92YWxzIC0gdXNlIGl0XG4gICAgICBwYXJhbXMucmVjaXBpZW50cyA9IHNlbGYuaW5mbygpLnRyYW5zYWN0aW9uUmVxdWVzdC5yZWNpcGllbnRzO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodHJhbnNhY3Rpb24ub3V0cy5sZW5ndGggPD0gMikge1xuICAgICAgdHJhbnNhY3Rpb24ub3V0cy5mb3JFYWNoKGZ1bmN0aW9uIChvdXQpIHtcbiAgICAgICAgY29uc3Qgb3V0QWRkcmVzcyA9IHV0eG9saWIuYWRkcmVzcy5mcm9tT3V0cHV0U2NyaXB0KG91dC5zY3JpcHQsIG5ldHdvcmspO1xuICAgICAgICBpZiAoc2VsZi5pbmZvKCkudHJhbnNhY3Rpb25SZXF1ZXN0LmRlc3RpbmF0aW9uQWRkcmVzcyA9PT0gb3V0QWRkcmVzcykge1xuICAgICAgICAgIC8vIElmIHRoaXMgaXMgdGhlIGRlc3RpbmF0aW9uLCB0aGVuIHNwZW5kIHRvIGl0XG4gICAgICAgICAgcGFyYW1zLnJlY2lwaWVudHNbb3V0QWRkcmVzc10gPSBvdXQudmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFRoaXMgbG9va3MgbGlrZSBhIHNlbmRtYW55XG4gICAgLy8gQXR0ZW1wdCB0byBmaWd1cmUgb3V0IHRoZSBvdXRwdXRzIGJ5IGNob29zaW5nIGFsbCBvdXRwdXRzIHRoYXQgd2VyZSBub3QgZ29pbmcgYmFjayB0byB0aGUgd2FsbGV0IGFzIGNoYW5nZSBhZGRyZXNzZXNcbiAgICByZXR1cm4gc2VsZi53YWxsZXQuYWRkcmVzc2VzKHsgY2hhaW46IDEsIHNvcnQ6IC0xLCBsaW1pdDogNTAwIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgY29uc3QgY2hhbmdlQWRkcmVzc2VzID0gXy5rZXlCeShyZXN1bHQuYWRkcmVzc2VzLCAnYWRkcmVzcycpO1xuICAgICAgdHJhbnNhY3Rpb24ub3V0cy5mb3JFYWNoKGZ1bmN0aW9uIChvdXQpIHtcbiAgICAgICAgY29uc3Qgb3V0QWRkcmVzcyA9IHV0eG9saWIuYWRkcmVzcy5mcm9tT3V0cHV0U2NyaXB0KG91dC5zY3JpcHQsIG5ldHdvcmspO1xuICAgICAgICBpZiAoIWNoYW5nZUFkZHJlc3Nlc1tvdXRBZGRyZXNzXSkge1xuICAgICAgICAgIC8vIElmIHRoaXMgaXMgbm90IGEgY2hhbmdlIGFkZHJlc3MsIHRoZW4gc3BlbmQgdG8gaXRcbiAgICAgICAgICBwYXJhbXMucmVjaXBpZW50c1tvdXRBZGRyZXNzXSA9IG91dC52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBzZWxmLndhbGxldC5jcmVhdGVBbmRTaWduVHJhbnNhY3Rpb24ocGFyYW1zKTtcbiAgfSk7XG59O1xuXG4vL1xuLy8gY29uc3RydWN0QXBwcm92YWxUeFxuLy8gY29uc3RydWN0cy9zaWducyBhIHRyYW5zYWN0aW9uIGZvciB0aGlzIHBlbmRpbmcgYXBwcm92YWwsIHJldHVybmluZyB0aGUgdHhIZXggKGJ1dCBub3Qgc2VuZGluZyBpdClcbi8vXG5QZW5kaW5nQXBwcm92YWwucHJvdG90eXBlLmNvbnN0cnVjdEFwcHJvdmFsVHggPSBmdW5jdGlvbiAocGFyYW1zLCBjYWxsYmFjaykge1xuICBwYXJhbXMgPSBwYXJhbXMgfHwge307XG4gIGNvbW1vbi52YWxpZGF0ZVBhcmFtcyhwYXJhbXMsIFtdLCBbJ3dhbGxldFBhc3NwaHJhc2UnXSwgY2FsbGJhY2spO1xuXG4gIGlmICh0aGlzLnR5cGUoKSA9PT0gJ3RyYW5zYWN0aW9uUmVxdWVzdCcgJiYgIShwYXJhbXMud2FsbGV0UGFzc3BocmFzZSB8fCBwYXJhbXMueHBydikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3dhbGxldCBwYXNzcGhyYXNlIG9yIHhwcnYgcmVxdWlyZWQgdG8gYXBwcm92ZSBhIHRyYW5zYWN0aW9uUmVxdWVzdCcpO1xuICB9XG5cbiAgaWYgKHBhcmFtcy51c2VPcmlnaW5hbEZlZSkge1xuICAgIGlmICghXy5pc0Jvb2xlYW4ocGFyYW1zLnVzZU9yaWdpbmFsRmVlKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHR5cGUgZm9yIHVzZU9yaWdpbmFsRmVlUmF0ZScpO1xuICAgIH1cbiAgICBpZiAocGFyYW1zLmZlZSB8fCBwYXJhbXMuZmVlUmF0ZSB8fCBwYXJhbXMuZmVlVHhDb25maXJtVGFyZ2V0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Nhbm5vdCBzcGVjaWZ5IGEgZmVlL2ZlZXJhdGUvZmVlVHhDb25maXJtVGFyZ2V0IGFzIHdlbGwgYXMgdXNlT3JpZ2luYWxGZWUnKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBzZWxmID0gdGhpcztcbiAgcmV0dXJuIHRyeVByb21pc2UoZnVuY3Rpb24gKCkge1xuICAgIGlmIChzZWxmLnR5cGUoKSA9PT0gJ3RyYW5zYWN0aW9uUmVxdWVzdCcpIHtcbiAgICAgIGNvbnN0IGV4dGVuZFBhcmFtczogYW55ID0geyB0eEhleDogc2VsZi5pbmZvKCkudHJhbnNhY3Rpb25SZXF1ZXN0LnRyYW5zYWN0aW9uIH07XG4gICAgICBpZiAocGFyYW1zLnVzZU9yaWdpbmFsRmVlKSB7XG4gICAgICAgIGV4dGVuZFBhcmFtcy5mZWUgPSBzZWxmLmluZm8oKS50cmFuc2FjdGlvblJlcXVlc3QuZmVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHNlbGYucG9wdWxhdGVXYWxsZXQoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHNlbGYucmVjcmVhdGVBbmRTaWduVHJhbnNhY3Rpb24oXy5leHRlbmQocGFyYW1zLCBleHRlbmRQYXJhbXMpKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG59O1xuXG4vL1xuLy8gYXBwcm92ZVxuLy8gc2V0cyB0aGUgcGVuZGluZyBhcHByb3ZhbCB0byBhbiBhcHByb3ZlZCBzdGF0ZVxuLy9cblBlbmRpbmdBcHByb3ZhbC5wcm90b3R5cGUuYXBwcm92ZSA9IGZ1bmN0aW9uIChwYXJhbXMsIGNhbGxiYWNrKSB7XG4gIHBhcmFtcyA9IHBhcmFtcyB8fCB7fTtcbiAgY29tbW9uLnZhbGlkYXRlUGFyYW1zKHBhcmFtcywgW10sIFsnd2FsbGV0UGFzc3BocmFzZScsICdvdHAnXSwgY2FsbGJhY2spO1xuXG4gIGxldCBjYW5SZWNyZWF0ZVRyYW5zYWN0aW9uID0gdHJ1ZTtcbiAgaWYgKHRoaXMudHlwZSgpID09PSAndHJhbnNhY3Rpb25SZXF1ZXN0Jykge1xuICAgIGlmICghcGFyYW1zLndhbGxldFBhc3NwaHJhc2UgJiYgIXBhcmFtcy54cHJ2KSB7XG4gICAgICBjYW5SZWNyZWF0ZVRyYW5zYWN0aW9uID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gY2hlY2sgdGhlIHdhbGxldCBiYWxhbmNlIGFuZCBjb21wYXJlIGl0IHdpdGggdGhlIHRyYW5zYWN0aW9uIGFtb3VudCBhbmQgZmVlXG4gICAgaWYgKF8uaXNVbmRlZmluZWQocGFyYW1zLmZvcmNlUmVjcmVhdGUpICYmIF8uaXNPYmplY3QoXy5nZXQodGhpcywgJ3dhbGxldC53YWxsZXQnKSkpIHtcbiAgICAgIGNvbnN0IHJlcXVlc3RlZEFtb3VudCA9IHRoaXMucGVuZGluZ0FwcHJvdmFsLmluZm8udHJhbnNhY3Rpb25SZXF1ZXN0LnJlcXVlc3RlZEFtb3VudCB8fCAwO1xuICAgICAgY29uc3Qgd2FsbGV0QmFsYW5jZSA9IHRoaXMud2FsbGV0LndhbGxldC5zcGVuZGFibGVCYWxhbmNlO1xuICAgICAgY29uc3QgZGVsdGEgPSBNYXRoLmFicyhyZXF1ZXN0ZWRBbW91bnQgLSB3YWxsZXRCYWxhbmNlKTtcbiAgICAgIGlmIChkZWx0YSA8PSAxMDAwMCkge1xuICAgICAgICAvLyBpdCdzIGEgc3dlZXAgYmVjYXVzZSB3ZSdyZSB3aXRoaW4gMTBrIHNhdG9zaGlzIG9mIHRoZSB3YWxsZXQgYmFsYW5jZVxuICAgICAgICBjYW5SZWNyZWF0ZVRyYW5zYWN0aW9uID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gIHJldHVybiB0cnlQcm9taXNlKGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoc2VsZi50eXBlKCkgPT09ICd0cmFuc2FjdGlvblJlcXVlc3QnKSB7XG4gICAgICBpZiAocGFyYW1zLnR4KSB7XG4gICAgICAgIC8vIHRoZSBhcHByb3ZhbCB0eCB3YXMgcmVjb25zdHJ1Y3RlZCBhbmQgZXhwbGljaXRseSBzcGVjaWZpZWQgLSBwYXNzIGl0IHRocm91Z2hcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eDogcGFyYW1zLnR4LFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICAvLyB0aGlzIHVzZXIgbWF5IG5vdCBoYXZlIHNwZW5kaW5nIHByaXZpbGVnZXMgb3IgYSBwYXNzcGhyYXNlIG1heSBub3QgaGF2ZSBiZWVuIHBhc3NlZCBpblxuICAgICAgaWYgKCFjYW5SZWNyZWF0ZVRyYW5zYWN0aW9uKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHg6IHNlbGYuaW5mbygpLnRyYW5zYWN0aW9uUmVxdWVzdC50cmFuc2FjdGlvbixcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHNlbGYucG9wdWxhdGVXYWxsZXQoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgcmVjcmVhdGlvblBhcmFtcyA9IF8uZXh0ZW5kKFxuICAgICAgICAgIHt9LFxuICAgICAgICAgIHBhcmFtcyxcbiAgICAgICAgICB7IHR4SGV4OiBzZWxmLmluZm8oKS50cmFuc2FjdGlvblJlcXVlc3QudHJhbnNhY3Rpb24gfSxcbiAgICAgICAgICBzZWxmLmluZm8oKS50cmFuc2FjdGlvblJlcXVlc3QuYnVpbGRQYXJhbXNcbiAgICAgICAgKTtcbiAgICAgICAgLy8gZGVsZXRlIHRoZSBvbGQgYnVpbGQgcGFyYW1zIGJlY2F1c2Ugd2Ugd2FudCAncmVjcmVhdGVBbmRTaWduJyB0byByZWNyZWF0ZSB0aGUgdHJhbnNhY3Rpb25cbiAgICAgICAgZGVsZXRlIHJlY3JlYXRpb25QYXJhbXMuZmVlO1xuICAgICAgICBkZWxldGUgcmVjcmVhdGlvblBhcmFtcy51bnNwZW50cztcbiAgICAgICAgZGVsZXRlIHJlY3JlYXRpb25QYXJhbXMudHhJbmZvO1xuICAgICAgICBkZWxldGUgcmVjcmVhdGlvblBhcmFtcy5lc3RpbWF0ZWRTaXplO1xuICAgICAgICBkZWxldGUgcmVjcmVhdGlvblBhcmFtcy5jaGFuZ2VBZGRyZXNzZXM7XG4gICAgICAgIHJldHVybiBzZWxmLnJlY3JlYXRlQW5kU2lnblRyYW5zYWN0aW9uKHJlY3JlYXRpb25QYXJhbXMpO1xuICAgICAgfSk7XG4gICAgfVxuICB9KVxuICAgIC50aGVuKGZ1bmN0aW9uICh0cmFuc2FjdGlvbikge1xuICAgICAgY29uc3QgYXBwcm92YWxQYXJhbXM6IGFueSA9IHsgc3RhdGU6ICdhcHByb3ZlZCcsIG90cDogcGFyYW1zLm90cCB9O1xuICAgICAgaWYgKHRyYW5zYWN0aW9uKSB7XG4gICAgICAgIGFwcHJvdmFsUGFyYW1zLnR4ID0gdHJhbnNhY3Rpb24udHg7XG4gICAgICB9XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHNlbGYuYml0Z28ucHV0KHNlbGYudXJsKCkpLnNlbmQoYXBwcm92YWxQYXJhbXMpLnJlc3VsdCgpKS50aGVuKGNhbGxiYWNrKS5jYXRjaChjYWxsYmFjayk7XG4gICAgfSlcbiAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICBpZiAoXG4gICAgICAgICFjYW5SZWNyZWF0ZVRyYW5zYWN0aW9uICYmXG4gICAgICAgIChlcnJvci5tZXNzYWdlLmluZGV4T2YoJ2NvdWxkIG5vdCBmaW5kIHVuc3BlbnQgb3V0cHV0IGZvciBpbnB1dCcpICE9PSAtMSB8fFxuICAgICAgICAgIGVycm9yLm1lc3NhZ2UuaW5kZXhPZigndHJhbnNhY3Rpb24gY29uZmxpY3RzIHdpdGggYW4gZXhpc3RpbmcgdHJhbnNhY3Rpb24gaW4gdGhlIHNlbmQgcXVldWUnKSAhPT0gLTEpXG4gICAgICApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bnNwZW50cyBleHBpcmVkLCB3YWxsZXQgcGFzc3BocmFzZSBvciB4cHJ2IHJlcXVpcmVkIHRvIHJlY3JlYXRlIHRyYW5zYWN0aW9uJyk7XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIF8uaXNVbmRlZmluZWQocGFyYW1zLmZvcmNlUmVjcmVhdGUpICYmXG4gICAgICAgIGVycm9yLm1lc3NhZ2UuaW5kZXhPZignY291bGQgbm90IGZpbmQgdW5zcGVudCBvdXRwdXQgZm9yIGlucHV0JykgIT09IC0xXG4gICAgICApIHtcbiAgICAgICAgLy8gaWYgdGhlIHVuc3BlbnRzIGNhbid0IGJlIGZvdW5kLCB3ZSBtdXN0IHJldHJ5IHdpdGggYSBuZXdseSBjb25zdHJ1Y3RlZCB0cmFuc2FjdGlvbiwgc28gd2UgZGVsZXRlIHRoZSB0eCBhbmQgdHJ5IGFnYWluXG4gICAgICAgIC8vIGRlbGV0aW5nIHBhcmFtcy50eCB3aWxsIGZvcmNlIHRoZSBjb2RlIHRvIHJlYWNoIHRoZSAncmVjcmVhdGVBbmRTaWduVHJhbnNhY3Rpb24nIGZ1bmN0aW9uXG4gICAgICAgIGRlbGV0ZSBwYXJhbXMudHg7XG4gICAgICAgIHBhcmFtcy5mb3JjZVJlY3JlYXRlID0gdHJ1ZTtcbiAgICAgICAgc2VsZi5hcHByb3ZlKHBhcmFtcywgY2FsbGJhY2spO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG4gICAgfSk7XG59O1xuXG4vL1xuLy8gcmVqZWN0ZWRcbi8vIHNldHMgdGhlIHBlbmRpbmcgYXBwcm92YWwgdG8gYSByZWplY3RlZCBzdGF0ZVxuLy9cblBlbmRpbmdBcHByb3ZhbC5wcm90b3R5cGUucmVqZWN0ID0gZnVuY3Rpb24gKHBhcmFtcywgY2FsbGJhY2spIHtcbiAgcGFyYW1zID0gcGFyYW1zIHx8IHt9O1xuICBjb21tb24udmFsaWRhdGVQYXJhbXMocGFyYW1zLCBbXSwgW10sIGNhbGxiYWNrKTtcblxuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuYml0Z28ucHV0KHRoaXMudXJsKCkpLnNlbmQoeyBzdGF0ZTogJ3JlamVjdGVkJyB9KS5yZXN1bHQoKSlcbiAgICAudGhlbihjYWxsYmFjaylcbiAgICAuY2F0Y2goY2FsbGJhY2spO1xufTtcblxuLy9cbi8vIGNhbmNlbFxuLy8gcmVqZWN0cyB0aGUgcGVuZGluZyBhcHByb3ZhbFxuLy9cblBlbmRpbmdBcHByb3ZhbC5wcm90b3R5cGUuY2FuY2VsID0gZnVuY3Rpb24gKHBhcmFtcywgY2FsbGJhY2spIHtcbiAgcmV0dXJuIHRoaXMucmVqZWN0KHBhcmFtcywgY2FsbGJhY2spO1xufTtcblxuZXhwb3J0ID0gUGVuZGluZ0FwcHJvdmFsO1xuIl19
@@ -1,6 +0,0 @@
1
- /**
2
- * @hidden
3
- */
4
- declare const PendingApprovals: (bitgo: any) => void;
5
- export = PendingApprovals;
6
- //# sourceMappingURL=pendingapprovals.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pendingapprovals.d.ts","sourceRoot":"","sources":["../../../src/v1/pendingapprovals.ts"],"names":[],"mappings":"AAAA;;GAEG;AAmBH,QAAA,MAAM,gBAAgB,sBAGrB,CAAC;AAqDF,SAAS,gBAAgB,CAAC"}
@@ -1,102 +0,0 @@
1
- "use strict";
2
- /**
3
- * @hidden
4
- */
5
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- var desc = Object.getOwnPropertyDescriptor(m, k);
8
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
- desc = { enumerable: true, get: function() { return m[k]; } };
10
- }
11
- Object.defineProperty(o, k2, desc);
12
- }) : (function(o, m, k, k2) {
13
- if (k2 === undefined) k2 = k;
14
- o[k2] = m[k];
15
- }));
16
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
- Object.defineProperty(o, "default", { enumerable: true, value: v });
18
- }) : function(o, v) {
19
- o["default"] = v;
20
- });
21
- var __importStar = (this && this.__importStar) || (function () {
22
- var ownKeys = function(o) {
23
- ownKeys = Object.getOwnPropertyNames || function (o) {
24
- var ar = [];
25
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
- return ar;
27
- };
28
- return ownKeys(o);
29
- };
30
- return function (mod) {
31
- if (mod && mod.__esModule) return mod;
32
- var result = {};
33
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
- __setModuleDefault(result, mod);
35
- return result;
36
- };
37
- })();
38
- /**
39
- */
40
- //
41
- // Pending approvals listing object
42
- // Lists pending approvals and get pending approval objects
43
- //
44
- // Copyright 2015, BitGo, Inc. All Rights Reserved.
45
- //
46
- const _ = __importStar(require("lodash"));
47
- const sdk_core_1 = require("@bitgo-beta/sdk-core");
48
- const PendingApproval = require('./pendingapproval');
49
- //
50
- // Constructor
51
- //
52
- const PendingApprovals = function (bitgo) {
53
- // @ts-expect-error - no implicit this
54
- this.bitgo = bitgo;
55
- };
56
- //
57
- // list
58
- // List the pending approvals available to the user
59
- //
60
- PendingApprovals.prototype.list = function (params, callback) {
61
- params = params || {};
62
- sdk_core_1.common.validateParams(params, [], ['walletId', 'enterpriseId'], callback);
63
- const queryParams = {};
64
- if (_.isString(params.walletId)) {
65
- queryParams.walletId = params.walletId;
66
- }
67
- if (_.isString(params.enterpriseId)) {
68
- queryParams.enterprise = params.enterpriseId;
69
- }
70
- if (Object.keys(queryParams).length !== 1) {
71
- throw new Error('must provide exactly 1 of walletId or enterpriseId to get pending approvals on');
72
- }
73
- const self = this;
74
- return Promise.resolve(this.bitgo.get(this.bitgo.url('/pendingapprovals')).query(queryParams).result())
75
- .then(function (body) {
76
- body.pendingApprovals = body.pendingApprovals.map(function (p) {
77
- return new PendingApproval(self.bitgo, p);
78
- });
79
- return body;
80
- })
81
- .then(callback)
82
- .catch(callback);
83
- };
84
- //
85
- // get
86
- // Fetch an existing pending approval
87
- // Parameters include:
88
- // id: the pending approval id
89
- //
90
- PendingApprovals.prototype.get = function (params, callback) {
91
- params = params || {};
92
- sdk_core_1.common.validateParams(params, ['id'], [], callback);
93
- const self = this;
94
- return Promise.resolve(this.bitgo.get(this.bitgo.url('/pendingapprovals/' + params.id)).result())
95
- .then(function (body) {
96
- return new PendingApproval(self.bitgo, body);
97
- })
98
- .then(callback)
99
- .catch(callback);
100
- };
101
- module.exports = PendingApprovals;
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVuZGluZ2FwcHJvdmFscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92MS9wZW5kaW5nYXBwcm92YWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVIO0dBQ0c7QUFDSCxFQUFFO0FBQ0YsbUNBQW1DO0FBQ25DLDJEQUEyRDtBQUMzRCxFQUFFO0FBQ0Ysb0RBQW9EO0FBQ3BELEVBQUU7QUFFRiwwQ0FBNEI7QUFFNUIsbURBQThDO0FBQzlDLE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0FBRXJELEVBQUU7QUFDRixjQUFjO0FBQ2QsRUFBRTtBQUNGLE1BQU0sZ0JBQWdCLEdBQUcsVUFBVSxLQUFLO0lBQ3RDLHNDQUFzQztJQUN0QyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUNyQixDQUFDLENBQUM7QUFFRixFQUFFO0FBQ0YsT0FBTztBQUNQLG1EQUFtRDtBQUNuRCxFQUFFO0FBQ0YsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxVQUFVLE1BQU0sRUFBRSxRQUFRO0lBQzFELE1BQU0sR0FBRyxNQUFNLElBQUksRUFBRSxDQUFDO0lBQ3RCLGlCQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxVQUFVLEVBQUUsY0FBYyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFFMUUsTUFBTSxXQUFXLEdBQVEsRUFBRSxDQUFDO0lBQzVCLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUNoQyxXQUFXLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7SUFDekMsQ0FBQztJQUNELElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztRQUNwQyxXQUFXLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUM7SUFDL0MsQ0FBQztJQUVELElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDMUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxnRkFBZ0YsQ0FBQyxDQUFDO0lBQ3BHLENBQUM7SUFFRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7SUFDbEIsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDcEcsSUFBSSxDQUFDLFVBQVUsSUFBSTtRQUNsQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUM7WUFDM0QsT0FBTyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzVDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDLENBQUM7U0FDRCxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQ2QsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3JCLENBQUMsQ0FBQztBQUVGLEVBQUU7QUFDRixNQUFNO0FBQ04scUNBQXFDO0FBQ3JDLHNCQUFzQjtBQUN0QixpQ0FBaUM7QUFDakMsRUFBRTtBQUNGLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsVUFBVSxNQUFNLEVBQUUsUUFBUTtJQUN6RCxNQUFNLEdBQUcsTUFBTSxJQUFJLEVBQUUsQ0FBQztJQUN0QixpQkFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFFcEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ2xCLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUM5RixJQUFJLENBQUMsVUFBVSxJQUFJO1FBQ2xCLE9BQU8sSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMvQyxDQUFDLENBQUM7U0FDRCxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQ2QsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3JCLENBQUMsQ0FBQztBQUVGLGlCQUFTLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAaGlkZGVuXG4gKi9cblxuLyoqXG4gKi9cbi8vXG4vLyBQZW5kaW5nIGFwcHJvdmFscyBsaXN0aW5nIG9iamVjdFxuLy8gTGlzdHMgcGVuZGluZyBhcHByb3ZhbHMgYW5kIGdldCBwZW5kaW5nIGFwcHJvdmFsIG9iamVjdHNcbi8vXG4vLyBDb3B5cmlnaHQgMjAxNSwgQml0R28sIEluYy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vL1xuXG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5cbmltcG9ydCB7IGNvbW1vbiB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmNvbnN0IFBlbmRpbmdBcHByb3ZhbCA9IHJlcXVpcmUoJy4vcGVuZGluZ2FwcHJvdmFsJyk7XG5cbi8vXG4vLyBDb25zdHJ1Y3RvclxuLy9cbmNvbnN0IFBlbmRpbmdBcHByb3ZhbHMgPSBmdW5jdGlvbiAoYml0Z28pIHtcbiAgLy8gQHRzLWV4cGVjdC1lcnJvciAtIG5vIGltcGxpY2l0IHRoaXNcbiAgdGhpcy5iaXRnbyA9IGJpdGdvO1xufTtcblxuLy9cbi8vIGxpc3Rcbi8vIExpc3QgdGhlIHBlbmRpbmcgYXBwcm92YWxzIGF2YWlsYWJsZSB0byB0aGUgdXNlclxuLy9cblBlbmRpbmdBcHByb3ZhbHMucHJvdG90eXBlLmxpc3QgPSBmdW5jdGlvbiAocGFyYW1zLCBjYWxsYmFjaykge1xuICBwYXJhbXMgPSBwYXJhbXMgfHwge307XG4gIGNvbW1vbi52YWxpZGF0ZVBhcmFtcyhwYXJhbXMsIFtdLCBbJ3dhbGxldElkJywgJ2VudGVycHJpc2VJZCddLCBjYWxsYmFjayk7XG5cbiAgY29uc3QgcXVlcnlQYXJhbXM6IGFueSA9IHt9O1xuICBpZiAoXy5pc1N0cmluZyhwYXJhbXMud2FsbGV0SWQpKSB7XG4gICAgcXVlcnlQYXJhbXMud2FsbGV0SWQgPSBwYXJhbXMud2FsbGV0SWQ7XG4gIH1cbiAgaWYgKF8uaXNTdHJpbmcocGFyYW1zLmVudGVycHJpc2VJZCkpIHtcbiAgICBxdWVyeVBhcmFtcy5lbnRlcnByaXNlID0gcGFyYW1zLmVudGVycHJpc2VJZDtcbiAgfVxuXG4gIGlmIChPYmplY3Qua2V5cyhxdWVyeVBhcmFtcykubGVuZ3RoICE9PSAxKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdtdXN0IHByb3ZpZGUgZXhhY3RseSAxIG9mIHdhbGxldElkIG9yIGVudGVycHJpc2VJZCB0byBnZXQgcGVuZGluZyBhcHByb3ZhbHMgb24nKTtcbiAgfVxuXG4gIGNvbnN0IHNlbGYgPSB0aGlzO1xuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuYml0Z28uZ2V0KHRoaXMuYml0Z28udXJsKCcvcGVuZGluZ2FwcHJvdmFscycpKS5xdWVyeShxdWVyeVBhcmFtcykucmVzdWx0KCkpXG4gICAgLnRoZW4oZnVuY3Rpb24gKGJvZHkpIHtcbiAgICAgIGJvZHkucGVuZGluZ0FwcHJvdmFscyA9IGJvZHkucGVuZGluZ0FwcHJvdmFscy5tYXAoZnVuY3Rpb24gKHApIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQZW5kaW5nQXBwcm92YWwoc2VsZi5iaXRnbywgcCk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBib2R5O1xuICAgIH0pXG4gICAgLnRoZW4oY2FsbGJhY2spXG4gICAgLmNhdGNoKGNhbGxiYWNrKTtcbn07XG5cbi8vXG4vLyBnZXRcbi8vIEZldGNoIGFuIGV4aXN0aW5nIHBlbmRpbmcgYXBwcm92YWxcbi8vIFBhcmFtZXRlcnMgaW5jbHVkZTpcbi8vICAgaWQ6ICB0aGUgcGVuZGluZyBhcHByb3ZhbCBpZFxuLy9cblBlbmRpbmdBcHByb3ZhbHMucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChwYXJhbXMsIGNhbGxiYWNrKSB7XG4gIHBhcmFtcyA9IHBhcmFtcyB8fCB7fTtcbiAgY29tbW9uLnZhbGlkYXRlUGFyYW1zKHBhcmFtcywgWydpZCddLCBbXSwgY2FsbGJhY2spO1xuXG4gIGNvbnN0IHNlbGYgPSB0aGlzO1xuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuYml0Z28uZ2V0KHRoaXMuYml0Z28udXJsKCcvcGVuZGluZ2FwcHJvdmFscy8nICsgcGFyYW1zLmlkKSkucmVzdWx0KCkpXG4gICAgLnRoZW4oZnVuY3Rpb24gKGJvZHkpIHtcbiAgICAgIHJldHVybiBuZXcgUGVuZGluZ0FwcHJvdmFsKHNlbGYuYml0Z28sIGJvZHkpO1xuICAgIH0pXG4gICAgLnRoZW4oY2FsbGJhY2spXG4gICAgLmNhdGNoKGNhbGxiYWNrKTtcbn07XG5cbmV4cG9ydCA9IFBlbmRpbmdBcHByb3ZhbHM7XG4iXX0=
@@ -1,14 +0,0 @@
1
- /**
2
- * Co-sign a PSBT.
3
- * Simply a wrapper around `utxolib.bitgo.createPsbtFromBuffer` and `psbt.signAllInputsHD`.
4
- * @param params
5
- */
6
- export declare function signPsbtRequest(params: {
7
- psbt: string;
8
- keychain: {
9
- xprv: string;
10
- };
11
- } | unknown): {
12
- psbt: string;
13
- };
14
- //# sourceMappingURL=signPsbt.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"signPsbt.d.ts","sourceRoot":"","sources":["../../../src/v1/signPsbt.ts"],"names":[],"mappings":"AAMA;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GAAG,OAAO,GAAG;IAC/F,IAAI,EAAE,MAAM,CAAC;CACd,CAwBA"}
@@ -1,69 +0,0 @@
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
- exports.signPsbtRequest = signPsbtRequest;
40
- const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
41
- const debug_1 = __importDefault(require("debug"));
42
- const debug = (0, debug_1.default)('bitgo:v1:txb');
43
- /**
44
- * Co-sign a PSBT.
45
- * Simply a wrapper around `utxolib.bitgo.createPsbtFromBuffer` and `psbt.signAllInputsHD`.
46
- * @param params
47
- */
48
- function signPsbtRequest(params) {
49
- if (typeof params !== 'object' || params === null) {
50
- throw new Error(`invalid argument`);
51
- }
52
- if (!('psbt' in params) || typeof params.psbt !== 'string') {
53
- throw new Error(`invalid params.psbt`);
54
- }
55
- if (!('keychain' in params) || typeof params.keychain !== 'object' || params.keychain === null) {
56
- throw new Error(`invalid params.keychain`);
57
- }
58
- if (!('xprv' in params.keychain) || typeof params.keychain.xprv !== 'string') {
59
- throw new Error(`invalid params.keychain.xprv`);
60
- }
61
- const psbt = utxolib.bitgo.createPsbtDecode(params.psbt, utxolib.networks.bitcoin);
62
- const keypair = utxolib.bip32.fromBase58(params.keychain.xprv, utxolib.networks.bitcoin);
63
- debug('signing PSBT with keychain %s', keypair.neutered().toBase58());
64
- utxolib.bitgo.withUnsafeNonSegwit(psbt, () => psbt.signAllInputsHD(keypair));
65
- return {
66
- psbt: psbt.toBuffer().toString('hex'),
67
- };
68
- }
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnblBzYnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdjEvc2lnblBzYnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFXQSwwQ0EwQkM7QUFyQ0QsOERBQWdEO0FBRWhELGtEQUErQjtBQUUvQixNQUFNLEtBQUssR0FBRyxJQUFBLGVBQVUsRUFBQyxjQUFjLENBQUMsQ0FBQztBQUV6Qzs7OztHQUlHO0FBQ0gsU0FBZ0IsZUFBZSxDQUFDLE1BQThEO0lBRzVGLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxJQUFJLE1BQU0sS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUNsRCxNQUFNLElBQUksS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxPQUFPLE1BQU0sQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDM0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxJQUFJLENBQUMsQ0FBQyxVQUFVLElBQUksTUFBTSxDQUFDLElBQUksT0FBTyxNQUFNLENBQUMsUUFBUSxLQUFLLFFBQVEsSUFBSSxNQUFNLENBQUMsUUFBUSxLQUFLLElBQUksRUFBRSxDQUFDO1FBQy9GLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzdFLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkYsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6RixLQUFLLENBQUMsK0JBQStCLEVBQUUsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDdEUsT0FBTyxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzdFLE9BQU87UUFDTCxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7S0FDdEMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcblxuaW1wb3J0IGJ1aWxkRGVidWcgZnJvbSAnZGVidWcnO1xuXG5jb25zdCBkZWJ1ZyA9IGJ1aWxkRGVidWcoJ2JpdGdvOnYxOnR4YicpO1xuXG4vKipcbiAqIENvLXNpZ24gYSBQU0JULlxuICogU2ltcGx5IGEgd3JhcHBlciBhcm91bmQgYHV0eG9saWIuYml0Z28uY3JlYXRlUHNidEZyb21CdWZmZXJgIGFuZCBgcHNidC5zaWduQWxsSW5wdXRzSERgLlxuICogQHBhcmFtIHBhcmFtc1xuICovXG5leHBvcnQgZnVuY3Rpb24gc2lnblBzYnRSZXF1ZXN0KHBhcmFtczogeyBwc2J0OiBzdHJpbmc7IGtleWNoYWluOiB7IHhwcnY6IHN0cmluZyB9IH0gfCB1bmtub3duKToge1xuICBwc2J0OiBzdHJpbmc7XG59IHtcbiAgaWYgKHR5cGVvZiBwYXJhbXMgIT09ICdvYmplY3QnIHx8IHBhcmFtcyA9PT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBhcmd1bWVudGApO1xuICB9XG5cbiAgaWYgKCEoJ3BzYnQnIGluIHBhcmFtcykgfHwgdHlwZW9mIHBhcmFtcy5wc2J0ICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBwYXJhbXMucHNidGApO1xuICB9XG5cbiAgaWYgKCEoJ2tleWNoYWluJyBpbiBwYXJhbXMpIHx8IHR5cGVvZiBwYXJhbXMua2V5Y2hhaW4gIT09ICdvYmplY3QnIHx8IHBhcmFtcy5rZXljaGFpbiA9PT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBwYXJhbXMua2V5Y2hhaW5gKTtcbiAgfVxuXG4gIGlmICghKCd4cHJ2JyBpbiBwYXJhbXMua2V5Y2hhaW4pIHx8IHR5cGVvZiBwYXJhbXMua2V5Y2hhaW4ueHBydiAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgcGFyYW1zLmtleWNoYWluLnhwcnZgKTtcbiAgfVxuXG4gIGNvbnN0IHBzYnQgPSB1dHhvbGliLmJpdGdvLmNyZWF0ZVBzYnREZWNvZGUocGFyYW1zLnBzYnQsIHV0eG9saWIubmV0d29ya3MuYml0Y29pbik7XG4gIGNvbnN0IGtleXBhaXIgPSB1dHhvbGliLmJpcDMyLmZyb21CYXNlNTgocGFyYW1zLmtleWNoYWluLnhwcnYsIHV0eG9saWIubmV0d29ya3MuYml0Y29pbik7XG4gIGRlYnVnKCdzaWduaW5nIFBTQlQgd2l0aCBrZXljaGFpbiAlcycsIGtleXBhaXIubmV1dGVyZWQoKS50b0Jhc2U1OCgpKTtcbiAgdXR4b2xpYi5iaXRnby53aXRoVW5zYWZlTm9uU2Vnd2l0KHBzYnQsICgpID0+IHBzYnQuc2lnbkFsbElucHV0c0hEKGtleXBhaXIpKTtcbiAgcmV0dXJuIHtcbiAgICBwc2J0OiBwc2J0LnRvQnVmZmVyKCkudG9TdHJpbmcoJ2hleCcpLFxuICB9O1xufVxuIl19
@@ -1,5 +0,0 @@
1
- /**
2
- * @hidden
3
- */
4
- export {};
5
- //# sourceMappingURL=transactionBuilder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../src/v1/transactionBuilder.ts"],"names":[],"mappings":"AAAA;;GAEG"}