@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,318 @@
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.TransactionBuilder = void 0;
58
+ var baseCoin_1 = require("../baseCoin");
59
+ var errors_1 = require("../baseCoin/errors");
60
+ var transaction_1 = require("./transaction");
61
+ var web3_js_1 = require("@solana/web3.js");
62
+ var utils_1 = require("./utils");
63
+ var _1 = require(".");
64
+ var constants_1 = require("./constants");
65
+ var solInstructionFactory_1 = require("./solInstructionFactory");
66
+ var assert_1 = __importDefault(require("assert"));
67
+ var instructionParamsFactory_1 = require("./instructionParamsFactory");
68
+ var TransactionBuilder = /** @class */ (function (_super) {
69
+ __extends(TransactionBuilder, _super);
70
+ function TransactionBuilder(_coinConfig) {
71
+ var _this = _super.call(this, _coinConfig) || this;
72
+ _this._instructionsData = [];
73
+ _this._signers = [];
74
+ _this.transaction = new transaction_1.Transaction(_coinConfig);
75
+ return _this;
76
+ }
77
+ /**
78
+ * Initialize the transaction builder fields using the decoded transaction data
79
+ *
80
+ * @param {Transaction} tx the transaction data
81
+ */
82
+ TransactionBuilder.prototype.initBuilder = function (tx) {
83
+ this._transaction = tx;
84
+ var txData = tx.toJson();
85
+ this.sender(txData.feePayer);
86
+ this.nonce(txData.nonce, txData.durableNonce);
87
+ this._instructionsData = instructionParamsFactory_1.instructionParamsFactory(tx.type, tx.solTransaction.instructions);
88
+ for (var _i = 0, _a = this._instructionsData; _i < _a.length; _i++) {
89
+ var instruction = _a[_i];
90
+ if (instruction.type === constants_1.InstructionBuilderTypes.Memo) {
91
+ var memoInstruction = instruction;
92
+ this.memo(memoInstruction.params.memo);
93
+ }
94
+ if (instruction.type === constants_1.InstructionBuilderTypes.NonceAdvance) {
95
+ var advanceNonceInstruction = instruction;
96
+ this.nonce(txData.nonce, advanceNonceInstruction.params);
97
+ }
98
+ }
99
+ };
100
+ /** @inheritdoc */
101
+ TransactionBuilder.prototype.fromImplementation = function (rawTransaction) {
102
+ var tx = new transaction_1.Transaction(this._coinConfig);
103
+ this.validateRawTransaction(rawTransaction);
104
+ tx.fromRawTransaction(rawTransaction);
105
+ this.initBuilder(tx);
106
+ return this.transaction;
107
+ };
108
+ /** @inheritdoc */
109
+ TransactionBuilder.prototype.buildImplementation = function () {
110
+ return __awaiter(this, void 0, void 0, function () {
111
+ return __generator(this, function (_a) {
112
+ this.transaction.solTransaction = this.buildSolTransaction();
113
+ this.transaction.setTransactionType(this.transactionType);
114
+ this.transaction.loadInputsAndOutputs();
115
+ return [2 /*return*/, this.transaction];
116
+ });
117
+ });
118
+ };
119
+ /**
120
+ * Builds the solana transaction.
121
+ */
122
+ TransactionBuilder.prototype.buildSolTransaction = function () {
123
+ var _a, _b, _c, _d;
124
+ assert_1.default(this._sender, new errors_1.BuildTransactionError('sender is required before building'));
125
+ assert_1.default(this._recentBlockhash, new errors_1.BuildTransactionError('recent blockhash is required before building'));
126
+ var tx = new web3_js_1.Transaction();
127
+ if ((_b = (_a = this._transaction) === null || _a === void 0 ? void 0 : _a.solTransaction) === null || _b === void 0 ? void 0 : _b.signatures) {
128
+ tx.signatures = (_d = (_c = this._transaction) === null || _c === void 0 ? void 0 : _c.solTransaction) === null || _d === void 0 ? void 0 : _d.signatures;
129
+ }
130
+ tx.feePayer = new web3_js_1.PublicKey(this._sender);
131
+ if (this._nonceInfo) {
132
+ tx.nonceInfo = {
133
+ nonce: this._recentBlockhash,
134
+ nonceInstruction: solInstructionFactory_1.solInstructionFactory(this._nonceInfo)[0],
135
+ };
136
+ }
137
+ else {
138
+ tx.recentBlockhash = this._recentBlockhash;
139
+ }
140
+ for (var _i = 0, _e = this._instructionsData; _i < _e.length; _i++) {
141
+ var instruction = _e[_i];
142
+ tx.add.apply(tx, solInstructionFactory_1.solInstructionFactory(instruction));
143
+ }
144
+ if (this._memo) {
145
+ var memoData = {
146
+ type: constants_1.InstructionBuilderTypes.Memo,
147
+ params: {
148
+ memo: this._memo,
149
+ },
150
+ };
151
+ this._instructionsData.push(memoData);
152
+ tx.add.apply(tx, solInstructionFactory_1.solInstructionFactory(memoData));
153
+ }
154
+ this._transaction.lamportsPerSignature = this._lamportsPerSignature;
155
+ for (var _f = 0, _g = this._signers; _f < _g.length; _f++) {
156
+ var signer = _g[_f];
157
+ var publicKey = new web3_js_1.PublicKey(signer.getKeys().pub);
158
+ var secretKey = signer.getKeys(true).prv;
159
+ assert_1.default(secretKey instanceof Uint8Array);
160
+ tx.partialSign({ publicKey: publicKey, secretKey: secretKey });
161
+ }
162
+ return tx;
163
+ };
164
+ Object.defineProperty(TransactionBuilder.prototype, "transaction", {
165
+ // region Getters and Setters
166
+ /** @inheritdoc */
167
+ get: function () {
168
+ return this._transaction;
169
+ },
170
+ /** @inheritdoc */
171
+ set: function (transaction) {
172
+ this._transaction = transaction;
173
+ },
174
+ enumerable: false,
175
+ configurable: true
176
+ });
177
+ /** @inheritdoc */
178
+ TransactionBuilder.prototype.signImplementation = function (key) {
179
+ this.validateKey(key);
180
+ this.checkDuplicatedSigner(key);
181
+ var prv = key.key;
182
+ var signer = new _1.KeyPair({ prv: prv });
183
+ this._signers.push(signer);
184
+ return this._transaction;
185
+ };
186
+ /**
187
+ * Sets the sender of this transaction.
188
+ * This account will be responsible for paying transaction fees.
189
+ *
190
+ * @param {string} senderAddress the account that is sending this transaction
191
+ * @returns {TransactionBuilder} This transaction builder
192
+ */
193
+ TransactionBuilder.prototype.sender = function (senderAddress) {
194
+ utils_1.validateAddress(senderAddress, 'sender');
195
+ this._sender = senderAddress;
196
+ return this;
197
+ };
198
+ /**
199
+ * Set the transaction nonce
200
+ * Requires both optional params in order to use the durable nonce
201
+ *
202
+ * @param {Blockhash} blockHash The latest blockHash
203
+ * @param {DurableNonceParams} [durableNonceParams] An object containing the walletNonceAddress and the authWalletAddress (required for durable nonce)
204
+ * @returns {TransactionBuilder} This transaction builder
205
+ */
206
+ TransactionBuilder.prototype.nonce = function (blockHash, durableNonceParams) {
207
+ if (!blockHash || !utils_1.isValidBlockId(blockHash)) {
208
+ throw new errors_1.BuildTransactionError('Invalid or missing blockHash, got: ' + blockHash);
209
+ }
210
+ if (durableNonceParams) {
211
+ utils_1.validateAddress(durableNonceParams.walletNonceAddress, 'walletNonceAddress');
212
+ utils_1.validateAddress(durableNonceParams.authWalletAddress, 'authWalletAddress');
213
+ if (durableNonceParams.walletNonceAddress === durableNonceParams.authWalletAddress) {
214
+ throw new errors_1.BuildTransactionError('Invalid params: walletNonceAddress cannot be equal to authWalletAddress');
215
+ }
216
+ this._nonceInfo = {
217
+ type: constants_1.InstructionBuilderTypes.NonceAdvance,
218
+ params: durableNonceParams,
219
+ };
220
+ }
221
+ this._recentBlockhash = blockHash;
222
+ return this;
223
+ };
224
+ /**
225
+ * Set the memo
226
+ *
227
+ * @param {string} memo
228
+ * @returns {TransactionBuilder} This transaction builder
229
+ */
230
+ TransactionBuilder.prototype.memo = function (memo) {
231
+ this.validateMemo(memo);
232
+ this._memo = memo;
233
+ return this;
234
+ };
235
+ TransactionBuilder.prototype.fee = function (feeOptions) {
236
+ this._lamportsPerSignature = Number(feeOptions.amount);
237
+ return this;
238
+ };
239
+ // endregion
240
+ // region Validators
241
+ /** @inheritdoc */
242
+ TransactionBuilder.prototype.validateAddress = function (address, addressFormat) {
243
+ if (!utils_1.isValidAddress(address.address)) {
244
+ throw new errors_1.BuildTransactionError('Invalid address ' + address.address);
245
+ }
246
+ };
247
+ /** @inheritdoc */
248
+ TransactionBuilder.prototype.validateKey = function (key) {
249
+ var keyPair;
250
+ try {
251
+ keyPair = new _1.KeyPair({ prv: key.key });
252
+ }
253
+ catch (_a) {
254
+ throw new errors_1.BuildTransactionError('Invalid key');
255
+ }
256
+ if (!keyPair.getKeys().prv) {
257
+ throw new errors_1.BuildTransactionError('Invalid key');
258
+ }
259
+ };
260
+ /** @inheritdoc */
261
+ TransactionBuilder.prototype.validateRawTransaction = function (rawTransaction) {
262
+ utils_1.validateRawTransaction(rawTransaction);
263
+ };
264
+ /** @inheritdoc */
265
+ TransactionBuilder.prototype.validateTransaction = function (transaction) {
266
+ this.validateSender();
267
+ this.validateNonce();
268
+ };
269
+ /** @inheritdoc */
270
+ TransactionBuilder.prototype.validateValue = function (value) {
271
+ if (value.isLessThan(0)) {
272
+ throw new errors_1.BuildTransactionError('Value cannot be less than zero');
273
+ }
274
+ };
275
+ /** Validates the memo
276
+ *
277
+ * @param {string} memo - the memo as string
278
+ */
279
+ TransactionBuilder.prototype.validateMemo = function (memo) {
280
+ if (!memo) {
281
+ throw new errors_1.BuildTransactionError('Invalid memo, got: ' + memo);
282
+ }
283
+ if (!utils_1.isValidMemo(memo)) {
284
+ throw new errors_1.BuildTransactionError('Memo is too long');
285
+ }
286
+ };
287
+ /**
288
+ * Validates that the given key is not already in this._signers
289
+ *
290
+ * @param {BaseKey} key - The key to check
291
+ */
292
+ TransactionBuilder.prototype.checkDuplicatedSigner = function (key) {
293
+ this._signers.forEach(function (kp) {
294
+ if (kp.getKeys().prv === key.key) {
295
+ throw new errors_1.SigningError('Duplicated signer: ' + key.key);
296
+ }
297
+ });
298
+ };
299
+ /**
300
+ * Validates that the sender field is defined
301
+ */
302
+ TransactionBuilder.prototype.validateSender = function () {
303
+ if (this._sender === undefined) {
304
+ throw new errors_1.BuildTransactionError('Invalid transaction: missing sender');
305
+ }
306
+ };
307
+ /**
308
+ * Validates that the nonce field is defined
309
+ */
310
+ TransactionBuilder.prototype.validateNonce = function () {
311
+ if (this._recentBlockhash === undefined) {
312
+ throw new errors_1.BuildTransactionError('Invalid transaction: missing nonce blockhash');
313
+ }
314
+ };
315
+ return TransactionBuilder;
316
+ }(baseCoin_1.BaseTransactionBuilder));
317
+ exports.TransactionBuilder = TransactionBuilder;
318
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvaW4vc29sL3RyYW5zYWN0aW9uQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSx3Q0FBc0U7QUFDdEUsNkNBQXlFO0FBRXpFLDZDQUE0QztBQUM1QywyQ0FBc0Y7QUFDdEYsaUNBQStHO0FBQy9HLHNCQUE0QjtBQUM1Qix5Q0FBc0Q7QUFDdEQsaUVBQWdFO0FBQ2hFLGtEQUE0QjtBQUU1Qix1RUFBc0U7QUFFdEU7SUFBaUQsc0NBQXNCO0lBV3JFLDRCQUFZLFdBQWlDO1FBQTdDLFlBQ0Usa0JBQU0sV0FBVyxDQUFDLFNBRW5CO1FBUFMsdUJBQWlCLEdBQXdCLEVBQUUsQ0FBQztRQUM1QyxjQUFRLEdBQWMsRUFBRSxDQUFDO1FBS2pDLEtBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSx5QkFBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDOztJQUNsRCxDQUFDO0lBT0Q7Ozs7T0FJRztJQUNILHdDQUFXLEdBQVgsVUFBWSxFQUFlO1FBQ3pCLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLElBQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFrQixDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsbURBQXdCLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRTNGLEtBQTBCLFVBQXNCLEVBQXRCLEtBQUEsSUFBSSxDQUFD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QUFJLDhCQUFxQixDQUFDLHFDQUFxQyxDQUFDLENBQUM7U0FDeEU7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSywwQ0FBYSxHQUFyQjtRQUNFLElBQUksSUFBSSxDQUFDLGdCQUFnQixLQUFLLFNBQVMsRUFBRTtZQUN2QyxNQUFNLElBQUksOEJBQXFCLENBQUMsOENBQThDLENBQUMsQ0FBQztTQUNqRjtJQUNILENBQUM7SUFFSCx5QkFBQztBQUFELENBQUMsQUFuUkQsQ0FBaUQsaUNBQXNCLEdBbVJ0RTtBQW5ScUIsZ0RBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmltcG9ydCB7IEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXIsIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJy4uL2Jhc2VDb2luJztcbmltcG9ydCB7IEJ1aWxkVHJhbnNhY3Rpb25FcnJvciwgU2lnbmluZ0Vycm9yIH0gZnJvbSAnLi4vYmFzZUNvaW4vZXJyb3JzJztcbmltcG9ydCB7IEJhc2VBZGRyZXNzLCBCYXNlS2V5LCBGZWVPcHRpb25zIH0gZnJvbSAnLi4vYmFzZUNvaW4vaWZhY2UnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IEJsb2NraGFzaCwgUHVibGljS2V5LCBUcmFuc2FjdGlvbiBhcyBTb2xUcmFuc2FjdGlvbiB9IGZyb20gJ0Bzb2xhbmEvd2ViMy5qcyc7XG5pbXBvcnQgeyBpc1ZhbGlkQWRkcmVzcywgaXNWYWxpZEJsb2NrSWQsIGlzVmFsaWRNZW1vLCB2YWxpZGF0ZUFkZHJlc3MsIHZhbGlkYXRlUmF3VHJhbnNhY3Rpb24gfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IEtleVBhaXIgfSBmcm9tICcuJztcbmltcG9ydCB7IEluc3RydWN0aW9uQnVpbGRlclR5cGVzIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgc29sSW5zdHJ1Y3Rpb25GYWN0b3J5IH0gZnJvbSAnLi9zb2xJbnN0cnVjdGlvbkZhY3RvcnknO1xuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHsgRHVyYWJsZU5vbmNlUGFyYW1zLCBJbnN0cnVjdGlvblBhcmFtcywgTWVtbywgTm9uY2UgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IGluc3RydWN0aW9uUGFyYW1zRmFjdG9yeSB9IGZyb20gJy4vaW5zdHJ1Y3Rpb25QYXJhbXNGYWN0b3J5JztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRyYW5zYWN0aW9uQnVpbGRlciBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcml2YXRlIF90cmFuc2FjdGlvbjogVHJhbnNhY3Rpb247XG4gIHByaXZhdGUgX2xhbXBvcnRzUGVyU2lnbmF0dXJlOiBudW1iZXI7XG5cbiAgcHJvdGVjdGVkIF9zZW5kZXI6IHN0cmluZztcbiAgcHJvdGVjdGVkIF9yZWNlbnRCbG9ja2hhc2g6IEJsb2NraGFzaDtcbiAgcHJvdGVjdGVkIF9ub25jZUluZm86IE5vbmNlO1xuICBwcm90ZWN0ZWQgX2luc3RydWN0aW9uc0RhdGE6IEluc3RydWN0aW9uUGFyYW1zW10gPSBbXTtcbiAgcHJvdGVjdGVkIF9zaWduZXJzOiBLZXlQYWlyW10gPSBbXTtcbiAgcHJvdGVjdGVkIF9tZW1vPzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uID0gbmV3IFRyYW5zYWN0aW9uKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdHJhbnNhY3Rpb24gdHlwZS5cbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgdHJhbnNhY3Rpb25UeXBlKCk6IFRyYW5zYWN0aW9uVHlwZTtcblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0aGUgdHJhbnNhY3Rpb24gYnVpbGRlciBmaWVsZHMgdXNpbmcgdGhlIGRlY29kZWQgdHJhbnNhY3Rpb24gZGF0YVxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9ufSB0eCB0aGUgdHJhbnNhY3Rpb24gZGF0YVxuICAgKi9cbiAgaW5pdEJ1aWxkZXIodHg6IFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24gPSB0eDtcbiAgICBjb25zdCB0eERhdGEgPSB0eC50b0pzb24oKTtcbiAgICB0aGlzLnNlbmRlcih0eERhdGEuZmVlUGF5ZXIgYXMgc3RyaW5nKTtcbiAgICB0aGlzLm5vbmNlKHR4RGF0YS5ub25jZSwgdHhEYXRhLmR1cmFibGVOb25jZSk7XG4gICAgdGhpcy5faW5zdHJ1Y3Rpb25zRGF0YSA9IGluc3RydWN0aW9uUGFyYW1zRmFjdG9yeSh0eC50eXBlLCB0eC5zb2xUcmFuc2FjdGlvbi5pbnN0cnVjdGlvbnMpO1xuXG4gICAgZm9yIChjb25zdCBpbnN0cnVjdGlvbiBvZiB0aGlzLl9pbnN0cnVjdGlvbnNEYXRhKSB7XG4gICAgICBpZiAoaW5zdHJ1Y3Rpb24udHlwZSA9PT0gSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuTWVtbykge1xuICAgICAgICBjb25zdCBtZW1vSW5zdHJ1Y3Rpb246IE1lbW8gPSBpbnN0cnVjdGlvbjtcbiAgICAgICAgdGhpcy5tZW1vKG1lbW9JbnN0cnVjdGlvbi5wYXJhbXMubWVtbyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChpbnN0cnVjdGlvbi50eXBlID09PSBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5Ob25jZUFkdmFuY2UpIHtcbiAgICAgICAgY29uc3QgYWR2YW5jZU5vbmNlSW5zdHJ1Y3Rpb246IE5vbmNlID0gaW5zdHJ1Y3Rpb247XG4gICAgICAgIHRoaXMubm9uY2UodHhEYXRhLm5vbmNlLCBhZHZhbmNlTm9uY2VJbnN0cnVjdGlvbi5wYXJhbXMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgZnJvbUltcGxlbWVudGF0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiBUcmFuc2FjdGlvbiB7XG4gICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24odGhpcy5fY29pbkNvbmZpZyk7XG4gICAgdGhpcy52YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uKTtcbiAgICB0eC5mcm9tUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb24pO1xuICAgIHRoaXMuaW5pdEJ1aWxkZXIodHgpO1xuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBhc3luYyBidWlsZEltcGxlbWVudGF0aW9uKCk6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNvbFRyYW5zYWN0aW9uID0gdGhpcy5idWlsZFNvbFRyYW5zYWN0aW9uKCk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5zZXRUcmFuc2FjdGlvblR5cGUodGhpcy50cmFuc2FjdGlvblR5cGUpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24ubG9hZElucHV0c0FuZE91dHB1dHMoKTtcbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZHMgdGhlIHNvbGFuYSB0cmFuc2FjdGlvbi5cbiAgICovXG4gIHByb3RlY3RlZCBidWlsZFNvbFRyYW5zYWN0aW9uKCk6IFNvbFRyYW5zYWN0aW9uIHtcbiAgICBhc3NlcnQodGhpcy5fc2VuZGVyLCBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdzZW5kZXIgaXMgcmVxdWlyZWQgYmVmb3JlIGJ1aWxkaW5nJykpO1xuICAgIGFzc2VydCh0aGlzLl9yZWNlbnRCbG9ja2hhc2gsIG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ3JlY2VudCBibG9ja2hhc2ggaXMgcmVxdWlyZWQgYmVmb3JlIGJ1aWxkaW5nJykpO1xuXG4gICAgY29uc3QgdHggPSBuZXcgU29sVHJhbnNhY3Rpb24oKTtcbiAgICBpZiAodGhpcy5fdHJhbnNhY3Rpb24/LnNvbFRyYW5zYWN0aW9uPy5zaWduYXR1cmVzKSB7XG4gICAgICB0eC5zaWduYXR1cmVzID0gdGhpcy5fdHJhbnNhY3Rpb24/LnNvbFRyYW5zYWN0aW9uPy5zaWduYXR1cmVzO1xuICAgIH1cblxuICAgIHR4LmZlZVBheWVyID0gbmV3IFB1YmxpY0tleSh0aGlzLl9zZW5kZXIpO1xuXG4gICAgaWYgKHRoaXMuX25vbmNlSW5mbykge1xuICAgICAgdHgubm9uY2VJbmZvID0ge1xuICAgICAgICBub25jZTogdGhpcy5fcmVjZW50QmxvY2toYXNoLFxuICAgICAgICBub25jZUluc3RydWN0aW9uOiBzb2xJbnN0cnVjdGlvbkZhY3RvcnkodGhpcy5fbm9uY2VJbmZvKVswXSxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHR4LnJlY2VudEJsb2NraGFzaCA9IHRoaXMuX3JlY2VudEJsb2NraGFzaDtcbiAgICB9XG4gICAgZm9yIChjb25zdCBpbnN0cnVjdGlvbiBvZiB0aGlzLl9pbnN0cnVjdGlvbnNEYXRhKSB7XG4gICAgICB0eC5hZGQoLi4uc29sSW5zdHJ1Y3Rpb25GYWN0b3J5KGluc3RydWN0aW9uKSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX21lbW8pIHtcbiAgICAgIGNvbnN0IG1lbW9EYXRhOiBNZW1vID0ge1xuICAgICAgICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5NZW1vLFxuICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICBtZW1vOiB0aGlzLl9tZW1vLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICAgIHRoaXMuX2luc3RydWN0aW9uc0RhdGEucHVzaChtZW1vRGF0YSk7XG4gICAgICB0eC5hZGQoLi4uc29sSW5zdHJ1Y3Rpb25GYWN0b3J5KG1lbW9EYXRhKSk7XG4gICAgfVxuXG4gICAgdGhpcy5fdHJhbnNhY3Rpb24ubGFtcG9ydHNQZXJTaWduYXR1cmUgPSB0aGlzLl9sYW1wb3J0c1BlclNpZ25hdHVyZTtcblxuICAgIGZvciAoY29uc3Qgc2lnbmVyIG9mIHRoaXMuX3NpZ25lcnMpIHtcbiAgICAgIGNvbnN0IHB1YmxpY0tleSA9IG5ldyBQdWJsaWNLZXkoc2lnbmVyLmdldEtleXMoKS5wdWIpO1xuICAgICAgY29uc3Qgc2VjcmV0S2V5ID0gc2lnbmVyLmdldEtleXModHJ1ZSkucHJ2O1xuICAgICAgYXNzZXJ0KHNlY3JldEtleSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpO1xuICAgICAgdHgucGFydGlhbFNpZ24oeyBwdWJsaWNLZXksIHNlY3JldEtleSB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHR4O1xuICB9XG5cbiAgLy8gcmVnaW9uIEdldHRlcnMgYW5kIFNldHRlcnNcbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb24oKTogVHJhbnNhY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLl90cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgc2V0IHRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbikge1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gdHJhbnNhY3Rpb247XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIHNpZ25JbXBsZW1lbnRhdGlvbihrZXk6IEJhc2VLZXkpOiBUcmFuc2FjdGlvbiB7XG4gICAgdGhpcy52YWxpZGF0ZUtleShrZXkpO1xuICAgIHRoaXMuY2hlY2tEdXBsaWNhdGVkU2lnbmVyKGtleSk7XG4gICAgY29uc3QgcHJ2ID0ga2V5LmtleTtcbiAgICBjb25zdCBzaWduZXIgPSBuZXcgS2V5UGFpcih7IHBydjogcHJ2IH0pO1xuICAgIHRoaXMuX3NpZ25lcnMucHVzaChzaWduZXIpO1xuXG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHNlbmRlciBvZiB0aGlzIHRyYW5zYWN0aW9uLlxuICAgKiBUaGlzIGFjY291bnQgd2lsbCBiZSByZXNwb25zaWJsZSBmb3IgcGF5aW5nIHRyYW5zYWN0aW9uIGZlZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzZW5kZXJBZGRyZXNzIHRoZSBhY2NvdW50IHRoYXQgaXMgc2VuZGluZyB0aGlzIHRyYW5zYWN0aW9uXG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IFRoaXMgdHJhbnNhY3Rpb24gYnVpbGRlclxuICAgKi9cbiAgc2VuZGVyKHNlbmRlckFkZHJlc3M6IHN0cmluZyk6IHRoaXMge1xuICAgIHZhbGlkYXRlQWRkcmVzcyhzZW5kZXJBZGRyZXNzLCAnc2VuZGVyJyk7XG4gICAgdGhpcy5fc2VuZGVyID0gc2VuZGVyQWRkcmVzcztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHRyYW5zYWN0aW9uIG5vbmNlXG4gICAqIFJlcXVpcmVzIGJvdGggb3B0aW9uYWwgcGFyYW1zIGluIG9yZGVyIHRvIHVzZSB0aGUgZHVyYWJsZSBub25jZVxuICAgKlxuICAgKiBAcGFyYW0ge0Jsb2NraGFzaH0gYmxvY2tIYXNoIFRoZSBsYXRlc3QgYmxvY2tIYXNoXG4gICAqIEBwYXJhbSB7RHVyYWJsZU5vbmNlUGFyYW1zfSBbZHVyYWJsZU5vbmNlUGFyYW1zXSBBbiBvYmplY3QgY29udGFpbmluZyB0aGUgd2FsbGV0Tm9uY2VBZGRyZXNzIGFuZCB0aGUgYXV0aFdhbGxldEFkZHJlc3MgKHJlcXVpcmVkIGZvciBkdXJhYmxlIG5vbmNlKVxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25CdWlsZGVyfSBUaGlzIHRyYW5zYWN0aW9uIGJ1aWxkZXJcbiAgICovXG4gIG5vbmNlKGJsb2NrSGFzaDogQmxvY2toYXNoLCBkdXJhYmxlTm9uY2VQYXJhbXM/OiBEdXJhYmxlTm9uY2VQYXJhbXMpOiB0aGlzIHtcbiAgICBpZiAoIWJsb2NrSGFzaCB8fCAhaXNWYWxpZEJsb2NrSWQoYmxvY2tIYXNoKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBvciBtaXNzaW5nIGJsb2NrSGFzaCwgZ290OiAnICsgYmxvY2tIYXNoKTtcbiAgICB9XG4gICAgaWYgKGR1cmFibGVOb25jZVBhcmFtcykge1xuICAgICAgdmFsaWRhdGVBZGRyZXNzKGR1cmFibGVOb25jZVBhcmFtcy53YWxsZXROb25jZUFkZHJlc3MsICd3YWxsZXROb25jZUFkZHJlc3MnKTtcbiAgICAgIHZhbGlkYXRlQWRkcmVzcyhkdXJhYmxlTm9uY2VQYXJhbXMuYXV0aFdhbGxldEFkZHJlc3MsICdhdXRoV2FsbGV0QWRkcmVzcycpO1xuICAgICAgaWYgKGR1cmFibGVOb25jZVBhcmFtcy53YWxsZXROb25jZUFkZHJlc3MgPT09IGR1cmFibGVOb25jZVBhcmFtcy5hdXRoV2FsbGV0QWRkcmVzcykge1xuICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHBhcmFtczogd2FsbGV0Tm9uY2VBZGRyZXNzIGNhbm5vdCBiZSBlcXVhbCB0byBhdXRoV2FsbGV0QWRkcmVzcycpO1xuICAgICAgfVxuICAgICAgdGhpcy5fbm9uY2VJbmZvID0ge1xuICAgICAgICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5Ob25jZUFkdmFuY2UsXG4gICAgICAgIHBhcmFtczogZHVyYWJsZU5vbmNlUGFyYW1zLFxuICAgICAgfTtcbiAgICB9XG4gICAgdGhpcy5fcmVjZW50QmxvY2toYXNoID0gYmxvY2tIYXNoO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqICBTZXQgdGhlIG1lbW9cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1lbW9cbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9uQnVpbGRlcn0gVGhpcyB0cmFuc2FjdGlvbiBidWlsZGVyXG4gICAqL1xuICBtZW1vKG1lbW86IHN0cmluZyk6IHRoaXMge1xuICAgIHRoaXMudmFsaWRhdGVNZW1vKG1lbW8pO1xuICAgIHRoaXMuX21lbW8gPSBtZW1vO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZmVlKGZlZU9wdGlvbnM6IEZlZU9wdGlvbnMpOiB0aGlzIHtcbiAgICB0aGlzLl9sYW1wb3J0c1BlclNpZ25hdHVyZSA9IE51bWJlcihmZWVPcHRpb25zLmFtb3VudCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyBlbmRyZWdpb25cblxuICAvLyByZWdpb24gVmFsaWRhdG9yc1xuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVBZGRyZXNzKGFkZHJlc3M6IEJhc2VBZGRyZXNzLCBhZGRyZXNzRm9ybWF0Pzogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCFpc1ZhbGlkQWRkcmVzcyhhZGRyZXNzLmFkZHJlc3MpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIGFkZHJlc3MgJyArIGFkZHJlc3MuYWRkcmVzcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlS2V5KGtleTogQmFzZUtleSk6IHZvaWQge1xuICAgIGxldCBrZXlQYWlyOiBLZXlQYWlyO1xuICAgIHRyeSB7XG4gICAgICBrZXlQYWlyID0gbmV3IEtleVBhaXIoeyBwcnY6IGtleS5rZXkgfSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIGtleScpO1xuICAgIH1cblxuICAgIGlmICgha2V5UGFpci5nZXRLZXlzKCkucHJ2KSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIGtleScpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB2YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uPzogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICB0aGlzLnZhbGlkYXRlU2VuZGVyKCk7XG4gICAgdGhpcy52YWxpZGF0ZU5vbmNlKCk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVWYWx1ZSh2YWx1ZTogQmlnTnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHZhbHVlLmlzTGVzc1RoYW4oMCkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1ZhbHVlIGNhbm5vdCBiZSBsZXNzIHRoYW4gemVybycpO1xuICAgIH1cbiAgfVxuICAvKiogVmFsaWRhdGVzIHRoZSBtZW1vXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZW1vIC0gdGhlIG1lbW8gYXMgc3RyaW5nXG4gICAqL1xuICB2YWxpZGF0ZU1lbW8obWVtbzogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCFtZW1vKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIG1lbW8sIGdvdDogJyArIG1lbW8pO1xuICAgIH1cbiAgICBpZiAoIWlzVmFsaWRNZW1vKG1lbW8pKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdNZW1vIGlzIHRvbyBsb25nJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGF0IHRoZSBnaXZlbiBrZXkgaXMgbm90IGFscmVhZHkgaW4gdGhpcy5fc2lnbmVyc1xuICAgKlxuICAgKiBAcGFyYW0ge0Jhc2VLZXl9IGtleSAtIFRoZSBrZXkgdG8gY2hlY2tcbiAgICovXG4gIHByaXZhdGUgY2hlY2tEdXBsaWNhdGVkU2lnbmVyKGtleTogQmFzZUtleSkge1xuICAgIHRoaXMuX3NpZ25lcnMuZm9yRWFjaCgoa3ApID0+IHtcbiAgICAgIGlmIChrcC5nZXRLZXlzKCkucHJ2ID09PSBrZXkua2V5KSB7XG4gICAgICAgIHRocm93IG5ldyBTaWduaW5nRXJyb3IoJ0R1cGxpY2F0ZWQgc2lnbmVyOiAnICsga2V5LmtleSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoYXQgdGhlIHNlbmRlciBmaWVsZCBpcyBkZWZpbmVkXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlU2VuZGVyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9zZW5kZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogbWlzc2luZyBzZW5kZXInKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoYXQgdGhlIG5vbmNlIGZpZWxkIGlzIGRlZmluZWRcbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVOb25jZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fcmVjZW50QmxvY2toYXNoID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IG1pc3Npbmcgbm9uY2UgYmxvY2toYXNoJyk7XG4gICAgfVxuICB9XG4gIC8vIGVuZHJlZ2lvblxufVxuIl19
@@ -0,0 +1,68 @@
1
+ import { BaseCoin as CoinConfig } from '@bitgo/statics';
2
+ import { BaseTransactionBuilderFactory } from '../baseCoin';
3
+ import { TransferBuilder } from './transferBuilder';
4
+ import { WalletInitializationBuilder } from './walletInitializationBuilder';
5
+ import { TransactionBuilder } from './transactionBuilder';
6
+ import { StakingActivateBuilder } from './stakingActivateBuilder';
7
+ import { StakingDeactivateBuilder } from './stakingDeactivateBuilder';
8
+ import { Transaction } from './transaction';
9
+ import { StakingWithdrawBuilder } from './stakingWithdrawBuilder';
10
+ export declare class TransactionBuilderFactory extends BaseTransactionBuilderFactory {
11
+ constructor(_coinConfig: Readonly<CoinConfig>);
12
+ /**
13
+ * Returns a proper builder for the given encoded transaction
14
+ *
15
+ * @param { string} raw - Encoded transaction in base64 string format
16
+ */
17
+ from(raw: string): TransactionBuilder;
18
+ /** @inheritdoc */
19
+ getWalletInitializationBuilder(tx?: Transaction): WalletInitializationBuilder;
20
+ /** @inheritdoc */
21
+ getTransferBuilder(tx?: Transaction): TransferBuilder;
22
+ /**
23
+ * Returns the staking builder to create a staking account and also a delegate in one transaction.
24
+ * once the tx reach the network it will automatically by activated on next epoch
25
+ *
26
+ * @see https://docs.solana.com/cluster/stake-delegation-and-rewards#stake-warmup-cooldown-withdrawal
27
+ *
28
+ * @param {Transaction} tx - the transaction to be used to initialize the builder
29
+ * @returns {StakingDeactivateBuilder} - the initialized staking activate builder
30
+ */
31
+ getStakingActivateBuilder(tx?: Transaction): StakingActivateBuilder;
32
+ /**
33
+ * Returns the builder to create a staking deactivate transaction.
34
+ * Deactivated is set in the current epoch + cooldown
35
+ * The account's stake will ramp down to zero by that epoch, and the lamports will be available for withdrawal.
36
+ *
37
+ * @see https://docs.solana.com/cluster/stake-delegation-and-rewards#stake-warmup-cooldown-withdrawal
38
+ *
39
+ * @param {Transaction} tx - the transaction to be used to initialize the builder
40
+ * @returns {StakingDeactivateBuilder} - the initialized staking deactivate builder
41
+ */
42
+ getStakingDeactivateBuilder(tx?: Transaction): StakingDeactivateBuilder;
43
+ /**
44
+ * Returns the builder to create a staking withdraw transaction.
45
+ * once the staking account reach 0 SOL it will not be traceable anymore by the network
46
+ *
47
+ * @see https://docs.solana.com/staking/stake-accounts#destroying-a-stake-account
48
+ *
49
+ * @param {Transaction} tx - the transaction to be used to intialize the builder
50
+ * @returns {StakingWithdrawBuilder} - the initialized staking withdraw builder
51
+ */
52
+ getStakingWithdrawBuilder(tx?: Transaction): StakingWithdrawBuilder;
53
+ /**
54
+ * Initialize the builder with the given transaction
55
+ *
56
+ * @param {Transaction | undefined} tx - the transaction used to initialize the builder
57
+ * @param {TransactionBuilder} builder - the builder to be initialized
58
+ * @returns {TransactionBuilder} the builder initialized
59
+ */
60
+ private initializeBuilder;
61
+ /** Parse the transaction from a raw transaction
62
+ *
63
+ * @param {string} rawTransaction - the raw tx
64
+ * @returns {Transaction} parsed transaction
65
+ */
66
+ private parseTransaction;
67
+ }
68
+ //# sourceMappingURL=transactionBuilderFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transactionBuilderFactory.d.ts","sourceRoot":"","sources":["../../../../src/coin/sol/transactionBuilderFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,6BAA6B,EAAmB,MAAM,aAAa,CAAC;AAE7E,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,qBAAa,yBAA0B,SAAQ,6BAA6B;gBAC9D,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C;;;;OAIG;IACH,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB;IAuBrC,kBAAkB;IAClB,8BAA8B,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,2BAA2B;IAI7E,kBAAkB;IAClB,kBAAkB,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,eAAe;IAIrD;;;;;;;;OAQG;IACH,yBAAyB,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,sBAAsB;IAInE;;;;;;;;;OASG;IACH,2BAA2B,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,wBAAwB;IAIvE;;;;;;;;OAQG;IACH,yBAAyB,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,sBAAsB;IAInE;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB;IAOzB;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;CAKzB"}
@@ -0,0 +1,132 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.TransactionBuilderFactory = void 0;
19
+ var baseCoin_1 = require("../baseCoin");
20
+ var errors_1 = require("../baseCoin/errors");
21
+ var transferBuilder_1 = require("./transferBuilder");
22
+ var walletInitializationBuilder_1 = require("./walletInitializationBuilder");
23
+ var stakingActivateBuilder_1 = require("./stakingActivateBuilder");
24
+ var stakingDeactivateBuilder_1 = require("./stakingDeactivateBuilder");
25
+ var transaction_1 = require("./transaction");
26
+ var utils_1 = require("./utils");
27
+ var stakingWithdrawBuilder_1 = require("./stakingWithdrawBuilder");
28
+ var TransactionBuilderFactory = /** @class */ (function (_super) {
29
+ __extends(TransactionBuilderFactory, _super);
30
+ function TransactionBuilderFactory(_coinConfig) {
31
+ return _super.call(this, _coinConfig) || this;
32
+ }
33
+ /**
34
+ * Returns a proper builder for the given encoded transaction
35
+ *
36
+ * @param { string} raw - Encoded transaction in base64 string format
37
+ */
38
+ TransactionBuilderFactory.prototype.from = function (raw) {
39
+ utils_1.validateRawTransaction(raw);
40
+ var tx = this.parseTransaction(raw);
41
+ try {
42
+ switch (tx.type) {
43
+ case baseCoin_1.TransactionType.Send:
44
+ return this.getTransferBuilder(tx);
45
+ case baseCoin_1.TransactionType.WalletInitialization:
46
+ return this.getWalletInitializationBuilder(tx);
47
+ case baseCoin_1.TransactionType.StakingActivate:
48
+ return this.getStakingActivateBuilder(tx);
49
+ case baseCoin_1.TransactionType.StakingDeactivate:
50
+ return this.getStakingDeactivateBuilder(tx);
51
+ case baseCoin_1.TransactionType.StakingWithdraw:
52
+ return this.getStakingWithdrawBuilder(tx);
53
+ default:
54
+ throw new errors_1.InvalidTransactionError('Invalid transaction');
55
+ }
56
+ }
57
+ catch (e) {
58
+ throw e;
59
+ }
60
+ };
61
+ /** @inheritdoc */
62
+ TransactionBuilderFactory.prototype.getWalletInitializationBuilder = function (tx) {
63
+ return this.initializeBuilder(tx, new walletInitializationBuilder_1.WalletInitializationBuilder(this._coinConfig));
64
+ };
65
+ /** @inheritdoc */
66
+ TransactionBuilderFactory.prototype.getTransferBuilder = function (tx) {
67
+ return this.initializeBuilder(tx, new transferBuilder_1.TransferBuilder(this._coinConfig));
68
+ };
69
+ /**
70
+ * Returns the staking builder to create a staking account and also a delegate in one transaction.
71
+ * once the tx reach the network it will automatically by activated on next epoch
72
+ *
73
+ * @see https://docs.solana.com/cluster/stake-delegation-and-rewards#stake-warmup-cooldown-withdrawal
74
+ *
75
+ * @param {Transaction} tx - the transaction to be used to initialize the builder
76
+ * @returns {StakingDeactivateBuilder} - the initialized staking activate builder
77
+ */
78
+ TransactionBuilderFactory.prototype.getStakingActivateBuilder = function (tx) {
79
+ return this.initializeBuilder(tx, new stakingActivateBuilder_1.StakingActivateBuilder(this._coinConfig));
80
+ };
81
+ /**
82
+ * Returns the builder to create a staking deactivate transaction.
83
+ * Deactivated is set in the current epoch + cooldown
84
+ * The account's stake will ramp down to zero by that epoch, and the lamports will be available for withdrawal.
85
+ *
86
+ * @see https://docs.solana.com/cluster/stake-delegation-and-rewards#stake-warmup-cooldown-withdrawal
87
+ *
88
+ * @param {Transaction} tx - the transaction to be used to initialize the builder
89
+ * @returns {StakingDeactivateBuilder} - the initialized staking deactivate builder
90
+ */
91
+ TransactionBuilderFactory.prototype.getStakingDeactivateBuilder = function (tx) {
92
+ return this.initializeBuilder(tx, new stakingDeactivateBuilder_1.StakingDeactivateBuilder(this._coinConfig));
93
+ };
94
+ /**
95
+ * Returns the builder to create a staking withdraw transaction.
96
+ * once the staking account reach 0 SOL it will not be traceable anymore by the network
97
+ *
98
+ * @see https://docs.solana.com/staking/stake-accounts#destroying-a-stake-account
99
+ *
100
+ * @param {Transaction} tx - the transaction to be used to intialize the builder
101
+ * @returns {StakingWithdrawBuilder} - the initialized staking withdraw builder
102
+ */
103
+ TransactionBuilderFactory.prototype.getStakingWithdrawBuilder = function (tx) {
104
+ return this.initializeBuilder(tx, new stakingWithdrawBuilder_1.StakingWithdrawBuilder(this._coinConfig));
105
+ };
106
+ /**
107
+ * Initialize the builder with the given transaction
108
+ *
109
+ * @param {Transaction | undefined} tx - the transaction used to initialize the builder
110
+ * @param {TransactionBuilder} builder - the builder to be initialized
111
+ * @returns {TransactionBuilder} the builder initialized
112
+ */
113
+ TransactionBuilderFactory.prototype.initializeBuilder = function (tx, builder) {
114
+ if (tx) {
115
+ builder.initBuilder(tx);
116
+ }
117
+ return builder;
118
+ };
119
+ /** Parse the transaction from a raw transaction
120
+ *
121
+ * @param {string} rawTransaction - the raw tx
122
+ * @returns {Transaction} parsed transaction
123
+ */
124
+ TransactionBuilderFactory.prototype.parseTransaction = function (rawTransaction) {
125
+ var tx = new transaction_1.Transaction(this._coinConfig);
126
+ tx.fromRawTransaction(rawTransaction);
127
+ return tx;
128
+ };
129
+ return TransactionBuilderFactory;
130
+ }(baseCoin_1.BaseTransactionBuilderFactory));
131
+ exports.TransactionBuilderFactory = TransactionBuilderFactory;
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb2luL3NvbC90cmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLHdDQUE2RTtBQUM3RSw2Q0FBNkQ7QUFDN0QscURBQW9EO0FBQ3BELDZFQUE0RTtBQUU1RSxtRUFBa0U7QUFDbEUsdUVBQXNFO0FBQ3RFLDZDQUE0QztBQUM1QyxpQ0FBaUQ7QUFDakQsbUVBQWtFO0FBRWxFO0lBQStDLDZDQUE2QjtJQUMxRSxtQ0FBWSxXQUFpQztlQUMzQyxrQkFBTSxXQUFXLENBQUM7SUFDcEIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCx3Q0FBSSxHQUFKLFVBQUssR0FBVztRQUNkLDhCQUFzQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVCLElBQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0QyxJQUFJO1lBQ0YsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFO2dCQUNmLEtBQUssMEJBQWUsQ0FBQyxJQUFJO29CQUN2QixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDckMsS0FBSywwQkFBZSxDQUFDLG9CQUFvQjtvQkFDdkMsT0FBTyxJQUFJLENBQUMsOEJBQThCLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ2pELEtBQUssMEJBQWUsQ0FBQyxlQUFlO29CQUNsQyxPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDNUMsS0FBSywwQkFBZSxDQUFDLGlCQUFpQjtvQkFDcEMsT0FBTyxJQUFJLENBQUMsMkJBQTJCLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzlDLEtBQUssMEJBQWUsQ0FBQyxlQUFlO29CQUNsQyxPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDNUM7b0JBQ0UsTUFBTSxJQUFJLGdDQUF1QixDQUFDLHFCQUFxQixDQUFDLENBQUM7YUFDNUQ7U0FDRjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsTUFBTSxDQUFDLENBQUM7U0FDVDtJQUNILENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsa0VBQThCLEdBQTlCLFVBQStCLEVBQWdCO1FBQzdDLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxJQUFJLHlEQUEyQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsc0RBQWtCLEdBQWxCLFVBQW1CLEVBQWdCO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxJQUFJLGlDQUFlLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsNkRBQXlCLEdBQXpCLFVBQTBCLEVBQWdCO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxJQUFJLCtDQUFzQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSCwrREFBMkIsR0FBM0IsVUFBNEIsRUFBZ0I7UUFDMUMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLElBQUksbURBQXdCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsNkRBQXlCLEdBQXpCLFVBQTBCLEVBQWdCO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxJQUFJLCtDQUFzQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSyxxREFBaUIsR0FBekIsVUFBd0QsRUFBMkIsRUFBRSxPQUFVO1FBQzdGLElBQUksRUFBRSxFQUFFO1lBQ04sT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUN6QjtRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssb0RBQWdCLEdBQXhCLFVBQXlCLGNBQXNCO1FBQzdDLElBQU0sRUFBRSxHQUFHLElBQUkseUJBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDN0MsRUFBRSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3RDLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUNILGdDQUFDO0FBQUQsQ0FBQyxBQTNHRCxDQUErQyx3Q0FBNkIsR0EyRzNFO0FBM0dZLDhEQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnLi4vYmFzZUNvaW4nO1xuaW1wb3J0IHsgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IgfSBmcm9tICcuLi9iYXNlQ29pbi9lcnJvcnMnO1xuaW1wb3J0IHsgVHJhbnNmZXJCdWlsZGVyIH0gZnJvbSAnLi90cmFuc2ZlckJ1aWxkZXInO1xuaW1wb3J0IHsgV2FsbGV0SW5pdGlhbGl6YXRpb25CdWlsZGVyIH0gZnJvbSAnLi93YWxsZXRJbml0aWFsaXphdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgU3Rha2luZ0FjdGl2YXRlQnVpbGRlciB9IGZyb20gJy4vc3Rha2luZ0FjdGl2YXRlQnVpbGRlcic7XG5pbXBvcnQgeyBTdGFraW5nRGVhY3RpdmF0ZUJ1aWxkZXIgfSBmcm9tICcuL3N0YWtpbmdEZWFjdGl2YXRlQnVpbGRlcic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgdmFsaWRhdGVSYXdUcmFuc2FjdGlvbiB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgU3Rha2luZ1dpdGhkcmF3QnVpbGRlciB9IGZyb20gJy4vc3Rha2luZ1dpdGhkcmF3QnVpbGRlcic7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uQnVpbGRlckZhY3Rvcnkge1xuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHByb3BlciBidWlsZGVyIGZvciB0aGUgZ2l2ZW4gZW5jb2RlZCB0cmFuc2FjdGlvblxuICAgKlxuICAgKiBAcGFyYW0geyBzdHJpbmd9IHJhdyAtIEVuY29kZWQgdHJhbnNhY3Rpb24gaW4gYmFzZTY0IHN0cmluZyBmb3JtYXRcbiAgICovXG4gIGZyb20ocmF3OiBzdHJpbmcpOiBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICAgIHZhbGlkYXRlUmF3VHJhbnNhY3Rpb24ocmF3KTtcbiAgICBjb25zdCB0eCA9IHRoaXMucGFyc2VUcmFuc2FjdGlvbihyYXcpO1xuICAgIHRyeSB7XG4gICAgICBzd2l0Y2ggKHR4LnR5cGUpIHtcbiAgICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU2VuZDpcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRUcmFuc2ZlckJ1aWxkZXIodHgpO1xuICAgICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5XYWxsZXRJbml0aWFsaXphdGlvbjpcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRXYWxsZXRJbml0aWFsaXphdGlvbkJ1aWxkZXIodHgpO1xuICAgICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nQWN0aXZhdGU6XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3Rha2luZ0FjdGl2YXRlQnVpbGRlcih0eCk7XG4gICAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdEZWFjdGl2YXRlOlxuICAgICAgICAgIHJldHVybiB0aGlzLmdldFN0YWtpbmdEZWFjdGl2YXRlQnVpbGRlcih0eCk7XG4gICAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdXaXRoZHJhdzpcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRTdGFraW5nV2l0aGRyYXdCdWlsZGVyKHR4KTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb24nKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRXYWxsZXRJbml0aWFsaXphdGlvbkJ1aWxkZXIodHg/OiBUcmFuc2FjdGlvbik6IFdhbGxldEluaXRpYWxpemF0aW9uQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5pdGlhbGl6ZUJ1aWxkZXIodHgsIG5ldyBXYWxsZXRJbml0aWFsaXphdGlvbkJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZykpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGdldFRyYW5zZmVyQnVpbGRlcih0eD86IFRyYW5zYWN0aW9uKTogVHJhbnNmZXJCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IFRyYW5zZmVyQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgc3Rha2luZyBidWlsZGVyIHRvIGNyZWF0ZSBhIHN0YWtpbmcgYWNjb3VudCBhbmQgYWxzbyBhIGRlbGVnYXRlIGluIG9uZSB0cmFuc2FjdGlvbi5cbiAgICogb25jZSB0aGUgdHggcmVhY2ggdGhlIG5ldHdvcmsgaXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJ5IGFjdGl2YXRlZCBvbiBuZXh0IGVwb2NoXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLnNvbGFuYS5jb20vY2x1c3Rlci9zdGFrZS1kZWxlZ2F0aW9uLWFuZC1yZXdhcmRzI3N0YWtlLXdhcm11cC1jb29sZG93bi13aXRoZHJhd2FsXG4gICAqXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb259IHR4IC0gdGhlIHRyYW5zYWN0aW9uIHRvIGJlIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgYnVpbGRlclxuICAgKiBAcmV0dXJucyB7U3Rha2luZ0RlYWN0aXZhdGVCdWlsZGVyfSAtIHRoZSBpbml0aWFsaXplZCBzdGFraW5nIGFjdGl2YXRlIGJ1aWxkZXJcbiAgICovXG4gIGdldFN0YWtpbmdBY3RpdmF0ZUJ1aWxkZXIodHg/OiBUcmFuc2FjdGlvbik6IFN0YWtpbmdBY3RpdmF0ZUJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmluaXRpYWxpemVCdWlsZGVyKHR4LCBuZXcgU3Rha2luZ0FjdGl2YXRlQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgYnVpbGRlciB0byBjcmVhdGUgYSBzdGFraW5nIGRlYWN0aXZhdGUgdHJhbnNhY3Rpb24uXG4gICAqIERlYWN0aXZhdGVkIGlzIHNldCBpbiB0aGUgY3VycmVudCBlcG9jaCArIGNvb2xkb3duXG4gICAqIFRoZSBhY2NvdW50J3Mgc3Rha2Ugd2lsbCByYW1wIGRvd24gdG8gemVybyBieSB0aGF0IGVwb2NoLCBhbmQgdGhlIGxhbXBvcnRzIHdpbGwgYmUgYXZhaWxhYmxlIGZvciB3aXRoZHJhd2FsLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5zb2xhbmEuY29tL2NsdXN0ZXIvc3Rha2UtZGVsZWdhdGlvbi1hbmQtcmV3YXJkcyNzdGFrZS13YXJtdXAtY29vbGRvd24td2l0aGRyYXdhbFxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9ufSB0eCAtIHRoZSB0cmFuc2FjdGlvbiB0byBiZSB1c2VkIHRvIGluaXRpYWxpemUgdGhlIGJ1aWxkZXJcbiAgICogQHJldHVybnMge1N0YWtpbmdEZWFjdGl2YXRlQnVpbGRlcn0gLSB0aGUgaW5pdGlhbGl6ZWQgc3Rha2luZyBkZWFjdGl2YXRlIGJ1aWxkZXJcbiAgICovXG4gIGdldFN0YWtpbmdEZWFjdGl2YXRlQnVpbGRlcih0eD86IFRyYW5zYWN0aW9uKTogU3Rha2luZ0RlYWN0aXZhdGVCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IFN0YWtpbmdEZWFjdGl2YXRlQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgYnVpbGRlciB0byBjcmVhdGUgYSBzdGFraW5nIHdpdGhkcmF3IHRyYW5zYWN0aW9uLlxuICAgKiBvbmNlIHRoZSBzdGFraW5nIGFjY291bnQgcmVhY2ggMCBTT0wgaXQgd2lsbCBub3QgYmUgdHJhY2VhYmxlIGFueW1vcmUgYnkgdGhlIG5ldHdvcmtcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3Muc29sYW5hLmNvbS9zdGFraW5nL3N0YWtlLWFjY291bnRzI2Rlc3Ryb3lpbmctYS1zdGFrZS1hY2NvdW50XG4gICAqXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb259IHR4IC0gdGhlIHRyYW5zYWN0aW9uIHRvIGJlIHVzZWQgdG8gaW50aWFsaXplIHRoZSBidWlsZGVyXG4gICAqIEByZXR1cm5zIHtTdGFraW5nV2l0aGRyYXdCdWlsZGVyfSAtIHRoZSBpbml0aWFsaXplZCBzdGFraW5nIHdpdGhkcmF3IGJ1aWxkZXJcbiAgICovXG4gIGdldFN0YWtpbmdXaXRoZHJhd0J1aWxkZXIodHg/OiBUcmFuc2FjdGlvbik6IFN0YWtpbmdXaXRoZHJhd0J1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmluaXRpYWxpemVCdWlsZGVyKHR4LCBuZXcgU3Rha2luZ1dpdGhkcmF3QnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKSk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0aGUgYnVpbGRlciB3aXRoIHRoZSBnaXZlbiB0cmFuc2FjdGlvblxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uIHwgdW5kZWZpbmVkfSB0eCAtIHRoZSB0cmFuc2FjdGlvbiB1c2VkIHRvIGluaXRpYWxpemUgdGhlIGJ1aWxkZXJcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IGJ1aWxkZXIgLSB0aGUgYnVpbGRlciB0byBiZSBpbml0aWFsaXplZFxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25CdWlsZGVyfSB0aGUgYnVpbGRlciBpbml0aWFsaXplZFxuICAgKi9cbiAgcHJpdmF0ZSBpbml0aWFsaXplQnVpbGRlcjxUIGV4dGVuZHMgVHJhbnNhY3Rpb25CdWlsZGVyPih0eDogVHJhbnNhY3Rpb24gfCB1bmRlZmluZWQsIGJ1aWxkZXI6IFQpOiBUIHtcbiAgICBpZiAodHgpIHtcbiAgICAgIGJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIH1cbiAgICByZXR1cm4gYnVpbGRlcjtcbiAgfVxuXG4gIC8qKiBQYXJzZSB0aGUgdHJhbnNhY3Rpb24gZnJvbSBhIHJhdyB0cmFuc2FjdGlvblxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmF3VHJhbnNhY3Rpb24gLSB0aGUgcmF3IHR4XG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbn0gcGFyc2VkIHRyYW5zYWN0aW9uXG4gICAqL1xuICBwcml2YXRlIHBhcnNlVHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IFRyYW5zYWN0aW9uIHtcbiAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbih0aGlzLl9jb2luQ29uZmlnKTtcbiAgICB0eC5mcm9tUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb24pO1xuICAgIHJldHVybiB0eDtcbiAgfVxufVxuIl19
@@ -0,0 +1,26 @@
1
+ import { BaseCoin as CoinConfig } from '@bitgo/statics';
2
+ import { TransactionBuilder } from './transactionBuilder';
3
+ import { Transaction } from './transaction';
4
+ import { TransactionType } from '../baseCoin';
5
+ export interface SendParams {
6
+ address: string;
7
+ amount: string;
8
+ }
9
+ export declare class TransferBuilder extends TransactionBuilder {
10
+ private _sendParams;
11
+ constructor(_coinConfig: Readonly<CoinConfig>);
12
+ protected get transactionType(): TransactionType;
13
+ initBuilder(tx: Transaction): void;
14
+ /**
15
+ * Set a transfer
16
+ *
17
+ * @param {string} fromAddress - the sender address
18
+ * @param {string} toAddress - the receiver address
19
+ * @param {string} amount - the amount sent
20
+ * @returns {TransactionBuilder} This transaction builder
21
+ */
22
+ send({ address, amount }: SendParams): this;
23
+ /** @inheritdoc */
24
+ protected buildImplementation(): Promise<Transaction>;
25
+ }
26
+ //# sourceMappingURL=transferBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transferBuilder.d.ts","sourceRoot":"","sources":["../../../../src/coin/sol/transferBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAM9C,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,eAAgB,SAAQ,kBAAkB;IACrD,OAAO,CAAC,WAAW,CAAoB;gBAE3B,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAgBlC;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,UAAU,GAAG,IAAI;IAW3C,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;CAiB5D"}