@bitgo/account-lib 2.17.2-rc.1 → 2.17.2-rc.5
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.
- package/dist/browser/bitgo-account-lib.min.js +1 -1
- package/dist/browser/bitgo-account-lib.min.js.LICENSE.txt +4 -0
- package/dist/package.json +7 -3
- package/dist/src/coin/algo/utils.d.ts +39 -22
- package/dist/src/coin/algo/utils.d.ts.map +1 -1
- package/dist/src/coin/algo/utils.js +88 -73
- package/dist/src/coin/baseCoin/baseTransaction.d.ts +6 -0
- package/dist/src/coin/baseCoin/baseTransaction.d.ts.map +1 -1
- package/dist/src/coin/baseCoin/baseTransaction.js +8 -1
- package/dist/src/coin/baseCoin/baseTransactionBuilder.d.ts.map +1 -1
- package/dist/src/coin/baseCoin/baseTransactionBuilder.js +1 -1
- package/dist/src/coin/baseCoin/iface.d.ts +37 -0
- package/dist/src/coin/baseCoin/iface.d.ts.map +1 -1
- package/dist/src/coin/baseCoin/iface.js +1 -1
- package/dist/src/coin/cspr/utils.js +2 -2
- package/dist/src/coin/dot/errors.d.ts +3 -0
- package/dist/src/coin/dot/errors.d.ts.map +1 -1
- package/dist/src/coin/dot/errors.js +12 -2
- package/dist/src/coin/dot/iface.d.ts +13 -13
- package/dist/src/coin/dot/iface.d.ts.map +1 -1
- package/dist/src/coin/dot/iface.js +1 -1
- package/dist/src/coin/dot/index.d.ts +6 -0
- package/dist/src/coin/dot/index.d.ts.map +1 -1
- package/dist/src/coin/dot/index.js +14 -2
- package/dist/src/coin/dot/keyPair.d.ts +15 -2
- package/dist/src/coin/dot/keyPair.d.ts.map +1 -1
- package/dist/src/coin/dot/keyPair.js +41 -6
- package/dist/src/coin/dot/stakingBuilder.d.ts +2 -2
- package/dist/src/coin/dot/stakingBuilder.d.ts.map +1 -1
- package/dist/src/coin/dot/stakingBuilder.js +2 -7
- package/dist/src/coin/dot/transaction.d.ts +37 -3
- package/dist/src/coin/dot/transaction.d.ts.map +1 -1
- package/dist/src/coin/dot/transaction.js +345 -7
- package/dist/src/coin/dot/transactionBuilder.d.ts +106 -10
- package/dist/src/coin/dot/transactionBuilder.d.ts.map +1 -1
- package/dist/src/coin/dot/transactionBuilder.js +311 -15
- package/dist/src/coin/dot/transactionBuilderFactory.d.ts +12 -16
- package/dist/src/coin/dot/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/coin/dot/transactionBuilderFactory.js +60 -25
- package/dist/src/coin/dot/transferBuilder.d.ts +62 -4
- package/dist/src/coin/dot/transferBuilder.d.ts.map +1 -1
- package/dist/src/coin/dot/transferBuilder.js +158 -44
- package/dist/src/coin/dot/txnSchema.d.ts.map +1 -1
- package/dist/src/coin/dot/txnSchema.js +1 -2
- package/dist/src/coin/dot/unstakeBuilder.d.ts +4 -4
- package/dist/src/coin/dot/unstakeBuilder.d.ts.map +1 -1
- package/dist/src/coin/dot/unstakeBuilder.js +4 -9
- package/dist/src/coin/dot/utils.d.ts +69 -0
- package/dist/src/coin/dot/utils.d.ts.map +1 -1
- package/dist/src/coin/dot/utils.js +144 -4
- package/dist/src/coin/dot/walletInitializationBuilder.d.ts +51 -5
- package/dist/src/coin/dot/walletInitializationBuilder.d.ts.map +1 -1
- package/dist/src/coin/dot/walletInitializationBuilder.js +108 -45
- package/dist/src/coin/sol/constants.d.ts +24 -0
- package/dist/src/coin/sol/constants.d.ts.map +1 -0
- package/dist/src/coin/sol/constants.js +35 -0
- package/dist/src/coin/sol/iface.d.ts +55 -0
- package/dist/src/coin/sol/iface.d.ts.map +1 -1
- package/dist/src/coin/sol/iface.js +3 -1
- package/dist/src/coin/sol/instructionParamsFactory.d.ts +12 -0
- package/dist/src/coin/sol/instructionParamsFactory.d.ts.map +1 -0
- package/dist/src/coin/sol/instructionParamsFactory.js +99 -0
- package/dist/src/coin/sol/keyPair.d.ts +32 -6
- package/dist/src/coin/sol/keyPair.d.ts.map +1 -1
- package/dist/src/coin/sol/keyPair.js +107 -29
- package/dist/src/coin/sol/solInstructionFactory.d.ts +10 -0
- package/dist/src/coin/sol/solInstructionFactory.d.ts.map +1 -0
- package/dist/src/coin/sol/solInstructionFactory.js +102 -0
- package/dist/src/coin/sol/transaction.d.ts +36 -17
- package/dist/src/coin/sol/transaction.d.ts.map +1 -1
- package/dist/src/coin/sol/transaction.js +311 -20
- package/dist/src/coin/sol/transactionBuilder.d.ts +64 -4
- package/dist/src/coin/sol/transactionBuilder.d.ts.map +1 -1
- package/dist/src/coin/sol/transactionBuilder.js +212 -10
- package/dist/src/coin/sol/transactionBuilderFactory.d.ts +13 -3
- package/dist/src/coin/sol/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/coin/sol/transactionBuilderFactory.js +36 -6
- package/dist/src/coin/sol/transferBuilder.d.ts +15 -8
- package/dist/src/coin/sol/transferBuilder.d.ts.map +1 -1
- package/dist/src/coin/sol/transferBuilder.js +62 -15
- package/dist/src/coin/sol/utils.d.ts +84 -2
- package/dist/src/coin/sol/utils.d.ts.map +1 -1
- package/dist/src/coin/sol/utils.js +162 -6
- package/dist/src/coin/sol/walletInitializationBuilder.d.ts +15 -8
- package/dist/src/coin/sol/walletInitializationBuilder.d.ts.map +1 -1
- package/dist/src/coin/sol/walletInitializationBuilder.js +61 -13
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +6 -2
- package/dist/src/utils/crypto.d.ts +8 -0
- package/dist/src/utils/crypto.d.ts.map +1 -1
- package/dist/src/utils/crypto.js +13 -2
- package/package.json +7 -3
- package/resources/dot/index.ts +2 -0
- package/resources/dot/mainnet.ts +2 -0
- package/resources/dot/westend.ts +2 -0
|
@@ -50,14 +50,29 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
50
50
|
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
51
51
|
}
|
|
52
52
|
};
|
|
53
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
54
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
55
|
+
};
|
|
53
56
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
54
57
|
exports.TransactionBuilder = void 0;
|
|
55
58
|
var baseCoin_1 = require("../baseCoin");
|
|
56
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");
|
|
57
68
|
var TransactionBuilder = /** @class */ (function (_super) {
|
|
58
69
|
__extends(TransactionBuilder, _super);
|
|
59
70
|
function TransactionBuilder(_coinConfig) {
|
|
60
|
-
|
|
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;
|
|
61
76
|
}
|
|
62
77
|
/**
|
|
63
78
|
* Initialize the transaction builder fields using the decoded transaction data
|
|
@@ -65,52 +80,239 @@ var TransactionBuilder = /** @class */ (function (_super) {
|
|
|
65
80
|
* @param {Transaction} tx the transaction data
|
|
66
81
|
*/
|
|
67
82
|
TransactionBuilder.prototype.initBuilder = function (tx) {
|
|
68
|
-
|
|
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
|
+
}
|
|
69
99
|
};
|
|
70
100
|
/** @inheritdoc */
|
|
71
101
|
TransactionBuilder.prototype.fromImplementation = function (rawTransaction) {
|
|
72
|
-
|
|
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;
|
|
73
107
|
};
|
|
74
108
|
/** @inheritdoc */
|
|
75
109
|
TransactionBuilder.prototype.buildImplementation = function () {
|
|
76
110
|
return __awaiter(this, void 0, void 0, function () {
|
|
77
111
|
return __generator(this, function (_a) {
|
|
78
|
-
|
|
112
|
+
this.transaction.solTransaction = this.buildSolTransaction();
|
|
113
|
+
this.transaction.setTransactionType(this.transactionType);
|
|
114
|
+
this.transaction.loadInputsAndOutputs();
|
|
115
|
+
return [2 /*return*/, this.transaction];
|
|
79
116
|
});
|
|
80
117
|
});
|
|
81
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
|
+
};
|
|
82
164
|
Object.defineProperty(TransactionBuilder.prototype, "transaction", {
|
|
83
165
|
// region Getters and Setters
|
|
84
166
|
/** @inheritdoc */
|
|
85
167
|
get: function () {
|
|
86
168
|
return this._transaction;
|
|
87
169
|
},
|
|
170
|
+
/** @inheritdoc */
|
|
171
|
+
set: function (transaction) {
|
|
172
|
+
this._transaction = transaction;
|
|
173
|
+
},
|
|
88
174
|
enumerable: false,
|
|
89
175
|
configurable: true
|
|
90
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
|
+
if (!senderAddress || !utils_1.isValidPublicKey(senderAddress)) {
|
|
195
|
+
throw new errors_1.BuildTransactionError('Invalid or missing sender, got: ' + senderAddress);
|
|
196
|
+
}
|
|
197
|
+
this._sender = senderAddress;
|
|
198
|
+
return this;
|
|
199
|
+
};
|
|
200
|
+
/**
|
|
201
|
+
* Set the transaction nonce
|
|
202
|
+
* Requires both optional params in order to use the durable nonce
|
|
203
|
+
*
|
|
204
|
+
* @param {Blockhash} blockHash The latest blockHash
|
|
205
|
+
* @param {DurableNonceParams} [durableNonceParams] An object containing the walletNonceAddress and the authWalletAddress (required for durable nonce)
|
|
206
|
+
* @returns {TransactionBuilder} This transaction builder
|
|
207
|
+
*/
|
|
208
|
+
TransactionBuilder.prototype.nonce = function (blockHash, durableNonceParams) {
|
|
209
|
+
if (!blockHash || !utils_1.isValidBlockId(blockHash)) {
|
|
210
|
+
throw new errors_1.BuildTransactionError('Invalid or missing blockHash, got: ' + blockHash);
|
|
211
|
+
}
|
|
212
|
+
if (durableNonceParams) {
|
|
213
|
+
if (!durableNonceParams.walletNonceAddress || !utils_1.isValidPublicKey(durableNonceParams.walletNonceAddress)) {
|
|
214
|
+
throw new errors_1.BuildTransactionError('Invalid or missing walletNonceAddress, got: ' + durableNonceParams.walletNonceAddress);
|
|
215
|
+
}
|
|
216
|
+
if (!durableNonceParams.authWalletAddress || !utils_1.isValidPublicKey(durableNonceParams.authWalletAddress)) {
|
|
217
|
+
throw new errors_1.BuildTransactionError('Invalid or missing authWalletAddress, got: ' + durableNonceParams.authWalletAddress);
|
|
218
|
+
}
|
|
219
|
+
if (durableNonceParams.walletNonceAddress === durableNonceParams.authWalletAddress) {
|
|
220
|
+
throw new errors_1.BuildTransactionError('Invalid params: walletNonceAddress cannot be equal to authWalletAddress');
|
|
221
|
+
}
|
|
222
|
+
this._nonceInfo = {
|
|
223
|
+
type: constants_1.InstructionBuilderTypes.NonceAdvance,
|
|
224
|
+
params: durableNonceParams,
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
this._recentBlockhash = blockHash;
|
|
228
|
+
return this;
|
|
229
|
+
};
|
|
230
|
+
/**
|
|
231
|
+
* Set the memo
|
|
232
|
+
*
|
|
233
|
+
* @param {string} memo
|
|
234
|
+
* @returns {TransactionBuilder} This transaction builder
|
|
235
|
+
*/
|
|
236
|
+
TransactionBuilder.prototype.memo = function (memo) {
|
|
237
|
+
this.validateMemo(memo);
|
|
238
|
+
this._memo = memo;
|
|
239
|
+
return this;
|
|
240
|
+
};
|
|
241
|
+
TransactionBuilder.prototype.fee = function (feeOptions) {
|
|
242
|
+
this._lamportsPerSignature = Number(feeOptions.amount);
|
|
243
|
+
return this;
|
|
244
|
+
};
|
|
91
245
|
// endregion
|
|
92
246
|
// region Validators
|
|
93
247
|
/** @inheritdoc */
|
|
94
248
|
TransactionBuilder.prototype.validateAddress = function (address, addressFormat) {
|
|
95
|
-
|
|
249
|
+
if (!utils_1.isValidAddress(address.address)) {
|
|
250
|
+
throw new errors_1.BuildTransactionError('Invalid address ' + address.address);
|
|
251
|
+
}
|
|
96
252
|
};
|
|
97
253
|
/** @inheritdoc */
|
|
98
254
|
TransactionBuilder.prototype.validateKey = function (key) {
|
|
99
|
-
|
|
255
|
+
var keyPair = new _1.KeyPair({ prv: key.key });
|
|
256
|
+
if (!keyPair.getKeys().prv) {
|
|
257
|
+
throw new errors_1.BuildTransactionError('Invalid key');
|
|
258
|
+
}
|
|
100
259
|
};
|
|
101
260
|
/** @inheritdoc */
|
|
102
261
|
TransactionBuilder.prototype.validateRawTransaction = function (rawTransaction) {
|
|
103
|
-
|
|
262
|
+
utils_1.validateRawTransaction(rawTransaction);
|
|
104
263
|
};
|
|
105
264
|
/** @inheritdoc */
|
|
106
265
|
TransactionBuilder.prototype.validateTransaction = function (transaction) {
|
|
107
|
-
|
|
266
|
+
this.validateSender();
|
|
267
|
+
this.validateNonce();
|
|
108
268
|
};
|
|
109
269
|
/** @inheritdoc */
|
|
110
270
|
TransactionBuilder.prototype.validateValue = function (value) {
|
|
111
|
-
|
|
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
|
+
}
|
|
112
314
|
};
|
|
113
315
|
return TransactionBuilder;
|
|
114
316
|
}(baseCoin_1.BaseTransactionBuilder));
|
|
115
317
|
exports.TransactionBuilder = TransactionBuilder;
|
|
116
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvaW4vc29sL3RyYW5zYWN0aW9uQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSx3Q0FBc0U7QUFDdEUsNkNBQXlEO0FBS3pEO0lBQWlELHNDQUFzQjtJQUdyRSw0QkFBWSxXQUFpQztlQUMzQyxrQkFBTSxXQUFXLENBQUM7SUFDcEIsQ0FBQztJQUlEOzs7O09BSUc7SUFDSCx3Q0FBVyxHQUFYLFVBQVksRUFBZTtRQUN6QixNQUFNLElBQUksNEJBQW1CLENBQUMsNkJBQTZCLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsa0JBQWtCO0lBQ1IsK0NBQWtCLEdBQTVCLFVBQTZCLGNBQXNCO1FBQ2pELE1BQU0sSUFBSSw0QkFBbUIsQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxrQkFBa0I7SUFDRixnREFBbUIsR0FBbkM7OztnQkFDRSxNQUFNLElBQUksNEJBQW1CLENBQUMscUNBQXFDLENBQUMsQ0FBQzs7O0tBQ3RFO0lBU0Qsc0JBQWMsMkNBQVc7UUFGekIsNkJBQTZCO1FBQzdCLGtCQUFrQjthQUNsQjtZQUNFLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztRQUMzQixDQUFDOzs7T0FBQTtJQUNELFlBQVk7SUFFWixvQkFBb0I7SUFDcEIsa0JBQWtCO0lBQ2xCLDRDQUFlLEdBQWYsVUFBZ0IsT0FBb0IsRUFBRSxhQUFzQjtRQUMxRCxNQUFNLElBQUksNEJBQW1CLENBQUMsaUNBQWlDLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLHdDQUFXLEdBQVgsVUFBWSxHQUFZO1FBQ3RCLE1BQU0sSUFBSSw0QkFBbUIsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsbURBQXNCLEdBQXRCLFVBQXVCLGNBQW1CO1FBQ3hDLE1BQU0sSUFBSSw0QkFBbUIsQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsZ0RBQW1CLEdBQW5CLFVBQW9CLFdBQXlCO1FBQzNDLE1BQU0sSUFBSSw0QkFBbUIsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsMENBQWEsR0FBYixVQUFjLEtBQWdCO1FBQzVCLE1BQU0sSUFBSSw0QkFBbUIsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFSCx5QkFBQztBQUFELENBQUMsQUFsRUQsQ0FBaUQsaUNBQXNCLEdBa0V0RTtBQWxFcUIsZ0RBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmltcG9ydCB7IEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXIsIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJy4uL2Jhc2VDb2luJztcbmltcG9ydCB7IE5vdEltcGxlbWVudGVkRXJyb3IgfSBmcm9tICcuLi9iYXNlQ29pbi9lcnJvcnMnO1xuaW1wb3J0IHsgQmFzZUFkZHJlc3MsIEJhc2VLZXkgfSBmcm9tICcuLi9iYXNlQ29pbi9pZmFjZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gYXMgU29sVHJhbnNhY3Rpb24gfSBmcm9tICdAc29sYW5hL3dlYjMuanMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVHJhbnNhY3Rpb25CdWlsZGVyIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByaXZhdGUgX3RyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbjtcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGU7XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIHRyYW5zYWN0aW9uIGJ1aWxkZXIgZmllbGRzIHVzaW5nIHRoZSBkZWNvZGVkIHRyYW5zYWN0aW9uIGRhdGFcbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbn0gdHggdGhlIHRyYW5zYWN0aW9uIGRhdGFcbiAgICovXG4gIGluaXRCdWlsZGVyKHR4OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCdpbml0QnVpbGRlciBub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgZnJvbUltcGxlbWVudGF0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiBUcmFuc2FjdGlvbiB7XG4gICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoJ2Zyb21JbXBsZW1lbnRhdGlvbiBub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgYnVpbGRJbXBsZW1lbnRhdGlvbigpOiBQcm9taXNlPFRyYW5zYWN0aW9uPiB7XG4gICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoJ2J1aWxkSW1wbGVtZW50YXRpb24gbm90IGltcGxlbWVudGVkJyk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIHRoZSBzb2xhbmEgdHJhbnNhY3Rpb24uXG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgYnVpbGRTb2xUcmFuc2FjdGlvbigpOiBTb2xUcmFuc2FjdGlvbjtcblxuICAvLyByZWdpb24gR2V0dGVycyBhbmQgU2V0dGVyc1xuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvbigpOiBUcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uO1xuICB9XG4gIC8vIGVuZHJlZ2lvblxuXG4gIC8vIHJlZ2lvbiBWYWxpZGF0b3JzXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZUFkZHJlc3MoYWRkcmVzczogQmFzZUFkZHJlc3MsIGFkZHJlc3NGb3JtYXQ/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigndmFsaWRhdGVBZGRyZXNzIG5vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlS2V5KGtleTogQmFzZUtleSk6IHZvaWQge1xuICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCd2YWxpZGF0ZUtleSBub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBhbnkpOiB2b2lkIHtcbiAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigndmFsaWRhdGVSYXdUcmFuc2FjdGlvbiBub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uPzogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigndmFsaWRhdGVUcmFuc2FjdGlvbiBub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVZhbHVlKHZhbHVlOiBCaWdOdW1iZXIpOiB2b2lkIHtcbiAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigndmFsaWRhdGVWYWx1ZSBub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuICAvLyBlbmRyZWdpb25cbn1cbiJdfQ==
|
|
318
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvaW4vc29sL3RyYW5zYWN0aW9uQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSx3Q0FBc0U7QUFDdEUsNkNBQXlFO0FBRXpFLDZDQUE0QztBQUM1QywyQ0FBc0Y7QUFDdEYsaUNBQWdIO0FBQ2hILHNCQUE0QjtBQUM1Qix5Q0FBc0Q7QUFDdEQsaUVBQWdFO0FBQ2hFLGtEQUE0QjtBQUU1Qix1RUFBc0U7QUFFdEU7SUFBaUQsc0NBQXNCO0lBV3JFLDRCQUFZLFdBQWlDO1FBQTdDLFlBQ0Usa0JBQU0sV0FBVyxDQUFDLFNBRW5CO1FBUFMsdUJBQWlCLEdBQXdCLEVBQUUsQ0FBQztRQUM1QyxjQUFRLEdBQWMsRUFBRSxDQUFDO1FBS2pDLEtBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSx5QkFBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDOztJQUNsRCxDQUFDO0lBT0Q7Ozs7T0FJRztJQUNILHdDQUFXLEdBQVgsVUFBWSxFQUFlO1FBQ3pCLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLElBQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFrQixDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsbURBQXdCLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRTNGLEtBQTBCLFVBQXNCLEVBQXRCLEtBQUEsSUFBSSxDQUFD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QUMsR0FBRyxFQUFFO2dCQUNoQyxNQUFNLElBQUkscUJBQVksQ0FBQyxxQkFBcUIsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDekQ7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNLLDJDQUFjLEdBQXRCO1FBQ0UsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLFNBQVMsRUFBRTtZQUM5QixNQUFNLElBQUksOEJBQXFCLENBQUMscUNBQXFDLENBQUMsQ0FBQztTQUN4RTtJQUNILENBQUM7SUFFRDs7T0FFRztJQUNLLDBDQUFhLEdBQXJCO1FBQ0UsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEtBQUssU0FBUyxFQUFFO1lBQ3ZDLE1BQU0sSUFBSSw4QkFBcUIsQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO1NBQ2pGO0lBQ0gsQ0FBQztJQUVILHlCQUFDO0FBQUQsQ0FBQyxBQXZSRCxDQUFpRCxpQ0FBc0IsR0F1UnRFO0FBdlJxQixnREFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgQmFzZVRyYW5zYWN0aW9uQnVpbGRlciwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnLi4vYmFzZUNvaW4nO1xuaW1wb3J0IHsgQnVpbGRUcmFuc2FjdGlvbkVycm9yLCBTaWduaW5nRXJyb3IgfSBmcm9tICcuLi9iYXNlQ29pbi9lcnJvcnMnO1xuaW1wb3J0IHsgQmFzZUFkZHJlc3MsIEJhc2VLZXksIEZlZU9wdGlvbnMgfSBmcm9tICcuLi9iYXNlQ29pbi9pZmFjZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgQmxvY2toYXNoLCBQdWJsaWNLZXksIFRyYW5zYWN0aW9uIGFzIFNvbFRyYW5zYWN0aW9uIH0gZnJvbSAnQHNvbGFuYS93ZWIzLmpzJztcbmltcG9ydCB7IGlzVmFsaWRBZGRyZXNzLCBpc1ZhbGlkQmxvY2tJZCwgaXNWYWxpZE1lbW8sIGlzVmFsaWRQdWJsaWNLZXksIHZhbGlkYXRlUmF3VHJhbnNhY3Rpb24gfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IEtleVBhaXIgfSBmcm9tICcuJztcbmltcG9ydCB7IEluc3RydWN0aW9uQnVpbGRlclR5cGVzIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgc29sSW5zdHJ1Y3Rpb25GYWN0b3J5IH0gZnJvbSAnLi9zb2xJbnN0cnVjdGlvbkZhY3RvcnknO1xuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHsgRHVyYWJsZU5vbmNlUGFyYW1zLCBJbnN0cnVjdGlvblBhcmFtcywgTWVtbywgTm9uY2UgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IGluc3RydWN0aW9uUGFyYW1zRmFjdG9yeSB9IGZyb20gJy4vaW5zdHJ1Y3Rpb25QYXJhbXNGYWN0b3J5JztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRyYW5zYWN0aW9uQnVpbGRlciBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcml2YXRlIF90cmFuc2FjdGlvbjogVHJhbnNhY3Rpb247XG4gIHByaXZhdGUgX2xhbXBvcnRzUGVyU2lnbmF0dXJlOiBudW1iZXI7XG5cbiAgcHJvdGVjdGVkIF9zZW5kZXI6IHN0cmluZztcbiAgcHJvdGVjdGVkIF9yZWNlbnRCbG9ja2hhc2g6IEJsb2NraGFzaDtcbiAgcHJvdGVjdGVkIF9ub25jZUluZm86IE5vbmNlO1xuICBwcm90ZWN0ZWQgX2luc3RydWN0aW9uc0RhdGE6IEluc3RydWN0aW9uUGFyYW1zW10gPSBbXTtcbiAgcHJvdGVjdGVkIF9zaWduZXJzOiBLZXlQYWlyW10gPSBbXTtcbiAgcHJvdGVjdGVkIF9tZW1vPzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uID0gbmV3IFRyYW5zYWN0aW9uKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdHJhbnNhY3Rpb24gdHlwZS5cbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgdHJhbnNhY3Rpb25UeXBlKCk6IFRyYW5zYWN0aW9uVHlwZTtcblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0aGUgdHJhbnNhY3Rpb24gYnVpbGRlciBmaWVsZHMgdXNpbmcgdGhlIGRlY29kZWQgdHJhbnNhY3Rpb24gZGF0YVxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9ufSB0eCB0aGUgdHJhbnNhY3Rpb24gZGF0YVxuICAgKi9cbiAgaW5pdEJ1aWxkZXIodHg6IFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24gPSB0eDtcbiAgICBjb25zdCB0eERhdGEgPSB0eC50b0pzb24oKTtcbiAgICB0aGlzLnNlbmRlcih0eERhdGEuZmVlUGF5ZXIgYXMgc3RyaW5nKTtcbiAgICB0aGlzLm5vbmNlKHR4RGF0YS5ub25jZSwgdHhEYXRhLmR1cmFibGVOb25jZSk7XG4gICAgdGhpcy5faW5zdHJ1Y3Rpb25zRGF0YSA9IGluc3RydWN0aW9uUGFyYW1zRmFjdG9yeSh0eC50eXBlLCB0eC5zb2xUcmFuc2FjdGlvbi5pbnN0cnVjdGlvbnMpO1xuXG4gICAgZm9yIChjb25zdCBpbnN0cnVjdGlvbiBvZiB0aGlzLl9pbnN0cnVjdGlvbnNEYXRhKSB7XG4gICAgICBpZiAoaW5zdHJ1Y3Rpb24udHlwZSA9PT0gSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuTWVtbykge1xuICAgICAgICBjb25zdCBtZW1vSW5zdHJ1Y3Rpb246IE1lbW8gPSBpbnN0cnVjdGlvbjtcbiAgICAgICAgdGhpcy5tZW1vKG1lbW9JbnN0cnVjdGlvbi5wYXJhbXMubWVtbyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChpbnN0cnVjdGlvbi50eXBlID09PSBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5Ob25jZUFkdmFuY2UpIHtcbiAgICAgICAgY29uc3QgYWR2YW5jZU5vbmNlSW5zdHJ1Y3Rpb246IE5vbmNlID0gaW5zdHJ1Y3Rpb247XG4gICAgICAgIHRoaXMubm9uY2UodHhEYXRhLm5vbmNlLCBhZHZhbmNlTm9uY2VJbnN0cnVjdGlvbi5wYXJhbXMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgZnJvbUltcGxlbWVudGF0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiBUcmFuc2FjdGlvbiB7XG4gICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24odGhpcy5fY29pbkNvbmZpZyk7XG4gICAgdGhpcy52YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uKTtcbiAgICB0eC5mcm9tUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb24pO1xuICAgIHRoaXMuaW5pdEJ1aWxkZXIodHgpO1xuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBhc3luYyBidWlsZEltcGxlbWVudGF0aW9uKCk6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNvbFRyYW5zYWN0aW9uID0gdGhpcy5idWlsZFNvbFRyYW5zYWN0aW9uKCk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5zZXRUcmFuc2FjdGlvblR5cGUodGhpcy50cmFuc2FjdGlvblR5cGUpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24ubG9hZElucHV0c0FuZE91dHB1dHMoKTtcbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZHMgdGhlIHNvbGFuYSB0cmFuc2FjdGlvbi5cbiAgICovXG4gIHByb3RlY3RlZCBidWlsZFNvbFRyYW5zYWN0aW9uKCk6IFNvbFRyYW5zYWN0aW9uIHtcbiAgICBhc3NlcnQodGhpcy5fc2VuZGVyLCBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdzZW5kZXIgaXMgcmVxdWlyZWQgYmVmb3JlIGJ1aWxkaW5nJykpO1xuICAgIGFzc2VydCh0aGlzLl9yZWNlbnRCbG9ja2hhc2gsIG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ3JlY2VudCBibG9ja2hhc2ggaXMgcmVxdWlyZWQgYmVmb3JlIGJ1aWxkaW5nJykpO1xuXG4gICAgY29uc3QgdHggPSBuZXcgU29sVHJhbnNhY3Rpb24oKTtcbiAgICBpZiAodGhpcy5fdHJhbnNhY3Rpb24/LnNvbFRyYW5zYWN0aW9uPy5zaWduYXR1cmVzKSB7XG4gICAgICB0eC5zaWduYXR1cmVzID0gdGhpcy5fdHJhbnNhY3Rpb24/LnNvbFRyYW5zYWN0aW9uPy5zaWduYXR1cmVzO1xuICAgIH1cblxuICAgIHR4LmZlZVBheWVyID0gbmV3IFB1YmxpY0tleSh0aGlzLl9zZW5kZXIpO1xuXG4gICAgaWYgKHRoaXMuX25vbmNlSW5mbykge1xuICAgICAgdHgubm9uY2VJbmZvID0ge1xuICAgICAgICBub25jZTogdGhpcy5fcmVjZW50QmxvY2toYXNoLFxuICAgICAgICBub25jZUluc3RydWN0aW9uOiBzb2xJbnN0cnVjdGlvbkZhY3RvcnkodGhpcy5fbm9uY2VJbmZvKVswXSxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHR4LnJlY2VudEJsb2NraGFzaCA9IHRoaXMuX3JlY2VudEJsb2NraGFzaDtcbiAgICB9XG4gICAgZm9yIChjb25zdCBpbnN0cnVjdGlvbiBvZiB0aGlzLl9pbnN0cnVjdGlvbnNEYXRhKSB7XG4gICAgICB0eC5hZGQoLi4uc29sSW5zdHJ1Y3Rpb25GYWN0b3J5KGluc3RydWN0aW9uKSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX21lbW8pIHtcbiAgICAgIGNvbnN0IG1lbW9EYXRhOiBNZW1vID0ge1xuICAgICAgICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5NZW1vLFxuICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICBtZW1vOiB0aGlzLl9tZW1vLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICAgIHRoaXMuX2luc3RydWN0aW9uc0RhdGEucHVzaChtZW1vRGF0YSk7XG4gICAgICB0eC5hZGQoLi4uc29sSW5zdHJ1Y3Rpb25GYWN0b3J5KG1lbW9EYXRhKSk7XG4gICAgfVxuXG4gICAgdGhpcy5fdHJhbnNhY3Rpb24ubGFtcG9ydHNQZXJTaWduYXR1cmUgPSB0aGlzLl9sYW1wb3J0c1BlclNpZ25hdHVyZTtcblxuICAgIGZvciAoY29uc3Qgc2lnbmVyIG9mIHRoaXMuX3NpZ25lcnMpIHtcbiAgICAgIGNvbnN0IHB1YmxpY0tleSA9IG5ldyBQdWJsaWNLZXkoc2lnbmVyLmdldEtleXMoKS5wdWIpO1xuICAgICAgY29uc3Qgc2VjcmV0S2V5ID0gc2lnbmVyLmdldEtleXModHJ1ZSkucHJ2O1xuICAgICAgYXNzZXJ0KHNlY3JldEtleSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpO1xuICAgICAgdHgucGFydGlhbFNpZ24oeyBwdWJsaWNLZXksIHNlY3JldEtleSB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHR4O1xuICB9XG5cbiAgLy8gcmVnaW9uIEdldHRlcnMgYW5kIFNldHRlcnNcbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb24oKTogVHJhbnNhY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLl90cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgc2V0IHRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbikge1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gdHJhbnNhY3Rpb247XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIHNpZ25JbXBsZW1lbnRhdGlvbihrZXk6IEJhc2VLZXkpOiBUcmFuc2FjdGlvbiB7XG4gICAgdGhpcy52YWxpZGF0ZUtleShrZXkpO1xuICAgIHRoaXMuY2hlY2tEdXBsaWNhdGVkU2lnbmVyKGtleSk7XG4gICAgY29uc3QgcHJ2ID0ga2V5LmtleTtcbiAgICBjb25zdCBzaWduZXIgPSBuZXcgS2V5UGFpcih7IHBydjogcHJ2IH0pO1xuICAgIHRoaXMuX3NpZ25lcnMucHVzaChzaWduZXIpO1xuXG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHNlbmRlciBvZiB0aGlzIHRyYW5zYWN0aW9uLlxuICAgKiBUaGlzIGFjY291bnQgd2lsbCBiZSByZXNwb25zaWJsZSBmb3IgcGF5aW5nIHRyYW5zYWN0aW9uIGZlZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzZW5kZXJBZGRyZXNzIHRoZSBhY2NvdW50IHRoYXQgaXMgc2VuZGluZyB0aGlzIHRyYW5zYWN0aW9uXG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IFRoaXMgdHJhbnNhY3Rpb24gYnVpbGRlclxuICAgKi9cbiAgc2VuZGVyKHNlbmRlckFkZHJlc3M6IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICghc2VuZGVyQWRkcmVzcyB8fCAhaXNWYWxpZFB1YmxpY0tleShzZW5kZXJBZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBvciBtaXNzaW5nIHNlbmRlciwgZ290OiAnICsgc2VuZGVyQWRkcmVzcyk7XG4gICAgfVxuICAgIHRoaXMuX3NlbmRlciA9IHNlbmRlckFkZHJlc3M7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSB0cmFuc2FjdGlvbiBub25jZVxuICAgKiBSZXF1aXJlcyBib3RoIG9wdGlvbmFsIHBhcmFtcyBpbiBvcmRlciB0byB1c2UgdGhlIGR1cmFibGUgbm9uY2VcbiAgICpcbiAgICogQHBhcmFtIHtCbG9ja2hhc2h9IGJsb2NrSGFzaCBUaGUgbGF0ZXN0IGJsb2NrSGFzaFxuICAgKiBAcGFyYW0ge0R1cmFibGVOb25jZVBhcmFtc30gW2R1cmFibGVOb25jZVBhcmFtc10gQW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHdhbGxldE5vbmNlQWRkcmVzcyBhbmQgdGhlIGF1dGhXYWxsZXRBZGRyZXNzIChyZXF1aXJlZCBmb3IgZHVyYWJsZSBub25jZSlcbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9uQnVpbGRlcn0gVGhpcyB0cmFuc2FjdGlvbiBidWlsZGVyXG4gICAqL1xuICBub25jZShibG9ja0hhc2g6IEJsb2NraGFzaCwgZHVyYWJsZU5vbmNlUGFyYW1zPzogRHVyYWJsZU5vbmNlUGFyYW1zKTogdGhpcyB7XG4gICAgaWYgKCFibG9ja0hhc2ggfHwgIWlzVmFsaWRCbG9ja0lkKGJsb2NrSGFzaCkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgb3IgbWlzc2luZyBibG9ja0hhc2gsIGdvdDogJyArIGJsb2NrSGFzaCk7XG4gICAgfVxuICAgIGlmIChkdXJhYmxlTm9uY2VQYXJhbXMpIHtcbiAgICAgIGlmICghZHVyYWJsZU5vbmNlUGFyYW1zLndhbGxldE5vbmNlQWRkcmVzcyB8fCAhaXNWYWxpZFB1YmxpY0tleShkdXJhYmxlTm9uY2VQYXJhbXMud2FsbGV0Tm9uY2VBZGRyZXNzKSkge1xuICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKFxuICAgICAgICAgICdJbnZhbGlkIG9yIG1pc3Npbmcgd2FsbGV0Tm9uY2VBZGRyZXNzLCBnb3Q6ICcgKyBkdXJhYmxlTm9uY2VQYXJhbXMud2FsbGV0Tm9uY2VBZGRyZXNzLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKCFkdXJhYmxlTm9uY2VQYXJhbXMuYXV0aFdhbGxldEFkZHJlc3MgfHwgIWlzVmFsaWRQdWJsaWNLZXkoZHVyYWJsZU5vbmNlUGFyYW1zLmF1dGhXYWxsZXRBZGRyZXNzKSkge1xuICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKFxuICAgICAgICAgICdJbnZhbGlkIG9yIG1pc3NpbmcgYXV0aFdhbGxldEFkZHJlc3MsIGdvdDogJyArIGR1cmFibGVOb25jZVBhcmFtcy5hdXRoV2FsbGV0QWRkcmVzcyxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmIChkdXJhYmxlTm9uY2VQYXJhbXMud2FsbGV0Tm9uY2VBZGRyZXNzID09PSBkdXJhYmxlTm9uY2VQYXJhbXMuYXV0aFdhbGxldEFkZHJlc3MpIHtcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBwYXJhbXM6IHdhbGxldE5vbmNlQWRkcmVzcyBjYW5ub3QgYmUgZXF1YWwgdG8gYXV0aFdhbGxldEFkZHJlc3MnKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX25vbmNlSW5mbyA9IHtcbiAgICAgICAgdHlwZTogSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuTm9uY2VBZHZhbmNlLFxuICAgICAgICBwYXJhbXM6IGR1cmFibGVOb25jZVBhcmFtcyxcbiAgICAgIH07XG4gICAgfVxuICAgIHRoaXMuX3JlY2VudEJsb2NraGFzaCA9IGJsb2NrSGFzaDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiAgU2V0IHRoZSBtZW1vXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZW1vXG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IFRoaXMgdHJhbnNhY3Rpb24gYnVpbGRlclxuICAgKi9cbiAgbWVtbyhtZW1vOiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlTWVtbyhtZW1vKTtcbiAgICB0aGlzLl9tZW1vID0gbWVtbztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGZlZShmZWVPcHRpb25zOiBGZWVPcHRpb25zKTogdGhpcyB7XG4gICAgdGhpcy5fbGFtcG9ydHNQZXJTaWduYXR1cmUgPSBOdW1iZXIoZmVlT3B0aW9ucy5hbW91bnQpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gZW5kcmVnaW9uXG5cbiAgLy8gcmVnaW9uIFZhbGlkYXRvcnNcbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlQWRkcmVzcyhhZGRyZXNzOiBCYXNlQWRkcmVzcywgYWRkcmVzc0Zvcm1hdD86IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghaXNWYWxpZEFkZHJlc3MoYWRkcmVzcy5hZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBhZGRyZXNzICcgKyBhZGRyZXNzLmFkZHJlc3MpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZUtleShrZXk6IEJhc2VLZXkpOiB2b2lkIHtcbiAgICBjb25zdCBrZXlQYWlyID0gbmV3IEtleVBhaXIoeyBwcnY6IGtleS5rZXkgfSk7XG4gICAgaWYgKCFrZXlQYWlyLmdldEtleXMoKS5wcnYpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQga2V5Jyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IHZvaWQge1xuICAgIHZhbGlkYXRlUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb24pO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24/OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHRoaXMudmFsaWRhdGVTZW5kZXIoKTtcbiAgICB0aGlzLnZhbGlkYXRlTm9uY2UoKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVZhbHVlKHZhbHVlOiBCaWdOdW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodmFsdWUuaXNMZXNzVGhhbigwKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignVmFsdWUgY2Fubm90IGJlIGxlc3MgdGhhbiB6ZXJvJyk7XG4gICAgfVxuICB9XG4gIC8qKiBWYWxpZGF0ZXMgdGhlIG1lbW9cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1lbW8gLSB0aGUgbWVtbyBhcyBzdHJpbmdcbiAgICovXG4gIHZhbGlkYXRlTWVtbyhtZW1vOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIW1lbW8pIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgbWVtbywgZ290OiAnICsgbWVtbyk7XG4gICAgfVxuICAgIGlmICghaXNWYWxpZE1lbW8obWVtbykpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ01lbW8gaXMgdG9vIGxvbmcnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoYXQgdGhlIGdpdmVuIGtleSBpcyBub3QgYWxyZWFkeSBpbiB0aGlzLl9zaWduZXJzXG4gICAqXG4gICAqIEBwYXJhbSB7QmFzZUtleX0ga2V5IC0gVGhlIGtleSB0byBjaGVja1xuICAgKi9cbiAgcHJpdmF0ZSBjaGVja0R1cGxpY2F0ZWRTaWduZXIoa2V5OiBCYXNlS2V5KSB7XG4gICAgdGhpcy5fc2lnbmVycy5mb3JFYWNoKChrcCkgPT4ge1xuICAgICAgaWYgKGtwLmdldEtleXMoKS5wcnYgPT09IGtleS5rZXkpIHtcbiAgICAgICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignRHVwbGljYXRlZCBzaWduZXI6ICcgKyBrZXkua2V5KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhhdCB0aGUgc2VuZGVyIGZpZWxkIGlzIGRlZmluZWRcbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVTZW5kZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3NlbmRlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiBtaXNzaW5nIHNlbmRlcicpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhhdCB0aGUgbm9uY2UgZmllbGQgaXMgZGVmaW5lZFxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZU5vbmNlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9yZWNlbnRCbG9ja2hhc2ggPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogbWlzc2luZyBub25jZSBibG9ja2hhc2gnKTtcbiAgICB9XG4gIH1cbiAgLy8gZW5kcmVnaW9uXG59XG4iXX0=
|
|
@@ -6,8 +6,12 @@ import { TransactionBuilder } from './transactionBuilder';
|
|
|
6
6
|
import { Transaction } from './transaction';
|
|
7
7
|
export declare class TransactionBuilderFactory extends BaseTransactionBuilderFactory {
|
|
8
8
|
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
9
|
-
/**
|
|
10
|
-
|
|
9
|
+
/**
|
|
10
|
+
* Returns a proper builder for the given encoded transaction
|
|
11
|
+
*
|
|
12
|
+
* @param { string} raw - Encoded transaction in base64 string format
|
|
13
|
+
*/
|
|
14
|
+
from(raw: string): TransactionBuilder;
|
|
11
15
|
/** @inheritdoc */
|
|
12
16
|
getWalletInitializationBuilder(tx?: Transaction): WalletInitializationBuilder;
|
|
13
17
|
/** @inheritdoc */
|
|
@@ -19,6 +23,12 @@ export declare class TransactionBuilderFactory extends BaseTransactionBuilderFac
|
|
|
19
23
|
* @param {TransactionBuilder} builder - the builder to be initialized
|
|
20
24
|
* @returns {TransactionBuilder} the builder initialized
|
|
21
25
|
*/
|
|
22
|
-
private
|
|
26
|
+
private initializeBuilder;
|
|
27
|
+
/** Parse the transaction from a raw transaction
|
|
28
|
+
*
|
|
29
|
+
* @param {string} rawTransaction - the raw tx
|
|
30
|
+
* @returns {Transaction} parsed transaction
|
|
31
|
+
*/
|
|
32
|
+
private parseTransaction;
|
|
23
33
|
}
|
|
24
34
|
//# sourceMappingURL=transactionBuilderFactory.d.ts.map
|
|
@@ -1 +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,
|
|
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,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,qBAAa,yBAA0B,SAAQ,6BAA6B;gBAC9D,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C;;;;OAIG;IACH,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB;IAiBrC,kBAAkB;IAClB,8BAA8B,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,2BAA2B;IAI7E,kBAAkB;IAClB,kBAAkB,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,eAAe;IAIrD;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB;IAOzB;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;CAKzB"}
|
|
@@ -20,22 +20,42 @@ var baseCoin_1 = require("../baseCoin");
|
|
|
20
20
|
var errors_1 = require("../baseCoin/errors");
|
|
21
21
|
var transferBuilder_1 = require("./transferBuilder");
|
|
22
22
|
var walletInitializationBuilder_1 = require("./walletInitializationBuilder");
|
|
23
|
+
var transaction_1 = require("./transaction");
|
|
24
|
+
var utils_1 = require("./utils");
|
|
23
25
|
var TransactionBuilderFactory = /** @class */ (function (_super) {
|
|
24
26
|
__extends(TransactionBuilderFactory, _super);
|
|
25
27
|
function TransactionBuilderFactory(_coinConfig) {
|
|
26
28
|
return _super.call(this, _coinConfig) || this;
|
|
27
29
|
}
|
|
28
|
-
/**
|
|
30
|
+
/**
|
|
31
|
+
* Returns a proper builder for the given encoded transaction
|
|
32
|
+
*
|
|
33
|
+
* @param { string} raw - Encoded transaction in base64 string format
|
|
34
|
+
*/
|
|
29
35
|
TransactionBuilderFactory.prototype.from = function (raw) {
|
|
30
|
-
|
|
36
|
+
utils_1.validateRawTransaction(raw);
|
|
37
|
+
var tx = this.parseTransaction(raw);
|
|
38
|
+
try {
|
|
39
|
+
switch (tx.type) {
|
|
40
|
+
case baseCoin_1.TransactionType.Send:
|
|
41
|
+
return this.getTransferBuilder(tx);
|
|
42
|
+
case baseCoin_1.TransactionType.WalletInitialization:
|
|
43
|
+
return this.getWalletInitializationBuilder(tx);
|
|
44
|
+
default:
|
|
45
|
+
throw new errors_1.InvalidTransactionError('Invalid transaction');
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
catch (e) {
|
|
49
|
+
throw e;
|
|
50
|
+
}
|
|
31
51
|
};
|
|
32
52
|
/** @inheritdoc */
|
|
33
53
|
TransactionBuilderFactory.prototype.getWalletInitializationBuilder = function (tx) {
|
|
34
|
-
return
|
|
54
|
+
return this.initializeBuilder(tx, new walletInitializationBuilder_1.WalletInitializationBuilder(this._coinConfig));
|
|
35
55
|
};
|
|
36
56
|
/** @inheritdoc */
|
|
37
57
|
TransactionBuilderFactory.prototype.getTransferBuilder = function (tx) {
|
|
38
|
-
return
|
|
58
|
+
return this.initializeBuilder(tx, new transferBuilder_1.TransferBuilder(this._coinConfig));
|
|
39
59
|
};
|
|
40
60
|
/**
|
|
41
61
|
* Initialize the builder with the given transaction
|
|
@@ -44,13 +64,23 @@ var TransactionBuilderFactory = /** @class */ (function (_super) {
|
|
|
44
64
|
* @param {TransactionBuilder} builder - the builder to be initialized
|
|
45
65
|
* @returns {TransactionBuilder} the builder initialized
|
|
46
66
|
*/
|
|
47
|
-
TransactionBuilderFactory.initializeBuilder = function (tx, builder) {
|
|
67
|
+
TransactionBuilderFactory.prototype.initializeBuilder = function (tx, builder) {
|
|
48
68
|
if (tx) {
|
|
49
69
|
builder.initBuilder(tx);
|
|
50
70
|
}
|
|
51
71
|
return builder;
|
|
52
72
|
};
|
|
73
|
+
/** Parse the transaction from a raw transaction
|
|
74
|
+
*
|
|
75
|
+
* @param {string} rawTransaction - the raw tx
|
|
76
|
+
* @returns {Transaction} parsed transaction
|
|
77
|
+
*/
|
|
78
|
+
TransactionBuilderFactory.prototype.parseTransaction = function (rawTransaction) {
|
|
79
|
+
var tx = new transaction_1.Transaction(this._coinConfig);
|
|
80
|
+
tx.fromRawTransaction(rawTransaction);
|
|
81
|
+
return tx;
|
|
82
|
+
};
|
|
53
83
|
return TransactionBuilderFactory;
|
|
54
84
|
}(baseCoin_1.BaseTransactionBuilderFactory));
|
|
55
85
|
exports.TransactionBuilderFactory = TransactionBuilderFactory;
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb2luL3NvbC90cmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLHdDQUE2RTtBQUM3RSw2Q0FBNkQ7QUFDN0QscURBQW9EO0FBQ3BELDZFQUE0RTtBQUU1RSw2Q0FBNEM7QUFDNUMsaUNBQWlEO0FBRWpEO0lBQStDLDZDQUE2QjtJQUMxRSxtQ0FBWSxXQUFpQztlQUMzQyxrQkFBTSxXQUFXLENBQUM7SUFDcEIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCx3Q0FBSSxHQUFKLFVBQUssR0FBVztRQUNkLDhCQUFzQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVCLElBQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0QyxJQUFJO1lBQ0YsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFO2dCQUNmLEtBQUssMEJBQWUsQ0FBQyxJQUFJO29CQUN2QixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDckMsS0FBSywwQkFBZSxDQUFDLG9CQUFvQjtvQkFDdkMsT0FBTyxJQUFJLENBQUMsOEJBQThCLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ2pEO29CQUNFLE1BQU0sSUFBSSxnQ0FBdUIsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO2FBQzVEO1NBQ0Y7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE1BQU0sQ0FBQyxDQUFDO1NBQ1Q7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGtFQUE4QixHQUE5QixVQUErQixFQUFnQjtRQUM3QyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSx5REFBMkIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLHNEQUFrQixHQUFsQixVQUFtQixFQUFnQjtRQUNqQyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSxpQ0FBZSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSyxxREFBaUIsR0FBekIsVUFBd0QsRUFBMkIsRUFBRSxPQUFVO1FBQzdGLElBQUksRUFBRSxFQUFFO1lBQ04sT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUN6QjtRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssb0RBQWdCLEdBQXhCLFVBQXlCLGNBQXNCO1FBQzdDLElBQU0sRUFBRSxHQUFHLElBQUkseUJBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDN0MsRUFBRSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3RDLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUNILGdDQUFDO0FBQUQsQ0FBQyxBQTdERCxDQUErQyx3Q0FBNkIsR0E2RDNFO0FBN0RZLDhEQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnLi4vYmFzZUNvaW4nO1xuaW1wb3J0IHsgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IgfSBmcm9tICcuLi9iYXNlQ29pbi9lcnJvcnMnO1xuaW1wb3J0IHsgVHJhbnNmZXJCdWlsZGVyIH0gZnJvbSAnLi90cmFuc2ZlckJ1aWxkZXInO1xuaW1wb3J0IHsgV2FsbGV0SW5pdGlhbGl6YXRpb25CdWlsZGVyIH0gZnJvbSAnLi93YWxsZXRJbml0aWFsaXphdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IHZhbGlkYXRlUmF3VHJhbnNhY3Rpb24gfSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkgZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSB7XG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgcHJvcGVyIGJ1aWxkZXIgZm9yIHRoZSBnaXZlbiBlbmNvZGVkIHRyYW5zYWN0aW9uXG4gICAqXG4gICAqIEBwYXJhbSB7IHN0cmluZ30gcmF3IC0gRW5jb2RlZCB0cmFuc2FjdGlvbiBpbiBiYXNlNjQgc3RyaW5nIGZvcm1hdFxuICAgKi9cbiAgZnJvbShyYXc6IHN0cmluZyk6IFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gICAgdmFsaWRhdGVSYXdUcmFuc2FjdGlvbihyYXcpO1xuICAgIGNvbnN0IHR4ID0gdGhpcy5wYXJzZVRyYW5zYWN0aW9uKHJhdyk7XG4gICAgdHJ5IHtcbiAgICAgIHN3aXRjaCAodHgudHlwZSkge1xuICAgICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TZW5kOlxuICAgICAgICAgIHJldHVybiB0aGlzLmdldFRyYW5zZmVyQnVpbGRlcih0eCk7XG4gICAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLldhbGxldEluaXRpYWxpemF0aW9uOlxuICAgICAgICAgIHJldHVybiB0aGlzLmdldFdhbGxldEluaXRpYWxpemF0aW9uQnVpbGRlcih0eCk7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uJyk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZ2V0V2FsbGV0SW5pdGlhbGl6YXRpb25CdWlsZGVyKHR4PzogVHJhbnNhY3Rpb24pOiBXYWxsZXRJbml0aWFsaXphdGlvbkJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmluaXRpYWxpemVCdWlsZGVyKHR4LCBuZXcgV2FsbGV0SW5pdGlhbGl6YXRpb25CdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRUcmFuc2ZlckJ1aWxkZXIodHg/OiBUcmFuc2FjdGlvbik6IFRyYW5zZmVyQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5pdGlhbGl6ZUJ1aWxkZXIodHgsIG5ldyBUcmFuc2ZlckJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZykpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIGJ1aWxkZXIgd2l0aCB0aGUgZ2l2ZW4gdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbiB8IHVuZGVmaW5lZH0gdHggLSB0aGUgdHJhbnNhY3Rpb24gdXNlZCB0byBpbml0aWFsaXplIHRoZSBidWlsZGVyXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25CdWlsZGVyfSBidWlsZGVyIC0gdGhlIGJ1aWxkZXIgdG8gYmUgaW5pdGlhbGl6ZWRcbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9uQnVpbGRlcn0gdGhlIGJ1aWxkZXIgaW5pdGlhbGl6ZWRcbiAgICovXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUJ1aWxkZXI8VCBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlcj4odHg6IFRyYW5zYWN0aW9uIHwgdW5kZWZpbmVkLCBidWlsZGVyOiBUKTogVCB7XG4gICAgaWYgKHR4KSB7XG4gICAgICBidWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICB9XG4gICAgcmV0dXJuIGJ1aWxkZXI7XG4gIH1cblxuICAvKiogUGFyc2UgdGhlIHRyYW5zYWN0aW9uIGZyb20gYSByYXcgdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHJhd1RyYW5zYWN0aW9uIC0gdGhlIHJhdyB0eFxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb259IHBhcnNlZCB0cmFuc2FjdGlvblxuICAgKi9cbiAgcHJpdmF0ZSBwYXJzZVRyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiBUcmFuc2FjdGlvbiB7XG4gICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24odGhpcy5fY29pbkNvbmZpZyk7XG4gICAgdHguZnJvbVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uKTtcbiAgICByZXR1cm4gdHg7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,19 +1,26 @@
|
|
|
1
1
|
import { BaseCoin as CoinConfig } from '@bitgo/statics';
|
|
2
|
-
import { BaseKey } from '../baseCoin/iface';
|
|
3
2
|
import { TransactionBuilder } from './transactionBuilder';
|
|
4
3
|
import { Transaction } from './transaction';
|
|
5
|
-
import { Transaction as SolTransaction } from '@solana/web3.js';
|
|
6
4
|
import { TransactionType } from '../baseCoin';
|
|
5
|
+
export interface SendParams {
|
|
6
|
+
address: string;
|
|
7
|
+
amount: string;
|
|
8
|
+
}
|
|
7
9
|
export declare class TransferBuilder extends TransactionBuilder {
|
|
10
|
+
private _sendParams;
|
|
8
11
|
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
9
12
|
protected get transactionType(): TransactionType;
|
|
10
|
-
|
|
11
|
-
|
|
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;
|
|
12
23
|
/** @inheritdoc */
|
|
13
24
|
protected buildImplementation(): Promise<Transaction>;
|
|
14
|
-
/** @inheritdoc */
|
|
15
|
-
protected fromImplementation(rawTransaction: any): Transaction;
|
|
16
|
-
/** @inheritdoc */
|
|
17
|
-
protected signImplementation(key: BaseKey): Transaction;
|
|
18
25
|
}
|
|
19
26
|
//# sourceMappingURL=transferBuilder.d.ts.map
|
|
@@ -1 +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;
|
|
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;IAa3C,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;CAiB5D"}
|
|
@@ -50,44 +50,91 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
50
50
|
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
51
51
|
}
|
|
52
52
|
};
|
|
53
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
54
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
55
|
+
};
|
|
53
56
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
54
57
|
exports.TransferBuilder = void 0;
|
|
55
58
|
var errors_1 = require("../baseCoin/errors");
|
|
56
59
|
var transactionBuilder_1 = require("./transactionBuilder");
|
|
60
|
+
var utils_1 = require("./utils");
|
|
57
61
|
var baseCoin_1 = require("../baseCoin");
|
|
62
|
+
var constants_1 = require("./constants");
|
|
63
|
+
var assert_1 = __importDefault(require("assert"));
|
|
58
64
|
var TransferBuilder = /** @class */ (function (_super) {
|
|
59
65
|
__extends(TransferBuilder, _super);
|
|
60
66
|
function TransferBuilder(_coinConfig) {
|
|
61
|
-
|
|
67
|
+
var _this = _super.call(this, _coinConfig) || this;
|
|
68
|
+
_this._sendParams = [];
|
|
69
|
+
return _this;
|
|
62
70
|
}
|
|
63
71
|
Object.defineProperty(TransferBuilder.prototype, "transactionType", {
|
|
64
72
|
get: function () {
|
|
65
|
-
return baseCoin_1.TransactionType.
|
|
73
|
+
return baseCoin_1.TransactionType.Send;
|
|
66
74
|
},
|
|
67
75
|
enumerable: false,
|
|
68
76
|
configurable: true
|
|
69
77
|
});
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
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
|
+
if (!address || !utils_1.isValidPublicKey(address)) {
|
|
103
|
+
throw new errors_1.BuildTransactionError('Invalid or missing address, got: ' + address);
|
|
104
|
+
}
|
|
105
|
+
if (!amount || !utils_1.isValidAmount(amount)) {
|
|
106
|
+
throw new errors_1.BuildTransactionError('Invalid or missing amount, got: ' + amount);
|
|
107
|
+
}
|
|
108
|
+
this._sendParams.push({ address: address, amount: amount });
|
|
109
|
+
return this;
|
|
73
110
|
};
|
|
74
111
|
/** @inheritdoc */
|
|
75
112
|
TransferBuilder.prototype.buildImplementation = function () {
|
|
76
113
|
return __awaiter(this, void 0, void 0, function () {
|
|
114
|
+
var transferData;
|
|
115
|
+
var _this = this;
|
|
77
116
|
return __generator(this, function (_a) {
|
|
78
|
-
|
|
117
|
+
switch (_a.label) {
|
|
118
|
+
case 0:
|
|
119
|
+
assert_1.default(this._sender, 'Sender must be set before building the transaction');
|
|
120
|
+
transferData = this._sendParams.map(function (sendParams) {
|
|
121
|
+
return {
|
|
122
|
+
type: constants_1.InstructionBuilderTypes.Transfer,
|
|
123
|
+
params: {
|
|
124
|
+
fromAddress: _this._sender,
|
|
125
|
+
toAddress: sendParams.address,
|
|
126
|
+
amount: sendParams.amount,
|
|
127
|
+
},
|
|
128
|
+
};
|
|
129
|
+
});
|
|
130
|
+
this._instructionsData = transferData;
|
|
131
|
+
return [4 /*yield*/, _super.prototype.buildImplementation.call(this)];
|
|
132
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
133
|
+
}
|
|
79
134
|
});
|
|
80
135
|
});
|
|
81
136
|
};
|
|
82
|
-
/** @inheritdoc */
|
|
83
|
-
TransferBuilder.prototype.fromImplementation = function (rawTransaction) {
|
|
84
|
-
throw new errors_1.NotImplementedError('fromImplementation not implemented');
|
|
85
|
-
};
|
|
86
|
-
/** @inheritdoc */
|
|
87
|
-
TransferBuilder.prototype.signImplementation = function (key) {
|
|
88
|
-
throw new errors_1.NotImplementedError('signImplementation not implemented');
|
|
89
|
-
};
|
|
90
137
|
return TransferBuilder;
|
|
91
138
|
}(transactionBuilder_1.TransactionBuilder));
|
|
92
139
|
exports.TransferBuilder = TransferBuilder;
|
|
93
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
140
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvaW4vc29sL3RyYW5zZmVyQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSw2Q0FBMkQ7QUFDM0QsMkRBQTBEO0FBRTFELGlDQUEwRDtBQUMxRCx3Q0FBOEM7QUFDOUMseUNBQXNEO0FBR3RELGtEQUE0QjtBQU81QjtJQUFxQyxtQ0FBa0I7SUFHckQseUJBQVksV0FBaUM7UUFBN0MsWUFDRSxrQkFBTSxXQUFXLENBQUMsU0FDbkI7UUFKTyxpQkFBVyxHQUFpQixFQUFFLENBQUM7O0lBSXZDLENBQUM7SUFFRCxzQkFBYyw0Q0FBZTthQUE3QjtZQUNFLE9BQU8sMEJBQWUsQ0FBQyxJQUFJLENBQUM7UUFDOUIsQ0FBQzs7O09BQUE7SUFFRCxxQ0FBVyxHQUFYLFVBQVksRUFBZTtRQUN6QixpQkFBTSxXQUFXLFlBQUMsRUFBRSxDQUFDLENBQUM7UUFFdEIsS0FBMEIsVUFBc0IsRUFBdEIsS0FBQSxJQUFJLENBQUMsaUJBQWlCLEVBQXRCLGNBQXNCLEVBQXRCLElBQXNCLEVBQUU7WUFBN0MsSUFBTSxXQUFXLFNBQUE7WUFDcEIsSUFBSSxXQUFXLENBQUMsSUFBSSxLQUFLLG1DQUF1QixDQUFDLFFBQVEsRUFBRTtnQkFDekQsSUFBTSxtQkFBbUIsR0FBYSxXQUFXLENBQUM7Z0JBRWxELElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUNwRCxJQUFJLENBQUMsSUFBSSxDQUFDO29CQUNSLE9BQU8sRUFBRSxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsU0FBUztvQkFDN0MsTUFBTSxFQUFFLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxNQUFNO2lCQUMxQyxDQUFDLENBQUM7YUFDSjtTQUNGO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCw4QkFBSSxHQUFKLFVBQUssRUFBK0I7WUFBN0IsT0FBTyxhQUFBLEVBQUUsTUFBTSxZQUFBO1FBQ3BCLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyx3QkFBZ0IsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUMxQyxNQUFNLElBQUksOEJBQXFCLENBQUMsbUNBQW1DLEdBQUcsT0FBTyxDQUFDLENBQUM7U0FDaEY7UUFDRCxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMscUJBQWEsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNyQyxNQUFNLElBQUksOEJBQXFCLENBQUMsa0NBQWtDLEdBQUcsTUFBTSxDQUFDLENBQUM7U0FDOUU7UUFFRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sU0FBQSxFQUFFLE1BQU0sUUFBQSxFQUFFLENBQUMsQ0FBQztRQUUzQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxrQkFBa0I7SUFDRiw2Q0FBbUIsR0FBbkM7Ozs7Ozs7d0JBQ0UsZ0JBQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLG9EQUFvRCxDQUFDLENBQUM7d0JBRXJFLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxVQUFDLFVBQXNCOzRCQUMvRCxPQUFPO2dDQUNMLElBQUksRUFBRSxtQ0FBdUIsQ0FBQyxRQUFRO2dDQUN0QyxNQUFNLEVBQUU7b0NBQ04sV0FBVyxFQUFFLEtBQUksQ0FBQyxPQUFPO29DQUN6QixTQUFTLEVBQUUsVUFBVSxDQUFDLE9BQU87b0NBQzdCLE1BQU0sRUFBRSxVQUFVLENBQUMsTUFBTTtpQ0FDMUI7NkJBQ0YsQ0FBQzt3QkFDSixDQUFDLENBQUMsQ0FBQzt3QkFDSCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsWUFBWSxDQUFDO3dCQUUvQixxQkFBTSxpQkFBTSxtQkFBbUIsV0FBRSxFQUFBOzRCQUF4QyxzQkFBTyxTQUFpQyxFQUFDOzs7O0tBQzFDO0lBQ0gsc0JBQUM7QUFBRCxDQUFDLEFBbEVELENBQXFDLHVDQUFrQixHQWtFdEQ7QUFsRVksMENBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgQnVpbGRUcmFuc2FjdGlvbkVycm9yIH0gZnJvbSAnLi4vYmFzZUNvaW4vZXJyb3JzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBpc1ZhbGlkQW1vdW50LCBpc1ZhbGlkUHVibGljS2V5IH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICcuLi9iYXNlQ29pbic7XG5pbXBvcnQgeyBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IFRyYW5zZmVyIH0gZnJvbSAnLi9pZmFjZSc7XG5cbmltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuZXhwb3J0IGludGVyZmFjZSBTZW5kUGFyYW1zIHtcbiAgYWRkcmVzczogc3RyaW5nO1xuICBhbW91bnQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFRyYW5zZmVyQnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByaXZhdGUgX3NlbmRQYXJhbXM6IFNlbmRQYXJhbXNbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb25UeXBlKCk6IFRyYW5zYWN0aW9uVHlwZSB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5TZW5kO1xuICB9XG5cbiAgaW5pdEJ1aWxkZXIodHg6IFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgc3VwZXIuaW5pdEJ1aWxkZXIodHgpO1xuXG4gICAgZm9yIChjb25zdCBpbnN0cnVjdGlvbiBvZiB0aGlzLl9pbnN0cnVjdGlvbnNEYXRhKSB7XG4gICAgICBpZiAoaW5zdHJ1Y3Rpb24udHlwZSA9PT0gSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuVHJhbnNmZXIpIHtcbiAgICAgICAgY29uc3QgdHJhbnNmZXJJbnN0cnVjdGlvbjogVHJhbnNmZXIgPSBpbnN0cnVjdGlvbjtcblxuICAgICAgICB0aGlzLnNlbmRlcih0cmFuc2Zlckluc3RydWN0aW9uLnBhcmFtcy5mcm9tQWRkcmVzcyk7XG4gICAgICAgIHRoaXMuc2VuZCh7XG4gICAgICAgICAgYWRkcmVzczogdHJhbnNmZXJJbnN0cnVjdGlvbi5wYXJhbXMudG9BZGRyZXNzLFxuICAgICAgICAgIGFtb3VudDogdHJhbnNmZXJJbnN0cnVjdGlvbi5wYXJhbXMuYW1vdW50LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogIFNldCBhIHRyYW5zZmVyXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmcm9tQWRkcmVzcyAtIHRoZSBzZW5kZXIgYWRkcmVzc1xuICAgKiBAcGFyYW0ge3N0cmluZ30gdG9BZGRyZXNzIC0gdGhlIHJlY2VpdmVyIGFkZHJlc3NcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFtb3VudCAtIHRoZSBhbW91bnQgc2VudFxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25CdWlsZGVyfSBUaGlzIHRyYW5zYWN0aW9uIGJ1aWxkZXJcbiAgICovXG4gIHNlbmQoeyBhZGRyZXNzLCBhbW91bnQgfTogU2VuZFBhcmFtcyk6IHRoaXMge1xuICAgIGlmICghYWRkcmVzcyB8fCAhaXNWYWxpZFB1YmxpY0tleShhZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBvciBtaXNzaW5nIGFkZHJlc3MsIGdvdDogJyArIGFkZHJlc3MpO1xuICAgIH1cbiAgICBpZiAoIWFtb3VudCB8fCAhaXNWYWxpZEFtb3VudChhbW91bnQpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIG9yIG1pc3NpbmcgYW1vdW50LCBnb3Q6ICcgKyBhbW91bnQpO1xuICAgIH1cblxuICAgIHRoaXMuX3NlbmRQYXJhbXMucHVzaCh7IGFkZHJlc3MsIGFtb3VudCB9KTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBhc3luYyBidWlsZEltcGxlbWVudGF0aW9uKCk6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgICBhc3NlcnQodGhpcy5fc2VuZGVyLCAnU2VuZGVyIG11c3QgYmUgc2V0IGJlZm9yZSBidWlsZGluZyB0aGUgdHJhbnNhY3Rpb24nKTtcblxuICAgIGNvbnN0IHRyYW5zZmVyRGF0YSA9IHRoaXMuX3NlbmRQYXJhbXMubWFwKChzZW5kUGFyYW1zOiBTZW5kUGFyYW1zKTogVHJhbnNmZXIgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuVHJhbnNmZXIsXG4gICAgICAgIHBhcmFtczoge1xuICAgICAgICAgIGZyb21BZGRyZXNzOiB0aGlzLl9zZW5kZXIsXG4gICAgICAgICAgdG9BZGRyZXNzOiBzZW5kUGFyYW1zLmFkZHJlc3MsXG4gICAgICAgICAgYW1vdW50OiBzZW5kUGFyYW1zLmFtb3VudCxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfSk7XG4gICAgdGhpcy5faW5zdHJ1Y3Rpb25zRGF0YSA9IHRyYW5zZmVyRGF0YTtcblxuICAgIHJldHVybiBhd2FpdCBzdXBlci5idWlsZEltcGxlbWVudGF0aW9uKCk7XG4gIH1cbn1cbiJdfQ==
|