@bitgo/sdk-api 2.0.0-hotfix.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/dist/package.json +33 -28
  2. package/dist/src/api.d.ts +9 -8
  3. package/dist/src/api.d.ts.map +1 -1
  4. package/dist/src/api.js +132 -72
  5. package/dist/src/bitgoAPI.d.ts +366 -22
  6. package/dist/src/bitgoAPI.d.ts.map +1 -1
  7. package/dist/src/bitgoAPI.js +1286 -212
  8. package/dist/src/encrypt.d.ts +16 -6
  9. package/dist/src/encrypt.d.ts.map +1 -1
  10. package/dist/src/encrypt.js +92 -14
  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 -1
  18. package/dist/src/index.d.ts.map +1 -1
  19. package/dist/src/index.js +8 -3
  20. package/dist/src/types.d.ts +195 -65
  21. package/dist/src/types.d.ts.map +1 -1
  22. package/dist/src/types.js +5 -15
  23. package/dist/src/util.d.ts +12 -8
  24. package/dist/src/util.d.ts.map +1 -1
  25. package/dist/src/util.js +54 -20
  26. package/dist/src/v1/blockchain.d.ts +5 -0
  27. package/dist/src/v1/blockchain.d.ts.map +1 -0
  28. package/dist/src/v1/blockchain.js +127 -0
  29. package/dist/src/v1/keychains.d.ts +5 -0
  30. package/dist/src/v1/keychains.d.ts.map +1 -0
  31. package/dist/src/v1/keychains.js +328 -0
  32. package/dist/src/v1/markets.d.ts +5 -0
  33. package/dist/src/v1/markets.d.ts.map +1 -0
  34. package/dist/src/v1/markets.js +68 -0
  35. package/dist/src/v1/pendingapproval.d.ts +6 -0
  36. package/dist/src/v1/pendingapproval.d.ts.map +1 -0
  37. package/dist/src/v1/pendingapproval.js +361 -0
  38. package/dist/src/v1/pendingapprovals.d.ts +6 -0
  39. package/dist/src/v1/pendingapprovals.d.ts.map +1 -0
  40. package/dist/src/v1/pendingapprovals.js +102 -0
  41. package/dist/src/v1/signPsbt.d.ts +14 -0
  42. package/dist/src/v1/signPsbt.d.ts.map +1 -0
  43. package/dist/src/v1/signPsbt.js +69 -0
  44. package/dist/src/v1/transactionBuilder.d.ts +5 -0
  45. package/dist/src/v1/transactionBuilder.d.ts.map +1 -0
  46. package/dist/src/v1/transactionBuilder.js +1034 -0
  47. package/dist/src/v1/travelRule.d.ts +5 -0
  48. package/dist/src/v1/travelRule.d.ts.map +1 -0
  49. package/dist/src/v1/travelRule.js +316 -0
  50. package/dist/src/v1/verifyAddress.d.ts +6 -0
  51. package/dist/src/v1/verifyAddress.d.ts.map +1 -0
  52. package/dist/src/v1/verifyAddress.js +50 -0
  53. package/dist/src/v1/wallet.d.ts +6 -0
  54. package/dist/src/v1/wallet.d.ts.map +1 -0
  55. package/dist/src/v1/wallet.js +2366 -0
  56. package/dist/src/v1/wallets.d.ts +5 -0
  57. package/dist/src/v1/wallets.d.ts.map +1 -0
  58. package/dist/src/v1/wallets.js +537 -0
  59. package/dist/test/unit/api.d.ts +2 -0
  60. package/dist/test/unit/api.d.ts.map +1 -0
  61. package/dist/test/unit/api.js +307 -0
  62. package/dist/test/unit/bitgoAPI.d.ts +2 -0
  63. package/dist/test/unit/bitgoAPI.d.ts.map +1 -0
  64. package/dist/test/unit/bitgoAPI.js +1001 -0
  65. package/dist/test/unit/encrypt.d.ts +2 -0
  66. package/dist/test/unit/encrypt.d.ts.map +1 -0
  67. package/dist/test/unit/encrypt.js +377 -0
  68. package/dist/test/unit/hmacStrategy.d.ts +2 -0
  69. package/dist/test/unit/hmacStrategy.d.ts.map +1 -0
  70. package/dist/test/unit/hmacStrategy.js +136 -0
  71. package/dist/test/unit/utils.d.ts +2 -0
  72. package/dist/test/unit/utils.d.ts.map +1 -0
  73. package/dist/test/unit/utils.js +65 -0
  74. package/dist/test/unit/v1/fixtures/accelerate-tx.d.ts +4 -0
  75. package/dist/test/unit/v1/fixtures/accelerate-tx.d.ts.map +1 -0
  76. package/dist/test/unit/v1/fixtures/accelerate-tx.js +53 -0
  77. package/dist/test/unit/v1/fixtures/index.d.ts +3 -0
  78. package/dist/test/unit/v1/fixtures/index.d.ts.map +1 -0
  79. package/dist/test/unit/v1/fixtures/index.js +24 -0
  80. package/dist/test/unit/v1/signPsbt.d.ts +2 -0
  81. package/dist/test/unit/v1/signPsbt.d.ts.map +1 -0
  82. package/dist/test/unit/v1/signPsbt.js +53 -0
  83. package/dist/test/unit/v1/travelRule.d.ts +2 -0
  84. package/dist/test/unit/v1/travelRule.d.ts.map +1 -0
  85. package/dist/test/unit/v1/travelRule.js +125 -0
  86. package/dist/test/unit/v1/wallet.d.ts +2 -0
  87. package/dist/test/unit/v1/wallet.d.ts.map +1 -0
  88. package/dist/test/unit/v1/wallet.js +1658 -0
  89. package/dist/tsconfig.tsbuildinfo +1 -5259
  90. package/package.json +33 -28
  91. package/.eslintignore +0 -5
  92. package/CHANGELOG.md +0 -67
  93. package/dist/src/bip32path.d.ts +0 -24
  94. package/dist/src/bip32path.d.ts.map +0 -1
  95. package/dist/src/bip32path.js +0 -45
  96. package/dist/web/browser.html +0 -1
  97. package/dist/web/main.js +0 -2
  98. package/dist/web/main.js.LICENSE.txt +0 -30
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ /**
3
+ * @hidden
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ /**
7
+ */
8
+ //
9
+ // Markets Object
10
+ // BitGo accessor to Bitcoin market data.
11
+ //
12
+ // Copyright 2015, BitGo, Inc. All Rights Reserved.
13
+ //
14
+ const sdk_core_1 = require("@bitgo/sdk-core");
15
+ //
16
+ // Constructor
17
+ //
18
+ const Markets = function (bitgo) {
19
+ // @ts-expect-error - no implicit this
20
+ this.bitgo = bitgo;
21
+ };
22
+ /**
23
+ * Get the latest bitcoin price data
24
+ * @param params {}
25
+ * @param callback
26
+ * @returns {*} an object containing price and volume data from the
27
+ * current day in a number of currencies
28
+ **/
29
+ Markets.prototype.latest = function (params, callback) {
30
+ params = params || {};
31
+ sdk_core_1.common.validateParams(params, [], [], callback);
32
+ return Promise.resolve(this.bitgo.get(this.bitgo.url('/market/latest')).result())
33
+ .then(callback)
34
+ .catch(callback);
35
+ };
36
+ /**
37
+ * Get yesterday's bitcoin price data
38
+ * @param params {}
39
+ * @param callback
40
+ * @returns {*} an object containing price and volume data from the
41
+ * previous day in a number of currencies
42
+ */
43
+ Markets.prototype.yesterday = function (params, callback) {
44
+ params = params || {};
45
+ sdk_core_1.common.validateParams(params, [], [], callback);
46
+ return Promise.resolve(this.bitgo.get(this.bitgo.url('/market/yesterday')).result())
47
+ .then(callback)
48
+ .catch(callback);
49
+ };
50
+ /**
51
+ * Get bitcoin price data from up to 90 days prior to today
52
+ * @param params { currencyName: the code for the desired currency, for example USD }
53
+ * @param callback
54
+ * @returns {*} an object containing average prices from a number of previous days
55
+ */
56
+ Markets.prototype.lastDays = function (params, callback) {
57
+ params = params || {};
58
+ sdk_core_1.common.validateParams(params, ['currencyName'], [], callback);
59
+ const days = !isNaN(parseInt(params.days, 10)) ? parseInt(params.days, 10) : 90;
60
+ if (days && days < 0) {
61
+ throw new Error('must use a non-negative number of days');
62
+ }
63
+ return Promise.resolve(this.bitgo.get(this.bitgo.url('/market/last/' + days + '/' + params.currencyName)).result())
64
+ .then(callback)
65
+ .catch(callback);
66
+ };
67
+ module.exports = Markets;
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2V0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92MS9tYXJrZXRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7QUFFSDtHQUNHO0FBQ0gsRUFBRTtBQUNGLGlCQUFpQjtBQUNqQix5Q0FBeUM7QUFDekMsRUFBRTtBQUNGLG9EQUFvRDtBQUNwRCxFQUFFO0FBRUYsOENBQXlDO0FBRXpDLEVBQUU7QUFDRixjQUFjO0FBQ2QsRUFBRTtBQUNGLE1BQU0sT0FBTyxHQUFHLFVBQVUsS0FBSztJQUM3QixzQ0FBc0M7SUFDdEMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDckIsQ0FBQyxDQUFDO0FBRUY7Ozs7OztJQU1JO0FBQ0osT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsVUFBVSxNQUFNLEVBQUUsUUFBUTtJQUNuRCxNQUFNLEdBQUcsTUFBTSxJQUFJLEVBQUUsQ0FBQztJQUN0QixpQkFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUVoRCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQzlFLElBQUksQ0FBQyxRQUFRLENBQUM7U0FDZCxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDckIsQ0FBQyxDQUFDO0FBRUY7Ozs7OztHQU1HO0FBQ0gsT0FBTyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsVUFBVSxNQUFNLEVBQUUsUUFBUTtJQUN0RCxNQUFNLEdBQUcsTUFBTSxJQUFJLEVBQUUsQ0FBQztJQUN0QixpQkFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUVoRCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ2pGLElBQUksQ0FBQyxRQUFRLENBQUM7U0FDZCxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDckIsQ0FBQyxDQUFDO0FBRUY7Ozs7O0dBS0c7QUFDSCxPQUFPLENBQUMsU0FBUyxDQUFDLFFBQVEsR0FBRyxVQUFVLE1BQU0sRUFBRSxRQUFRO0lBQ3JELE1BQU0sR0FBRyxNQUFNLElBQUksRUFBRSxDQUFDO0lBQ3RCLGlCQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUU5RCxNQUFNLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBRWhGLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNyQixNQUFNLElBQUksS0FBSyxDQUFDLHdDQUF3QyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxlQUFlLEdBQUcsSUFBSSxHQUFHLEdBQUcsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUNoSCxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQ2QsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3JCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAaGlkZGVuXG4gKi9cblxuLyoqXG4gKi9cbi8vXG4vLyBNYXJrZXRzIE9iamVjdFxuLy8gQml0R28gYWNjZXNzb3IgdG8gQml0Y29pbiBtYXJrZXQgZGF0YS5cbi8vXG4vLyBDb3B5cmlnaHQgMjAxNSwgQml0R28sIEluYy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vL1xuXG5pbXBvcnQgeyBjb21tb24gfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuXG4vL1xuLy8gQ29uc3RydWN0b3Jcbi8vXG5jb25zdCBNYXJrZXRzID0gZnVuY3Rpb24gKGJpdGdvKSB7XG4gIC8vIEB0cy1leHBlY3QtZXJyb3IgLSBubyBpbXBsaWNpdCB0aGlzXG4gIHRoaXMuYml0Z28gPSBiaXRnbztcbn07XG5cbi8qKlxuICogR2V0IHRoZSBsYXRlc3QgYml0Y29pbiBwcmljZSBkYXRhXG4gKiBAcGFyYW0gcGFyYW1zIHt9XG4gKiBAcGFyYW0gY2FsbGJhY2tcbiAqIEByZXR1cm5zIHsqfSBhbiBvYmplY3QgY29udGFpbmluZyBwcmljZSBhbmQgdm9sdW1lIGRhdGEgZnJvbSB0aGVcbiAqIGN1cnJlbnQgZGF5IGluIGEgbnVtYmVyIG9mIGN1cnJlbmNpZXNcbiAqKi9cbk1hcmtldHMucHJvdG90eXBlLmxhdGVzdCA9IGZ1bmN0aW9uIChwYXJhbXMsIGNhbGxiYWNrKSB7XG4gIHBhcmFtcyA9IHBhcmFtcyB8fCB7fTtcbiAgY29tbW9uLnZhbGlkYXRlUGFyYW1zKHBhcmFtcywgW10sIFtdLCBjYWxsYmFjayk7XG5cbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLmJpdGdvLmdldCh0aGlzLmJpdGdvLnVybCgnL21hcmtldC9sYXRlc3QnKSkucmVzdWx0KCkpXG4gICAgLnRoZW4oY2FsbGJhY2spXG4gICAgLmNhdGNoKGNhbGxiYWNrKTtcbn07XG5cbi8qKlxuICogR2V0IHllc3RlcmRheSdzIGJpdGNvaW4gcHJpY2UgZGF0YVxuICogQHBhcmFtIHBhcmFtcyB7fVxuICogQHBhcmFtIGNhbGxiYWNrXG4gKiBAcmV0dXJucyB7Kn0gYW4gb2JqZWN0IGNvbnRhaW5pbmcgcHJpY2UgYW5kIHZvbHVtZSBkYXRhIGZyb20gdGhlXG4gKiBwcmV2aW91cyBkYXkgaW4gYSBudW1iZXIgb2YgY3VycmVuY2llc1xuICovXG5NYXJrZXRzLnByb3RvdHlwZS55ZXN0ZXJkYXkgPSBmdW5jdGlvbiAocGFyYW1zLCBjYWxsYmFjaykge1xuICBwYXJhbXMgPSBwYXJhbXMgfHwge307XG4gIGNvbW1vbi52YWxpZGF0ZVBhcmFtcyhwYXJhbXMsIFtdLCBbXSwgY2FsbGJhY2spO1xuXG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5iaXRnby5nZXQodGhpcy5iaXRnby51cmwoJy9tYXJrZXQveWVzdGVyZGF5JykpLnJlc3VsdCgpKVxuICAgIC50aGVuKGNhbGxiYWNrKVxuICAgIC5jYXRjaChjYWxsYmFjayk7XG59O1xuXG4vKipcbiAqIEdldCBiaXRjb2luIHByaWNlIGRhdGEgZnJvbSB1cCB0byA5MCBkYXlzIHByaW9yIHRvIHRvZGF5XG4gKiBAcGFyYW0gcGFyYW1zIHsgY3VycmVuY3lOYW1lOiB0aGUgY29kZSBmb3IgdGhlIGRlc2lyZWQgY3VycmVuY3ksIGZvciBleGFtcGxlIFVTRCB9XG4gKiBAcGFyYW0gY2FsbGJhY2tcbiAqIEByZXR1cm5zIHsqfSBhbiBvYmplY3QgY29udGFpbmluZyBhdmVyYWdlIHByaWNlcyBmcm9tIGEgbnVtYmVyIG9mIHByZXZpb3VzIGRheXNcbiAqL1xuTWFya2V0cy5wcm90b3R5cGUubGFzdERheXMgPSBmdW5jdGlvbiAocGFyYW1zLCBjYWxsYmFjaykge1xuICBwYXJhbXMgPSBwYXJhbXMgfHwge307XG4gIGNvbW1vbi52YWxpZGF0ZVBhcmFtcyhwYXJhbXMsIFsnY3VycmVuY3lOYW1lJ10sIFtdLCBjYWxsYmFjayk7XG5cbiAgY29uc3QgZGF5cyA9ICFpc05hTihwYXJzZUludChwYXJhbXMuZGF5cywgMTApKSA/IHBhcnNlSW50KHBhcmFtcy5kYXlzLCAxMCkgOiA5MDtcblxuICBpZiAoZGF5cyAmJiBkYXlzIDwgMCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbXVzdCB1c2UgYSBub24tbmVnYXRpdmUgbnVtYmVyIG9mIGRheXMnKTtcbiAgfVxuXG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5iaXRnby5nZXQodGhpcy5iaXRnby51cmwoJy9tYXJrZXQvbGFzdC8nICsgZGF5cyArICcvJyArIHBhcmFtcy5jdXJyZW5jeU5hbWUpKS5yZXN1bHQoKSlcbiAgICAudGhlbihjYWxsYmFjaylcbiAgICAuY2F0Y2goY2FsbGJhY2spO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBNYXJrZXRzO1xuIl19
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @hidden
3
+ */
4
+ declare const PendingApproval: (bitgo: any, pendingApproval: any, wallet: any) => void;
5
+ export = PendingApproval;
6
+ //# sourceMappingURL=pendingapproval.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pendingapproval.d.ts","sourceRoot":"","sources":["../../../src/v1/pendingapproval.ts"],"names":[],"mappings":"AAAA;;GAEG;AAkBH,QAAA,MAAM,eAAe,yDAOpB,CAAC;AAoVF,SAAS,eAAe,CAAC"}
@@ -0,0 +1,361 @@
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/sdk-core");
49
+ const utxolib = __importStar(require("@bitgo/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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVuZGluZ2FwcHJvdmFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3YxL3BlbmRpbmdhcHByb3ZhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7O0dBRUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSDtHQUNHO0FBQ0gsMEJBQTBCO0FBQzFCLDRFQUE0RTtBQUM1RSxFQUFFO0FBQ0Ysb0RBQW9EO0FBQ3BELEVBQUU7QUFDRiw4Q0FBeUM7QUFDekMseURBQTJDO0FBRTNDLG9EQUF1QjtBQUN2QixrQ0FBcUM7QUFFckMsRUFBRTtBQUNGLGNBQWM7QUFDZCxFQUFFO0FBQ0YsTUFBTSxlQUFlLEdBQUcsVUFBVSxLQUFLLEVBQUUsZUFBZSxFQUFFLE1BQU07SUFDOUQsc0NBQXNDO0lBQ3RDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ25CLHNDQUFzQztJQUN0QyxJQUFJLENBQUMsZUFBZSxHQUFHLGVBQWUsQ0FBQztJQUN2QyxzQ0FBc0M7SUFDdEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7QUFDdkIsQ0FBQyxDQUFDO0FBRUYsRUFBRTtBQUNGLEtBQUs7QUFDTCx1Q0FBdUM7QUFDdkMsRUFBRTtBQUNGLGVBQWUsQ0FBQyxTQUFTLENBQUMsRUFBRSxHQUFHO0lBQzdCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7QUFDakMsQ0FBQyxDQUFDO0FBRUYsRUFBRTtBQUNGLFlBQVk7QUFDWiw0Q0FBNEM7QUFDNUMseUdBQXlHO0FBQ3pHLHNHQUFzRztBQUN0RywrR0FBK0c7QUFDL0csRUFBRTtBQUNGLGVBQWUsQ0FBQyxTQUFTLENBQUMsU0FBUyxHQUFHLFVBQVUsTUFBTSxFQUFFLFFBQVE7SUFDOUQsTUFBTSxHQUFHLE1BQU0sSUFBSSxFQUFFLENBQUM7SUFDdEIsaUJBQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFF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LENBQUMsUUFBUSxDQUFDLENBQUM7QUFDckIsQ0FBQyxDQUFDO0FBRUYsRUFBRTtBQUNGLFNBQVM7QUFDVCwrQkFBK0I7QUFDL0IsRUFBRTtBQUNGLGVBQWUsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLFVBQVUsTUFBTSxFQUFFLFFBQVE7SUFDM0QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztBQUN2QyxDQUFDLENBQUM7QUFFRixpQkFBUyxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBoaWRkZW5cbiAqL1xuXG4vKipcbiAqL1xuLy8gUGVuZGluZyBBcHByb3ZhbCBPYmplY3Rcbi8vIEhhbmRsZXMgYXBwcm92aW5nLCByZWplY3RpbmcgYW5kIGdldHRpbmcgaW5mb3JtYXRpb24gb24gcGVuZGluZyBhcHByb3ZhbHNcbi8vXG4vLyBDb3B5cmlnaHQgMjAxNSwgQml0R28sIEluYy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vL1xuaW1wb3J0IHsgY29tbW9uIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvL3V0eG8tbGliJztcblxuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IHRyeVByb21pc2UgfSBmcm9tICcuLi91dGlsJztcblxuLy9cbi8vIENvbnN0cnVjdG9yXG4vL1xuY29uc3QgUGVuZGluZ0FwcHJvdmFsID0gZnVuY3Rpb24gKGJpdGdvLCBwZW5kaW5nQXBwcm92YWwsIHdhbGxldCkge1xuICAvLyBAdHMtZXhwZWN0LWVycm9yIC0gbm8gaW1wbGljaXQgdGhpc1xuICB0aGlzLmJpdGdvID0gYml0Z287XG4gIC8vIEB0cy1leHBlY3QtZXJyb3IgLSBubyBpbXBsaWNpdCB0aGlzXG4gIHRoaXMucGVuZGluZ0FwcHJvdmFsID0gcGVuZGluZ0FwcHJvdmFsO1xuICAvLyBAdHMtZXhwZWN0LWVycm9yIC0gbm8gaW1wbGljaXQgdGhpc1xuICB0aGlzLndhbGxldCA9IHdhbGxldDtcbn07XG5cbi8vXG4vLyBpZFxuLy8gR2V0IHRoZSBpZCBvZiB0aGlzIHBlbmRpbmcgYXBwcm92YWwuXG4vL1xuUGVuZGluZ0FwcHJvdmFsLnByb3RvdHlwZS5pZCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMucGVuZGluZ0FwcHJvdmFsLmlkO1xufTtcblxuLy9cbi8vIG93bmVyVHlwZVxuLy8gR2V0IHRoZSBvd25lciB0eXBlICh3YWxsZXQgb3IgZW50ZXJwcmlzZSlcbi8vIFBlbmRpbmcgYXBwcm92YWxzIGNhbiBiZSBhcHByb3ZlZCBvciBtb2RpZmllZCBieSBkaWZmZXJlbnQgc2NvcGVzIChkZXBlbmRpbmcgb24gaG93IHRoZXkgd2VyZSBjcmVhdGVkKVxuLy8gSWYgYSBwZW5kaW5nIGFwcHJvdmFsIGlzIG93bmVkIGJ5IGEgd2FsbGV0LCB0aGVuIGl0IGNhbiBiZSBhcHByb3ZlZCBieSBhZG1pbmlzdHJhdG9ycyBvZiB0aGUgd2FsbGV0XG4vLyBJZiBhIHBlbmRpbmcgYXBwcm92YWwgaXMgb3duZWQgYnkgYW4gZW50ZXJwcmlzZSwgdGhlbiBpdCBjYW4gYmUgYXBwcm92ZWQgYnkgYWRtaW5pc3RyYXRvcnMgb2YgdGhlIGVudGVycHJpc2Vcbi8vXG5QZW5kaW5nQXBwcm92YWwucHJvdG90eXBlLm93bmVyVHlwZSA9IGZ1bmN0aW9uIChwYXJhbXMsIGNhbGxiYWNrKSB7XG4gIHBhcmFtcyA9IHBhcmFtcyB8fCB7fTtcbiAgY29tbW9uLnZhbGlkYXRlUGFyYW1zKHBhcmFtcywgW10sIFtdLCBjYWxsYmFjayk7XG5cbiAgaWYgKHRoaXMucGVuZGluZ0FwcHJvdmFsLndhbGxldElkKSB7XG4gICAgcmV0dXJuICd3YWxsZXQnO1xuICB9IGVsc2UgaWYgKHRoaXMucGVuZGluZ0FwcHJvdmFsLmVudGVycHJpc2UpIHtcbiAgICByZXR1cm4gJ2VudGVycHJpc2UnO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcigndW5leHBlY3RlZCBwZW5kaW5nIGFwcHJvdmFsIG93bmVyOiBuZWl0aGVyIHdhbGxldElkIG5vciBlbnRlcnByaXNlIHdhcyBwcmVzZW50Jyk7XG4gIH1cbn07XG5cbi8vXG4vLyB3YWxsZXRJZFxuLy8gR2V0IHRoZSB3YWxsZXQgSUQgdGhhdCBvd25zIC8gaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBwZW5kaW5nIGFwcHJvdmFsXG4vL1xuUGVuZGluZ0FwcHJvdmFsLnByb3RvdHlwZS53YWxsZXRJZCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMucGVuZGluZ0FwcHJvdmFsLndhbGxldElkO1xufTtcblxuLy9cbi8vIGVudGVycHJpc2VJZFxuLy8gR2V0IHRoZSBlbnRlcnByaXNlIElEIHRoYXQgb3ducyAvIGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgcGVuZGluZyBhcHByb3ZhbFxuLy9cblBlbmRpbmdBcHByb3ZhbC5wcm90b3R5cGUuZW50ZXJwcmlzZUlkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5wZW5kaW5nQXBwcm92YWwuZW50ZXJwcmlzZTtcbn07XG5cbi8vXG4vLyBzdGF0ZVxuLy8gR2V0IHRoZSBzdGF0ZSBvZiB0aGUgcGVuZGluZyBhcHByb3ZhbFxuLy9cblBlbmRpbmdBcHByb3ZhbC5wcm90b3R5cGUuc3RhdGUgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLnBlbmRpbmdBcHByb3ZhbC5zdGF0ZTtcbn07XG5cbi8vXG4vLyBjcmVhdG9yXG4vLyBHZXQgdGhlIGlkIG9mIHRoZSB1c2VyIHRoYXQgcGVyZm9ybWVkIHRoZSBhY3Rpb24gcmVzdWx0aW5nIGluIHRoaXMgcGVuZGluZyBhcHByb3ZhbFxuLy9cblBlbmRpbmdBcHByb3ZhbC5wcm90b3R5cGUuY3JlYXRvciA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMucGVuZGluZ0FwcHJvdmFsLmNyZWF0b3I7XG59O1xuXG4vL1xuLy8gdHlwZVxuLy8gR2V0IHRoZSB0eXBlIG9mIHRoZSBwZW5kaW5nIGFwcHJvdmFsICh3aGF0IGl0IGFwcHJvdmVzKVxuLy8gRXhhbXBsZTogdHJhbnNhY3Rpb25SZXF1ZXN0LCB0YWdVcGRhdGVSZXF1ZXN0LCBwb2xpY3lSdWxlUmVxdWVzdFxuLy9cblBlbmRpbmdBcHByb3ZhbC5wcm90b3R5cGUudHlwZSA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKCF0aGlzLnBlbmRpbmdBcHByb3ZhbC5pbmZvKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdwZW5kaW5nIGFwcHJvdmFsIGluZm8gaXMgbm90IGF2YWlsYWJsZScpO1xuICB9XG4gIHJldHVybiB0aGlzLnBlbmRpbmdBcHByb3ZhbC5pbmZvLnR5cGU7XG59O1xuXG4vL1xuLy8gdHlwZVxuLy8gR2V0IGluZm9ybWF0aW9uIGFib3V0IHRoZSBwZW5kaW5nIGFwcHJvdmFsXG4vL1xuUGVuZGluZ0FwcHJvdmFsLnByb3RvdHlwZS5pbmZvID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5wZW5kaW5nQXBwcm92YWwuaW5mbztcbn07XG5cbi8vXG4vLyBhcHByb3ZhbHNSZXF1aXJlZFxuLy8gZ2V0IHRoZSBudW1iZXIgb2YgYXBwcm92YWxzIHRoYXQgYXJlIHJlcXVpcmVkIGZvciB0aGlzIHBlbmRpbmcgYXBwcm92YWwgdG8gYmUgYXBwcm92ZWQuXG4vLyBEZWZhdWx0cyB0byAxIGlmIGFwcHJvdmFsc1JlcXVpcmVkIGRvZXNuJ3QgZXhpc3Qgb24gdGhlIG9iamVjdFxuLy9cblBlbmRpbmdBcHByb3ZhbC5wcm90b3R5cGUuYXBwcm92YWxzUmVxdWlyZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLnBlbmRpbmdBcHByb3ZhbC5hcHByb3ZhbHNSZXF1aXJlZCB8fCAxO1xufTtcblxuLy9cbi8vIHVybFxuLy8gR2V0cyB0aGUgdXJsIGZvciB0aGlzIHBlbmRpbmcgYXBwcm92YWxcbi8vXG5QZW5kaW5nQXBwcm92YWwucHJvdG90eXBlLnVybCA9IGZ1bmN0aW9uIChleHRyYSkge1xuICBleHRyYSA9IGV4dHJhIHx8ICcnO1xuICByZXR1cm4gdGhpcy5iaXRnby51cmwoJy9wZW5kaW5nYXBwcm92YWxzLycgKyB0aGlzLmlkKCkgKyBleHRyYSk7XG59O1xuXG4vL1xuLy8gZ2V0XG4vLyBSZWZldGNoZXMgdGhpcyBwZW5kaW5nIGFwcHJvdmFsIGFuZCByZXR1cm5zIGl0XG4vL1xuUGVuZGluZ0FwcHJvdmFsLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAocGFyYW1zLCBjYWxsYmFjaykge1xuICBwYXJhbXMgPSBwYXJhbXMgfHwge307XG4gIGNvbW1vbi52YWxpZGF0ZVBhcmFtcyhwYXJhbXMsIFtdLCBbXSwgY2FsbGJhY2spO1xuXG4gIGNvbnN0IHNlbGYgPSB0aGlzO1xuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuYml0Z28uZ2V0KHRoaXMudXJsKCkpLnJlc3VsdCgpKVxuICAgIC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgIHNlbGYucGVuZGluZ0FwcHJvdmFsID0gcmVzO1xuICAgICAgcmV0dXJuIHNlbGY7XG4gICAgfSlcbiAgICAudGhlbihjYWxsYmFjaylcbiAgICAuY2F0Y2goY2FsbGJhY2spO1xufTtcblxuLy9cbi8vIEhlbHBlciBmdW5jdGlvbiB0byBlbnN1cmUgdGhhdCBzZWxmLndhbGxldCBpcyBzZXRcbi8vXG5QZW5kaW5nQXBwcm92YWwucHJvdG90eXBlLnBvcHVsYXRlV2FsbGV0ID0gZnVuY3Rpb24gKCkge1xuICBjb25zdCBzZWxmID0gdGhpcztcbiAgaWYgKCFzZWxmLndhbGxldCkge1xuICAgIHJldHVybiBzZWxmLmJpdGdvXG4gICAgICAud2FsbGV0cygpXG4gICAgICAuZ2V0KHsgaWQ6IHNlbGYuaW5mbygpLnRyYW5zYWN0aW9uUmVxdWVzdC5zb3VyY2VXYWxsZXQgfSlcbiAgICAgIC50aGVuKGZ1bmN0aW9uICh3YWxsZXQpIHtcbiAgICAgICAgaWYgKCF3YWxsZXQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3VuZXhwZWN0ZWQgLSB1bmFibGUgdG8gZ2V0IHdhbGxldCB1c2luZyBzb3VyY2V3YWxsZXQnKTtcbiAgICAgICAgfVxuICAgICAgICBzZWxmLndhbGxldCA9IHdhbGxldDtcbiAgICAgIH0pO1xuICB9XG5cbiAgaWYgKHNlbGYud2FsbGV0LmlkKCkgIT09IHNlbGYuaW5mbygpLnRyYW5zYWN0aW9uUmVxdWVzdC5zb3VyY2VXYWxsZXQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3VuZXhwZWN0ZWQgc291cmNlIHdhbGxldCBmb3IgcGVuZGluZyBhcHByb3ZhbCcpO1xuICB9XG5cbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOyAvLyBvdGhlcndpc2UgcmV0dXJucyB1bmRlZmluZWRcbn07XG5cbi8vXG4vLyBoZWxwZXIgZnVuY3Rpb24gdG8gcmVjcmVhdGUgYW5kIHNpZ24gYSB0cmFuc2FjdGlvbiBvbiBhIHdhbGxldFxuLy8gd2Ugc2hvdWxkIGhvcGVmdWxseSBiZSBhYmxlIHRvIG1vdmUgdGhpcyBsb2dpYyBzZXJ2ZXIgc2lkZSBzb29uXG4vL1xuUGVuZGluZ0FwcHJvdmFsLnByb3RvdHlwZS5yZWNyZWF0ZUFuZFNpZ25UcmFuc2FjdGlvbiA9IGZ1bmN0aW9uIChwYXJhbXMsIGNhbGxiYWNrKSB7XG4gIHBhcmFtcyA9IF8uZXh0ZW5kKHt9LCBwYXJhbXMpO1xuICBjb21tb24udmFsaWRhdGVQYXJhbXMocGFyYW1zLCBbJ3R4SGV4J10sIFtdLCBjYWxsYmFjayk7XG5cbiAgY29uc3QgdHJhbnNhY3Rpb24gPSB1dHhvbGliLmJpdGdvLmNyZWF0ZVRyYW5zYWN0aW9uRnJvbUhleChwYXJhbXMudHhIZXgsIHV0eG9saWIubmV0d29ya3MuYml0Y29pbik7XG4gIGlmICghdHJhbnNhY3Rpb24ub3V0cykge1xuICAgIHRocm93IG5ldyBFcnJvcigndHJhbnNhY3Rpb24gaGFkIG5vIG91dHB1dHMgb3IgZmFpbGVkIHRvIHBhcnNlIHN1Y2Nlc3NmdWxseScpO1xuICB9XG5cbiAgY29uc3QgbmV0d29yayA9IHV0eG9saWIubmV0d29ya3NbY29tbW9uLkVudmlyb25tZW50c1t0aGlzLmJpdGdvLmdldEVudigpXS5uZXR3b3JrXTtcbiAgcGFyYW1zLnJlY2lwaWVudHMgPSB7fTtcblxuICBjb25zdCBzZWxmID0gdGhpcztcblxuICByZXR1cm4gdHJ5UHJvbWlzZShmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHNlbGYuaW5mbygpLnRyYW5zYWN0aW9uUmVxdWVzdC5yZWNpcGllbnRzKSB7XG4gICAgICAvLyByZWNpcGllbnRzIG9iamVjdCBmb3VuZCBvbiB0aGUgcGVuZGluZyBhcHByb3ZhbHMgLSB1c2UgaXRcbiAgICAgIHBhcmFtcy5yZWNpcGllbnRzID0gc2VsZi5pbmZvKCkudHJhbnNhY3Rpb25SZXF1ZXN0LnJlY2lwaWVudHM7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0cmFuc2FjdGlvbi5vdXRzLmxlbmd0aCA8PSAyKSB7XG4gICAgICB0cmFuc2FjdGlvbi5vdXRzLmZvckVhY2goZnVuY3Rpb24gKG91dCkge1xuICAgICAgICBjb25zdCBvdXRBZGRyZXNzID0gdXR4b2xpYi5hZGRyZXNzLmZyb21PdXRwdXRTY3JpcHQob3V0LnNjcmlwdCwgbmV0d29yayk7XG4gICAgICAgIGlmIChzZWxmLmluZm8oKS50cmFuc2FjdGlvblJlcXVlc3QuZGVzdGluYXRpb25BZGRyZXNzID09PSBvdXRBZGRyZXNzKSB7XG4gICAgICAgICAgLy8gSWYgdGhpcyBpcyB0aGUgZGVzdGluYXRpb24sIHRoZW4gc3BlbmQgdG8gaXRcbiAgICAgICAgICBwYXJhbXMucmVjaXBpZW50c1tvdXRBZGRyZXNzXSA9IG91dC52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gVGhpcyBsb29rcyBsaWtlIGEgc2VuZG1hbnlcbiAgICAvLyBBdHRlbXB0IHRvIGZpZ3VyZSBvdXQgdGhlIG91dHB1dHMgYnkgY2hvb3NpbmcgYWxsIG91dHB1dHMgdGhhdCB3ZXJlIG5vdCBnb2luZyBiYWNrIHRvIHRoZSB3YWxsZXQgYXMgY2hhbmdlIGFkZHJlc3Nlc1xuICAgIHJldHVybiBzZWxmLndhbGxldC5hZGRyZXNzZXMoeyBjaGFpbjogMSwgc29ydDogLTEsIGxpbWl0OiA1MDAgfSkudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgICBjb25zdCBjaGFuZ2VBZGRyZXNzZXMgPSBfLmtleUJ5KHJlc3VsdC5hZGRyZXNzZXMsICdhZGRyZXNzJyk7XG4gICAgICB0cmFuc2FjdGlvbi5vdXRzLmZvckVhY2goZnVuY3Rpb24gKG91dCkge1xuICAgICAgICBjb25zdCBvdXRBZGRyZXNzID0gdXR4b2xpYi5hZGRyZXNzLmZyb21PdXRwdXRTY3JpcHQob3V0LnNjcmlwdCwgbmV0d29yayk7XG4gICAgICAgIGlmICghY2hhbmdlQWRkcmVzc2VzW291dEFkZHJlc3NdKSB7XG4gICAgICAgICAgLy8gSWYgdGhpcyBpcyBub3QgYSBjaGFuZ2UgYWRkcmVzcywgdGhlbiBzcGVuZCB0byBpdFxuICAgICAgICAgIHBhcmFtcy5yZWNpcGllbnRzW291dEFkZHJlc3NdID0gb3V0LnZhbHVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHNlbGYud2FsbGV0LmNyZWF0ZUFuZFNpZ25UcmFuc2FjdGlvbihwYXJhbXMpO1xuICB9KTtcbn07XG5cbi8vXG4vLyBjb25zdHJ1Y3RBcHByb3ZhbFR4XG4vLyBjb25zdHJ1Y3RzL3NpZ25zIGEgdHJhbnNhY3Rpb24gZm9yIHRoaXMgcGVuZGluZyBhcHByb3ZhbCwgcmV0dXJuaW5nIHRoZSB0eEhleCAoYnV0IG5vdCBzZW5kaW5nIGl0KVxuLy9cblBlbmRpbmdBcHByb3ZhbC5wcm90b3R5cGUuY29uc3RydWN0QXBwcm92YWxUeCA9IGZ1bmN0aW9uIChwYXJhbXMsIGNhbGxiYWNrKSB7XG4gIHBhcmFtcyA9IHBhcmFtcyB8fCB7fTtcbiAgY29tbW9uLnZhbGlkYXRlUGFyYW1zKHBhcmFtcywgW10sIFsnd2FsbGV0UGFzc3BocmFzZSddLCBjYWxsYmFjayk7XG5cbiAgaWYgKHRoaXMudHlwZSgpID09PSAndHJhbnNhY3Rpb25SZXF1ZXN0JyAmJiAhKHBhcmFtcy53YWxsZXRQYXNzcGhyYXNlIHx8IHBhcmFtcy54cHJ2KSkge1xuICAgIHRocm93IG5ldyBFcnJvcignd2FsbGV0IHBhc3NwaHJhc2Ugb3IgeHBydiByZXF1aXJlZCB0byBhcHByb3ZlIGEgdHJhbnNhY3Rpb25SZXF1ZXN0Jyk7XG4gIH1cblxuICBpZiAocGFyYW1zLnVzZU9yaWdpbmFsRmVlKSB7XG4gICAgaWYgKCFfLmlzQm9vbGVhbihwYXJhbXMudXNlT3JpZ2luYWxGZWUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgdHlwZSBmb3IgdXNlT3JpZ2luYWxGZWVSYXRlJyk7XG4gICAgfVxuICAgIGlmIChwYXJhbXMuZmVlIHx8IHBhcmFtcy5mZWVSYXRlIHx8IHBhcmFtcy5mZWVUeENvbmZpcm1UYXJnZXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY2Fubm90IHNwZWNpZnkgYSBmZWUvZmVlcmF0ZS9mZWVUeENvbmZpcm1UYXJnZXQgYXMgd2VsbCBhcyB1c2VPcmlnaW5hbEZlZScpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHNlbGYgPSB0aGlzO1xuICByZXR1cm4gdHJ5UHJvbWlzZShmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHNlbGYudHlwZSgpID09PSAndHJhbnNhY3Rpb25SZXF1ZXN0Jykge1xuICAgICAgY29uc3QgZXh0ZW5kUGFyYW1zOiBhbnkgPSB7IHR4SGV4OiBzZWxmLmluZm8oKS50cmFuc2FjdGlvblJlcXVlc3QudHJhbnNhY3Rpb24gfTtcbiAgICAgIGlmIChwYXJhbXMudXNlT3JpZ2luYWxGZWUpIHtcbiAgICAgICAgZXh0ZW5kUGFyYW1zLmZlZSA9IHNlbGYuaW5mbygpLnRyYW5zYWN0aW9uUmVxdWVzdC5mZWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gc2VsZi5wb3B1bGF0ZVdhbGxldCgpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gc2VsZi5yZWNyZWF0ZUFuZFNpZ25UcmFuc2FjdGlvbihfLmV4dGVuZChwYXJhbXMsIGV4dGVuZFBhcmFtcykpO1xuICAgICAgfSk7XG4gICAgfVxuICB9KTtcbn07XG5cbi8vXG4vLyBhcHByb3ZlXG4vLyBzZXRzIHRoZSBwZW5kaW5nIGFwcHJvdmFsIHRvIGFuIGFwcHJvdmVkIHN0YXRlXG4vL1xuUGVuZGluZ0FwcHJvdmFsLnByb3RvdHlwZS5hcHByb3ZlID0gZnVuY3Rpb24gKHBhcmFtcywgY2FsbGJhY2spIHtcbiAgcGFyYW1zID0gcGFyYW1zIHx8IHt9O1xuICBjb21tb24udmFsaWRhdGVQYXJhbXMocGFyYW1zLCBbXSwgWyd3YWxsZXRQYXNzcGhyYXNlJywgJ290cCddLCBjYWxsYmFjayk7XG5cbiAgbGV0IGNhblJlY3JlYXRlVHJhbnNhY3Rpb24gPSB0cnVlO1xuICBpZiAodGhpcy50eXBlKCkgPT09ICd0cmFuc2FjdGlvblJlcXVlc3QnKSB7XG4gICAgaWYgKCFwYXJhbXMud2FsbGV0UGFzc3BocmFzZSAmJiAhcGFyYW1zLnhwcnYpIHtcbiAgICAgIGNhblJlY3JlYXRlVHJhbnNhY3Rpb24gPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBjaGVjayB0aGUgd2FsbGV0IGJhbGFuY2UgYW5kIGNvbXBhcmUgaXQgd2l0aCB0aGUgdHJhbnNhY3Rpb24gYW1vdW50IGFuZCBmZWVcbiAgICBpZiAoXy5pc1VuZGVmaW5lZChwYXJhbXMuZm9yY2VSZWNyZWF0ZSkgJiYgXy5pc09iamVjdChfLmdldCh0aGlzLCAnd2FsbGV0LndhbGxldCcpKSkge1xuICAgICAgY29uc3QgcmVxdWVzdGVkQW1vdW50ID0gdGhpcy5wZW5kaW5nQXBwcm92YWwuaW5mby50cmFuc2FjdGlvblJlcXVlc3QucmVxdWVzdGVkQW1vdW50IHx8IDA7XG4gICAgICBjb25zdCB3YWxsZXRCYWxhbmNlID0gdGhpcy53YWxsZXQud2FsbGV0LnNwZW5kYWJsZUJhbGFuY2U7XG4gICAgICBjb25zdCBkZWx0YSA9IE1hdGguYWJzKHJlcXVlc3RlZEFtb3VudCAtIHdhbGxldEJhbGFuY2UpO1xuICAgICAgaWYgKGRlbHRhIDw9IDEwMDAwKSB7XG4gICAgICAgIC8vIGl0J3MgYSBzd2VlcCBiZWNhdXNlIHdlJ3JlIHdpdGhpbiAxMGsgc2F0b3NoaXMgb2YgdGhlIHdhbGxldCBiYWxhbmNlXG4gICAgICAgIGNhblJlY3JlYXRlVHJhbnNhY3Rpb24gPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBzZWxmID0gdGhpcztcbiAgcmV0dXJuIHRyeVByb21pc2UoZnVuY3Rpb24gKCkge1xuICAgIGlmIChzZWxmLnR5cGUoKSA9PT0gJ3RyYW5zYWN0aW9uUmVxdWVzdCcpIHtcbiAgICAgIGlmIChwYXJhbXMudHgpIHtcbiAgICAgICAgLy8gdGhlIGFwcHJvdmFsIHR4IHdhcyByZWNvbnN0cnVjdGVkIGFuZCBleHBsaWNpdGx5IHNwZWNpZmllZCAtIHBhc3MgaXQgdGhyb3VnaFxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR4OiBwYXJhbXMudHgsXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIC8vIHRoaXMgdXNlciBtYXkgbm90IGhhdmUgc3BlbmRpbmcgcHJpdmlsZWdlcyBvciBhIHBhc3NwaHJhc2UgbWF5IG5vdCBoYXZlIGJlZW4gcGFzc2VkIGluXG4gICAgICBpZiAoIWNhblJlY3JlYXRlVHJhbnNhY3Rpb24pIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eDogc2VsZi5pbmZvKCkudHJhbnNhY3Rpb25SZXF1ZXN0LnRyYW5zYWN0aW9uLFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gc2VsZi5wb3B1bGF0ZVdhbGxldCgpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCByZWNyZWF0aW9uUGFyYW1zID0gXy5leHRlbmQoXG4gICAgICAgICAge30sXG4gICAgICAgICAgcGFyYW1zLFxuICAgICAgICAgIHsgdHhIZXg6IHNlbGYuaW5mbygpLnRyYW5zYWN0aW9uUmVxdWVzdC50cmFuc2FjdGlvbiB9LFxuICAgICAgICAgIHNlbGYuaW5mbygpLnRyYW5zYWN0aW9uUmVxdWVzdC5idWlsZFBhcmFtc1xuICAgICAgICApO1xuICAgICAgICAvLyBkZWxldGUgdGhlIG9sZCBidWlsZCBwYXJhbXMgYmVjYXVzZSB3ZSB3YW50ICdyZWNyZWF0ZUFuZFNpZ24nIHRvIHJlY3JlYXRlIHRoZSB0cmFuc2FjdGlvblxuICAgICAgICBkZWxldGUgcmVjcmVhdGlvblBhcmFtcy5mZWU7XG4gICAgICAgIGRlbGV0ZSByZWNyZWF0aW9uUGFyYW1zLnVuc3BlbnRzO1xuICAgICAgICBkZWxldGUgcmVjcmVhdGlvblBhcmFtcy50eEluZm87XG4gICAgICAgIGRlbGV0ZSByZWNyZWF0aW9uUGFyYW1zLmVzdGltYXRlZFNpemU7XG4gICAgICAgIGRlbGV0ZSByZWNyZWF0aW9uUGFyYW1zLmNoYW5nZUFkZHJlc3NlcztcbiAgICAgICAgcmV0dXJuIHNlbGYucmVjcmVhdGVBbmRTaWduVHJhbnNhY3Rpb24ocmVjcmVhdGlvblBhcmFtcyk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0pXG4gICAgLnRoZW4oZnVuY3Rpb24gKHRyYW5zYWN0aW9uKSB7XG4gICAgICBjb25zdCBhcHByb3ZhbFBhcmFtczogYW55ID0geyBzdGF0ZTogJ2FwcHJvdmVkJywgb3RwOiBwYXJhbXMub3RwIH07XG4gICAgICBpZiAodHJhbnNhY3Rpb24pIHtcbiAgICAgICAgYXBwcm92YWxQYXJhbXMudHggPSB0cmFuc2FjdGlvbi50eDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoc2VsZi5iaXRnby5wdXQoc2VsZi51cmwoKSkuc2VuZChhcHByb3ZhbFBhcmFtcykucmVzdWx0KCkpLnRoZW4oY2FsbGJhY2spLmNhdGNoKGNhbGxiYWNrKTtcbiAgICB9KVxuICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgIGlmIChcbiAgICAgICAgIWNhblJlY3JlYXRlVHJhbnNhY3Rpb24gJiZcbiAgICAgICAgKGVycm9yLm1lc3NhZ2UuaW5kZXhPZignY291bGQgbm90IGZpbmQgdW5zcGVudCBvdXRwdXQgZm9yIGlucHV0JykgIT09IC0xIHx8XG4gICAgICAgICAgZXJyb3IubWVzc2FnZS5pbmRleE9mKCd0cmFuc2FjdGlvbiBjb25mbGljdHMgd2l0aCBhbiBleGlzdGluZyB0cmFuc2FjdGlvbiBpbiB0aGUgc2VuZCBxdWV1ZScpICE9PSAtMSlcbiAgICAgICkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Vuc3BlbnRzIGV4cGlyZWQsIHdhbGxldCBwYXNzcGhyYXNlIG9yIHhwcnYgcmVxdWlyZWQgdG8gcmVjcmVhdGUgdHJhbnNhY3Rpb24nKTtcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgXy5pc1VuZGVmaW5lZChwYXJhbXMuZm9yY2VSZWNyZWF0ZSkgJiZcbiAgICAgICAgZXJyb3IubWVzc2FnZS5pbmRleE9mKCdjb3VsZCBub3QgZmluZCB1bnNwZW50IG91dHB1dCBmb3IgaW5wdXQnKSAhPT0gLTFcbiAgICAgICkge1xuICAgICAgICAvLyBpZiB0aGUgdW5zcGVudHMgY2FuJ3QgYmUgZm91bmQsIHdlIG11c3QgcmV0cnkgd2l0aCBhIG5ld2x5IGNvbnN0cnVjdGVkIHRyYW5zYWN0aW9uLCBzbyB3ZSBkZWxldGUgdGhlIHR4IGFuZCB0cnkgYWdhaW5cbiAgICAgICAgLy8gZGVsZXRpbmcgcGFyYW1zLnR4IHdpbGwgZm9yY2UgdGhlIGNvZGUgdG8gcmVhY2ggdGhlICdyZWNyZWF0ZUFuZFNpZ25UcmFuc2FjdGlvbicgZnVuY3Rpb25cbiAgICAgICAgZGVsZXRlIHBhcmFtcy50eDtcbiAgICAgICAgcGFyYW1zLmZvcmNlUmVjcmVhdGUgPSB0cnVlO1xuICAgICAgICBzZWxmLmFwcHJvdmUocGFyYW1zLCBjYWxsYmFjayk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cbiAgICB9KTtcbn07XG5cbi8vXG4vLyByZWplY3RlZFxuLy8gc2V0cyB0aGUgcGVuZGluZyBhcHByb3ZhbCB0byBhIHJlamVjdGVkIHN0YXRlXG4vL1xuUGVuZGluZ0FwcHJvdmFsLnByb3RvdHlwZS5yZWplY3QgPSBmdW5jdGlvbiAocGFyYW1zLCBjYWxsYmFjaykge1xuICBwYXJhbXMgPSBwYXJhbXMgfHwge307XG4gIGNvbW1vbi52YWxpZGF0ZVBhcmFtcyhwYXJhbXMsIFtdLCBbXSwgY2FsbGJhY2spO1xuXG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5iaXRnby5wdXQodGhpcy51cmwoKSkuc2VuZCh7IHN0YXRlOiAncmVqZWN0ZWQnIH0pLnJlc3VsdCgpKVxuICAgIC50aGVuKGNhbGxiYWNrKVxuICAgIC5jYXRjaChjYWxsYmFjayk7XG59O1xuXG4vL1xuLy8gY2FuY2VsXG4vLyByZWplY3RzIHRoZSBwZW5kaW5nIGFwcHJvdmFsXG4vL1xuUGVuZGluZ0FwcHJvdmFsLnByb3RvdHlwZS5jYW5jZWwgPSBmdW5jdGlvbiAocGFyYW1zLCBjYWxsYmFjaykge1xuICByZXR1cm4gdGhpcy5yZWplY3QocGFyYW1zLCBjYWxsYmFjayk7XG59O1xuXG5leHBvcnQgPSBQZW5kaW5nQXBwcm92YWw7XG4iXX0=
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @hidden
3
+ */
4
+ declare const PendingApprovals: (bitgo: any) => void;
5
+ export = PendingApprovals;
6
+ //# sourceMappingURL=pendingapprovals.d.ts.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,102 @@
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/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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVuZGluZ2FwcHJvdmFscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92MS9wZW5kaW5nYXBwcm92YWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVIO0dBQ0c7QUFDSCxFQUFFO0FBQ0YsbUNBQW1DO0FBQ25DLDJEQUEyRDtBQUMzRCxFQUFFO0FBQ0Ysb0RBQW9EO0FBQ3BELEVBQUU7QUFFRiwwQ0FBNEI7QUFFNUIsOENBQXlDO0FBQ3pDLE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0FBRXJELEVBQUU7QUFDRixjQUFjO0FBQ2QsRUFBRTtBQUNGLE1BQU0sZ0JBQWdCLEdBQUcsVUFBVSxLQUFLO0lBQ3RDLHNDQUFzQztJQUN0QyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUNyQixDQUFDLENBQUM7QUFFRixFQUFFO0FBQ0YsT0FBTztBQUNQLG1EQUFtRDtBQUNuRCxFQUFFO0FBQ0YsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxVQUFVLE1BQU0sRUFBRSxRQUFRO0lBQzFELE1BQU0sR0FBRyxNQUFNLElBQUksRUFBRSxDQUFDO0lBQ3RCLGlCQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxVQUFVLEVBQUUsY0FBYyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFFMUUsTUFBTSxXQUFXLEdBQVEsRUFBRSxDQUFDO0lBQzVCLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUNoQyxXQUFXLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7SUFDekMsQ0FBQztJQUNELElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztRQUNwQyxXQUFXLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUM7SUFDL0MsQ0FBQztJQUVELElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDMUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxnRkFBZ0YsQ0FBQyxDQUFDO0lBQ3BHLENBQUM7SUFFRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7SUFDbEIsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDcEcsSUFBSSxDQUFDLFVBQVUsSUFBSTtRQUNsQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUM7WUFDM0QsT0FBTyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzVDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDLENBQUM7U0FDRCxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQ2QsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3JCLENBQUMsQ0FBQztBQUVGLEVBQUU7QUFDRixNQUFNO0FBQ04scUNBQXFDO0FBQ3JDLHNCQUFzQjtBQUN0QixpQ0FBaUM7QUFDakMsRUFBRTtBQUNGLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsVUFBVSxNQUFNLEVBQUUsUUFBUTtJQUN6RCxNQUFNLEdBQUcsTUFBTSxJQUFJLEVBQUUsQ0FBQztJQUN0QixpQkFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFFcEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ2xCLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUM5RixJQUFJLENBQUMsVUFBVSxJQUFJO1FBQ2xCLE9BQU8sSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMvQyxDQUFDLENBQUM7U0FDRCxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQ2QsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3JCLENBQUMsQ0FBQztBQUVGLGlCQUFTLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAaGlkZGVuXG4gKi9cblxuLyoqXG4gKi9cbi8vXG4vLyBQZW5kaW5nIGFwcHJvdmFscyBsaXN0aW5nIG9iamVjdFxuLy8gTGlzdHMgcGVuZGluZyBhcHByb3ZhbHMgYW5kIGdldCBwZW5kaW5nIGFwcHJvdmFsIG9iamVjdHNcbi8vXG4vLyBDb3B5cmlnaHQgMjAxNSwgQml0R28sIEluYy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vL1xuXG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5cbmltcG9ydCB7IGNvbW1vbiB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5jb25zdCBQZW5kaW5nQXBwcm92YWwgPSByZXF1aXJlKCcuL3BlbmRpbmdhcHByb3ZhbCcpO1xuXG4vL1xuLy8gQ29uc3RydWN0b3Jcbi8vXG5jb25zdCBQZW5kaW5nQXBwcm92YWxzID0gZnVuY3Rpb24gKGJpdGdvKSB7XG4gIC8vIEB0cy1leHBlY3QtZXJyb3IgLSBubyBpbXBsaWNpdCB0aGlzXG4gIHRoaXMuYml0Z28gPSBiaXRnbztcbn07XG5cbi8vXG4vLyBsaXN0XG4vLyBMaXN0IHRoZSBwZW5kaW5nIGFwcHJvdmFscyBhdmFpbGFibGUgdG8gdGhlIHVzZXJcbi8vXG5QZW5kaW5nQXBwcm92YWxzLnByb3RvdHlwZS5saXN0ID0gZnVuY3Rpb24gKHBhcmFtcywgY2FsbGJhY2spIHtcbiAgcGFyYW1zID0gcGFyYW1zIHx8IHt9O1xuICBjb21tb24udmFsaWRhdGVQYXJhbXMocGFyYW1zLCBbXSwgWyd3YWxsZXRJZCcsICdlbnRlcnByaXNlSWQnXSwgY2FsbGJhY2spO1xuXG4gIGNvbnN0IHF1ZXJ5UGFyYW1zOiBhbnkgPSB7fTtcbiAgaWYgKF8uaXNTdHJpbmcocGFyYW1zLndhbGxldElkKSkge1xuICAgIHF1ZXJ5UGFyYW1zLndhbGxldElkID0gcGFyYW1zLndhbGxldElkO1xuICB9XG4gIGlmIChfLmlzU3RyaW5nKHBhcmFtcy5lbnRlcnByaXNlSWQpKSB7XG4gICAgcXVlcnlQYXJhbXMuZW50ZXJwcmlzZSA9IHBhcmFtcy5lbnRlcnByaXNlSWQ7XG4gIH1cblxuICBpZiAoT2JqZWN0LmtleXMocXVlcnlQYXJhbXMpLmxlbmd0aCAhPT0gMSkge1xuICAgIHRocm93IG5ldyBFcnJvcignbXVzdCBwcm92aWRlIGV4YWN0bHkgMSBvZiB3YWxsZXRJZCBvciBlbnRlcnByaXNlSWQgdG8gZ2V0IHBlbmRpbmcgYXBwcm92YWxzIG9uJyk7XG4gIH1cblxuICBjb25zdCBzZWxmID0gdGhpcztcbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLmJpdGdvLmdldCh0aGlzLmJpdGdvLnVybCgnL3BlbmRpbmdhcHByb3ZhbHMnKSkucXVlcnkocXVlcnlQYXJhbXMpLnJlc3VsdCgpKVxuICAgIC50aGVuKGZ1bmN0aW9uIChib2R5KSB7XG4gICAgICBib2R5LnBlbmRpbmdBcHByb3ZhbHMgPSBib2R5LnBlbmRpbmdBcHByb3ZhbHMubWFwKGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHJldHVybiBuZXcgUGVuZGluZ0FwcHJvdmFsKHNlbGYuYml0Z28sIHApO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gYm9keTtcbiAgICB9KVxuICAgIC50aGVuKGNhbGxiYWNrKVxuICAgIC5jYXRjaChjYWxsYmFjayk7XG59O1xuXG4vL1xuLy8gZ2V0XG4vLyBGZXRjaCBhbiBleGlzdGluZyBwZW5kaW5nIGFwcHJvdmFsXG4vLyBQYXJhbWV0ZXJzIGluY2x1ZGU6XG4vLyAgIGlkOiAgdGhlIHBlbmRpbmcgYXBwcm92YWwgaWRcbi8vXG5QZW5kaW5nQXBwcm92YWxzLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAocGFyYW1zLCBjYWxsYmFjaykge1xuICBwYXJhbXMgPSBwYXJhbXMgfHwge307XG4gIGNvbW1vbi52YWxpZGF0ZVBhcmFtcyhwYXJhbXMsIFsnaWQnXSwgW10sIGNhbGxiYWNrKTtcblxuICBjb25zdCBzZWxmID0gdGhpcztcbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLmJpdGdvLmdldCh0aGlzLmJpdGdvLnVybCgnL3BlbmRpbmdhcHByb3ZhbHMvJyArIHBhcmFtcy5pZCkpLnJlc3VsdCgpKVxuICAgIC50aGVuKGZ1bmN0aW9uIChib2R5KSB7XG4gICAgICByZXR1cm4gbmV3IFBlbmRpbmdBcHByb3ZhbChzZWxmLmJpdGdvLCBib2R5KTtcbiAgICB9KVxuICAgIC50aGVuKGNhbGxiYWNrKVxuICAgIC5jYXRjaChjYWxsYmFjayk7XG59O1xuXG5leHBvcnQgPSBQZW5kaW5nQXBwcm92YWxzO1xuIl19
@@ -0,0 +1,14 @@
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
@@ -0,0 +1 @@
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"}