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

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,127 +0,0 @@
1
- "use strict";
2
- /**
3
- * @hidden
4
- */
5
- var __importDefault = (this && this.__importDefault) || function (mod) {
6
- return (mod && mod.__esModule) ? mod : { "default": mod };
7
- };
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- /**
10
- */
11
- //
12
- // Blockchain Object
13
- // BitGo accessor to a any Bitcoin address.
14
- // Using this does not require authentication and is unrelated to BitGo wallet management.
15
- //
16
- // Copyright 2014, BitGo, Inc. All Rights Reserved.
17
- //
18
- const lodash_1 = __importDefault(require("lodash"));
19
- const sdk_core_1 = require("@bitgo-beta/sdk-core");
20
- //
21
- // Constructor
22
- //
23
- const Blockchain = function (bitgo) {
24
- // @ts-expect-error - no implicit this
25
- this.bitgo = bitgo;
26
- };
27
- //
28
- // Get an address
29
- // Fetch an address summary information.
30
- // Includes balance and pending balance.
31
- //
32
- // Parameters include:
33
- // address: the address to get
34
- //
35
- Blockchain.prototype.getAddress = function (params, callback) {
36
- params = params || {};
37
- sdk_core_1.common.validateParams(params, ['address'], [], callback);
38
- return Promise.resolve(this.bitgo.get(this.bitgo.url('/address/' + params.address)).result())
39
- .then(callback)
40
- .catch(callback);
41
- };
42
- //
43
- // Get address transactions
44
- // List the transactions for a given address
45
- // Parameters include:
46
- // address: the address to get transactions for
47
- //
48
- Blockchain.prototype.getAddressTransactions = function (params, callback) {
49
- params = params || {};
50
- sdk_core_1.common.validateParams(params, ['address'], [], callback);
51
- // TODO: support start and limit params
52
- return Promise.resolve(this.bitgo.get(this.bitgo.url('/address/' + params.address + '/tx')).result())
53
- .then(callback)
54
- .catch(callback);
55
- };
56
- //
57
- // Unspent Transactions
58
- // List the unspent outputs for a given address
59
- // Parameters include:
60
- // address: the address to get unspent transactions
61
- // limit: return enough unspents to accumulate to at least this amount (in satoshis).
62
- //
63
- Blockchain.prototype.getAddressUnspents = function (params, callback) {
64
- params = params || {};
65
- sdk_core_1.common.validateParams(params, ['address'], [], callback);
66
- let url = this.bitgo.url('/address/' + params.address + '/unspents');
67
- if (params.limit) {
68
- if (!lodash_1.default.isInteger(params.limit)) {
69
- throw new Error('invalid limit - number expected');
70
- }
71
- url += '?limit=' + params.limit * 1e8;
72
- }
73
- return Promise.resolve(this.bitgo.get(url).result())
74
- .then(function (body) {
75
- return body.unspents;
76
- })
77
- .then(callback)
78
- .catch(callback);
79
- };
80
- //
81
- // Get transaction
82
- // Fetch transaction details.
83
- //
84
- // Parameters include:
85
- // id: the transaction id to get
86
- //
87
- Blockchain.prototype.getTransaction = function (params, callback) {
88
- params = params || {};
89
- sdk_core_1.common.validateParams(params, ['id'], [], callback);
90
- return Promise.resolve(this.bitgo.get(this.bitgo.url('/tx/' + params.id)).result())
91
- .then(callback)
92
- .catch(callback);
93
- };
94
- //
95
- // Get transaction that spends a specific output
96
- // Fetch transaction details.
97
- //
98
- // Parameters include:
99
- // txid: the transaction id of the output
100
- // vout: the position of the output on the transaction that created it
101
- //
102
- Blockchain.prototype.getTransactionByInput = function (params, callback) {
103
- params = params || {};
104
- sdk_core_1.common.validateParams(params, ['txid'], [], callback);
105
- if (!lodash_1.default.isInteger(params.vout)) {
106
- throw new Error('invalid vout - number expected');
107
- }
108
- return Promise.resolve(this.bitgo.get(this.bitgo.url('/tx/input/' + params.txid + '/' + params.vout)).result())
109
- .then(callback)
110
- .catch(callback);
111
- };
112
- //
113
- // Get block
114
- // Fetch block details.
115
- //
116
- // Parameters include:
117
- // id: the block hash to get, or latest for the latest
118
- //
119
- Blockchain.prototype.getBlock = function (params, callback) {
120
- params = params || {};
121
- sdk_core_1.common.validateParams(params, ['id'], [], callback);
122
- return Promise.resolve(this.bitgo.get(this.bitgo.url('/block/' + params.id)).result())
123
- .then(callback)
124
- .catch(callback);
125
- };
126
- module.exports = Blockchain;
127
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tjaGFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92MS9ibG9ja2NoYWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7Ozs7QUFFSDtHQUNHO0FBQ0gsRUFBRTtBQUNGLG9CQUFvQjtBQUNwQiwyQ0FBMkM7QUFDM0MsMEZBQTBGO0FBQzFGLEVBQUU7QUFDRixvREFBb0Q7QUFDcEQsRUFBRTtBQUVGLG9EQUF1QjtBQUV2QixtREFBOEM7QUFFOUMsRUFBRTtBQUNGLGNBQWM7QUFDZCxFQUFFO0FBQ0YsTUFBTSxVQUFVLEdBQUcsVUFBVSxLQUFLO0lBQ2hDLHNDQUFzQztJQUN0QyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUNyQixDQUFDLENBQUM7QUFFRixFQUFFO0FBQ0YsaUJBQWlCO0FBQ2pCLHdDQUF3QztBQUN4Qyx3Q0FBd0M7QUFDeEMsRUFBRTtBQUNGLHNCQUFzQjtBQUN0QixnQ0FBZ0M7QUFDaEMsRUFBRTtBQUNGLFVBQVUsQ0FBQyxTQUFTLENBQUMsVUFBVSxHQUFHLFVBQVUsTUFBTSxFQUFFLFFBQVE7SUFDMUQsTUFBTSxHQUFHLE1BQU0sSUFBSSxFQUFFLENBQUM7SUFDdEIsaUJBQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBRXpELE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDMUYsSUFBSSxDQUFDLFFBQVEsQ0FBQztTQUNkLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNyQixDQUFDLENBQUM7QUFFRixFQUFFO0FBQ0YsMkJBQTJCO0FBQzNCLDRDQUE0QztB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QUFLLENBQUMsR0FBRyxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUNuRixJQUFJLENBQUMsUUFBUSxDQUFDO1NBQ2QsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3JCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAaGlkZGVuXG4gKi9cblxuLyoqXG4gKi9cbi8vXG4vLyBCbG9ja2NoYWluIE9iamVjdFxuLy8gQml0R28gYWNjZXNzb3IgdG8gYSBhbnkgQml0Y29pbiBhZGRyZXNzLlxuLy8gVXNpbmcgdGhpcyBkb2VzIG5vdCByZXF1aXJlIGF1dGhlbnRpY2F0aW9uIGFuZCBpcyB1bnJlbGF0ZWQgdG8gQml0R28gd2FsbGV0IG1hbmFnZW1lbnQuXG4vL1xuLy8gQ29weXJpZ2h0IDIwMTQsIEJpdEdvLCBJbmMuICBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy9cblxuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuaW1wb3J0IHsgY29tbW9uIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuXG4vL1xuLy8gQ29uc3RydWN0b3Jcbi8vXG5jb25zdCBCbG9ja2NoYWluID0gZnVuY3Rpb24gKGJpdGdvKSB7XG4gIC8vIEB0cy1leHBlY3QtZXJyb3IgLSBubyBpbXBsaWNpdCB0aGlzXG4gIHRoaXMuYml0Z28gPSBiaXRnbztcbn07XG5cbi8vXG4vLyBHZXQgYW4gYWRkcmVzc1xuLy8gRmV0Y2ggYW4gYWRkcmVzcyBzdW1tYXJ5IGluZm9ybWF0aW9uLlxuLy8gSW5jbHVkZXMgYmFsYW5jZSBhbmQgcGVuZGluZyBiYWxhbmNlLlxuLy9cbi8vIFBhcmFtZXRlcnMgaW5jbHVkZTpcbi8vICAgYWRkcmVzczogdGhlIGFkZHJlc3MgdG8gZ2V0XG4vL1xuQmxvY2tjaGFpbi5wcm90b3R5cGUuZ2V0QWRkcmVzcyA9IGZ1bmN0aW9uIChwYXJhbXMsIGNhbGxiYWNrKSB7XG4gIHBhcmFtcyA9IHBhcmFtcyB8fCB7fTtcbiAgY29tbW9uLnZhbGlkYXRlUGFyYW1zKHBhcmFtcywgWydhZGRyZXNzJ10sIFtdLCBjYWxsYmFjayk7XG5cbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLmJpdGdvLmdldCh0aGlzLmJpdGdvLnVybCgnL2FkZHJlc3MvJyArIHBhcmFtcy5hZGRyZXNzKSkucmVzdWx0KCkpXG4gICAgLnRoZW4oY2FsbGJhY2spXG4gICAgLmNhdGNoKGNhbGxiYWNrKTtcbn07XG5cbi8vXG4vLyBHZXQgYWRkcmVzcyB0cmFuc2FjdGlvbnNcbi8vIExpc3QgdGhlIHRyYW5zYWN0aW9ucyBmb3IgYSBnaXZlbiBhZGRyZXNzXG4vLyBQYXJhbWV0ZXJzIGluY2x1ZGU6XG4vLyAgIGFkZHJlc3M6IHRoZSBhZGRyZXNzIHRvIGdldCB0cmFuc2FjdGlvbnMgZm9yXG4vL1xuQmxvY2tjaGFpbi5wcm90b3R5cGUuZ2V0QWRkcmVzc1RyYW5zYWN0aW9ucyA9IGZ1bmN0aW9uIChwYXJhbXMsIGNhbGxiYWNrKSB7XG4gIHBhcmFtcyA9IHBhcmFtcyB8fCB7fTtcbiAgY29tbW9uLnZhbGlkYXRlUGFyYW1zKHBhcmFtcywgWydhZGRyZXNzJ10sIFtdLCBjYWxsYmFjayk7XG5cbiAgLy8gVE9ETzogc3VwcG9ydCBzdGFydCBhbmQgbGltaXQgcGFyYW1zXG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5iaXRnby5nZXQodGhpcy5iaXRnby51cmwoJy9hZGRyZXNzLycgKyBwYXJhbXMuYWRkcmVzcyArICcvdHgnKSkucmVzdWx0KCkpXG4gICAgLnRoZW4oY2FsbGJhY2spXG4gICAgLmNhdGNoKGNhbGxiYWNrKTtcbn07XG5cbi8vXG4vLyBVbnNwZW50IFRyYW5zYWN0aW9uc1xuLy8gTGlzdCB0aGUgdW5zcGVudCBvdXRwdXRzIGZvciBhIGdpdmVuIGFkZHJlc3Ncbi8vIFBhcmFtZXRlcnMgaW5jbHVkZTpcbi8vICAgYWRkcmVzczogdGhlIGFkZHJlc3MgdG8gZ2V0IHVuc3BlbnQgdHJhbnNhY3Rpb25zXG4vLyAgIGxpbWl0OiByZXR1cm4gZW5vdWdoIHVuc3BlbnRzIHRvIGFjY3VtdWxhdGUgdG8gYXQgbGVhc3QgdGhpcyBhbW91bnQgKGluIHNhdG9zaGlzKS5cbi8vXG5CbG9ja2NoYWluLnByb3RvdHlwZS5nZXRBZGRyZXNzVW5zcGVudHMgPSBmdW5jdGlvbiAocGFyYW1zLCBjYWxsYmFjaykge1xuICBwYXJhbXMgPSBwYXJhbXMgfHwge307XG4gIGNvbW1vbi52YWxpZGF0ZVBhcmFtcyhwYXJhbXMsIFsnYWRkcmVzcyddLCBbXSwgY2FsbGJhY2spO1xuXG4gIGxldCB1cmwgPSB0aGlzLmJpdGdvLnVybCgnL2FkZHJlc3MvJyArIHBhcmFtcy5hZGRyZXNzICsgJy91bnNwZW50cycpO1xuICBpZiAocGFyYW1zLmxpbWl0KSB7XG4gICAgaWYgKCFfLmlzSW50ZWdlcihwYXJhbXMubGltaXQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgbGltaXQgLSBudW1iZXIgZXhwZWN0ZWQnKTtcbiAgICB9XG4gICAgdXJsICs9ICc/bGltaXQ9JyArIHBhcmFtcy5saW1pdCAqIDFlODtcbiAgfVxuXG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5iaXRnby5nZXQodXJsKS5yZXN1bHQoKSlcbiAgICAudGhlbihmdW5jdGlvbiAoYm9keSkge1xuICAgICAgcmV0dXJuIGJvZHkudW5zcGVudHM7XG4gICAgfSlcbiAgICAudGhlbihjYWxsYmFjaylcbiAgICAuY2F0Y2goY2FsbGJhY2spO1xufTtcblxuLy9cbi8vIEdldCB0cmFuc2FjdGlvblxuLy8gRmV0Y2ggdHJhbnNhY3Rpb24gZGV0YWlscy5cbi8vXG4vLyBQYXJhbWV0ZXJzIGluY2x1ZGU6XG4vLyAgIGlkOiB0aGUgdHJhbnNhY3Rpb24gaWQgdG8gZ2V0XG4vL1xuQmxvY2tjaGFpbi5wcm90b3R5cGUuZ2V0VHJhbnNhY3Rpb24gPSBmdW5jdGlvbiAocGFyYW1zLCBjYWxsYmFjaykge1xuICBwYXJhbXMgPSBwYXJhbXMgfHwge307XG4gIGNvbW1vbi52YWxpZGF0ZVBhcmFtcyhwYXJhbXMsIFsnaWQnXSwgW10sIGNhbGxiYWNrKTtcblxuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuYml0Z28uZ2V0KHRoaXMuYml0Z28udXJsKCcvdHgvJyArIHBhcmFtcy5pZCkpLnJlc3VsdCgpKVxuICAgIC50aGVuKGNhbGxiYWNrKVxuICAgIC5jYXRjaChjYWxsYmFjayk7XG59O1xuXG4vL1xuLy8gR2V0IHRyYW5zYWN0aW9uIHRoYXQgc3BlbmRzIGEgc3BlY2lmaWMgb3V0cHV0XG4vLyBGZXRjaCB0cmFuc2FjdGlvbiBkZXRhaWxzLlxuLy9cbi8vIFBhcmFtZXRlcnMgaW5jbHVkZTpcbi8vICAgdHhpZDogdGhlIHRyYW5zYWN0aW9uIGlkIG9mIHRoZSBvdXRwdXRcbi8vICAgdm91dDogdGhlIHBvc2l0aW9uIG9mIHRoZSBvdXRwdXQgb24gdGhlIHRyYW5zYWN0aW9uIHRoYXQgY3JlYXRlZCBpdFxuLy9cbkJsb2NrY2hhaW4ucHJvdG90eXBlLmdldFRyYW5zYWN0aW9uQnlJbnB1dCA9IGZ1bmN0aW9uIChwYXJhbXMsIGNhbGxiYWNrKSB7XG4gIHBhcmFtcyA9IHBhcmFtcyB8fCB7fTtcbiAgY29tbW9uLnZhbGlkYXRlUGFyYW1zKHBhcmFtcywgWyd0eGlkJ10sIFtdLCBjYWxsYmFjayk7XG4gIGlmICghXy5pc0ludGVnZXIocGFyYW1zLnZvdXQpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHZvdXQgLSBudW1iZXIgZXhwZWN0ZWQnKTtcbiAgfVxuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuYml0Z28uZ2V0KHRoaXMuYml0Z28udXJsKCcvdHgvaW5wdXQvJyArIHBhcmFtcy50eGlkICsgJy8nICsgcGFyYW1zLnZvdXQpKS5yZXN1bHQoKSlcbiAgICAudGhlbihjYWxsYmFjaylcbiAgICAuY2F0Y2goY2FsbGJhY2spO1xufTtcblxuLy9cbi8vIEdldCBibG9ja1xuLy8gRmV0Y2ggYmxvY2sgZGV0YWlscy5cbi8vXG4vLyBQYXJhbWV0ZXJzIGluY2x1ZGU6XG4vLyAgIGlkOiB0aGUgYmxvY2sgaGFzaCB0byBnZXQsIG9yIGxhdGVzdCBmb3IgdGhlIGxhdGVzdFxuLy9cbkJsb2NrY2hhaW4ucHJvdG90eXBlLmdldEJsb2NrID0gZnVuY3Rpb24gKHBhcmFtcywgY2FsbGJhY2spIHtcbiAgcGFyYW1zID0gcGFyYW1zIHx8IHt9O1xuICBjb21tb24udmFsaWRhdGVQYXJhbXMocGFyYW1zLCBbJ2lkJ10sIFtdLCBjYWxsYmFjayk7XG5cbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLmJpdGdvLmdldCh0aGlzLmJpdGdvLnVybCgnL2Jsb2NrLycgKyBwYXJhbXMuaWQpKS5yZXN1bHQoKSlcbiAgICAudGhlbihjYWxsYmFjaylcbiAgICAuY2F0Y2goY2FsbGJhY2spO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBCbG9ja2NoYWluO1xuIl19
@@ -1,5 +0,0 @@
1
- /**
2
- * @hidden
3
- */
4
- export {};
5
- //# sourceMappingURL=keychains.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"keychains.d.ts","sourceRoot":"","sources":["../../../src/v1/keychains.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1,320 +0,0 @@
1
- "use strict";
2
- /**
3
- * @hidden
4
- */
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- /**
7
- */
8
- //
9
- // Keychains Object
10
- // BitGo accessor to a user's keychain.
11
- //
12
- // Copyright 2014, BitGo, Inc. All Rights Reserved.
13
- //
14
- const utxo_lib_1 = require("@bitgo-beta/utxo-lib");
15
- const crypto_1 = require("crypto");
16
- const sdk_core_1 = require("@bitgo-beta/sdk-core");
17
- const _ = require('lodash');
18
- //
19
- // Constructor
20
- //
21
- const Keychains = function (bitgo) {
22
- // @ts-expect-error - no implicit this
23
- this.bitgo = bitgo;
24
- };
25
- //
26
- // isValid
27
- // Tests a xpub or xprv string to see if it is a valid keychain.
28
- //
29
- Keychains.prototype.isValid = function (params) {
30
- params = params || {};
31
- sdk_core_1.common.validateParams(params, [], []);
32
- if (!_.isString(params.key) && !_.isObject(params.key)) {
33
- throw new Error('key must be a string or object');
34
- }
35
- try {
36
- if (!params.key.path) {
37
- utxo_lib_1.bip32.fromBase58(params.key);
38
- }
39
- else {
40
- utxo_lib_1.bip32.fromBase58(params.key.xpub).derivePath((0, sdk_core_1.sanitizeLegacyPath)(params.key.path));
41
- }
42
- return true;
43
- }
44
- catch (e) {
45
- return false;
46
- }
47
- };
48
- //
49
- // create
50
- // Create a new keychain locally.
51
- // Does not send the keychain to bitgo, only creates locally.
52
- // If |seed| is provided, used to seed the keychain. Otherwise,
53
- // a random keychain is created.
54
- //
55
- Keychains.prototype.create = function (params) {
56
- params = params || {};
57
- sdk_core_1.common.validateParams(params, [], []);
58
- let seed;
59
- if (!params.seed) {
60
- // An extended private key has both a normal 256 bit private key and a 256
61
- // bit chain code, both of which must be random. 512 bits is therefore the
62
- // maximum entropy and gives us maximum security against cracking.
63
- seed = (0, crypto_1.randomBytes)(512 / 8);
64
- }
65
- else {
66
- seed = params.seed;
67
- }
68
- const extendedKey = utxo_lib_1.bip32.fromSeed(seed);
69
- const xpub = extendedKey.neutered().toBase58();
70
- let ethAddress;
71
- try {
72
- ethAddress = sdk_core_1.Util.xpubToEthAddress(xpub);
73
- }
74
- catch (e) {
75
- // ethereum is unavailable
76
- }
77
- return {
78
- xpub: xpub,
79
- xprv: extendedKey.toBase58(),
80
- ethAddress: ethAddress,
81
- };
82
- };
83
- // used by deriveLocal
84
- const apiResponse = function (status, result, message) {
85
- const err = new Error(message);
86
- err.status = status;
87
- err.result = result;
88
- return err;
89
- };
90
- //
91
- // deriveLocal
92
- // Locally derives a keychain from a top level BIP32 string, given a path.
93
- //
94
- Keychains.prototype.deriveLocal = function (params) {
95
- params = params || {};
96
- sdk_core_1.common.validateParams(params, ['path'], ['xprv', 'xpub']);
97
- if (!params.xprv && !params.xpub) {
98
- throw new Error('must provide an xpub or xprv for derivation.');
99
- }
100
- if (params.xprv && params.xpub) {
101
- throw new Error('cannot provide both xpub and xprv');
102
- }
103
- let hdNode;
104
- try {
105
- hdNode = utxo_lib_1.bip32.fromBase58(params.xprv || params.xpub);
106
- }
107
- catch (e) {
108
- throw apiResponse(400, {}, 'Unable to parse the xprv or xpub');
109
- }
110
- let derivedNode;
111
- try {
112
- derivedNode = hdNode.derivePath((0, sdk_core_1.sanitizeLegacyPath)(params.path));
113
- }
114
- catch (e) {
115
- throw apiResponse(400, {}, 'Unable to derive HD key from path');
116
- }
117
- const xpub = derivedNode.neutered().toBase58();
118
- let ethAddress;
119
- try {
120
- ethAddress = sdk_core_1.Util.xpubToEthAddress(xpub);
121
- }
122
- catch (e) {
123
- // ethereum is unavailable
124
- }
125
- return {
126
- path: params.path,
127
- xpub: xpub,
128
- xprv: params.xprv && derivedNode.toBase58(),
129
- ethAddress: ethAddress,
130
- };
131
- };
132
- //
133
- // list
134
- // List the user's keychains
135
- //
136
- Keychains.prototype.list = function (params, callback) {
137
- params = params || {};
138
- sdk_core_1.common.validateParams(params, [], [], callback);
139
- return Promise.resolve(this.bitgo.get(this.bitgo.url('/keychain')).result('keychains'))
140
- .then(function (keychains) {
141
- keychains.map(function (keychain) {
142
- if (keychain.xpub &&
143
- keychain.ethAddress &&
144
- sdk_core_1.Util.xpubToEthAddress &&
145
- keychain.ethAddress !== sdk_core_1.Util.xpubToEthAddress(keychain.xpub)) {
146
- throw new Error('ethAddress and xpub do not match');
147
- }
148
- });
149
- return keychains;
150
- })
151
- .then(callback)
152
- .catch(callback);
153
- };
154
- /**
155
- * iterates through all keys associated with the user, decrypts them with the old password and encrypts them with the
156
- * new password
157
- * @param params.oldPassword {String} - The old password used for encrypting the key
158
- * @param params.newPassword {String} - The new password to be used for encrypting the key
159
- * @param callback
160
- * @returns result.keychains {Object} - e.g.:
161
- * {
162
- * xpub1: encryptedPrv1,
163
- * xpub2: encryptedPrv2,
164
- * ...
165
- * }
166
- * @returns result.version {Number}
167
- */
168
- Keychains.prototype.updatePassword = function (params, callback) {
169
- return async function coUpdatePassword() {
170
- sdk_core_1.common.validateParams(params, ['oldPassword', 'newPassword'], [], callback);
171
- // @ts-expect-error - no implicit this
172
- const encrypted = await this.bitgo.post(this.bitgo.url('/user/encrypted')).result();
173
- const newKeychains = {};
174
- // @ts-expect-error - no implicit this
175
- const self = this;
176
- _.forOwn(encrypted.keychains, function keychainsForOwn(oldEncryptedXprv, xpub) {
177
- try {
178
- const decryptedPrv = self.bitgo.decrypt({ input: oldEncryptedXprv, password: params.oldPassword });
179
- const newEncryptedPrv = self.bitgo.encrypt({ input: decryptedPrv, password: params.newPassword });
180
- newKeychains[xpub] = newEncryptedPrv;
181
- }
182
- catch (e) {
183
- // decrypting the keychain with the old password didn't work so we just keep it the way it is
184
- newKeychains[xpub] = oldEncryptedXprv;
185
- }
186
- });
187
- return { keychains: newKeychains, version: encrypted.version };
188
- }
189
- .call(this)
190
- .then(callback)
191
- .catch(callback);
192
- };
193
- //
194
- // add
195
- // Add a new keychain
196
- //
197
- Keychains.prototype.add = function (params, callback) {
198
- params = params || {};
199
- sdk_core_1.common.validateParams(params, ['xpub'], ['encryptedXprv', 'type', 'isLedger'], callback);
200
- return Promise.resolve(this.bitgo
201
- .post(this.bitgo.url('/keychain'))
202
- .send({
203
- xpub: params.xpub,
204
- encryptedXprv: params.encryptedXprv,
205
- type: params.type,
206
- originalPasscodeEncryptionCode: params.originalPasscodeEncryptionCode,
207
- isLedger: params.isLedger,
208
- })
209
- .result())
210
- .then(function (keychain) {
211
- if (keychain.xpub &&
212
- keychain.ethAddress &&
213
- sdk_core_1.Util.xpubToEthAddress &&
214
- keychain.ethAddress !== sdk_core_1.Util.xpubToEthAddress(keychain.xpub)) {
215
- throw new Error('ethAddress and xpub do not match');
216
- }
217
- return keychain;
218
- })
219
- .then(callback)
220
- .catch(callback);
221
- };
222
- //
223
- // createBitGo
224
- // Add a new BitGo server keychain
225
- //
226
- Keychains.prototype.createBitGo = function (params, callback) {
227
- params = params || {};
228
- sdk_core_1.common.validateParams(params, [], [], callback);
229
- return Promise.resolve(this.bitgo.post(this.bitgo.url('/keychain/bitgo')).send(params).result())
230
- .then(function (keychain) {
231
- if (keychain.xpub &&
232
- keychain.ethAddress &&
233
- sdk_core_1.Util.xpubToEthAddress &&
234
- keychain.ethAddress !== sdk_core_1.Util.xpubToEthAddress(keychain.xpub)) {
235
- throw new Error('ethAddress and xpub do not match');
236
- }
237
- return keychain;
238
- })
239
- .then(callback)
240
- .catch(callback);
241
- };
242
- //
243
- // createBackup
244
- // Create a new backup keychain through bitgo - often used for creating a keychain on a KRS
245
- //
246
- Keychains.prototype.createBackup = function (params, callback) {
247
- params = params || {};
248
- sdk_core_1.common.validateParams(params, ['provider'], [], callback);
249
- return Promise.resolve(this.bitgo.post(this.bitgo.url('/keychain/backup')).send(params).result())
250
- .then(function (keychain) {
251
- // not all keychains have an xpub
252
- if (keychain.xpub &&
253
- keychain.ethAddress &&
254
- sdk_core_1.Util.xpubToEthAddress &&
255
- keychain.ethAddress !== sdk_core_1.Util.xpubToEthAddress(keychain.xpub)) {
256
- throw new Error('ethAddress and xpub do not match');
257
- }
258
- return keychain;
259
- })
260
- .then(callback)
261
- .catch(callback);
262
- };
263
- //
264
- // get
265
- // Fetch an existing keychain
266
- // Parameters include:
267
- // xpub: the xpub of the key to lookup (required)
268
- //
269
- Keychains.prototype.get = function (params, callback) {
270
- params = params || {};
271
- sdk_core_1.common.validateParams(params, [], ['xpub', 'ethAddress'], callback);
272
- if (!params.xpub && !params.ethAddress) {
273
- throw new Error('xpub or ethAddress must be defined');
274
- }
275
- const id = params.xpub || params.ethAddress;
276
- return Promise.resolve(this.bitgo
277
- .post(this.bitgo.url('/keychain/' + encodeURIComponent(id)))
278
- .send({})
279
- .result())
280
- .then(function (keychain) {
281
- if (keychain.xpub &&
282
- keychain.ethAddress &&
283
- sdk_core_1.Util.xpubToEthAddress &&
284
- keychain.ethAddress !== sdk_core_1.Util.xpubToEthAddress(keychain.xpub)) {
285
- throw new Error('ethAddress and xpub do not match');
286
- }
287
- return keychain;
288
- })
289
- .then(callback)
290
- .catch(callback);
291
- };
292
- //
293
- // update
294
- // Update an existing keychain
295
- // Parameters include:
296
- // xpub: the xpub of the key to lookup (required)
297
- //
298
- Keychains.prototype.update = function (params, callback) {
299
- params = params || {};
300
- sdk_core_1.common.validateParams(params, ['xpub'], ['encryptedXprv'], callback);
301
- return Promise.resolve(this.bitgo
302
- .put(this.bitgo.url('/keychain/' + params.xpub))
303
- .send({
304
- encryptedXprv: params.encryptedXprv,
305
- })
306
- .result())
307
- .then(function (keychain) {
308
- if (keychain.xpub &&
309
- keychain.ethAddress &&
310
- sdk_core_1.Util.xpubToEthAddress &&
311
- keychain.ethAddress !== sdk_core_1.Util.xpubToEthAddress(keychain.xpub)) {
312
- throw new Error('ethAddress and xpub do not match');
313
- }
314
- return keychain;
315
- })
316
- .then(callback)
317
- .catch(callback);
318
- };
319
- module.exports = Keychains;
320
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Y2hhaW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3YxL2tleWNoYWlucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7O0dBRUc7O0FBRUg7R0FDRztBQUNILEVBQUU7QUFDRixtQkFBbUI7QUFDbkIsdUNBQXVDO0FBQ3ZDLEVBQUU7QUFDRixvREFBb0Q7QUFDcEQsRUFBRTtBQUVGLG1EQUE2QztBQUM3QyxtQ0FBcUM7QUFDckMsbURBQXdFO0FBQ3hFLE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUU1QixFQUFFO0FBQ0YsY0FBYztBQUNkLEVBQUU7QUFDRixNQUFNLFNBQVMsR0FBRyxVQUFVLEtBQUs7SUFDL0Isc0NBQXNDO0lBQ3RDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0FBQ3JCLENBQUMsQ0FBQztBQUVGLEVBQUU7QUFDRixVQUFVO0FBQ1YsZ0VBQWdFO0FBQ2hFLEVBQUU7QUFDRixTQUFTLENBQUMsU0FBUyxDQUFDLE9BQU8sR0FBRyxVQUFVLE1BQU07SUFDNUMsTUFBTSxHQUFHLE1BQU0sSUFBSSxFQUFFLENBQUM7SUFDdEIsaUJBQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUV0QyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3ZELE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsSUFBSSxDQUFDO1FBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDckIsZ0JBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9CLENB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UUFDdEIsSUFDRSxRQUFRLENBQUMsSUFBSTtZQUNiLFFBQVEsQ0FBQyxVQUFVO1lBQ25CLGVBQUksQ0FBQyxnQkFBZ0I7WUFDckIsUUFBUSxDQUFDLFVBQVUsS0FBSyxlQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUM1RCxDQUFDO1lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO1FBQ3RELENBQUM7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDLENBQUM7U0FDRCxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQ2QsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3JCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAaGlkZGVuXG4gKi9cblxuLyoqXG4gKi9cbi8vXG4vLyBLZXljaGFpbnMgT2JqZWN0XG4vLyBCaXRHbyBhY2Nlc3NvciB0byBhIHVzZXIncyBrZXljaGFpbi5cbi8vXG4vLyBDb3B5cmlnaHQgMjAxNCwgQml0R28sIEluYy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vL1xuXG5pbXBvcnQgeyBiaXAzMiB9IGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcbmltcG9ydCB7IHJhbmRvbUJ5dGVzIH0gZnJvbSAnY3J5cHRvJztcbmltcG9ydCB7IGNvbW1vbiwgVXRpbCwgc2FuaXRpemVMZWdhY3lQYXRoIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuY29uc3QgXyA9IHJlcXVpcmUoJ2xvZGFzaCcpO1xuXG4vL1xuLy8gQ29uc3RydWN0b3Jcbi8vXG5jb25zdCBLZXljaGFpbnMgPSBmdW5jdGlvbiAoYml0Z28pIHtcbiAgLy8gQHRzLWV4cGVjdC1lcnJvciAtIG5vIGltcGxpY2l0IHRoaXNcbiAgdGhpcy5iaXRnbyA9IGJpdGdvO1xufTtcblxuLy9cbi8vIGlzVmFsaWRcbi8vIFRlc3RzIGEgeHB1YiBvciB4cHJ2IHN0cmluZyB0byBzZWUgaWYgaXQgaXMgYSB2YWxpZCBrZXljaGFpbi5cbi8vXG5LZXljaGFpbnMucHJvdG90eXBlLmlzVmFsaWQgPSBmdW5jdGlvbiAocGFyYW1zKSB7XG4gIHBhcmFtcyA9IHBhcmFtcyB8fCB7fTtcbiAgY29tbW9uLnZhbGlkYXRlUGFyYW1zKHBhcmFtcywgW10sIFtdKTtcblxuICBpZiAoIV8uaXNTdHJpbmcocGFyYW1zLmtleSkgJiYgIV8uaXNPYmplY3QocGFyYW1zLmtleSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2tleSBtdXN0IGJlIGEgc3RyaW5nIG9yIG9iamVjdCcpO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBpZiAoIXBhcmFtcy5rZXkucGF0aCkge1xuICAgICAgYmlwMzIuZnJvbUJhc2U1OChwYXJhbXMua2V5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgYmlwMzIuZnJvbUJhc2U1OChwYXJhbXMua2V5LnhwdWIpLmRlcml2ZVBhdGgoc2FuaXRpemVMZWdhY3lQYXRoKHBhcmFtcy5rZXkucGF0aCkpO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufTtcblxuLy9cbi8vIGNyZWF0ZVxuLy8gQ3JlYXRlIGEgbmV3IGtleWNoYWluIGxvY2FsbHkuXG4vLyBEb2VzIG5vdCBzZW5kIHRoZSBrZXljaGFpbiB0byBiaXRnbywgb25seSBjcmVhdGVzIGxvY2FsbHkuXG4vLyBJZiB8c2VlZHwgaXMgcHJvdmlkZWQsIHVzZWQgdG8gc2VlZCB0aGUga2V5Y2hhaW4uICBPdGhlcndpc2UsXG4vLyBhIHJhbmRvbSBrZXljaGFpbiBpcyBjcmVhdGVkLlxuLy9cbktleWNoYWlucy5wcm90b3R5cGUuY3JlYXRlID0gZnVuY3Rpb24gKHBhcmFtcykge1xuICBwYXJhbXMgPSBwYXJhbXMgfHwge307XG4gIGNvbW1vbi52YWxpZGF0ZVBhcmFtcyhwYXJhbXMsIFtdLCBbXSk7XG5cbiAgbGV0IHNlZWQ7XG4gIGlmICghcGFyYW1zLnNlZWQpIHtcbiAgICAvLyBBbiBleHRlbmRlZCBwcml2YXRlIGtleSBoYXMgYm90aCBhIG5vcm1hbCAyNTYgYml0IHByaXZhdGUga2V5IGFuZCBhIDI1NlxuICAgIC8vIGJpdCBjaGFpbiBjb2RlLCBib3RoIG9mIHdoaWNoIG11c3QgYmUgcmFuZG9tLiA1MTIgYml0cyBpcyB0aGVyZWZvcmUgdGhlXG4gICAgLy8gbWF4aW11bSBlbnRyb3B5IGFuZCBnaXZlcyB1cyBtYXhpbXVtIHNlY3VyaXR5IGFnYWluc3QgY3JhY2tpbmcuXG4gICAgc2VlZCA9IHJhbmRvbUJ5dGVzKDUxMiAvIDgpO1xuICB9IGVsc2Uge1xuICAgIHNlZWQgPSBwYXJhbXMuc2VlZDtcbiAgfVxuXG4gIGNvbnN0IGV4dGVuZGVkS2V5ID0gYmlwMzIuZnJvbVNlZWQoc2VlZCk7XG4gIGNvbnN0IHhwdWIgPSBleHRlbmRlZEtleS5uZXV0ZXJlZCgpLnRvQmFzZTU4KCk7XG5cbiAgbGV0IGV0aEFkZHJlc3M7XG4gIHRyeSB7XG4gICAgZXRoQWRkcmVzcyA9IFV0aWwueHB1YlRvRXRoQWRkcmVzcyh4cHViKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIC8vIGV0aGVyZXVtIGlzIHVuYXZhaWxhYmxlXG4gIH1cblxuICByZXR1cm4ge1xuICAgIHhwdWI6IHhwdWIsXG4gICAgeHBydjogZXh0ZW5kZWRLZXkudG9CYXNlNTgoKSxcbiAgICBldGhBZGRyZXNzOiBldGhBZGRyZXNzLFxuICB9O1xufTtcblxuLy8gdXNlZCBieSBkZXJpdmVMb2NhbFxuY29uc3QgYXBpUmVzcG9uc2UgPSBmdW5jdGlvbiAoc3RhdHVzLCByZXN1bHQsIG1lc3NhZ2UpIHtcbiAgY29uc3QgZXJyOiBhbnkgPSBuZXcgRXJyb3IobWVzc2FnZSk7XG4gIGVyci5zdGF0dXMgPSBzdGF0dXM7XG4gIGVyci5yZXN1bHQgPSByZXN1bHQ7XG4gIHJldHVybiBlcnI7XG59O1xuXG4vL1xuLy8gZGVyaXZlTG9jYWxcbi8vIExvY2FsbHkgZGVyaXZlcyBhIGtleWNoYWluIGZyb20gYSB0b3AgbGV2ZWwgQklQMzIgc3RyaW5nLCBnaXZlbiBhIHBhdGguXG4vL1xuS2V5Y2hhaW5zLnByb3RvdHlwZS5kZXJpdmVMb2NhbCA9IGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgcGFyYW1zID0gcGFyYW1zIHx8IHt9O1xuICBjb21tb24udmFsaWRhdGVQYXJhbXMocGFyYW1zLCBbJ3BhdGgnXSwgWyd4cHJ2JywgJ3hwdWInXSk7XG5cbiAgaWYgKCFwYXJhbXMueHBydiAmJiAhcGFyYW1zLnhwdWIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ211c3QgcHJvdmlkZSBhbiB4cHViIG9yIHhwcnYgZm9yIGRlcml2YXRpb24uJyk7XG4gIH1cbiAgaWYgKHBhcmFtcy54cHJ2ICYmIHBhcmFtcy54cHViKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdjYW5ub3QgcHJvdmlkZSBib3RoIHhwdWIgYW5kIHhwcnYnKTtcbiAgfVxuXG4gIGxldCBoZE5vZGU7XG4gIHRyeSB7XG4gICAgaGROb2RlID0gYmlwMzIuZnJvbUJhc2U1OChwYXJhbXMueHBydiB8fCBwYXJhbXMueHB1Yik7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBhcGlSZXNwb25zZSg0MDAsIHt9LCAnVW5hYmxlIHRvIHBhcnNlIHRoZSB4cHJ2IG9yIHhwdWInKTtcbiAgfVxuXG4gIGxldCBkZXJpdmVkTm9kZTtcbiAgdHJ5IHtcbiAgICBkZXJpdmVkTm9kZSA9IGhkTm9kZS5kZXJpdmVQYXRoKHNhbml0aXplTGVnYWN5UGF0aChwYXJhbXMucGF0aCkpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgdGhyb3cgYXBpUmVzcG9uc2UoNDAwLCB7fSwgJ1VuYWJsZSB0byBkZXJpdmUgSEQga2V5IGZyb20gcGF0aCcpO1xuICB9XG5cbiAgY29uc3QgeHB1YiA9IGRlcml2ZWROb2RlLm5ldXRlcmVkKCkudG9CYXNlNTgoKTtcblxuICBsZXQgZXRoQWRkcmVzcztcbiAgdHJ5IHtcbiAgICBldGhBZGRyZXNzID0gVXRpbC54cHViVG9FdGhBZGRyZXNzKHhwdWIpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgLy8gZXRoZXJldW0gaXMgdW5hdmFpbGFibGVcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgcGF0aDogcGFyYW1zLnBhdGgsXG4gICAgeHB1YjogeHB1YixcbiAgICB4cHJ2OiBwYXJhbXMueHBydiAmJiBkZXJpdmVkTm9kZS50b0Jhc2U1OCgpLFxuICAgIGV0aEFkZHJlc3M6IGV0aEFkZHJlc3MsXG4gIH07XG59O1xuXG4vL1xuLy8gbGlzdFxuLy8gTGlzdCB0aGUgdXNlcidzIGtleWNoYWluc1xuLy9cbktleWNoYWlucy5wcm90b3R5cGUubGlzdCA9IGZ1bmN0aW9uIChwYXJhbXMsIGNhbGxiYWNrKSB7XG4gIHBhcmFtcyA9IHBhcmFtcyB8fCB7fTtcbiAgY29tbW9uLnZhbGlkYXRlUGFyYW1zKHBhcmFtcywgW10sIFtdLCBjYWxsYmFjayk7XG5cbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLmJpdGdvLmdldCh0aGlzLmJpdGdvLnVybCgnL2tleWNoYWluJykpLnJlc3VsdCgna2V5Y2hhaW5zJykpXG4gICAgLnRoZW4oZnVuY3Rpb24gKGtleWNoYWlucykge1xuICAgICAga2V5Y2hhaW5zLm1hcChmdW5jdGlvbiAoa2V5Y2hhaW4pIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGtleWNoYWluLnhwdWIgJiZcbiAgICAgICAgICBrZXljaGFpbi5ldGhBZGRyZXNzICYmXG4gICAgICAgICAgVXRpbC54cHViVG9FdGhBZGRyZXNzICYmXG4gICAgICAgICAga2V5Y2hhaW4uZXRoQWRkcmVzcyAhPT0gVXRpbC54cHViVG9FdGhBZGRyZXNzKGtleWNoYWluLnhwdWIpXG4gICAgICAgICkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignZXRoQWRkcmVzcyBhbmQgeHB1YiBkbyBub3QgbWF0Y2gnKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4ga2V5Y2hhaW5zO1xuICAgIH0pXG4gICAgLnRoZW4oY2FsbGJhY2spXG4gICAgLmNhdGNoKGNhbGxiYWNrKTtcbn07XG5cbi8qKlxuICogaXRlcmF0ZXMgdGhyb3VnaCBhbGwga2V5cyBhc3NvY2lhdGVkIHdpdGggdGhlIHVzZXIsIGRlY3J5cHRzIHRoZW0gd2l0aCB0aGUgb2xkIHBhc3N3b3JkIGFuZCBlbmNyeXB0cyB0aGVtIHdpdGggdGhlXG4gKiBuZXcgcGFzc3dvcmRcbiAqIEBwYXJhbSBwYXJhbXMub2xkUGFzc3dvcmQge1N0cmluZ30gLSBUaGUgb2xkIHBhc3N3b3JkIHVzZWQgZm9yIGVuY3J5cHRpbmcgdGhlIGtleVxuICogQHBhcmFtIHBhcmFtcy5uZXdQYXNzd29yZCB7U3RyaW5nfSAtIFRoZSBuZXcgcGFzc3dvcmQgdG8gYmUgdXNlZCBmb3IgZW5jcnlwdGluZyB0aGUga2V5XG4gKiBAcGFyYW0gY2FsbGJhY2tcbiAqIEByZXR1cm5zIHJlc3VsdC5rZXljaGFpbnMge09iamVjdH0gLSBlLmcuOlxuICogIHtcbiAqICAgIHhwdWIxOiBlbmNyeXB0ZWRQcnYxLFxuICogICAgeHB1YjI6IGVuY3J5cHRlZFBydjIsXG4gKiAgICAuLi5cbiAqICB9XG4gKiAgQHJldHVybnMgcmVzdWx0LnZlcnNpb24ge051bWJlcn1cbiAqL1xuS2V5Y2hhaW5zLnByb3RvdHlwZS51cGRhdGVQYXNzd29yZCA9IGZ1bmN0aW9uIChwYXJhbXMsIGNhbGxiYWNrKSB7XG4gIHJldHVybiBhc3luYyBmdW5jdGlvbiBjb1VwZGF0ZVBhc3N3b3JkKCkge1xuICAgIGNvbW1vbi52YWxpZGF0ZVBhcmFtcyhwYXJhbXMsIFsnb2xkUGFzc3dvcmQnLCAnbmV3UGFzc3dvcmQnXSwgW10sIGNhbGxiYWNrKTtcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIC0gbm8gaW1wbGljaXQgdGhpc1xuICAgIGNvbnN0IGVuY3J5cHRlZCA9IGF3YWl0IHRoaXMuYml0Z28ucG9zdCh0aGlzLmJpdGdvLnVybCgnL3VzZXIvZW5jcnlwdGVkJykpLnJlc3VsdCgpO1xuICAgIGNvbnN0IG5ld0tleWNoYWlucyA9IHt9O1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgLSBubyBpbXBsaWNpdCB0aGlzXG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgXy5mb3JPd24oKGVuY3J5cHRlZCBhcyBhbnkpLmtleWNoYWlucywgZnVuY3Rpb24ga2V5Y2hhaW5zRm9yT3duKG9sZEVuY3J5cHRlZFhwcnYsIHhwdWIpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGRlY3J5cHRlZFBydiA9IHNlbGYuYml0Z28uZGVjcnlwdCh7IGlucHV0OiBvbGRFbmNyeXB0ZWRYcHJ2LCBwYXNzd29yZDogcGFyYW1zLm9sZFBhc3N3b3JkIH0pO1xuICAgICAgICBjb25zdCBuZXdFbmNyeXB0ZWRQcnYgPSBzZWxmLmJpdGdvLmVuY3J5cHQoeyBpbnB1dDogZGVjcnlwdGVkUHJ2LCBwYXNzd29yZDogcGFyYW1zLm5ld1Bhc3N3b3JkIH0pO1xuICAgICAgICBuZXdLZXljaGFpbnNbeHB1Yl0gPSBuZXdFbmNyeXB0ZWRQcnY7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8vIGRlY3J5cHRpbmcgdGhlIGtleWNoYWluIHdpdGggdGhlIG9sZCBwYXNzd29yZCBkaWRuJ3Qgd29yayBzbyB3ZSBqdXN0IGtlZXAgaXQgdGhlIHdheSBpdCBpc1xuICAgICAgICBuZXdLZXljaGFpbnNbeHB1Yl0gPSBvbGRFbmNyeXB0ZWRYcHJ2O1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB7IGtleWNoYWluczogbmV3S2V5Y2hhaW5zLCB2ZXJzaW9uOiAoZW5jcnlwdGVkIGFzIGFueSkudmVyc2lvbiB9O1xuICB9XG4gICAgLmNhbGwodGhpcylcbiAgICAudGhlbihjYWxsYmFjaylcbiAgICAuY2F0Y2goY2FsbGJhY2spO1xufTtcblxuLy9cbi8vIGFkZFxuLy8gQWRkIGEgbmV3IGtleWNoYWluXG4vL1xuS2V5Y2hhaW5zLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiAocGFyYW1zLCBjYWxsYmFjaykge1xuICBwYXJhbXMgPSBwYXJhbXMgfHwge307XG4gIGNvbW1vbi52YWxpZGF0ZVBhcmFtcyhwYXJhbXMsIFsneHB1YiddLCBbJ2VuY3J5cHRlZFhwcnYnLCAndHlwZScsICdpc0xlZGdlciddLCBjYWxsYmFjayk7XG5cbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShcbiAgICB0aGlzLmJpdGdvXG4gICAgICAucG9zdCh0aGlzLmJpdGdvLnVybCgnL2tleWNoYWluJykpXG4gICAgICAuc2VuZCh7XG4gICAgICAgIHhwdWI6IHBhcmFtcy54cHViLFxuICAgICAgICBlbmNyeXB0ZWRYcHJ2OiBwYXJhbXMuZW5jcnlwdGVkWHBydixcbiAgICAgICAgdHlwZTogcGFyYW1zLnR5cGUsXG4gICAgICAgIG9yaWdpbmFsUGFzc2NvZGVFbmNyeXB0aW9uQ29kZTogcGFyYW1zLm9yaWdpbmFsUGFzc2NvZGVFbmNyeXB0aW9uQ29kZSxcbiAgICAgICAgaXNMZWRnZXI6IHBhcmFtcy5pc0xlZGdlcixcbiAgICAgIH0pXG4gICAgICAucmVzdWx0KClcbiAgKVxuICAgIC50aGVuKGZ1bmN0aW9uIChrZXljaGFpbikge1xuICAgICAgaWYgKFxuICAgICAgICBrZXljaGFpbi54cHViICYmXG4gICAgICAgIGtleWNoYWluLmV0aEFkZHJlc3MgJiZcbiAgICAgICAgVXRpbC54cHViVG9FdGhBZGRyZXNzICYmXG4gICAgICAgIGtleWNoYWluLmV0aEFkZHJlc3MgIT09IFV0aWwueHB1YlRvRXRoQWRkcmVzcyhrZXljaGFpbi54cHViKVxuICAgICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignZXRoQWRkcmVzcyBhbmQgeHB1YiBkbyBub3QgbWF0Y2gnKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBrZXljaGFpbjtcbiAgICB9KVxuICAgIC50aGVuKGNhbGxiYWNrKVxuICAgIC5jYXRjaChjYWxsYmFjayk7XG59O1xuXG4vL1xuLy8gY3JlYXRlQml0R29cbi8vIEFkZCBhIG5ldyBCaXRHbyBzZXJ2ZXIga2V5Y2hhaW5cbi8vXG5LZXljaGFpbnMucHJvdG90eXBlLmNyZWF0ZUJpdEdvID0gZnVuY3Rpb24gKHBhcmFtcywgY2FsbGJhY2spIHtcbiAgcGFyYW1zID0gcGFyYW1zIHx8IHt9O1xuICBjb21tb24udmFsaWRhdGVQYXJhbXMocGFyYW1zLCBbXSwgW10sIGNhbGxiYWNrKTtcblxuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuYml0Z28ucG9zdCh0aGlzLmJpdGdvLnVybCgnL2tleWNoYWluL2JpdGdvJykpLnNlbmQocGFyYW1zKS5yZXN1bHQoKSlcbiAgICAudGhlbihmdW5jdGlvbiAoa2V5Y2hhaW4pIHtcbiAgICAgIGlmIChcbiAgICAgICAga2V5Y2hhaW4ueHB1YiAmJlxuICAgICAgICBrZXljaGFpbi5ldGhBZGRyZXNzICYmXG4gICAgICAgIFV0aWwueHB1YlRvRXRoQWRkcmVzcyAmJlxuICAgICAgICBrZXljaGFpbi5ldGhBZGRyZXNzICE9PSBVdGlsLnhwdWJUb0V0aEFkZHJlc3Moa2V5Y2hhaW4ueHB1YilcbiAgICAgICkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2V0aEFkZHJlc3MgYW5kIHhwdWIgZG8gbm90IG1hdGNoJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4ga2V5Y2hhaW47XG4gICAgfSlcbiAgICAudGhlbihjYWxsYmFjaylcbiAgICAuY2F0Y2goY2FsbGJhY2spO1xufTtcblxuLy9cbi8vIGNyZWF0ZUJhY2t1cFxuLy8gQ3JlYXRlIGEgbmV3IGJhY2t1cCBrZXljaGFpbiB0aHJvdWdoIGJpdGdvIC0gb2Z0ZW4gdXNlZCBmb3IgY3JlYXRpbmcgYSBrZXljaGFpbiBvbiBhIEtSU1xuLy9cbktleWNoYWlucy5wcm90b3R5cGUuY3JlYXRlQmFja3VwID0gZnVuY3Rpb24gKHBhcmFtcywgY2FsbGJhY2spIHtcbiAgcGFyYW1zID0gcGFyYW1zIHx8IHt9O1xuICBjb21tb24udmFsaWRhdGVQYXJhbXMocGFyYW1zLCBbJ3Byb3ZpZGVyJ10sIFtdLCBjYWxsYmFjayk7XG5cbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLmJpdGdvLnBvc3QodGhpcy5iaXRnby51cmwoJy9rZXljaGFpbi9iYWNrdXAnKSkuc2VuZChwYXJhbXMpLnJlc3VsdCgpKVxuICAgIC50aGVuKGZ1bmN0aW9uIChrZXljaGFpbikge1xuICAgICAgLy8gbm90IGFsbCBrZXljaGFpbnMgaGF2ZSBhbiB4cHViXG4gICAgICBpZiAoXG4gICAgICAgIGtleWNoYWluLnhwdWIgJiZcbiAgICAgICAga2V5Y2hhaW4uZXRoQWRkcmVzcyAmJlxuICAgICAgICBVdGlsLnhwdWJUb0V0aEFkZHJlc3MgJiZcbiAgICAgICAga2V5Y2hhaW4uZXRoQWRkcmVzcyAhPT0gVXRpbC54cHViVG9FdGhBZGRyZXNzKGtleWNoYWluLnhwdWIpXG4gICAgICApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdldGhBZGRyZXNzIGFuZCB4cHViIGRvIG5vdCBtYXRjaCcpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGtleWNoYWluO1xuICAgIH0pXG4gICAgLnRoZW4oY2FsbGJhY2spXG4gICAgLmNhdGNoKGNhbGxiYWNrKTtcbn07XG5cbi8vXG4vLyBnZXRcbi8vIEZldGNoIGFuIGV4aXN0aW5nIGtleWNoYWluXG4vLyBQYXJhbWV0ZXJzIGluY2x1ZGU6XG4vLyAgIHhwdWI6ICB0aGUgeHB1YiBvZiB0aGUga2V5IHRvIGxvb2t1cCAocmVxdWlyZWQpXG4vL1xuS2V5Y2hhaW5zLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAocGFyYW1zLCBjYWxsYmFjaykge1xuICBwYXJhbXMgPSBwYXJhbXMgfHwge307XG4gIGNvbW1vbi52YWxpZGF0ZVBhcmFtcyhwYXJhbXMsIFtdLCBbJ3hwdWInLCAnZXRoQWRkcmVzcyddLCBjYWxsYmFjayk7XG5cbiAgaWYgKCFwYXJhbXMueHB1YiAmJiAhcGFyYW1zLmV0aEFkZHJlc3MpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3hwdWIgb3IgZXRoQWRkcmVzcyBtdXN0IGJlIGRlZmluZWQnKTtcbiAgfVxuXG4gIGNvbnN0IGlkID0gcGFyYW1zLnhwdWIgfHwgcGFyYW1zLmV0aEFkZHJlc3M7XG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUoXG4gICAgdGhpcy5iaXRnb1xuICAgICAgLnBvc3QodGhpcy5iaXRnby51cmwoJy9rZXljaGFpbi8nICsgZW5jb2RlVVJJQ29tcG9uZW50KGlkKSkpXG4gICAgICAuc2VuZCh7fSlcbiAgICAgIC5yZXN1bHQoKVxuICApXG4gICAgLnRoZW4oZnVuY3Rpb24gKGtleWNoYWluKSB7XG4gICAgICBpZiAoXG4gICAgICAgIGtleWNoYWluLnhwdWIgJiZcbiAgICAgICAga2V5Y2hhaW4uZXRoQWRkcmVzcyAmJlxuICAgICAgICBVdGlsLnhwdWJUb0V0aEFkZHJlc3MgJiZcbiAgICAgICAga2V5Y2hhaW4uZXRoQWRkcmVzcyAhPT0gVXRpbC54cHViVG9FdGhBZGRyZXNzKGtleWNoYWluLnhwdWIpXG4gICAgICApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdldGhBZGRyZXNzIGFuZCB4cHViIGRvIG5vdCBtYXRjaCcpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGtleWNoYWluO1xuICAgIH0pXG4gICAgLnRoZW4oY2FsbGJhY2spXG4gICAgLmNhdGNoKGNhbGxiYWNrKTtcbn07XG5cbi8vXG4vLyB1cGRhdGVcbi8vIFVwZGF0ZSBhbiBleGlzdGluZyBrZXljaGFpblxuLy8gUGFyYW1ldGVycyBpbmNsdWRlOlxuLy8gICB4cHViOiAgdGhlIHhwdWIgb2YgdGhlIGtleSB0byBsb29rdXAgKHJlcXVpcmVkKVxuLy9cbktleWNoYWlucy5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKHBhcmFtcywgY2FsbGJhY2spIHtcbiAgcGFyYW1zID0gcGFyYW1zIHx8IHt9O1xuICBjb21tb24udmFsaWRhdGVQYXJhbXMocGFyYW1zLCBbJ3hwdWInXSwgWydlbmNyeXB0ZWRYcHJ2J10sIGNhbGxiYWNrKTtcblxuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFxuICAgIHRoaXMuYml0Z29cbiAgICAgIC5wdXQodGhpcy5iaXRnby51cmwoJy9rZXljaGFpbi8nICsgcGFyYW1zLnhwdWIpKVxuICAgICAgLnNlbmQoe1xuICAgICAgICBlbmNyeXB0ZWRYcHJ2OiBwYXJhbXMuZW5jcnlwdGVkWHBydixcbiAgICAgIH0pXG4gICAgICAucmVzdWx0KClcbiAgKVxuICAgIC50aGVuKGZ1bmN0aW9uIChrZXljaGFpbikge1xuICAgICAgaWYgKFxuICAgICAgICBrZXljaGFpbi54cHViICYmXG4gICAgICAgIGtleWNoYWluLmV0aEFkZHJlc3MgJiZcbiAgICAgICAgVXRpbC54cHViVG9FdGhBZGRyZXNzICYmXG4gICAgICAgIGtleWNoYWluLmV0aEFkZHJlc3MgIT09IFV0aWwueHB1YlRvRXRoQWRkcmVzcyhrZXljaGFpbi54cHViKVxuICAgICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignZXRoQWRkcmVzcyBhbmQgeHB1YiBkbyBub3QgbWF0Y2gnKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBrZXljaGFpbjtcbiAgICB9KVxuICAgIC50aGVuKGNhbGxiYWNrKVxuICAgIC5jYXRjaChjYWxsYmFjayk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEtleWNoYWlucztcbiJdfQ==
@@ -1,5 +0,0 @@
1
- /**
2
- * @hidden
3
- */
4
- export {};
5
- //# sourceMappingURL=markets.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"markets.d.ts","sourceRoot":"","sources":["../../../src/v1/markets.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1,68 +0,0 @@
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-beta/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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2V0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92MS9tYXJrZXRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7QUFFSDtHQUNHO0FBQ0gsRUFBRTtBQUNGLGlCQUFpQjtBQUNqQix5Q0FBeUM7QUFDekMsRUFBRTtBQUNGLG9EQUFvRDtBQUNwRCxFQUFFO0FBRUYsbURBQThDO0FBRTlDLEVBQUU7QUFDRixjQUFjO0FBQ2QsRUFBRTtBQUNGLE1BQU0sT0FBTyxHQUFHLFVBQVUsS0FBSztJQUM3QixzQ0FBc0M7SUFDdEMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDckIsQ0FBQyxDQUFDO0FBRUY7Ozs7OztJQU1JO0FBQ0osT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsVUFBVSxNQUFNLEVBQUUsUUFBUTtJQUNuRCxNQUFNLEdBQUcsTUFBTSxJQUFJLEVBQUUsQ0FBQztJQUN0QixpQkFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUVoRCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQzlFLElBQUksQ0FBQyxRQUFRLENBQUM7U0FDZCxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDckIsQ0FBQyxDQUFDO0FBRUY7Ozs7OztHQU1HO0FBQ0gsT0FBTyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsVUFBVSxNQUFNLEVBQUUsUUFBUTtJQUN0RCxNQUFNLEdBQUcsTUFBTSxJQUFJLEVBQUUsQ0FBQztJQUN0QixpQkFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUVoRCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ2pGLElBQUksQ0FBQyxRQUFRLENBQUM7U0FDZCxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDckIsQ0FBQyxDQUFDO0FBRUY7Ozs7O0dBS0c7QUFDSCxPQUFPLENBQUMsU0FBUyxDQUFDLFFBQVEsR0FBRyxVQUFVLE1BQU0sRUFBRSxRQUFRO0lBQ3JELE1BQU0sR0FBRyxNQUFNLElBQUksRUFBRSxDQUFDO0lBQ3RCLGlCQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUU5RCxNQUFNLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBRWhGLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNyQixNQUFNLElBQUksS0FBSyxDQUFDLHdDQUF3QyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxlQUFlLEdBQUcsSUFBSSxHQUFHLEdBQUcsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUNoSCxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQ2QsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3JCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAaGlkZGVuXG4gKi9cblxuLyoqXG4gKi9cbi8vXG4vLyBNYXJrZXRzIE9iamVjdFxuLy8gQml0R28gYWNjZXNzb3IgdG8gQml0Y29pbiBtYXJrZXQgZGF0YS5cbi8vXG4vLyBDb3B5cmlnaHQgMjAxNSwgQml0R28sIEluYy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vL1xuXG5pbXBvcnQgeyBjb21tb24gfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5cbi8vXG4vLyBDb25zdHJ1Y3RvclxuLy9cbmNvbnN0IE1hcmtldHMgPSBmdW5jdGlvbiAoYml0Z28pIHtcbiAgLy8gQHRzLWV4cGVjdC1lcnJvciAtIG5vIGltcGxpY2l0IHRoaXNcbiAgdGhpcy5iaXRnbyA9IGJpdGdvO1xufTtcblxuLyoqXG4gKiBHZXQgdGhlIGxhdGVzdCBiaXRjb2luIHByaWNlIGRhdGFcbiAqIEBwYXJhbSBwYXJhbXMge31cbiAqIEBwYXJhbSBjYWxsYmFja1xuICogQHJldHVybnMgeyp9IGFuIG9iamVjdCBjb250YWluaW5nIHByaWNlIGFuZCB2b2x1bWUgZGF0YSBmcm9tIHRoZVxuICogY3VycmVudCBkYXkgaW4gYSBudW1iZXIgb2YgY3VycmVuY2llc1xuICoqL1xuTWFya2V0cy5wcm90b3R5cGUubGF0ZXN0ID0gZnVuY3Rpb24gKHBhcmFtcywgY2FsbGJhY2spIHtcbiAgcGFyYW1zID0gcGFyYW1zIHx8IHt9O1xuICBjb21tb24udmFsaWRhdGVQYXJhbXMocGFyYW1zLCBbXSwgW10sIGNhbGxiYWNrKTtcblxuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuYml0Z28uZ2V0KHRoaXMuYml0Z28udXJsKCcvbWFya2V0L2xhdGVzdCcpKS5yZXN1bHQoKSlcbiAgICAudGhlbihjYWxsYmFjaylcbiAgICAuY2F0Y2goY2FsbGJhY2spO1xufTtcblxuLyoqXG4gKiBHZXQgeWVzdGVyZGF5J3MgYml0Y29pbiBwcmljZSBkYXRhXG4gKiBAcGFyYW0gcGFyYW1zIHt9XG4gKiBAcGFyYW0gY2FsbGJhY2tcbiAqIEByZXR1cm5zIHsqfSBhbiBvYmplY3QgY29udGFpbmluZyBwcmljZSBhbmQgdm9sdW1lIGRhdGEgZnJvbSB0aGVcbiAqIHByZXZpb3VzIGRheSBpbiBhIG51bWJlciBvZiBjdXJyZW5jaWVzXG4gKi9cbk1hcmtldHMucHJvdG90eXBlLnllc3RlcmRheSA9IGZ1bmN0aW9uIChwYXJhbXMsIGNhbGxiYWNrKSB7XG4gIHBhcmFtcyA9IHBhcmFtcyB8fCB7fTtcbiAgY29tbW9uLnZhbGlkYXRlUGFyYW1zKHBhcmFtcywgW10sIFtdLCBjYWxsYmFjayk7XG5cbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLmJpdGdvLmdldCh0aGlzLmJpdGdvLnVybCgnL21hcmtldC95ZXN0ZXJkYXknKSkucmVzdWx0KCkpXG4gICAgLnRoZW4oY2FsbGJhY2spXG4gICAgLmNhdGNoKGNhbGxiYWNrKTtcbn07XG5cbi8qKlxuICogR2V0IGJpdGNvaW4gcHJpY2UgZGF0YSBmcm9tIHVwIHRvIDkwIGRheXMgcHJpb3IgdG8gdG9kYXlcbiAqIEBwYXJhbSBwYXJhbXMgeyBjdXJyZW5jeU5hbWU6IHRoZSBjb2RlIGZvciB0aGUgZGVzaXJlZCBjdXJyZW5jeSwgZm9yIGV4YW1wbGUgVVNEIH1cbiAqIEBwYXJhbSBjYWxsYmFja1xuICogQHJldHVybnMgeyp9IGFuIG9iamVjdCBjb250YWluaW5nIGF2ZXJhZ2UgcHJpY2VzIGZyb20gYSBudW1iZXIgb2YgcHJldmlvdXMgZGF5c1xuICovXG5NYXJrZXRzLnByb3RvdHlwZS5sYXN0RGF5cyA9IGZ1bmN0aW9uIChwYXJhbXMsIGNhbGxiYWNrKSB7XG4gIHBhcmFtcyA9IHBhcmFtcyB8fCB7fTtcbiAgY29tbW9uLnZhbGlkYXRlUGFyYW1zKHBhcmFtcywgWydjdXJyZW5jeU5hbWUnXSwgW10sIGNhbGxiYWNrKTtcblxuICBjb25zdCBkYXlzID0gIWlzTmFOKHBhcnNlSW50KHBhcmFtcy5kYXlzLCAxMCkpID8gcGFyc2VJbnQocGFyYW1zLmRheXMsIDEwKSA6IDkwO1xuXG4gIGlmIChkYXlzICYmIGRheXMgPCAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdtdXN0IHVzZSBhIG5vbi1uZWdhdGl2ZSBudW1iZXIgb2YgZGF5cycpO1xuICB9XG5cbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLmJpdGdvLmdldCh0aGlzLmJpdGdvLnVybCgnL21hcmtldC9sYXN0LycgKyBkYXlzICsgJy8nICsgcGFyYW1zLmN1cnJlbmN5TmFtZSkpLnJlc3VsdCgpKVxuICAgIC50aGVuKGNhbGxiYWNrKVxuICAgIC5jYXRjaChjYWxsYmFjayk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IE1hcmtldHM7XG4iXX0=
@@ -1,6 +0,0 @@
1
- /**
2
- * @hidden
3
- */
4
- declare const PendingApproval: (bitgo: any, pendingApproval: any, wallet: any) => void;
5
- export = PendingApproval;
6
- //# sourceMappingURL=pendingapproval.d.ts.map
@@ -1 +0,0 @@
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"}