@bitgo/account-lib 2.17.1-rc.8 → 2.17.2-node12.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 (133) hide show
  1. package/dist/browser/bitgo-account-lib.js +2 -0
  2. package/dist/browser/bitgo-account-lib.js.LICENSE.txt +416 -0
  3. package/dist/browser/bitgo-account-lib.min.js +1 -1
  4. package/dist/browser/bitgo-account-lib.min.js.LICENSE.txt +4 -4
  5. package/dist/package.json +4 -4
  6. package/dist/resources/dot/index.ts +2 -0
  7. package/dist/resources/dot/mainnet.ts +2 -0
  8. package/dist/resources/dot/westend.ts +2 -0
  9. package/dist/src/coin/dot/addressInitializationBuilder.d.ts +80 -0
  10. package/dist/src/coin/dot/addressInitializationBuilder.d.ts.map +1 -0
  11. package/dist/src/coin/dot/addressInitializationBuilder.js +205 -0
  12. package/dist/src/coin/dot/batchTransactionBuilder.d.ts +47 -0
  13. package/dist/src/coin/dot/batchTransactionBuilder.d.ts.map +1 -0
  14. package/dist/src/coin/dot/batchTransactionBuilder.js +145 -0
  15. package/dist/src/coin/dot/errors.d.ts +8 -0
  16. package/dist/src/coin/dot/errors.d.ts.map +1 -0
  17. package/dist/src/coin/dot/errors.js +40 -0
  18. package/dist/src/coin/dot/iface.d.ts +181 -0
  19. package/dist/src/coin/dot/iface.d.ts.map +1 -0
  20. package/dist/src/coin/dot/iface.js +37 -0
  21. package/dist/src/coin/dot/stakingBuilder.d.ts +59 -0
  22. package/dist/src/coin/dot/stakingBuilder.d.ts.map +1 -0
  23. package/dist/src/coin/dot/stakingBuilder.js +157 -0
  24. package/dist/src/coin/dot/txnSchema.d.ts +12 -0
  25. package/dist/src/coin/dot/txnSchema.d.ts.map +1 -0
  26. package/dist/src/coin/dot/txnSchema.js +95 -0
  27. package/dist/src/coin/dot/unnominateBuilder.d.ts +24 -0
  28. package/dist/src/coin/dot/unnominateBuilder.d.ts.map +1 -0
  29. package/dist/src/coin/dot/unnominateBuilder.js +72 -0
  30. package/dist/src/coin/dot/unstakeBuilder.d.ts +38 -0
  31. package/dist/src/coin/dot/unstakeBuilder.d.ts.map +1 -0
  32. package/dist/src/coin/dot/unstakeBuilder.js +111 -0
  33. package/dist/src/coin/near/index.d.ts +5 -0
  34. package/dist/src/coin/near/index.d.ts.map +1 -0
  35. package/dist/src/coin/near/index.js +29 -0
  36. package/dist/src/coin/near/keyPair.d.ts +19 -0
  37. package/dist/src/coin/near/keyPair.d.ts.map +1 -0
  38. package/dist/src/coin/near/keyPair.js +76 -0
  39. package/dist/src/coin/near/transaction.d.ts +11 -0
  40. package/dist/src/coin/near/transaction.d.ts.map +1 -0
  41. package/dist/src/coin/near/transaction.js +41 -0
  42. package/dist/src/coin/near/transactionBuilder.d.ts +28 -0
  43. package/dist/src/coin/near/transactionBuilder.d.ts.map +1 -0
  44. package/dist/src/coin/near/transactionBuilder.js +68 -0
  45. package/dist/src/coin/near/transactionBuilderFactory.d.ts +24 -0
  46. package/dist/src/coin/near/transactionBuilderFactory.d.ts.map +1 -0
  47. package/dist/src/coin/near/transactionBuilderFactory.js +56 -0
  48. package/dist/src/coin/near/transferBuilder.d.ts +14 -0
  49. package/dist/src/coin/near/transferBuilder.d.ts.map +1 -0
  50. package/dist/src/coin/near/transferBuilder.js +81 -0
  51. package/dist/src/coin/near/utils.d.ts +19 -0
  52. package/dist/src/coin/near/utils.d.ts.map +1 -0
  53. package/dist/src/coin/near/utils.js +61 -0
  54. package/dist/src/coin/near/walletInitializationBuilder.d.ts +14 -0
  55. package/dist/src/coin/near/walletInitializationBuilder.d.ts.map +1 -0
  56. package/dist/src/coin/near/walletInitializationBuilder.js +81 -0
  57. package/dist/src/coin/sol/constants.d.ts +49 -0
  58. package/dist/src/coin/sol/constants.d.ts.map +1 -0
  59. package/dist/src/coin/sol/constants.js +65 -0
  60. package/dist/src/coin/sol/iface.d.ts +80 -0
  61. package/dist/src/coin/sol/iface.d.ts.map +1 -0
  62. package/dist/src/coin/sol/iface.js +3 -0
  63. package/dist/src/coin/sol/index.d.ts +8 -0
  64. package/dist/src/coin/sol/index.d.ts.map +1 -0
  65. package/dist/src/coin/sol/index.js +35 -0
  66. package/dist/src/coin/sol/instructionParamsFactory.d.ts +12 -0
  67. package/dist/src/coin/sol/instructionParamsFactory.d.ts.map +1 -0
  68. package/dist/src/coin/sol/instructionParamsFactory.js +198 -0
  69. package/dist/src/coin/sol/keyPair.d.ts +27 -0
  70. package/dist/src/coin/sol/keyPair.d.ts.map +1 -0
  71. package/dist/src/coin/sol/keyPair.js +81 -0
  72. package/dist/src/coin/sol/solInstructionFactory.d.ts +10 -0
  73. package/dist/src/coin/sol/solInstructionFactory.d.ts.map +1 -0
  74. package/dist/src/coin/sol/solInstructionFactory.js +174 -0
  75. package/dist/src/coin/sol/stakingActivateBuilder.d.ts +41 -0
  76. package/dist/src/coin/sol/stakingActivateBuilder.d.ts.map +1 -0
  77. package/dist/src/coin/sol/stakingActivateBuilder.js +162 -0
  78. package/dist/src/coin/sol/stakingDeactivateBuilder.d.ts +23 -0
  79. package/dist/src/coin/sol/stakingDeactivateBuilder.d.ts.map +1 -0
  80. package/dist/src/coin/sol/stakingDeactivateBuilder.js +130 -0
  81. package/dist/src/coin/sol/stakingWithdrawBuilder.d.ts +31 -0
  82. package/dist/src/coin/sol/stakingWithdrawBuilder.d.ts.map +1 -0
  83. package/dist/src/coin/sol/stakingWithdrawBuilder.js +146 -0
  84. package/dist/src/coin/sol/transaction.d.ts +56 -0
  85. package/dist/src/coin/sol/transaction.d.ts.map +1 -0
  86. package/dist/src/coin/sol/transaction.js +419 -0
  87. package/dist/src/coin/sol/transactionBuilder.d.ts +98 -0
  88. package/dist/src/coin/sol/transactionBuilder.d.ts.map +1 -0
  89. package/dist/src/coin/sol/transactionBuilder.js +318 -0
  90. package/dist/src/coin/sol/transactionBuilderFactory.d.ts +68 -0
  91. package/dist/src/coin/sol/transactionBuilderFactory.d.ts.map +1 -0
  92. package/dist/src/coin/sol/transactionBuilderFactory.js +132 -0
  93. package/dist/src/coin/sol/transferBuilder.d.ts +26 -0
  94. package/dist/src/coin/sol/transferBuilder.d.ts.map +1 -0
  95. package/dist/src/coin/sol/transferBuilder.js +138 -0
  96. package/dist/src/coin/sol/utils.d.ts +126 -0
  97. package/dist/src/coin/sol/utils.d.ts.map +1 -0
  98. package/dist/src/coin/sol/utils.js +315 -0
  99. package/dist/src/coin/sol/walletInitializationBuilder.d.ts +26 -0
  100. package/dist/src/coin/sol/walletInitializationBuilder.d.ts.map +1 -0
  101. package/dist/src/coin/sol/walletInitializationBuilder.js +139 -0
  102. package/dist/src/coin/stx/abstractContractBuilder.d.ts +19 -0
  103. package/dist/src/coin/stx/abstractContractBuilder.d.ts.map +1 -0
  104. package/dist/src/coin/stx/abstractContractBuilder.js +140 -0
  105. package/dist/src/coin/stx/constants.d.ts +8 -0
  106. package/dist/src/coin/stx/constants.d.ts.map +1 -0
  107. package/dist/src/coin/stx/constants.js +19 -0
  108. package/dist/src/coin/stx/sendmanyBuilder.d.ts +23 -0
  109. package/dist/src/coin/stx/sendmanyBuilder.d.ts.map +1 -0
  110. package/dist/src/coin/stx/sendmanyBuilder.js +140 -0
  111. package/dist/src/coin/stx/transaction.js +2 -2
  112. package/dist/src/coin/stx/utils.d.ts +3 -3
  113. package/dist/src/coin/stx/utils.d.ts.map +1 -1
  114. package/dist/src/coin/stx/utils.js +10 -7
  115. package/dist/src/keyPair/index.d.ts +4 -0
  116. package/dist/src/keyPair/index.d.ts.map +1 -0
  117. package/dist/src/keyPair/index.js +38 -0
  118. package/dist/src/mpc/curves.d.ts +14 -0
  119. package/dist/src/mpc/curves.d.ts.map +1 -0
  120. package/dist/src/mpc/curves.js +99 -0
  121. package/dist/src/mpc/shamir.d.ts +7 -0
  122. package/dist/src/mpc/shamir.d.ts.map +1 -0
  123. package/dist/src/mpc/shamir.js +91 -0
  124. package/dist/src/mpc/tss.d.ts +69 -0
  125. package/dist/src/mpc/tss.d.ts.map +1 -0
  126. package/dist/src/mpc/tss.js +255 -0
  127. package/dist/src/utils/ed25519KeyDeriver.d.ts +49 -0
  128. package/dist/src/utils/ed25519KeyDeriver.d.ts.map +1 -0
  129. package/dist/src/utils/ed25519KeyDeriver.js +92 -0
  130. package/dist/src/utils/index.d.ts +9 -0
  131. package/dist/src/utils/index.d.ts.map +1 -0
  132. package/dist/src/utils/index.js +43 -0
  133. package/package.json +4 -4
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
18
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
19
+ return new (P || (P = Promise))(function (resolve, reject) {
20
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
21
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
22
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
23
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
24
+ });
25
+ };
26
+ var __generator = (this && this.__generator) || function (thisArg, body) {
27
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
28
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
29
+ function verb(n) { return function (v) { return step([n, v]); }; }
30
+ function step(op) {
31
+ if (f) throw new TypeError("Generator is already executing.");
32
+ while (_) try {
33
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
34
+ if (y = 0, t) op = [op[0] & 2, t.value];
35
+ switch (op[0]) {
36
+ case 0: case 1: t = op; break;
37
+ case 4: _.label++; return { value: op[1], done: false };
38
+ case 5: _.label++; y = op[1]; op = [0]; continue;
39
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
40
+ default:
41
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
42
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
43
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
44
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
45
+ if (t[2]) _.ops.pop();
46
+ _.trys.pop(); continue;
47
+ }
48
+ op = body.call(thisArg, _);
49
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
50
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
51
+ }
52
+ };
53
+ var __importDefault = (this && this.__importDefault) || function (mod) {
54
+ return (mod && mod.__esModule) ? mod : { "default": mod };
55
+ };
56
+ Object.defineProperty(exports, "__esModule", { value: true });
57
+ exports.TransferBuilder = void 0;
58
+ var errors_1 = require("../baseCoin/errors");
59
+ var transactionBuilder_1 = require("./transactionBuilder");
60
+ var utils_1 = require("./utils");
61
+ var baseCoin_1 = require("../baseCoin");
62
+ var constants_1 = require("./constants");
63
+ var assert_1 = __importDefault(require("assert"));
64
+ var TransferBuilder = /** @class */ (function (_super) {
65
+ __extends(TransferBuilder, _super);
66
+ function TransferBuilder(_coinConfig) {
67
+ var _this = _super.call(this, _coinConfig) || this;
68
+ _this._sendParams = [];
69
+ return _this;
70
+ }
71
+ Object.defineProperty(TransferBuilder.prototype, "transactionType", {
72
+ get: function () {
73
+ return baseCoin_1.TransactionType.Send;
74
+ },
75
+ enumerable: false,
76
+ configurable: true
77
+ });
78
+ TransferBuilder.prototype.initBuilder = function (tx) {
79
+ _super.prototype.initBuilder.call(this, tx);
80
+ for (var _i = 0, _a = this._instructionsData; _i < _a.length; _i++) {
81
+ var instruction = _a[_i];
82
+ if (instruction.type === constants_1.InstructionBuilderTypes.Transfer) {
83
+ var transferInstruction = instruction;
84
+ this.sender(transferInstruction.params.fromAddress);
85
+ this.send({
86
+ address: transferInstruction.params.toAddress,
87
+ amount: transferInstruction.params.amount,
88
+ });
89
+ }
90
+ }
91
+ };
92
+ /**
93
+ * Set a transfer
94
+ *
95
+ * @param {string} fromAddress - the sender address
96
+ * @param {string} toAddress - the receiver address
97
+ * @param {string} amount - the amount sent
98
+ * @returns {TransactionBuilder} This transaction builder
99
+ */
100
+ TransferBuilder.prototype.send = function (_a) {
101
+ var address = _a.address, amount = _a.amount;
102
+ utils_1.validateAddress(address, 'address');
103
+ if (!amount || !utils_1.isValidAmount(amount)) {
104
+ throw new errors_1.BuildTransactionError('Invalid or missing amount, got: ' + amount);
105
+ }
106
+ this._sendParams.push({ address: address, amount: amount });
107
+ return this;
108
+ };
109
+ /** @inheritdoc */
110
+ TransferBuilder.prototype.buildImplementation = function () {
111
+ return __awaiter(this, void 0, void 0, function () {
112
+ var transferData;
113
+ var _this = this;
114
+ return __generator(this, function (_a) {
115
+ switch (_a.label) {
116
+ case 0:
117
+ assert_1.default(this._sender, 'Sender must be set before building the transaction');
118
+ transferData = this._sendParams.map(function (sendParams) {
119
+ return {
120
+ type: constants_1.InstructionBuilderTypes.Transfer,
121
+ params: {
122
+ fromAddress: _this._sender,
123
+ toAddress: sendParams.address,
124
+ amount: sendParams.amount,
125
+ },
126
+ };
127
+ });
128
+ this._instructionsData = transferData;
129
+ return [4 /*yield*/, _super.prototype.buildImplementation.call(this)];
130
+ case 1: return [2 /*return*/, _a.sent()];
131
+ }
132
+ });
133
+ });
134
+ };
135
+ return TransferBuilder;
136
+ }(transactionBuilder_1.TransactionBuilder));
137
+ exports.TransferBuilder = TransferBuilder;
138
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvaW4vc29sL3RyYW5zZmVyQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSw2Q0FBMkQ7QUFDM0QsMkRBQTBEO0FBRTFELGlDQUF5RDtBQUN6RCx3Q0FBOEM7QUFDOUMseUNBQXNEO0FBR3RELGtEQUE0QjtBQU81QjtJQUFxQyxtQ0FBa0I7SUFHckQseUJBQVksV0FBaUM7UUFBN0MsWUFDRSxrQkFBTSxXQUFXLENBQUMsU0FDbkI7UUFKTyxpQkFBVyxHQUFpQixFQUFFLENBQUM7O0lBSXZDLENBQUM7SUFFRCxzQkFBYyw0Q0FBZTthQUE3QjtZQUNFLE9BQU8sMEJBQWUsQ0FBQyxJQUFJLENBQUM7UUFDOUIsQ0FBQzs7O09BQUE7SUFFRCxxQ0FBVyxHQUFYLFVBQVksRUFBZTtRQUN6QixpQkFBTSxXQUFXLFlBQUMsRUFBRSxDQUFDLENBQUM7UUFFdEIsS0FBMEIsVUFBc0IsRUFBdEIsS0FBQSxJQUFJLENBQUMsaUJBQWlCLEVBQXRCLGNBQXNCLEVBQXRCLElBQXNCLEVBQUU7WUFBN0MsSUFBTSxXQUFXLFNBQUE7WUFDcEIsSUFBSSxXQUFXLENBQUMsSUFBSSxLQUFLLG1DQUF1QixDQUFDLFFBQVEsRUFBRTtnQkFDekQsSUFBTSxtQkFBbUIsR0FBYSxXQUFXLENBQUM7Z0JBRWxELElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUNwRCxJQUFJLENBQUMsSUFBSSxDQUFDO29CQUNSLE9BQU8sRUFBRSxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsU0FBUztvQkFDN0MsTUFBTSxFQUFFLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxNQUFNO2lCQUMxQyxDQUFDLENBQUM7YUFDSjtTQUNGO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCw4QkFBSSxHQUFKLFVBQUssRUFBK0I7WUFBN0IsT0FBTyxhQUFBLEVBQUUsTUFBTSxZQUFBO1FBQ3BCLHVCQUFlLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxxQkFBYSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3JDLE1BQU0sSUFBSSw4QkFBcUIsQ0FBQyxrQ0FBa0MsR0FBRyxNQUFNLENBQUMsQ0FBQztTQUM5RTtRQUVELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxTQUFBLEVBQUUsTUFBTSxRQUFBLEVBQUUsQ0FBQyxDQUFDO1FBRTNDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGtCQUFrQjtJQUNGLDZDQUFtQixHQUFuQzs7Ozs7Ozt3QkFDRSxnQkFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsb0RBQW9ELENBQUMsQ0FBQzt3QkFFckUsWUFBWSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFVBQUMsVUFBc0I7NEJBQy9ELE9BQU87Z0NBQ0wsSUFBSSxFQUFFLG1DQUF1QixDQUFDLFFBQVE7Z0NBQ3RDLE1BQU0sRUFBRTtvQ0FDTixXQUFXLEVBQUUsS0FBSSxDQUFDLE9BQU87b0NBQ3pCLFNBQVMsRUFBRSxVQUFVLENBQUMsT0FBTztvQ0FDN0IsTUFBTSxFQUFFLFVBQVUsQ0FBQyxNQUFNO2lDQUMxQjs2QkFDRixDQUFDO3dCQUNKLENBQUMsQ0FBQyxDQUFDO3dCQUNILElBQUksQ0FBQyxpQkFBaUIsR0FBRyxZQUFZLENBQUM7d0JBRS9CLHFCQUFNLGlCQUFNLG1CQUFtQixXQUFFLEVBQUE7NEJBQXhDLHNCQUFPLFNBQWlDLEVBQUM7Ozs7S0FDMUM7SUFDSCxzQkFBQztBQUFELENBQUMsQUFoRUQsQ0FBcUMsdUNBQWtCLEdBZ0V0RDtBQWhFWSwwQ0FBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IgfSBmcm9tICcuLi9iYXNlQ29pbi9lcnJvcnMnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IGlzVmFsaWRBbW91bnQsIHZhbGlkYXRlQWRkcmVzcyB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnLi4vYmFzZUNvaW4nO1xuaW1wb3J0IHsgSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBUcmFuc2ZlciB9IGZyb20gJy4vaWZhY2UnO1xuXG5pbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VuZFBhcmFtcyB7XG4gIGFkZHJlc3M6IHN0cmluZztcbiAgYW1vdW50OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2ZlckJ1aWxkZXIgZXh0ZW5kcyBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcml2YXRlIF9zZW5kUGFyYW1zOiBTZW5kUGFyYW1zW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuU2VuZDtcbiAgfVxuXG4gIGluaXRCdWlsZGVyKHR4OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHN1cGVyLmluaXRCdWlsZGVyKHR4KTtcblxuICAgIGZvciAoY29uc3QgaW5zdHJ1Y3Rpb24gb2YgdGhpcy5faW5zdHJ1Y3Rpb25zRGF0YSkge1xuICAgICAgaWYgKGluc3RydWN0aW9uLnR5cGUgPT09IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLlRyYW5zZmVyKSB7XG4gICAgICAgIGNvbnN0IHRyYW5zZmVySW5zdHJ1Y3Rpb246IFRyYW5zZmVyID0gaW5zdHJ1Y3Rpb247XG5cbiAgICAgICAgdGhpcy5zZW5kZXIodHJhbnNmZXJJbnN0cnVjdGlvbi5wYXJhbXMuZnJvbUFkZHJlc3MpO1xuICAgICAgICB0aGlzLnNlbmQoe1xuICAgICAgICAgIGFkZHJlc3M6IHRyYW5zZmVySW5zdHJ1Y3Rpb24ucGFyYW1zLnRvQWRkcmVzcyxcbiAgICAgICAgICBhbW91bnQ6IHRyYW5zZmVySW5zdHJ1Y3Rpb24ucGFyYW1zLmFtb3VudCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqICBTZXQgYSB0cmFuc2ZlclxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZnJvbUFkZHJlc3MgLSB0aGUgc2VuZGVyIGFkZHJlc3NcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRvQWRkcmVzcyAtIHRoZSByZWNlaXZlciBhZGRyZXNzXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhbW91bnQgLSB0aGUgYW1vdW50IHNlbnRcbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9uQnVpbGRlcn0gVGhpcyB0cmFuc2FjdGlvbiBidWlsZGVyXG4gICAqL1xuICBzZW5kKHsgYWRkcmVzcywgYW1vdW50IH06IFNlbmRQYXJhbXMpOiB0aGlzIHtcbiAgICB2YWxpZGF0ZUFkZHJlc3MoYWRkcmVzcywgJ2FkZHJlc3MnKTtcbiAgICBpZiAoIWFtb3VudCB8fCAhaXNWYWxpZEFtb3VudChhbW91bnQpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIG9yIG1pc3NpbmcgYW1vdW50LCBnb3Q6ICcgKyBhbW91bnQpO1xuICAgIH1cblxuICAgIHRoaXMuX3NlbmRQYXJhbXMucHVzaCh7IGFkZHJlc3MsIGFtb3VudCB9KTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBhc3luYyBidWlsZEltcGxlbWVudGF0aW9uKCk6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgICBhc3NlcnQodGhpcy5fc2VuZGVyLCAnU2VuZGVyIG11c3QgYmUgc2V0IGJlZm9yZSBidWlsZGluZyB0aGUgdHJhbnNhY3Rpb24nKTtcblxuICAgIGNvbnN0IHRyYW5zZmVyRGF0YSA9IHRoaXMuX3NlbmRQYXJhbXMubWFwKChzZW5kUGFyYW1zOiBTZW5kUGFyYW1zKTogVHJhbnNmZXIgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuVHJhbnNmZXIsXG4gICAgICAgIHBhcmFtczoge1xuICAgICAgICAgIGZyb21BZGRyZXNzOiB0aGlzLl9zZW5kZXIsXG4gICAgICAgICAgdG9BZGRyZXNzOiBzZW5kUGFyYW1zLmFkZHJlc3MsXG4gICAgICAgICAgYW1vdW50OiBzZW5kUGFyYW1zLmFtb3VudCxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfSk7XG4gICAgdGhpcy5faW5zdHJ1Y3Rpb25zRGF0YSA9IHRyYW5zZmVyRGF0YTtcblxuICAgIHJldHVybiBhd2FpdCBzdXBlci5idWlsZEltcGxlbWVudGF0aW9uKCk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,126 @@
1
+ import { SignaturePubkeyPair, Transaction as SolTransaction, TransactionInstruction } from '@solana/web3.js';
2
+ import { TransactionType } from '../baseCoin';
3
+ import { ValidInstructionTypes } from './iface';
4
+ /** @inheritdoc */
5
+ export declare function isValidAddress(address: string): boolean;
6
+ /** @inheritdoc */
7
+ export declare function isValidBlockId(hash: string): boolean;
8
+ /** @inheritdoc */
9
+ export declare function isValidPrivateKey(prvKey: string | Uint8Array): boolean;
10
+ /** @inheritdoc */
11
+ export declare function isValidPublicKey(pubKey: string): boolean;
12
+ /** @inheritdoc */
13
+ export declare function isValidSignature(signature: string): boolean;
14
+ /** @inheritdoc */
15
+ export declare function isValidTransactionId(txId: string): boolean;
16
+ /**
17
+ * Returns whether or not the string is a valid amount of lamports number
18
+ *
19
+ * @param {string} amount - the string to validate
20
+ * @returns {boolean} - the validation result
21
+ */
22
+ export declare function isValidAmount(amount: string): boolean;
23
+ /**
24
+ * Check if the string is a valid amount of lamports number on staking
25
+ *
26
+ * @param {string} amount - the string to validate
27
+ * @returns {boolean} - the validation result
28
+ */
29
+ export declare function isValidStakingAmount(amount: string): boolean;
30
+ /**
31
+ * Check if this is a valid memo or not.
32
+ *
33
+ * @param memo - the memo string
34
+ * @returns {boolean} - the validation result
35
+ */
36
+ export declare function isValidMemo(memo: string): boolean;
37
+ /**
38
+ * Checks if raw transaction can be deserialized
39
+ *
40
+ * @param {string} rawTransaction - transaction in base64 string format
41
+ * @returns {boolean} - the validation result
42
+ */
43
+ export declare function isValidRawTransaction(rawTransaction: string): boolean;
44
+ /**
45
+ * Verifies if signature for message is valid.
46
+ *
47
+ * @param {Buffer} serializedTx - tx as a base64 string
48
+ * @param {string} signature - signature as a string
49
+ * @param {string} publicKey - public key as base 58
50
+ * @returns {Boolean} true if signature is valid.
51
+ */
52
+ export declare function verifySignature(serializedTx: string, signature: string, publicKey: string): boolean;
53
+ /**
54
+ * Converts a base58 string into a Uint8Array.
55
+ *
56
+ * @param {string} input - a string in base58
57
+ * @returns {Uint8Array} - an Uint8Array
58
+ */
59
+ export declare function base58ToUint8Array(input: string): Uint8Array;
60
+ /**
61
+ * Converts a Uint8Array to a base58 string.
62
+ *
63
+ * @param {Uint8Array} input - an Uint8Array
64
+ * @returns {string} - a string in base58
65
+ */
66
+ export declare function Uint8ArrayTobase58(input: Uint8Array): string;
67
+ /**
68
+ * Count the amount of signatures are not null.
69
+ *
70
+ * @param {SignaturePubkeyPair[]} signatures - an array of SignaturePubkeyPair
71
+ * @returns {number} - the amount of valid signatures
72
+ */
73
+ export declare function countNotNullSignatures(signatures: SignaturePubkeyPair[]): number;
74
+ /**
75
+ * Check if all signatures are completed.
76
+ *
77
+ * @param {SignaturePubkeyPair[]} signatures - signatures
78
+ * @returns {boolean}
79
+ */
80
+ export declare function requiresAllSignatures(signatures: SignaturePubkeyPair[]): boolean;
81
+ /**
82
+ * Check the transaction type matching instructions by order.
83
+ *
84
+ * @param {TransactionInstruction[]} instructions - the array of supported Solana instructions to be parsed
85
+ * @param {Record<string, number>} instructionIndexes - the instructions indexes of the current transaction
86
+ * @returns true if it matchs by order.
87
+ */
88
+ export declare function matchTransactionTypeByInstructionsOrder(instructions: TransactionInstruction[], instructionIndexes: Record<string, number>): boolean;
89
+ /**
90
+ * Returns the transaction Type based on the transaction instructions.
91
+ * Wallet initialization, Transfer and Staking transactions are supported.
92
+ *
93
+ * @param {SolTransaction} transaction - the solana transaction
94
+ * @returns {TransactionType} - the type of transaction
95
+ */
96
+ export declare function getTransactionType(transaction: SolTransaction): TransactionType;
97
+ /**
98
+ * Returns the a instruction Type based on the solana instructions.
99
+ * Throws if the solana instruction program is not supported
100
+ *
101
+ * @param {TransactionInstruction} instruction - a solana instruction
102
+ * @returns {ValidInstructionTypes} - a solana instruction type
103
+ */
104
+ export declare function getInstructionType(instruction: TransactionInstruction): ValidInstructionTypes;
105
+ /**
106
+ * Validate solana instructions types to see if they are supported by the builder.
107
+ * Throws if the instruction type is invalid.
108
+ *
109
+ * @param {TransactionInstruction} instruction - a solana instruction
110
+ * @returns {void}
111
+ */
112
+ export declare function validateIntructionTypes(instructions: TransactionInstruction[]): void;
113
+ /**
114
+ * Check the raw transaction has a valid format in the blockchain context, throw otherwise.
115
+ *
116
+ * @param {string} rawTransaction - Transaction in base64 string format
117
+ */
118
+ export declare function validateRawTransaction(rawTransaction: string): void;
119
+ /**
120
+ * Validates address to check if it exists and is a valid Solana public key
121
+ *
122
+ * @param {string} address The address to be validated
123
+ * @param {string} fieldName Name of the field to validate, its needed to return which field is failing on case of error.
124
+ */
125
+ export declare function validateAddress(address: string, fieldName: string): void;
126
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/coin/sol/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,mBAAmB,EAKnB,WAAW,IAAI,cAAc,EAC7B,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AAYzB,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAQhD,kBAAkB;AAClB,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED,kBAAkB;AAClB,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAQpD;AAED,kBAAkB;AAClB,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO,CAOtE;AAED,kBAAkB;AAClB,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAQxD;AAED,kBAAkB;AAClB,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAM3D;AAED,kBAAkB;AAElB,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAGrD;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAG5D;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjD;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAQrE;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAcnG;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAE5D;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAE5D;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,mBAAmB,EAAE,GAAG,MAAM,CAEhF;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAEhF;AAED;;;;;;GAMG;AACH,wBAAgB,uCAAuC,CACrD,YAAY,EAAE,sBAAsB,EAAE,EACtC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACzC,OAAO,CAeT;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,cAAc,GAAG,eAAe,CAa/E;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,sBAAsB,GAAG,qBAAqB,CAa7F;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,sBAAsB,EAAE,GAAG,IAAI,CAMpF;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAOnE;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAIxE"}
@@ -0,0 +1,315 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ var __importDefault = (this && this.__importDefault) || function (mod) {
22
+ return (mod && mod.__esModule) ? mod : { "default": mod };
23
+ };
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.validateAddress = exports.validateRawTransaction = exports.validateIntructionTypes = exports.getInstructionType = exports.getTransactionType = exports.matchTransactionTypeByInstructionsOrder = exports.requiresAllSignatures = exports.countNotNullSignatures = exports.Uint8ArrayTobase58 = exports.base58ToUint8Array = exports.verifySignature = exports.isValidRawTransaction = exports.isValidMemo = exports.isValidStakingAmount = exports.isValidAmount = exports.isValidTransactionId = exports.isValidSignature = exports.isValidPublicKey = exports.isValidPrivateKey = exports.isValidBlockId = exports.isValidAddress = void 0;
26
+ var web3_js_1 = require("@solana/web3.js");
27
+ var bs58_1 = __importDefault(require("bs58"));
28
+ var bignumber_js_1 = __importDefault(require("bignumber.js"));
29
+ var constants_1 = require("./constants");
30
+ var baseCoin_1 = require("../baseCoin");
31
+ var errors_1 = require("../baseCoin/errors");
32
+ var tweetnacl_1 = __importDefault(require("tweetnacl"));
33
+ var Crypto = __importStar(require("./../../utils/crypto"));
34
+ var DECODED_BLOCK_HASH_LENGTH = 32; // https://docs.solana.com/developing/programming-model/transactions#blockhash-format
35
+ var DECODED_SIGNATURE_LENGTH = 64; // https://docs.solana.com/terminology#signature
36
+ var BASE_58_ENCONDING_REGEX = '[1-9A-HJ-NP-Za-km-z]';
37
+ /** @inheritdoc */
38
+ function isValidAddress(address) {
39
+ return isValidPublicKey(address);
40
+ }
41
+ exports.isValidAddress = isValidAddress;
42
+ /** @inheritdoc */
43
+ function isValidBlockId(hash) {
44
+ try {
45
+ return (!!hash && new RegExp(BASE_58_ENCONDING_REGEX).test(hash) && bs58_1.default.decode(hash).length === DECODED_BLOCK_HASH_LENGTH);
46
+ }
47
+ catch (e) {
48
+ return false;
49
+ }
50
+ }
51
+ exports.isValidBlockId = isValidBlockId;
52
+ /** @inheritdoc */
53
+ function isValidPrivateKey(prvKey) {
54
+ try {
55
+ var key = typeof prvKey === 'string' ? this.base58ToUint8Array(prvKey) : prvKey;
56
+ return !!web3_js_1.Keypair.fromSecretKey(key);
57
+ }
58
+ catch (e) {
59
+ return false;
60
+ }
61
+ }
62
+ exports.isValidPrivateKey = isValidPrivateKey;
63
+ /** @inheritdoc */
64
+ function isValidPublicKey(pubKey) {
65
+ try {
66
+ if (Crypto.isValidXpub(pubKey))
67
+ return true;
68
+ new web3_js_1.PublicKey(pubKey);
69
+ return true;
70
+ }
71
+ catch (_a) {
72
+ return false;
73
+ }
74
+ }
75
+ exports.isValidPublicKey = isValidPublicKey;
76
+ /** @inheritdoc */
77
+ function isValidSignature(signature) {
78
+ try {
79
+ return !!signature && bs58_1.default.decode(signature).length === DECODED_SIGNATURE_LENGTH;
80
+ }
81
+ catch (e) {
82
+ return false;
83
+ }
84
+ }
85
+ exports.isValidSignature = isValidSignature;
86
+ /** @inheritdoc */
87
+ // TransactionId are the first signature on a Transaction
88
+ function isValidTransactionId(txId) {
89
+ return this.isValidSignature(txId);
90
+ }
91
+ exports.isValidTransactionId = isValidTransactionId;
92
+ /**
93
+ * Returns whether or not the string is a valid amount of lamports number
94
+ *
95
+ * @param {string} amount - the string to validate
96
+ * @returns {boolean} - the validation result
97
+ */
98
+ function isValidAmount(amount) {
99
+ var bigNumberAmount = new bignumber_js_1.default(amount);
100
+ return bigNumberAmount.isInteger() && bigNumberAmount.isGreaterThanOrEqualTo(0);
101
+ }
102
+ exports.isValidAmount = isValidAmount;
103
+ /**
104
+ * Check if the string is a valid amount of lamports number on staking
105
+ *
106
+ * @param {string} amount - the string to validate
107
+ * @returns {boolean} - the validation result
108
+ */
109
+ function isValidStakingAmount(amount) {
110
+ var bigNumberAmount = new bignumber_js_1.default(amount);
111
+ return bigNumberAmount.isInteger() && bigNumberAmount.isGreaterThan(0);
112
+ }
113
+ exports.isValidStakingAmount = isValidStakingAmount;
114
+ /**
115
+ * Check if this is a valid memo or not.
116
+ *
117
+ * @param memo - the memo string
118
+ * @returns {boolean} - the validation result
119
+ */
120
+ function isValidMemo(memo) {
121
+ return Buffer.from(memo).length <= constants_1.MAX_MEMO_LENGTH;
122
+ }
123
+ exports.isValidMemo = isValidMemo;
124
+ /**
125
+ * Checks if raw transaction can be deserialized
126
+ *
127
+ * @param {string} rawTransaction - transaction in base64 string format
128
+ * @returns {boolean} - the validation result
129
+ */
130
+ function isValidRawTransaction(rawTransaction) {
131
+ try {
132
+ var tx = web3_js_1.Transaction.from(Buffer.from(rawTransaction, 'base64'));
133
+ tx.serialize({ requireAllSignatures: false });
134
+ return true;
135
+ }
136
+ catch (e) {
137
+ return false;
138
+ }
139
+ }
140
+ exports.isValidRawTransaction = isValidRawTransaction;
141
+ /**
142
+ * Verifies if signature for message is valid.
143
+ *
144
+ * @param {Buffer} serializedTx - tx as a base64 string
145
+ * @param {string} signature - signature as a string
146
+ * @param {string} publicKey - public key as base 58
147
+ * @returns {Boolean} true if signature is valid.
148
+ */
149
+ function verifySignature(serializedTx, signature, publicKey) {
150
+ if (!isValidRawTransaction(serializedTx)) {
151
+ throw new errors_1.UtilsError('Invalid serializedTx');
152
+ }
153
+ if (!isValidPublicKey(publicKey)) {
154
+ throw new errors_1.UtilsError('Invalid publicKey');
155
+ }
156
+ if (!isValidSignature(signature)) {
157
+ throw new errors_1.UtilsError('Invalid signature');
158
+ }
159
+ var msg = web3_js_1.Transaction.from(Buffer.from(serializedTx, 'base64')).serializeMessage();
160
+ var sig = base58ToUint8Array(signature);
161
+ var pub = new web3_js_1.PublicKey(publicKey);
162
+ return tweetnacl_1.default.sign.detached.verify(msg, sig, pub.toBuffer());
163
+ }
164
+ exports.verifySignature = verifySignature;
165
+ /**
166
+ * Converts a base58 string into a Uint8Array.
167
+ *
168
+ * @param {string} input - a string in base58
169
+ * @returns {Uint8Array} - an Uint8Array
170
+ */
171
+ function base58ToUint8Array(input) {
172
+ return new Uint8Array(bs58_1.default.decode(input));
173
+ }
174
+ exports.base58ToUint8Array = base58ToUint8Array;
175
+ /**
176
+ * Converts a Uint8Array to a base58 string.
177
+ *
178
+ * @param {Uint8Array} input - an Uint8Array
179
+ * @returns {string} - a string in base58
180
+ */
181
+ function Uint8ArrayTobase58(input) {
182
+ return bs58_1.default.encode(input);
183
+ }
184
+ exports.Uint8ArrayTobase58 = Uint8ArrayTobase58;
185
+ /**
186
+ * Count the amount of signatures are not null.
187
+ *
188
+ * @param {SignaturePubkeyPair[]} signatures - an array of SignaturePubkeyPair
189
+ * @returns {number} - the amount of valid signatures
190
+ */
191
+ function countNotNullSignatures(signatures) {
192
+ return signatures.filter(function (sig) { return !!sig.signature; }).length;
193
+ }
194
+ exports.countNotNullSignatures = countNotNullSignatures;
195
+ /**
196
+ * Check if all signatures are completed.
197
+ *
198
+ * @param {SignaturePubkeyPair[]} signatures - signatures
199
+ * @returns {boolean}
200
+ */
201
+ function requiresAllSignatures(signatures) {
202
+ return signatures.length > 0 && countNotNullSignatures(signatures) === signatures.length;
203
+ }
204
+ exports.requiresAllSignatures = requiresAllSignatures;
205
+ /**
206
+ * Check the transaction type matching instructions by order.
207
+ *
208
+ * @param {TransactionInstruction[]} instructions - the array of supported Solana instructions to be parsed
209
+ * @param {Record<string, number>} instructionIndexes - the instructions indexes of the current transaction
210
+ * @returns true if it matchs by order.
211
+ */
212
+ function matchTransactionTypeByInstructionsOrder(instructions, instructionIndexes) {
213
+ var instructionsKeys = Object.keys(instructionIndexes);
214
+ // Memo is optional and the last instruction added, it does not matter to match the type
215
+ if (instructionsKeys[instructionsKeys.length - 1] === 'Memo') {
216
+ instructionsKeys.pop();
217
+ }
218
+ // Check instructions by order using the index.
219
+ for (var _i = 0, instructionsKeys_1 = instructionsKeys; _i < instructionsKeys_1.length; _i++) {
220
+ var keyName = instructionsKeys_1[_i];
221
+ if (getInstructionType(instructions[instructionIndexes[keyName]]) !== keyName) {
222
+ return false;
223
+ }
224
+ }
225
+ return true;
226
+ }
227
+ exports.matchTransactionTypeByInstructionsOrder = matchTransactionTypeByInstructionsOrder;
228
+ /**
229
+ * Returns the transaction Type based on the transaction instructions.
230
+ * Wallet initialization, Transfer and Staking transactions are supported.
231
+ *
232
+ * @param {SolTransaction} transaction - the solana transaction
233
+ * @returns {TransactionType} - the type of transaction
234
+ */
235
+ function getTransactionType(transaction) {
236
+ var instructions = transaction.instructions;
237
+ validateIntructionTypes(instructions);
238
+ if (matchTransactionTypeByInstructionsOrder(instructions, constants_1.walletInitInstructionIndexes)) {
239
+ return baseCoin_1.TransactionType.WalletInitialization;
240
+ }
241
+ else if (matchTransactionTypeByInstructionsOrder(instructions, constants_1.stakingActivateInstructionsIndexes)) {
242
+ return baseCoin_1.TransactionType.StakingActivate;
243
+ }
244
+ else if (matchTransactionTypeByInstructionsOrder(instructions, constants_1.stakingDeactivateInstructionsIndexes)) {
245
+ return baseCoin_1.TransactionType.StakingDeactivate;
246
+ }
247
+ else if (matchTransactionTypeByInstructionsOrder(instructions, constants_1.stakingWithdrawInstructionsIndexes)) {
248
+ return baseCoin_1.TransactionType.StakingWithdraw;
249
+ }
250
+ return baseCoin_1.TransactionType.Send;
251
+ }
252
+ exports.getTransactionType = getTransactionType;
253
+ /**
254
+ * Returns the a instruction Type based on the solana instructions.
255
+ * Throws if the solana instruction program is not supported
256
+ *
257
+ * @param {TransactionInstruction} instruction - a solana instruction
258
+ * @returns {ValidInstructionTypes} - a solana instruction type
259
+ */
260
+ function getInstructionType(instruction) {
261
+ switch (instruction.programId.toString()) {
262
+ case new web3_js_1.PublicKey(constants_1.MEMO_PROGRAM_PK).toString():
263
+ return 'Memo';
264
+ case web3_js_1.SystemProgram.programId.toString():
265
+ return web3_js_1.SystemInstruction.decodeInstructionType(instruction);
266
+ case web3_js_1.StakeProgram.programId.toString():
267
+ return web3_js_1.StakeInstruction.decodeInstructionType(instruction);
268
+ default:
269
+ throw new errors_1.NotSupported('Invalid transaction, instruction program id not supported: ' + instruction.programId.toString());
270
+ }
271
+ }
272
+ exports.getInstructionType = getInstructionType;
273
+ /**
274
+ * Validate solana instructions types to see if they are supported by the builder.
275
+ * Throws if the instruction type is invalid.
276
+ *
277
+ * @param {TransactionInstruction} instruction - a solana instruction
278
+ * @returns {void}
279
+ */
280
+ function validateIntructionTypes(instructions) {
281
+ for (var _i = 0, instructions_1 = instructions; _i < instructions_1.length; _i++) {
282
+ var instruction = instructions_1[_i];
283
+ if (!constants_1.VALID_SYSTEM_INSTRUCTION_TYPES.includes(getInstructionType(instruction))) {
284
+ throw new errors_1.NotSupported('Invalid transaction, instruction type not supported: ' + getInstructionType(instruction));
285
+ }
286
+ }
287
+ }
288
+ exports.validateIntructionTypes = validateIntructionTypes;
289
+ /**
290
+ * Check the raw transaction has a valid format in the blockchain context, throw otherwise.
291
+ *
292
+ * @param {string} rawTransaction - Transaction in base64 string format
293
+ */
294
+ function validateRawTransaction(rawTransaction) {
295
+ if (!rawTransaction) {
296
+ throw new errors_1.ParseTransactionError('Invalid raw transaction: Undefined');
297
+ }
298
+ if (!isValidRawTransaction(rawTransaction)) {
299
+ throw new errors_1.ParseTransactionError('Invalid raw transaction');
300
+ }
301
+ }
302
+ exports.validateRawTransaction = validateRawTransaction;
303
+ /**
304
+ * Validates address to check if it exists and is a valid Solana public key
305
+ *
306
+ * @param {string} address The address to be validated
307
+ * @param {string} fieldName Name of the field to validate, its needed to return which field is failing on case of error.
308
+ */
309
+ function validateAddress(address, fieldName) {
310
+ if (!address || !isValidPublicKey(address)) {
311
+ throw new errors_1.BuildTransactionError("Invalid or missing " + fieldName + ", got: " + address);
312
+ }
313
+ }
314
+ exports.validateAddress = validateAddress;
315
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29pbi9zb2wvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQVV5QjtBQUN6Qiw4Q0FBd0I7QUFDeEIsOERBQXFDO0FBQ3JDLHlDQVFxQjtBQUNyQix3Q0FBOEM7QUFDOUMsNkNBQTRHO0FBRTVHLHdEQUE2QjtBQUM3QiwyREFBK0M7QUFFL0MsSUFBTSx5QkFBeUIsR0FBRyxFQUFFLENBQUMsQ0FBQyxxRkFBcUY7QUFDM0gsSUFBTSx3QkFBd0IsR0FBRyxFQUFFLENBQUMsQ0FBQyxnREFBZ0Q7QUFDckYsSUFBTSx1QkFBdUIsR0FBRyxzQkFBc0IsQ0FBQztBQUV2RCxrQkFBa0I7QUFDbEIsU0FBZ0IsY0FBYyxDQUFDLE9BQWU7SUFDNUMsT0FBTyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNuQyxDQUFDO0FBRkQsd0NBRUM7QUFFRCxrQkFBa0I7QUFDbEIsU0FBZ0IsY0FBYyxDQUFDLElBQVk7SUFDekMsSUFBSTtRQUNGLE9BQU8sQ0FDTCxDQUFDLENBQUMsSUFBSSxJQUFJLElBQUksTUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLGNBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLHlCQUF5QixDQUNuSCxDQUFDO0tBQ0g7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7QUFDSCxDQUFDO0FBUkQsd0NBUUM7QUFFRCxrQkFBa0I7QUFDbEIsU0FBZ0IsaUJBQWlCLENBQUMsTUFBMkI7SUFDM0QsSUFBSTtRQUNGLElBQU0sR0FBRyxHQUFlLE9BQU8sTUFBTSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FB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QztBQU5ELDBEQU1DO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLHNCQUFzQixDQUFDLGNBQXNCO0lBQzNELElBQUksQ0FBQyxjQUFjLEVBQUU7UUFDbkIsTUFBTSxJQUFJLDhCQUFxQixDQUFDLG9DQUFvQyxDQUFDLENBQUM7S0FDdkU7SUFDRCxJQUFJLENBQUMscUJBQXFCLENBQUMsY0FBYyxDQUFDLEVBQUU7UUFDMUMsTUFBTSxJQUFJLDhCQUFxQixDQUFDLHlCQUF5QixDQUFDLENBQUM7S0FDNUQ7QUFDSCxDQUFDO0FBUEQsd0RBT0M7QUFFRDs7Ozs7R0FLRztBQUNILFNBQWdCLGVBQWUsQ0FBQyxPQUFlLEVBQUUsU0FBaUI7SUFDaEUsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQzFDLE1BQU0sSUFBSSw4QkFBcUIsQ0FBQyx3QkFBc0IsU0FBUyxlQUFVLE9BQVMsQ0FBQyxDQUFDO0tBQ3JGO0FBQ0gsQ0FBQztBQUpELDBDQUlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgS2V5cGFpcixcbiAgUHVibGljS2V5LFxuICBTaWduYXR1cmVQdWJrZXlQYWlyLFxuICBTdGFrZUluc3RydWN0aW9uLFxuICBTdGFrZVByb2dyYW0sXG4gIFN5c3RlbUluc3RydWN0aW9uLFxuICBTeXN0ZW1Qcm9ncmFtLFxuICBUcmFuc2FjdGlvbiBhcyBTb2xUcmFuc2FjdGlvbixcbiAgVHJhbnNhY3Rpb25JbnN0cnVjdGlvbixcbn0gZnJvbSAnQHNvbGFuYS93ZWIzLmpzJztcbmltcG9ydCBiczU4IGZyb20gJ2JzNTgnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IHtcbiAgTUFYX01FTU9fTEVOR1RILFxuICBNRU1PX1BST0dSQU1fUEssXG4gIHN0YWtpbmdBY3RpdmF0ZUluc3RydWN0aW9uc0luZGV4ZXMsXG4gIHN0YWtpbmdEZWFjdGl2YXRlSW5zdHJ1Y3Rpb25zSW5kZXhlcyxcbiAgc3Rha2luZ1dpdGhkcmF3SW5zdHJ1Y3Rpb25zSW5kZXhlcyxcbiAgVkFMSURfU1lTVEVNX0lOU1RSVUNUSU9OX1RZUEVTLFxuICB3YWxsZXRJbml0SW5zdHJ1Y3Rpb25JbmRleGVzLFxufSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICcuLi9iYXNlQ29pbic7XG5pbXBvcnQgeyBOb3RTdXBwb3J0ZWQsIFBhcnNlVHJhbnNhY3Rpb25FcnJvciwgVXRpbHNFcnJvciwgQnVpbGRUcmFuc2FjdGlvbkVycm9yIH0gZnJvbSAnLi4vYmFzZUNvaW4vZXJyb3JzJztcbmltcG9ydCB7IFZhbGlkSW5zdHJ1Y3Rpb25UeXBlcyB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IG5hY2wgZnJvbSAndHdlZXRuYWNsJztcbmltcG9ydCAqIGFzIENyeXB0byBmcm9tICcuLy4uLy4uL3V0aWxzL2NyeXB0byc7XG5cbmNvbnN0IERFQ09ERURfQkxPQ0tfSEFTSF9MRU5HVEggPSAzMjsgLy8gaHR0cHM6Ly9kb2NzLnNvbGFuYS5jb20vZGV2ZWxvcGluZy9wcm9ncmFtbWluZy1tb2RlbC90cmFuc2FjdGlvbnMjYmxvY2toYXNoLWZvcm1hdFxuY29uc3QgREVDT0RFRF9TSUdOQVRVUkVfTEVOR1RIID0gNjQ7IC8vIGh0dHBzOi8vZG9jcy5zb2xhbmEuY29tL3Rlcm1pbm9sb2d5I3NpZ25hdHVyZVxuY29uc3QgQkFTRV81OF9FTkNPTkRJTkdfUkVHRVggPSAnWzEtOUEtSEotTlAtWmEta20tel0nO1xuXG4vKiogQGluaGVyaXRkb2MgKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIGlzVmFsaWRQdWJsaWNLZXkoYWRkcmVzcyk7XG59XG5cbi8qKiBAaW5oZXJpdGRvYyAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRCbG9ja0lkKGhhc2g6IHN0cmluZyk6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIHJldHVybiAoXG4gICAgICAhIWhhc2ggJiYgbmV3IFJlZ0V4cChCQVNFXzU4X0VOQ09ORElOR19SRUdFWCkudGVzdChoYXNoKSAmJiBiczU4LmRlY29kZShoYXNoKS5sZW5ndGggPT09IERFQ09ERURfQkxPQ0tfSEFTSF9MRU5HVEhcbiAgICApO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKiBAaW5oZXJpdGRvYyAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRQcml2YXRlS2V5KHBydktleTogc3RyaW5nIHwgVWludDhBcnJheSk6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIGNvbnN0IGtleTogVWludDhBcnJheSA9IHR5cGVvZiBwcnZLZXkgPT09ICdzdHJpbmcnID8gdGhpcy5iYXNlNThUb1VpbnQ4QXJyYXkocHJ2S2V5KSA6IHBydktleTtcbiAgICByZXR1cm4gISFLZXlwYWlyLmZyb21TZWNyZXRLZXkoa2V5KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKiogQGluaGVyaXRkb2MgKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkUHVibGljS2V5KHB1YktleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHRyeSB7XG4gICAgaWYgKENyeXB0by5pc1ZhbGlkWHB1YihwdWJLZXkpKSByZXR1cm4gdHJ1ZTtcbiAgICBuZXcgUHVibGljS2V5KHB1YktleSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKiogQGluaGVyaXRkb2MgKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkU2lnbmF0dXJlKHNpZ25hdHVyZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuICEhc2lnbmF0dXJlICYmIGJzNTguZGVjb2RlKHNpZ25hdHVyZSkubGVuZ3RoID09PSBERUNPREVEX1NJR05BVFVSRV9MRU5HVEg7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqIEBpbmhlcml0ZG9jICovXG4vLyBUcmFuc2FjdGlvbklkIGFyZSB0aGUgZmlyc3Qgc2lnbmF0dXJlIG9uIGEgVHJhbnNhY3Rpb25cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkVHJhbnNhY3Rpb25JZCh0eElkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIHRoaXMuaXNWYWxpZFNpZ25hdHVyZSh0eElkKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBzdHJpbmcgaXMgYSB2YWxpZCBhbW91bnQgb2YgbGFtcG9ydHMgbnVtYmVyXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFtb3VudCAtIHRoZSBzdHJpbmcgdG8gdmFsaWRhdGVcbiAqIEByZXR1cm5zIHtib29sZWFufSAtIHRoZSB2YWxpZGF0aW9uIHJlc3VsdFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZEFtb3VudChhbW91bnQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBjb25zdCBiaWdOdW1iZXJBbW91bnQgPSBuZXcgQmlnTnVtYmVyKGFtb3VudCk7XG4gIHJldHVybiBiaWdOdW1iZXJBbW91bnQuaXNJbnRlZ2VyKCkgJiYgYmlnTnVtYmVyQW1vdW50LmlzR3JlYXRlclRoYW5PckVxdWFsVG8oMCk7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIHN0cmluZyBpcyBhIHZhbGlkIGFtb3VudCBvZiBsYW1wb3J0cyBudW1iZXIgb24gc3Rha2luZ1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBhbW91bnQgLSB0aGUgc3RyaW5nIHRvIHZhbGlkYXRlXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSB0aGUgdmFsaWRhdGlvbiByZXN1bHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRTdGFraW5nQW1vdW50KGFtb3VudDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IGJpZ051bWJlckFtb3VudCA9IG5ldyBCaWdOdW1iZXIoYW1vdW50KTtcbiAgcmV0dXJuIGJpZ051bWJlckFtb3VudC5pc0ludGVnZXIoKSAmJiBiaWdOdW1iZXJBbW91bnQuaXNHcmVhdGVyVGhhbigwKTtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiB0aGlzIGlzIGEgdmFsaWQgbWVtbyBvciBub3QuXG4gKlxuICogQHBhcmFtIG1lbW8gLSB0aGUgbWVtbyBzdHJpbmdcbiAqIEByZXR1cm5zIHtib29sZWFufSAtIHRoZSB2YWxpZGF0aW9uIHJlc3VsdFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZE1lbW8obWVtbzogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBCdWZmZXIuZnJvbShtZW1vKS5sZW5ndGggPD0gTUFYX01FTU9fTEVOR1RIO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiByYXcgdHJhbnNhY3Rpb24gY2FuIGJlIGRlc2VyaWFsaXplZFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSByYXdUcmFuc2FjdGlvbiAtIHRyYW5zYWN0aW9uIGluIGJhc2U2NCBzdHJpbmcgZm9ybWF0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSB0aGUgdmFsaWRhdGlvbiByZXN1bHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRSYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHRyeSB7XG4gICAgY29uc3QgdHggPSBTb2xUcmFuc2FjdGlvbi5mcm9tKEJ1ZmZlci5mcm9tKHJhd1RyYW5zYWN0aW9uLCAnYmFzZTY0JykpO1xuICAgIHR4LnNlcmlhbGl6ZSh7IHJlcXVpcmVBbGxTaWduYXR1cmVzOiBmYWxzZSB9KTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIFZlcmlmaWVzIGlmIHNpZ25hdHVyZSBmb3IgbWVzc2FnZSBpcyB2YWxpZC5cbiAqXG4gKiBAcGFyYW0ge0J1ZmZlcn0gc2VyaWFsaXplZFR4IC0gdHggYXMgYSBiYXNlNjQgc3RyaW5nXG4gKiBAcGFyYW0ge3N0cmluZ30gc2lnbmF0dXJlIC0gc2lnbmF0dXJlIGFzIGEgc3RyaW5nXG4gKiBAcGFyYW0ge3N0cmluZ30gcHVibGljS2V5IC0gcHVibGljIGtleSBhcyBiYXNlIDU4XG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gdHJ1ZSBpZiBzaWduYXR1cmUgaXMgdmFsaWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2ZXJpZnlTaWduYXR1cmUoc2VyaWFsaXplZFR4OiBzdHJpbmcsIHNpZ25hdHVyZTogc3RyaW5nLCBwdWJsaWNLZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBpZiAoIWlzVmFsaWRSYXdUcmFuc2FjdGlvbihzZXJpYWxpemVkVHgpKSB7XG4gICAgdGhyb3cgbmV3IFV0aWxzRXJyb3IoJ0ludmFsaWQgc2VyaWFsaXplZFR4Jyk7XG4gIH1cbiAgaWYgKCFpc1ZhbGlkUHVibGljS2V5KHB1YmxpY0tleSkpIHtcbiAgICB0aHJvdyBuZXcgVXRpbHNFcnJvcignSW52YWxpZCBwdWJsaWNLZXknKTtcbiAgfVxuICBpZiAoIWlzVmFsaWRTaWduYXR1cmUoc2lnbmF0dXJlKSkge1xuICAgIHRocm93IG5ldyBVdGlsc0Vycm9yKCdJbnZhbGlkIHNpZ25hdHVyZScpO1xuICB9XG4gIGNvbnN0IG1zZyA9IFNvbFRyYW5zYWN0aW9uLmZyb20oQnVmZmVyLmZyb20oc2VyaWFsaXplZFR4LCAnYmFzZTY0JykpLnNlcmlhbGl6ZU1lc3NhZ2UoKTtcbiAgY29uc3Qgc2lnID0gYmFzZTU4VG9VaW50OEFycmF5KHNpZ25hdHVyZSk7XG4gIGNvbnN0IHB1YiA9IG5ldyBQdWJsaWNLZXkocHVibGljS2V5KTtcbiAgcmV0dXJuIG5hY2wuc2lnbi5kZXRhY2hlZC52ZXJpZnkobXNnLCBzaWcsIHB1Yi50b0J1ZmZlcigpKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIGJhc2U1OCBzdHJpbmcgaW50byBhIFVpbnQ4QXJyYXkuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGlucHV0IC0gYSBzdHJpbmcgaW4gYmFzZTU4XG4gKiBAcmV0dXJucyB7VWludDhBcnJheX0gLSBhbiBVaW50OEFycmF5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiYXNlNThUb1VpbnQ4QXJyYXkoaW5wdXQ6IHN0cmluZyk6IFVpbnQ4QXJyYXkge1xuICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoYnM1OC5kZWNvZGUoaW5wdXQpKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIFVpbnQ4QXJyYXkgdG8gYSBiYXNlNTggc3RyaW5nLlxuICpcbiAqIEBwYXJhbSB7VWludDhBcnJheX0gaW5wdXQgLSBhbiBVaW50OEFycmF5XG4gKiBAcmV0dXJucyB7c3RyaW5nfSAtIGEgc3RyaW5nIGluIGJhc2U1OFxuICovXG5leHBvcnQgZnVuY3Rpb24gVWludDhBcnJheVRvYmFzZTU4KGlucHV0OiBVaW50OEFycmF5KTogc3RyaW5nIHtcbiAgcmV0dXJuIGJzNTguZW5jb2RlKGlucHV0KTtcbn1cblxuLyoqXG4gKiBDb3VudCB0aGUgYW1vdW50IG9mIHNpZ25hdHVyZXMgYXJlIG5vdCBudWxsLlxuICpcbiAqIEBwYXJhbSB7U2lnbmF0dXJlUHVia2V5UGFpcltdfSBzaWduYXR1cmVzIC0gYW4gYXJyYXkgb2YgU2lnbmF0dXJlUHVia2V5UGFpclxuICogQHJldHVybnMge251bWJlcn0gLSB0aGUgYW1vdW50IG9mIHZhbGlkIHNpZ25hdHVyZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvdW50Tm90TnVsbFNpZ25hdHVyZXMoc2lnbmF0dXJlczogU2lnbmF0dXJlUHVia2V5UGFpcltdKTogbnVtYmVyIHtcbiAgcmV0dXJuIHNpZ25hdHVyZXMuZmlsdGVyKChzaWcpID0+ICEhc2lnLnNpZ25hdHVyZSkubGVuZ3RoO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIGFsbCBzaWduYXR1cmVzIGFyZSBjb21wbGV0ZWQuXG4gKlxuICogQHBhcmFtIHtTaWduYXR1cmVQdWJrZXlQYWlyW119IHNpZ25hdHVyZXMgLSBzaWduYXR1cmVzXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlcXVpcmVzQWxsU2lnbmF0dXJlcyhzaWduYXR1cmVzOiBTaWduYXR1cmVQdWJrZXlQYWlyW10pOiBib29sZWFuIHtcbiAgcmV0dXJuIHNpZ25hdHVyZXMubGVuZ3RoID4gMCAmJiBjb3VudE5vdE51bGxTaWduYXR1cmVzKHNpZ25hdHVyZXMpID09PSBzaWduYXR1cmVzLmxlbmd0aDtcbn1cblxuLyoqXG4gKiBDaGVjayB0aGUgdHJhbnNhY3Rpb24gdHlwZSBtYXRjaGluZyBpbnN0cnVjdGlvbnMgYnkgb3JkZXIuXG4gKlxuICogQHBhcmFtIHtUcmFuc2FjdGlvbkluc3RydWN0aW9uW119IGluc3RydWN0aW9ucyAtIHRoZSBhcnJheSBvZiBzdXBwb3J0ZWQgU29sYW5hIGluc3RydWN0aW9ucyB0byBiZSBwYXJzZWRcbiAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgbnVtYmVyPn0gaW5zdHJ1Y3Rpb25JbmRleGVzIC0gdGhlIGluc3RydWN0aW9ucyBpbmRleGVzIG9mIHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uXG4gKiBAcmV0dXJucyB0cnVlIGlmIGl0IG1hdGNocyBieSBvcmRlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hdGNoVHJhbnNhY3Rpb25UeXBlQnlJbnN0cnVjdGlvbnNPcmRlcihcbiAgaW5zdHJ1Y3Rpb25zOiBUcmFuc2FjdGlvbkluc3RydWN0aW9uW10sXG4gIGluc3RydWN0aW9uSW5kZXhlczogUmVjb3JkPHN0cmluZywgbnVtYmVyPixcbik6IGJvb2xlYW4ge1xuICBjb25zdCBpbnN0cnVjdGlvbnNLZXlzID0gT2JqZWN0LmtleXMoaW5zdHJ1Y3Rpb25JbmRleGVzKTtcblxuICAvLyBNZW1vIGlzIG9wdGlvbmFsIGFuZCB0aGUgbGFzdCBpbnN0cnVjdGlvbiBhZGRlZCwgaXQgZG9lcyBub3QgbWF0dGVyIHRvIG1hdGNoIHRoZSB0eXBlXG4gIGlmIChpbnN0cnVjdGlvbnNLZXlzW2luc3RydWN0aW9uc0tleXMubGVuZ3RoIC0gMV0gPT09ICdNZW1vJykge1xuICAgIGluc3RydWN0aW9uc0tleXMucG9wKCk7XG4gIH1cblxuICAvLyBDaGVjayBpbnN0cnVjdGlvbnMgYnkgb3JkZXIgdXNpbmcgdGhlIGluZGV4LlxuICBmb3IgKGNvbnN0IGtleU5hbWUgb2YgaW5zdHJ1Y3Rpb25zS2V5cykge1xuICAgIGlmIChnZXRJbnN0cnVjdGlvblR5cGUoaW5zdHJ1Y3Rpb25zW2luc3RydWN0aW9uSW5kZXhlc1trZXlOYW1lXV0pICE9PSBrZXlOYW1lKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIHRyYW5zYWN0aW9uIFR5cGUgYmFzZWQgb24gdGhlICB0cmFuc2FjdGlvbiBpbnN0cnVjdGlvbnMuXG4gKiBXYWxsZXQgaW5pdGlhbGl6YXRpb24sIFRyYW5zZmVyIGFuZCBTdGFraW5nIHRyYW5zYWN0aW9ucyBhcmUgc3VwcG9ydGVkLlxuICpcbiAqIEBwYXJhbSB7U29sVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uIC0gdGhlIHNvbGFuYSB0cmFuc2FjdGlvblxuICogQHJldHVybnMge1RyYW5zYWN0aW9uVHlwZX0gLSB0aGUgdHlwZSBvZiB0cmFuc2FjdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHJhbnNhY3Rpb25UeXBlKHRyYW5zYWN0aW9uOiBTb2xUcmFuc2FjdGlvbik6IFRyYW5zYWN0aW9uVHlwZSB7XG4gIGNvbnN0IHsgaW5zdHJ1Y3Rpb25zIH0gPSB0cmFuc2FjdGlvbjtcbiAgdmFsaWRhdGVJbnRydWN0aW9uVHlwZXMoaW5zdHJ1Y3Rpb25zKTtcbiAgaWYgKG1hdGNoVHJhbnNhY3Rpb25UeXBlQnlJbnN0cnVjdGlvbnNPcmRlcihpbnN0cnVjdGlvbnMsIHdhbGxldEluaXRJbnN0cnVjdGlvbkluZGV4ZXMpKSB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5XYWxsZXRJbml0aWFsaXphdGlvbjtcbiAgfSBlbHNlIGlmIChtYXRjaFRyYW5zYWN0aW9uVHlwZUJ5SW5zdHJ1Y3Rpb25zT3JkZXIoaW5zdHJ1Y3Rpb25zLCBzdGFraW5nQWN0aXZhdGVJbnN0cnVjdGlvbnNJbmRleGVzKSkge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0FjdGl2YXRlO1xuICB9IGVsc2UgaWYgKG1hdGNoVHJhbnNhY3Rpb25UeXBlQnlJbnN0cnVjdGlvbnNPcmRlcihpbnN0cnVjdGlvbnMsIHN0YWtpbmdEZWFjdGl2YXRlSW5zdHJ1Y3Rpb25zSW5kZXhlcykpIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdEZWFjdGl2YXRlO1xuICB9IGVsc2UgaWYgKG1hdGNoVHJhbnNhY3Rpb25UeXBlQnlJbnN0cnVjdGlvbnNPcmRlcihpbnN0cnVjdGlvbnMsIHN0YWtpbmdXaXRoZHJhd0luc3RydWN0aW9uc0luZGV4ZXMpKSB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nV2l0aGRyYXc7XG4gIH1cbiAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5TZW5kO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIGEgaW5zdHJ1Y3Rpb24gVHlwZSBiYXNlZCBvbiB0aGUgc29sYW5hIGluc3RydWN0aW9ucy5cbiAqIFRocm93cyBpZiB0aGUgc29sYW5hIGluc3RydWN0aW9uIHByb2dyYW0gaXMgbm90IHN1cHBvcnRlZFxuICpcbiAqIEBwYXJhbSB7VHJhbnNhY3Rpb25JbnN0cnVjdGlvbn0gaW5zdHJ1Y3Rpb24gLSBhIHNvbGFuYSBpbnN0cnVjdGlvblxuICogQHJldHVybnMge1ZhbGlkSW5zdHJ1Y3Rpb25UeXBlc30gLSBhICBzb2xhbmEgaW5zdHJ1Y3Rpb24gdHlwZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW5zdHJ1Y3Rpb25UeXBlKGluc3RydWN0aW9uOiBUcmFuc2FjdGlvbkluc3RydWN0aW9uKTogVmFsaWRJbnN0cnVjdGlvblR5cGVzIHtcbiAgc3dpdGNoIChpbnN0cnVjdGlvbi5wcm9ncmFtSWQudG9TdHJpbmcoKSkge1xuICAgIGNhc2UgbmV3IFB1YmxpY0tleShNRU1PX1BST0dSQU1fUEspLnRvU3RyaW5nKCk6XG4gICAgICByZXR1cm4gJ01lbW8nO1xuICAgIGNhc2UgU3lzdGVtUHJvZ3JhbS5wcm9ncmFtSWQudG9TdHJpbmcoKTpcbiAgICAgIHJldHVybiBTeXN0ZW1JbnN0cnVjdGlvbi5kZWNvZGVJbnN0cnVjdGlvblR5cGUoaW5zdHJ1Y3Rpb24pO1xuICAgIGNhc2UgU3Rha2VQcm9ncmFtLnByb2dyYW1JZC50b1N0cmluZygpOlxuICAgICAgcmV0dXJuIFN0YWtlSW5zdHJ1Y3Rpb24uZGVjb2RlSW5zdHJ1Y3Rpb25UeXBlKGluc3RydWN0aW9uKTtcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IE5vdFN1cHBvcnRlZChcbiAgICAgICAgJ0ludmFsaWQgdHJhbnNhY3Rpb24sIGluc3RydWN0aW9uIHByb2dyYW0gaWQgbm90IHN1cHBvcnRlZDogJyArIGluc3RydWN0aW9uLnByb2dyYW1JZC50b1N0cmluZygpLFxuICAgICAgKTtcbiAgfVxufVxuXG4vKipcbiAqIFZhbGlkYXRlIHNvbGFuYSBpbnN0cnVjdGlvbnMgdHlwZXMgdG8gc2VlIGlmIHRoZXkgYXJlIHN1cHBvcnRlZCBieSB0aGUgYnVpbGRlci5cbiAqIFRocm93cyBpZiB0aGUgaW5zdHJ1Y3Rpb24gdHlwZSBpcyBpbnZhbGlkLlxuICpcbiAqIEBwYXJhbSB7VHJhbnNhY3Rpb25JbnN0cnVjdGlvbn0gaW5zdHJ1Y3Rpb24gLSBhIHNvbGFuYSBpbnN0cnVjdGlvblxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUludHJ1Y3Rpb25UeXBlcyhpbnN0cnVjdGlvbnM6IFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXSk6IHZvaWQge1xuICBmb3IgKGNvbnN0IGluc3RydWN0aW9uIG9mIGluc3RydWN0aW9ucykge1xuICAgIGlmICghVkFMSURfU1lTVEVNX0lOU1RSVUNUSU9OX1RZUEVTLmluY2x1ZGVzKGdldEluc3RydWN0aW9uVHlwZShpbnN0cnVjdGlvbikpKSB7XG4gICAgICB0aHJvdyBuZXcgTm90U3VwcG9ydGVkKCdJbnZhbGlkIHRyYW5zYWN0aW9uLCBpbnN0cnVjdGlvbiB0eXBlIG5vdCBzdXBwb3J0ZWQ6ICcgKyBnZXRJbnN0cnVjdGlvblR5cGUoaW5zdHJ1Y3Rpb24pKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBDaGVjayB0aGUgcmF3IHRyYW5zYWN0aW9uIGhhcyBhIHZhbGlkIGZvcm1hdCBpbiB0aGUgYmxvY2tjaGFpbiBjb250ZXh0LCB0aHJvdyBvdGhlcndpc2UuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHJhd1RyYW5zYWN0aW9uIC0gVHJhbnNhY3Rpb24gaW4gYmFzZTY0IHN0cmluZyAgZm9ybWF0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgaWYgKCFyYXdUcmFuc2FjdGlvbikge1xuICAgIHRocm93IG5ldyBQYXJzZVRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgcmF3IHRyYW5zYWN0aW9uOiBVbmRlZmluZWQnKTtcbiAgfVxuICBpZiAoIWlzVmFsaWRSYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbikpIHtcbiAgICB0aHJvdyBuZXcgUGFyc2VUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHJhdyB0cmFuc2FjdGlvbicpO1xuICB9XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIGFkZHJlc3MgdG8gY2hlY2sgaWYgaXQgZXhpc3RzIGFuZCBpcyBhIHZhbGlkIFNvbGFuYSBwdWJsaWMga2V5XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3MgVGhlIGFkZHJlc3MgdG8gYmUgdmFsaWRhdGVkXG4gKiBAcGFyYW0ge3N0cmluZ30gZmllbGROYW1lIE5hbWUgb2YgdGhlIGZpZWxkIHRvIHZhbGlkYXRlLCBpdHMgbmVlZGVkIHRvIHJldHVybiB3aGljaCBmaWVsZCBpcyBmYWlsaW5nIG9uIGNhc2Ugb2YgZXJyb3IuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUFkZHJlc3MoYWRkcmVzczogc3RyaW5nLCBmaWVsZE5hbWU6IHN0cmluZyk6IHZvaWQge1xuICBpZiAoIWFkZHJlc3MgfHwgIWlzVmFsaWRQdWJsaWNLZXkoYWRkcmVzcykpIHtcbiAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKGBJbnZhbGlkIG9yIG1pc3NpbmcgJHtmaWVsZE5hbWV9LCBnb3Q6ICR7YWRkcmVzc31gKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,26 @@
1
+ import { BaseCoin as CoinConfig } from '@bitgo/statics';
2
+ import { Transaction } from './transaction';
3
+ import { TransactionBuilder } from './transactionBuilder';
4
+ import { TransactionType } from '../baseCoin';
5
+ export declare class WalletInitializationBuilder extends TransactionBuilder {
6
+ private _nonceAddress;
7
+ private _amount;
8
+ constructor(_coinConfig: Readonly<CoinConfig>);
9
+ protected get transactionType(): TransactionType;
10
+ /** @inheritDoc */
11
+ initBuilder(tx: Transaction): void;
12
+ /**
13
+ * Sets the amount to fund the nonce account
14
+ *
15
+ * @param amount amount in lamports to fund the nonce account
16
+ */
17
+ amount(amount: string): this;
18
+ /**
19
+ * Sets the address for the nonce account
20
+ * @param nonceAddress address of the new nonce account
21
+ */
22
+ address(nonceAddress: string): this;
23
+ /** @inheritdoc */
24
+ protected buildImplementation(): Promise<Transaction>;
25
+ }
26
+ //# sourceMappingURL=walletInitializationBuilder.d.ts.map