@bitgo-beta/sdk-coin-atom 3.1.2-beta.99 → 3.1.2-beta.990
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/CHANGELOG.md +809 -0
- package/dist/src/atom.d.ts +7 -114
- package/dist/src/atom.d.ts.map +1 -1
- package/dist/src/atom.js +12 -498
- package/dist/src/index.js +6 -2
- package/dist/src/lib/constants.d.ts +0 -6
- package/dist/src/lib/constants.d.ts.map +1 -1
- package/dist/src/lib/constants.js +5 -11
- package/dist/src/lib/index.d.ts +3 -8
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +33 -24
- package/dist/src/lib/keyPair.d.ts +3 -12
- package/dist/src/lib/keyPair.d.ts.map +1 -1
- package/dist/src/lib/keyPair.js +5 -43
- package/dist/src/lib/transactionBuilderFactory.d.ts +8 -11
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilderFactory.js +21 -11
- package/dist/src/lib/utils.d.ts +5 -159
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +32 -498
- package/dist/src/tatom.d.ts +0 -8
- package/dist/src/tatom.d.ts.map +1 -1
- package/dist/src/tatom.js +1 -13
- package/package.json +10 -15
- package/dist/src/lib/StakingActivateBuilder.d.ts +0 -11
- package/dist/src/lib/StakingActivateBuilder.d.ts.map +0 -1
- package/dist/src/lib/StakingActivateBuilder.js +0 -31
- package/dist/src/lib/StakingDeactivateBuilder.d.ts +0 -11
- package/dist/src/lib/StakingDeactivateBuilder.d.ts.map +0 -1
- package/dist/src/lib/StakingDeactivateBuilder.js +0 -31
- package/dist/src/lib/StakingWithdrawRewardsBuilder.d.ts +0 -11
- package/dist/src/lib/StakingWithdrawRewardsBuilder.d.ts.map +0 -1
- package/dist/src/lib/StakingWithdrawRewardsBuilder.js +0 -31
- package/dist/src/lib/iface.d.ts +0 -46
- package/dist/src/lib/iface.d.ts.map +0 -1
- package/dist/src/lib/iface.js +0 -3
- package/dist/src/lib/transaction.d.ts +0 -58
- package/dist/src/lib/transaction.d.ts.map +0 -1
- package/dist/src/lib/transaction.js +0 -271
- package/dist/src/lib/transactionBuilder.d.ts +0 -78
- package/dist/src/lib/transactionBuilder.d.ts.map +0 -1
- package/dist/src/lib/transactionBuilder.js +0 -179
- package/dist/src/lib/transferBuilder.d.ts +0 -11
- package/dist/src/lib/transferBuilder.d.ts.map +0 -1
- package/dist/src/lib/transferBuilder.js +0 -31
|
@@ -1,271 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.Transaction = void 0;
|
|
7
|
-
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
8
|
-
const encoding_1 = require("@cosmjs/encoding");
|
|
9
|
-
const proto_signing_1 = require("@cosmjs/proto-signing");
|
|
10
|
-
const tx_1 = require("cosmjs-types/cosmos/tx/v1beta1/tx");
|
|
11
|
-
const constants_1 = require("./constants");
|
|
12
|
-
const utils_1 = __importDefault(require("./utils"));
|
|
13
|
-
class Transaction extends sdk_core_1.BaseTransaction {
|
|
14
|
-
constructor(_coinConfig) {
|
|
15
|
-
super(_coinConfig);
|
|
16
|
-
}
|
|
17
|
-
get atomTransaction() {
|
|
18
|
-
return this._atomTransaction;
|
|
19
|
-
}
|
|
20
|
-
set atomTransaction(atomTransaction) {
|
|
21
|
-
this._atomTransaction = atomTransaction;
|
|
22
|
-
}
|
|
23
|
-
get chainId() {
|
|
24
|
-
return this._chainId;
|
|
25
|
-
}
|
|
26
|
-
set chainId(chainId) {
|
|
27
|
-
this._chainId = chainId;
|
|
28
|
-
}
|
|
29
|
-
get accountNumber() {
|
|
30
|
-
return this._accountNumber;
|
|
31
|
-
}
|
|
32
|
-
set accountNumber(accountNumber) {
|
|
33
|
-
this._accountNumber = accountNumber;
|
|
34
|
-
}
|
|
35
|
-
/** @inheritDoc **/
|
|
36
|
-
get id() {
|
|
37
|
-
var _a;
|
|
38
|
-
if (this._id) {
|
|
39
|
-
return this._id;
|
|
40
|
-
}
|
|
41
|
-
else if (((_a = this._atomTransaction) === null || _a === void 0 ? void 0 : _a.hash) !== undefined) {
|
|
42
|
-
return this._atomTransaction.hash;
|
|
43
|
-
}
|
|
44
|
-
return constants_1.UNAVAILABLE_TEXT;
|
|
45
|
-
}
|
|
46
|
-
/** @inheritdoc */
|
|
47
|
-
canSign(key) {
|
|
48
|
-
return true;
|
|
49
|
-
}
|
|
50
|
-
/** @inheritdoc */
|
|
51
|
-
toBroadcastFormat() {
|
|
52
|
-
if (!this._atomTransaction) {
|
|
53
|
-
throw new sdk_core_1.InvalidTransactionError('Empty transaction');
|
|
54
|
-
}
|
|
55
|
-
return this.serialize();
|
|
56
|
-
}
|
|
57
|
-
/** @inheritdoc */
|
|
58
|
-
toJson() {
|
|
59
|
-
if (!this._atomTransaction) {
|
|
60
|
-
throw new sdk_core_1.ParseTransactionError('Empty transaction');
|
|
61
|
-
}
|
|
62
|
-
const tx = this._atomTransaction;
|
|
63
|
-
return {
|
|
64
|
-
id: this.id,
|
|
65
|
-
type: this._type,
|
|
66
|
-
sequence: tx.sequence,
|
|
67
|
-
sendMessages: tx.sendMessages,
|
|
68
|
-
gasBudget: tx.gasBudget,
|
|
69
|
-
publicKey: tx.publicKey,
|
|
70
|
-
signature: tx.signature,
|
|
71
|
-
accountNumber: this._accountNumber,
|
|
72
|
-
chainId: this._chainId,
|
|
73
|
-
hash: tx.hash,
|
|
74
|
-
memo: tx.memo,
|
|
75
|
-
};
|
|
76
|
-
}
|
|
77
|
-
/** @inheritDoc */
|
|
78
|
-
explainTransaction() {
|
|
79
|
-
const result = this.toJson();
|
|
80
|
-
const displayOrder = ['id', 'outputs', 'outputAmount', 'changeOutputs', 'changeAmount', 'fee', 'type'];
|
|
81
|
-
const outputs = [];
|
|
82
|
-
const explanationResult = {
|
|
83
|
-
displayOrder,
|
|
84
|
-
id: this.id,
|
|
85
|
-
outputs,
|
|
86
|
-
outputAmount: '0',
|
|
87
|
-
changeOutputs: [],
|
|
88
|
-
changeAmount: '0',
|
|
89
|
-
fee: { fee: this.atomTransaction.gasBudget.amount[0].amount },
|
|
90
|
-
type: this.type,
|
|
91
|
-
};
|
|
92
|
-
return this.explainTransactionInternal(result, explanationResult);
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Set the transaction type.
|
|
96
|
-
* @param {TransactionType} transactionType The transaction type to be set.
|
|
97
|
-
*/
|
|
98
|
-
set transactionType(transactionType) {
|
|
99
|
-
this._type = transactionType;
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* Sets this transaction payload
|
|
103
|
-
* @param rawTransaction raw transaction in base64 encoded string
|
|
104
|
-
*/
|
|
105
|
-
enrichTransactionDetailsFromRawTransaction(rawTransaction) {
|
|
106
|
-
if (utils_1.default.isValidHexString(rawTransaction)) {
|
|
107
|
-
this.atomTransaction = utils_1.default.deserializeAtomTransaction(encoding_1.toBase64(encoding_1.fromHex(rawTransaction)));
|
|
108
|
-
}
|
|
109
|
-
else {
|
|
110
|
-
this.atomTransaction = utils_1.default.deserializeAtomTransaction(rawTransaction);
|
|
111
|
-
}
|
|
112
|
-
if (this.atomTransaction.signature) {
|
|
113
|
-
this.addSignature(Buffer.from(this.atomTransaction.signature).toString('hex'));
|
|
114
|
-
}
|
|
115
|
-
const typeUrl = this.atomTransaction.sendMessages[0].typeUrl;
|
|
116
|
-
const transactionType = utils_1.default.getTransactionTypeFromTypeUrl(typeUrl);
|
|
117
|
-
if (transactionType === undefined) {
|
|
118
|
-
throw new Error('Transaction type is not supported ' + typeUrl);
|
|
119
|
-
}
|
|
120
|
-
this.transactionType = transactionType;
|
|
121
|
-
}
|
|
122
|
-
/**
|
|
123
|
-
* Add a signature to the transaction
|
|
124
|
-
* @param {string} signature in hex format
|
|
125
|
-
*/
|
|
126
|
-
addSignature(signature) {
|
|
127
|
-
this._signatures = [];
|
|
128
|
-
this._signatures.push(signature);
|
|
129
|
-
}
|
|
130
|
-
/**
|
|
131
|
-
* Serialize the transaction to a JSON string
|
|
132
|
-
* @returns {string} serialized base64 encoded transaction
|
|
133
|
-
*/
|
|
134
|
-
serialize() {
|
|
135
|
-
var _a;
|
|
136
|
-
const txRaw = utils_1.default.createTxRawFromAtomTransaction(this.atomTransaction);
|
|
137
|
-
if (((_a = this.atomTransaction) === null || _a === void 0 ? void 0 : _a.publicKey) !== undefined && this._signatures.length > 0) {
|
|
138
|
-
const signedRawTx = utils_1.default.createSignedTxRaw(this.atomTransaction.publicKey, this._signatures[0], txRaw);
|
|
139
|
-
return encoding_1.toBase64(tx_1.TxRaw.encode(signedRawTx).finish());
|
|
140
|
-
}
|
|
141
|
-
return encoding_1.toBase64(tx_1.TxRaw.encode(txRaw).finish());
|
|
142
|
-
}
|
|
143
|
-
/** @inheritdoc **/
|
|
144
|
-
get signablePayload() {
|
|
145
|
-
return Buffer.from(proto_signing_1.makeSignBytes(utils_1.default.createSignDoc(this.atomTransaction, this._accountNumber, this._chainId)));
|
|
146
|
-
}
|
|
147
|
-
/**
|
|
148
|
-
* Returns a complete explanation for a transfer transaction
|
|
149
|
-
* Currently only supports one message per transfer.
|
|
150
|
-
* @param {TxData} json The transaction data in json format
|
|
151
|
-
* @param {TransactionExplanation} explanationResult The transaction explanation to be completed
|
|
152
|
-
* @returns {TransactionExplanation}
|
|
153
|
-
*/
|
|
154
|
-
explainTransactionInternal(json, explanationResult) {
|
|
155
|
-
let outputs;
|
|
156
|
-
let message;
|
|
157
|
-
let outputAmount;
|
|
158
|
-
switch (json.type) {
|
|
159
|
-
case sdk_core_1.TransactionType.Send:
|
|
160
|
-
explanationResult.type = sdk_core_1.TransactionType.Send;
|
|
161
|
-
message = json.sendMessages[0].value;
|
|
162
|
-
outputAmount = message.amount[0].amount;
|
|
163
|
-
outputs = [
|
|
164
|
-
{
|
|
165
|
-
address: message.toAddress,
|
|
166
|
-
amount: outputAmount,
|
|
167
|
-
},
|
|
168
|
-
];
|
|
169
|
-
break;
|
|
170
|
-
case sdk_core_1.TransactionType.StakingActivate:
|
|
171
|
-
explanationResult.type = sdk_core_1.TransactionType.StakingActivate;
|
|
172
|
-
message = json.sendMessages[0].value;
|
|
173
|
-
outputAmount = message.amount.amount;
|
|
174
|
-
outputs = [
|
|
175
|
-
{
|
|
176
|
-
address: message.validatorAddress,
|
|
177
|
-
amount: outputAmount,
|
|
178
|
-
},
|
|
179
|
-
];
|
|
180
|
-
break;
|
|
181
|
-
case sdk_core_1.TransactionType.StakingDeactivate:
|
|
182
|
-
explanationResult.type = sdk_core_1.TransactionType.StakingDeactivate;
|
|
183
|
-
message = json.sendMessages[0].value;
|
|
184
|
-
outputAmount = message.amount.amount;
|
|
185
|
-
outputs = [
|
|
186
|
-
{
|
|
187
|
-
address: message.validatorAddress,
|
|
188
|
-
amount: outputAmount,
|
|
189
|
-
},
|
|
190
|
-
];
|
|
191
|
-
break;
|
|
192
|
-
case sdk_core_1.TransactionType.StakingWithdraw:
|
|
193
|
-
explanationResult.type = sdk_core_1.TransactionType.StakingWithdraw;
|
|
194
|
-
message = json.sendMessages[0].value;
|
|
195
|
-
outputs = [
|
|
196
|
-
{
|
|
197
|
-
address: message.validatorAddress,
|
|
198
|
-
amount: constants_1.UNAVAILABLE_TEXT,
|
|
199
|
-
},
|
|
200
|
-
];
|
|
201
|
-
break;
|
|
202
|
-
default:
|
|
203
|
-
throw new sdk_core_1.InvalidTransactionError('Transaction type not supported');
|
|
204
|
-
}
|
|
205
|
-
if (json.memo) {
|
|
206
|
-
outputs.forEach((output) => {
|
|
207
|
-
output.memo = json.memo;
|
|
208
|
-
});
|
|
209
|
-
}
|
|
210
|
-
return {
|
|
211
|
-
...explanationResult,
|
|
212
|
-
outputAmount,
|
|
213
|
-
outputs,
|
|
214
|
-
};
|
|
215
|
-
}
|
|
216
|
-
loadInputsAndOutputs() {
|
|
217
|
-
if (this.type === undefined || !this.atomTransaction) {
|
|
218
|
-
throw new sdk_core_1.InvalidTransactionError('Transaction type or atomTransaction is not set');
|
|
219
|
-
}
|
|
220
|
-
const outputs = [];
|
|
221
|
-
const inputs = [];
|
|
222
|
-
switch (this.type) {
|
|
223
|
-
case sdk_core_1.TransactionType.Send:
|
|
224
|
-
const message = this.atomTransaction.sendMessages[0].value;
|
|
225
|
-
inputs.push({
|
|
226
|
-
address: message.fromAddress,
|
|
227
|
-
value: message.amount[0].amount,
|
|
228
|
-
coin: this._coinConfig.name,
|
|
229
|
-
});
|
|
230
|
-
outputs.push({
|
|
231
|
-
address: message.toAddress,
|
|
232
|
-
value: message.amount[0].amount,
|
|
233
|
-
coin: this._coinConfig.name,
|
|
234
|
-
});
|
|
235
|
-
break;
|
|
236
|
-
case sdk_core_1.TransactionType.StakingActivate:
|
|
237
|
-
case sdk_core_1.TransactionType.StakingDeactivate:
|
|
238
|
-
const delegateMessage = this.atomTransaction.sendMessages[0].value;
|
|
239
|
-
inputs.push({
|
|
240
|
-
address: delegateMessage.delegatorAddress,
|
|
241
|
-
value: delegateMessage.amount.amount,
|
|
242
|
-
coin: this._coinConfig.name,
|
|
243
|
-
});
|
|
244
|
-
outputs.push({
|
|
245
|
-
address: delegateMessage.validatorAddress,
|
|
246
|
-
value: delegateMessage.amount.amount,
|
|
247
|
-
coin: this._coinConfig.name,
|
|
248
|
-
});
|
|
249
|
-
break;
|
|
250
|
-
case sdk_core_1.TransactionType.StakingWithdraw:
|
|
251
|
-
const withdrawMessage = this.atomTransaction.sendMessages[0].value;
|
|
252
|
-
inputs.push({
|
|
253
|
-
address: withdrawMessage.delegatorAddress,
|
|
254
|
-
value: constants_1.UNAVAILABLE_TEXT,
|
|
255
|
-
coin: this._coinConfig.name,
|
|
256
|
-
});
|
|
257
|
-
outputs.push({
|
|
258
|
-
address: withdrawMessage.validatorAddress,
|
|
259
|
-
value: constants_1.UNAVAILABLE_TEXT,
|
|
260
|
-
coin: this._coinConfig.name,
|
|
261
|
-
});
|
|
262
|
-
break;
|
|
263
|
-
default:
|
|
264
|
-
throw new sdk_core_1.InvalidTransactionError('Transaction type not supported');
|
|
265
|
-
}
|
|
266
|
-
this._inputs = inputs;
|
|
267
|
-
this._outputs = outputs;
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
exports.Transaction = Transaction;
|
|
271
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG1EQVE4QjtBQUU5QiwrQ0FBcUQ7QUFDckQseURBQXNEO0FBQ3RELDBEQUEwRDtBQUUxRCwyQ0FBK0M7QUFTL0Msb0RBQTRCO0FBRTVCLE1BQWEsV0FBWSxTQUFRLDBCQUFlO0lBSzlDLFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDakIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQUksZUFBZSxDQUFDLGVBQTBDO1FBQzVELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxlQUFlLENBQUM7SUFDMUMsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBSSxPQUFPLENBQUMsT0FBZTtRQUN6QixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFJLGFBQWEsQ0FBQyxhQUFxQjtRQUNyQyxJQUFJLENBQUMsY0FBYyxHQUFHLGFBQWEsQ0FBQztJQUN0QyxDQUFDO0lBRUQsbUJBQW1CO0lBQ25CLElBQUksRUFBRTs7UUFDSixJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDWixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUM7U0FDakI7YUFBTSxJQUFJLENBQUEsTUFBQSxJQUFJLENBQUMsZ0JBQWdCLDBDQUFFLElBQUksTUFBSyxTQUFTLEVBQUU7WUFDcEQsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDO1NBQ25DO1FBQ0QsT0FBTyw0QkFBZ0IsQ0FBQztJQUMxQixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLE9BQU8sQ0FBQyxHQUFZO1FBQ2xCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixpQkFBaUI7UUFDZixJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQzFCLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1NBQ3hEO1FBQ0QsT0FBTyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixNQUFNO1FBQ0osSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUMxQixNQUFNLElBQUksZ0NBQXFCLENBQUMsbUJBQW1CLENBQUMsQ0FBQztTQUN0RDtRQUNELE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUNqQyxPQUFPO1lBQ0wsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ1gsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2hCLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUTtZQUNyQixZQUFZLEVBQUUsRUFBRSxDQUFDLFlBQVk7WUFDN0IsU0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTO1lBQ3ZCLFNBQVMsRUFBRSxFQUFFLENBQUMsU0FBUztZQUN2QixTQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVM7WUFDdkIsYUFBYSxFQUFFLElBQUksQ0FBQyxjQUFjO1lBQ2xDLE9BQU8sRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN0QixJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUk7WUFDYixJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUk7U0FDZCxDQUFDO0lBQ0osQ0FBQztJQUVELGtCQUFrQjtJQUNsQixrQkFBa0I7UUFDaEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzdCLE1BQU0sWUFBWSxHQUFHLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDdkcsTUFBTSxPQUFPLEdBQTJCLEVBQUUsQ0FBQztRQUUzQyxNQUFNLGlCQUFpQixHQUEyQjtZQUNoRCxZQUFZO1lBQ1osRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ1gsT0FBTztZQUNQLFlBQVksRUFBRSxHQUFHO1lBQ2pCLGFBQWEsRUFBRSxFQUFFO1lBQ2pCLFlBQVksRUFBRSxHQUFHO1lBQ2pCLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFO1lBQzdELElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtTQUNoQixDQUFDO1FBQ0YsT0FBTyxJQUFJLENBQUMsMEJBQTBCLENBQUMsTUFBTSxFQUFFLGlCQUFpQixDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQUksZUFBZSxDQUFDLGVBQWdDO1FBQ2xELElBQUksQ0FBQyxLQUFLLEdBQUcsZUFBZSxDQUFDO0lBQy9CLENBQUM7SUFFRDs7O09BR0c7SUFDSCwwQ0FBMEMsQ0FBQyxjQUFzQjtRQUMvRCxJQUFJLGVBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsRUFBRTtZQUMxQyxJQUFJLENBQUMsZUFBZSxHQUFHLGVBQUssQ0FBQywwQkFBMEIsQ0FBQyxtQkFBUSxDQUFDLGtCQUFPLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzVGO2FBQU07WUFDTCxJQUFJLENBQUMsZUFBZSxHQUFHLGVBQUssQ0FBQywwQkFBMEIsQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUN6RTtRQUNELElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUU7WUFDbEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDaEY7UUFDRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFDN0QsTUFBTSxlQUFlLEdBQUcsZUFBSyxDQUFDLDZCQUE2QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JFLElBQUksZUFBZSxLQUFLLFNBQVMsRUFBRTtZQUNqQyxNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxHQUFHLE9BQU8sQ0FBQyxDQUFDO1NBQ2pFO1FBQ0QsSUFBSSxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUM7SUFDekMsQ0FBQztJQUVEOzs7T0FHRztJQUNILFlBQVksQ0FBQyxTQUFpQjtRQUM1QixJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsU0FBUzs7UUFDUCxNQUFNLEtBQUssR0FBRyxlQUFLLENBQUMsOEJBQThCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQSxNQUFBLElBQUksQ0FBQyxlQUFlLDBDQUFFLFNBQVMsTUFBSyxTQUFTLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ2hGLE1BQU0sV0FBVyxHQUFHLGVBQUssQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3hHLE9BQU8sbUJBQVEsQ0FBQyxVQUFLLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7U0FDckQ7UUFDRCxPQUFPLG1CQUFRLENBQUMsVUFBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxtQkFBbUI7SUFDbkIsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyw2QkFBYSxDQUFDLGVBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkgsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILDBCQUEwQixDQUFDLElBQVksRUFBRSxpQkFBeUM7UUFDaEYsSUFBSSxPQUErQixDQUFDO1FBQ3BDLElBQUksT0FBTyxDQUFDO1FBQ1osSUFBSSxZQUFZLENBQUM7UUFDakIsUUFBUSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2pCLEtBQUssMEJBQWUsQ0FBQyxJQUFJO2dCQUN2QixpQkFBaUIsQ0FBQyxJQUFJLEdBQUcsMEJBQWUsQ0FBQyxJQUFJLENBQUM7Z0JBQzlDLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQW9CLENBQUM7Z0JBQ3BELFlBQVksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztnQkFDeEMsT0FBTyxHQUFHO29CQUNSO3dCQUNFLE9BQU8sRUFBRSxPQUFPLENBQUMsU0FBUzt3QkFDMUIsTUFBTSxFQUFFLFlBQVk7cUJBQ3JCO2lCQUNGLENBQUM7Z0JBQ0YsTUFBTTtZQUNSLEtBQUssMEJBQWUsQ0FBQyxlQUFlO2dCQUNsQyxpQkFBaUIsQ0FBQyxJQUFJLEdBQUcsMEJBQWUsQ0FBQyxlQUFlLENBQUM7Z0JBQ3pELE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQW9DLENBQUM7Z0JBQ3BFLFlBQVksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztnQkFDckMsT0FBTyxHQUFHO29CQUNSO3dCQUNFLE9BQU8sRUFBRSxPQUFPLENBQUMsZ0JBQWdCO3dCQUNqQyxNQUFNLEVBQUUsWUFBWTtxQkFDckI7aUJBQ0YsQ0FBQztnQkFDRixNQUFNO1lBQ1IsS0FBSywwQkFBZSxDQUFDLGlCQUFpQjtnQkFDcEMsaUJBQWlCLENBQUMsSUFBSSxHQUFHLDBCQUFlLENBQUMsaUJBQWlCLENBQUM7Z0JBQzNELE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQW9DLENBQUM7Z0JBQ3BFLFlBQVksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztnQkFDckMsT0FBTyxHQUFHO29CQUNSO3dCQUNFLE9BQU8sRUFBRSxPQUFPLENBQUMsZ0JBQWdCO3dCQUNqQyxNQUFNLEVBQUUsWUFBWTtxQkFDckI7aUJBQ0YsQ0FBQztnQkFDRixNQUFNO1lBQ1IsS0FBSywwQkFBZSxDQUFDLGVBQWU7Z0JBQ2xDLGlCQUFpQixDQUFDLElBQUksR0FBRywwQkFBZSxDQUFDLGVBQWUsQ0FBQztnQkFDekQsT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBd0MsQ0FBQztnQkFDeEUsT0FBTyxHQUFHO29CQUNSO3dCQUNFLE9BQU8sRUFBRSxPQUFPLENBQUMsZ0JBQWdCO3dCQUNqQyxNQUFNLEVBQUUsNEJBQWdCO3FCQUN6QjtpQkFDRixDQUFDO2dCQUNGLE1BQU07WUFDUjtnQkFDRSxNQUFNLElBQUksa0NBQXVCLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztTQUN2RTtRQUNELElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUNiLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtnQkFDekIsTUFBTSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQzFCLENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxPQUFPO1lBQ0wsR0FBRyxpQkFBaUI7WUFDcEIsWUFBWTtZQUNaLE9BQU87U0FDUixDQUFDO0lBQ0osQ0FBQztJQUVELG9CQUFvQjtRQUNsQixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUNwRCxNQUFNLElBQUksa0NBQXVCLENBQUMsZ0RBQWdELENBQUMsQ0FBQztTQUNyRjtRQUVELE1BQU0sT0FBTyxHQUFZLEVBQUUsQ0FBQztRQUM1QixNQUFNLE1BQU0sR0FBWSxFQUFFLENBQUM7UUFDM0IsUUFBUSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2pCLEtBQUssMEJBQWUsQ0FBQyxJQUFJO2dCQUN2QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFvQixDQUFDO2dCQUMxRSxNQUFNLENBQUMsSUFBSSxDQUFDO29CQUNWLE9BQU8sRUFBRSxPQUFPLENBQUMsV0FBVztvQkFDNUIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTTtvQkFDL0IsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSTtpQkFDNUIsQ0FBQyxDQUFDO2dCQUNILE9BQU8sQ0FBQyxJQUFJLENBQUM7b0JBQ1gsT0FBTyxFQUFFLE9BQU8sQ0FBQyxTQUFTO29CQUMxQixLQUFLLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNO29CQUMvQixJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJO2lCQUM1QixDQUFDLENBQUM7Z0JBQ0gsTUFBTTtZQUNSLEtBQUssMEJBQWUsQ0FBQyxlQUFlLENBQUM7WUFDckMsS0FBSywwQkFBZSxDQUFDLGlCQUFpQjtnQkFDcEMsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBb0MsQ0FBQztnQkFDbEcsTUFBTSxDQUFDLElBQUksQ0FBQztvQkFDVixPQUFPLEVBQUUsZUFBZSxDQUFDLGdCQUFnQjtvQkFDekMsS0FBSyxFQUFFLGVBQWUsQ0FBQyxNQUFNLENBQUMsTUFBTTtvQkFDcEMsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSTtpQkFDNUIsQ0FBQyxDQUFDO2dCQUNILE9BQU8sQ0FBQyxJQUFJLENBQUM7b0JBQ1gsT0FBTyxFQUFFLGVBQWUsQ0FBQyxnQkFBZ0I7b0JBQ3pDLEtBQUssRUFBRSxlQUFlLENBQUMsTUFBTSxDQUFDLE1BQU07b0JBQ3BDLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUk7aUJBQzVCLENBQUMsQ0FBQztnQkFDSCxNQUFNO1lBQ1IsS0FBSywwQkFBZSxDQUFDLGVBQWU7Z0JBQ2xDLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQXdDLENBQUM7Z0JBQ3RHLE1BQU0sQ0FBQyxJQUFJLENBQUM7b0JBQ1YsT0FBTyxFQUFFLGVBQWUsQ0FBQyxnQkFBZ0I7b0JBQ3pDLEtBQUssRUFBRSw0QkFBZ0I7b0JBQ3ZCLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUk7aUJBQzVCLENBQUMsQ0FBQztnQkFDSCxPQUFPLENBQUMsSUFBSSxDQUFDO29CQUNYLE9BQU8sRUFBRSxlQUFlLENBQUMsZ0JBQWdCO29CQUN6QyxLQUFLLEVBQUUsNEJBQWdCO29CQUN2QixJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJO2lCQUM1QixDQUFDLENBQUM7Z0JBQ0gsTUFBTTtZQUNSO2dCQUNFLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1NBQ3ZFO1FBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDMUIsQ0FBQztDQUNGO0FBcFJELGtDQW9SQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJhc2VLZXksXG4gIEJhc2VUcmFuc2FjdGlvbixcbiAgRW50cnksXG4gIEludmFsaWRUcmFuc2FjdGlvbkVycm9yLFxuICBQYXJzZVRyYW5zYWN0aW9uRXJyb3IsXG4gIFRyYW5zYWN0aW9uUmVjaXBpZW50LFxuICBUcmFuc2FjdGlvblR5cGUsXG59IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IGZyb21IZXgsIHRvQmFzZTY0IH0gZnJvbSAnQGNvc21qcy9lbmNvZGluZyc7XG5pbXBvcnQgeyBtYWtlU2lnbkJ5dGVzIH0gZnJvbSAnQGNvc21qcy9wcm90by1zaWduaW5nJztcbmltcG9ydCB7IFR4UmF3IH0gZnJvbSAnY29zbWpzLXR5cGVzL2Nvc21vcy90eC92MWJldGExL3R4JztcblxuaW1wb3J0IHsgVU5BVkFJTEFCTEVfVEVYVCB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIEF0b21UcmFuc2FjdGlvbixcbiAgRGVsZWdhdGVPclVuZGVsZWdldGVNZXNzYWdlLFxuICBTZW5kTWVzc2FnZSxcbiAgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbixcbiAgVHhEYXRhLFxuICBXaXRoZHJhd0RlbGVnYXRvclJld2FyZHNNZXNzYWdlLFxufSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uIHtcbiAgcHJpdmF0ZSBfYXRvbVRyYW5zYWN0aW9uOiBBdG9tVHJhbnNhY3Rpb247XG4gIHByaXZhdGUgX2FjY291bnROdW1iZXI6IG51bWJlcjtcbiAgcHJpdmF0ZSBfY2hhaW5JZDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIGdldCBhdG9tVHJhbnNhY3Rpb24oKTogQXRvbVRyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fYXRvbVRyYW5zYWN0aW9uO1xuICB9XG5cbiAgc2V0IGF0b21UcmFuc2FjdGlvbihhdG9tVHJhbnNhY3Rpb246IFJlYWRvbmx5PEF0b21UcmFuc2FjdGlvbj4pIHtcbiAgICB0aGlzLl9hdG9tVHJhbnNhY3Rpb24gPSBhdG9tVHJhbnNhY3Rpb247XG4gIH1cblxuICBnZXQgY2hhaW5JZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9jaGFpbklkO1xuICB9XG5cbiAgc2V0IGNoYWluSWQoY2hhaW5JZDogc3RyaW5nKSB7XG4gICAgdGhpcy5fY2hhaW5JZCA9IGNoYWluSWQ7XG4gIH1cblxuICBnZXQgYWNjb3VudE51bWJlcigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9hY2NvdW50TnVtYmVyO1xuICB9XG5cbiAgc2V0IGFjY291bnROdW1iZXIoYWNjb3VudE51bWJlcjogbnVtYmVyKSB7XG4gICAgdGhpcy5fYWNjb3VudE51bWJlciA9IGFjY291bnROdW1iZXI7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKiovXG4gIGdldCBpZCgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLl9pZCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2lkO1xuICAgIH0gZWxzZSBpZiAodGhpcy5fYXRvbVRyYW5zYWN0aW9uPy5oYXNoICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLl9hdG9tVHJhbnNhY3Rpb24uaGFzaDtcbiAgICB9XG4gICAgcmV0dXJuIFVOQVZBSUxBQkxFX1RFWFQ7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgY2FuU2lnbihrZXk6IEJhc2VLZXkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB0b0Jyb2FkY2FzdEZvcm1hdCgpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5fYXRvbVRyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnNlcmlhbGl6ZSgpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHRvSnNvbigpOiBUeERhdGEge1xuICAgIGlmICghdGhpcy5fYXRvbVRyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2VUcmFuc2FjdGlvbkVycm9yKCdFbXB0eSB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICBjb25zdCB0eCA9IHRoaXMuX2F0b21UcmFuc2FjdGlvbjtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICB0eXBlOiB0aGlzLl90eXBlLFxuICAgICAgc2VxdWVuY2U6IHR4LnNlcXVlbmNlLFxuICAgICAgc2VuZE1lc3NhZ2VzOiB0eC5zZW5kTWVzc2FnZXMsXG4gICAgICBnYXNCdWRnZXQ6IHR4Lmdhc0J1ZGdldCxcbiAgICAgIHB1YmxpY0tleTogdHgucHVibGljS2V5LFxuICAgICAgc2lnbmF0dXJlOiB0eC5zaWduYXR1cmUsXG4gICAgICBhY2NvdW50TnVtYmVyOiB0aGlzLl9hY2NvdW50TnVtYmVyLFxuICAgICAgY2hhaW5JZDogdGhpcy5fY2hhaW5JZCxcbiAgICAgIGhhc2g6IHR4Lmhhc2gsXG4gICAgICBtZW1vOiB0eC5tZW1vLFxuICAgIH07XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgZXhwbGFpblRyYW5zYWN0aW9uKCk6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24ge1xuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMudG9Kc29uKCk7XG4gICAgY29uc3QgZGlzcGxheU9yZGVyID0gWydpZCcsICdvdXRwdXRzJywgJ291dHB1dEFtb3VudCcsICdjaGFuZ2VPdXRwdXRzJywgJ2NoYW5nZUFtb3VudCcsICdmZWUnLCAndHlwZSddO1xuICAgIGNvbnN0IG91dHB1dHM6IFRyYW5zYWN0aW9uUmVjaXBpZW50W10gPSBbXTtcblxuICAgIGNvbnN0IGV4cGxhbmF0aW9uUmVzdWx0OiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uID0ge1xuICAgICAgZGlzcGxheU9yZGVyLFxuICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICBvdXRwdXRzLFxuICAgICAgb3V0cHV0QW1vdW50OiAnMCcsXG4gICAgICBjaGFuZ2VPdXRwdXRzOiBbXSxcbiAgICAgIGNoYW5nZUFtb3VudDogJzAnLFxuICAgICAgZmVlOiB7IGZlZTogdGhpcy5hdG9tVHJhbnNhY3Rpb24uZ2FzQnVkZ2V0LmFtb3VudFswXS5hbW91bnQgfSxcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLmV4cGxhaW5UcmFuc2FjdGlvbkludGVybmFsKHJlc3VsdCwgZXhwbGFuYXRpb25SZXN1bHQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgdHJhbnNhY3Rpb24gdHlwZS5cbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvblR5cGV9IHRyYW5zYWN0aW9uVHlwZSBUaGUgdHJhbnNhY3Rpb24gdHlwZSB0byBiZSBzZXQuXG4gICAqL1xuICBzZXQgdHJhbnNhY3Rpb25UeXBlKHRyYW5zYWN0aW9uVHlwZTogVHJhbnNhY3Rpb25UeXBlKSB7XG4gICAgdGhpcy5fdHlwZSA9IHRyYW5zYWN0aW9uVHlwZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoaXMgdHJhbnNhY3Rpb24gcGF5bG9hZFxuICAgKiBAcGFyYW0gcmF3VHJhbnNhY3Rpb24gcmF3IHRyYW5zYWN0aW9uIGluIGJhc2U2NCBlbmNvZGVkIHN0cmluZ1xuICAgKi9cbiAgZW5yaWNoVHJhbnNhY3Rpb25EZXRhaWxzRnJvbVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodXRpbHMuaXNWYWxpZEhleFN0cmluZyhyYXdUcmFuc2FjdGlvbikpIHtcbiAgICAgIHRoaXMuYXRvbVRyYW5zYWN0aW9uID0gdXRpbHMuZGVzZXJpYWxpemVBdG9tVHJhbnNhY3Rpb24odG9CYXNlNjQoZnJvbUhleChyYXdUcmFuc2FjdGlvbikpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hdG9tVHJhbnNhY3Rpb24gPSB1dGlscy5kZXNlcmlhbGl6ZUF0b21UcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbik7XG4gICAgfVxuICAgIGlmICh0aGlzLmF0b21UcmFuc2FjdGlvbi5zaWduYXR1cmUpIHtcbiAgICAgIHRoaXMuYWRkU2lnbmF0dXJlKEJ1ZmZlci5mcm9tKHRoaXMuYXRvbVRyYW5zYWN0aW9uLnNpZ25hdHVyZSkudG9TdHJpbmcoJ2hleCcpKTtcbiAgICB9XG4gICAgY29uc3QgdHlwZVVybCA9IHRoaXMuYXRvbVRyYW5zYWN0aW9uLnNlbmRNZXNzYWdlc1swXS50eXBlVXJsO1xuICAgIGNvbnN0IHRyYW5zYWN0aW9uVHlwZSA9IHV0aWxzLmdldFRyYW5zYWN0aW9uVHlwZUZyb21UeXBlVXJsKHR5cGVVcmwpO1xuICAgIGlmICh0cmFuc2FjdGlvblR5cGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUcmFuc2FjdGlvbiB0eXBlIGlzIG5vdCBzdXBwb3J0ZWQgJyArIHR5cGVVcmwpO1xuICAgIH1cbiAgICB0aGlzLnRyYW5zYWN0aW9uVHlwZSA9IHRyYW5zYWN0aW9uVHlwZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBzaWduYXR1cmUgdG8gdGhlIHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzaWduYXR1cmUgaW4gaGV4IGZvcm1hdFxuICAgKi9cbiAgYWRkU2lnbmF0dXJlKHNpZ25hdHVyZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fc2lnbmF0dXJlcyA9IFtdO1xuICAgIHRoaXMuX3NpZ25hdHVyZXMucHVzaChzaWduYXR1cmUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlcmlhbGl6ZSB0aGUgdHJhbnNhY3Rpb24gdG8gYSBKU09OIHN0cmluZ1xuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBzZXJpYWxpemVkIGJhc2U2NCBlbmNvZGVkIHRyYW5zYWN0aW9uXG4gICAqL1xuICBzZXJpYWxpemUoKTogc3RyaW5nIHtcbiAgICBjb25zdCB0eFJhdyA9IHV0aWxzLmNyZWF0ZVR4UmF3RnJvbUF0b21UcmFuc2FjdGlvbih0aGlzLmF0b21UcmFuc2FjdGlvbik7XG4gICAgaWYgKHRoaXMuYXRvbVRyYW5zYWN0aW9uPy5wdWJsaWNLZXkgIT09IHVuZGVmaW5lZCAmJiB0aGlzLl9zaWduYXR1cmVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHNpZ25lZFJhd1R4ID0gdXRpbHMuY3JlYXRlU2lnbmVkVHhSYXcodGhpcy5hdG9tVHJhbnNhY3Rpb24ucHVibGljS2V5LCB0aGlzLl9zaWduYXR1cmVzWzBdLCB0eFJhdyk7XG4gICAgICByZXR1cm4gdG9CYXNlNjQoVHhSYXcuZW5jb2RlKHNpZ25lZFJhd1R4KS5maW5pc2goKSk7XG4gICAgfVxuICAgIHJldHVybiB0b0Jhc2U2NChUeFJhdy5lbmNvZGUodHhSYXcpLmZpbmlzaCgpKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqKi9cbiAgZ2V0IHNpZ25hYmxlUGF5bG9hZCgpOiBCdWZmZXIge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShtYWtlU2lnbkJ5dGVzKHV0aWxzLmNyZWF0ZVNpZ25Eb2ModGhpcy5hdG9tVHJhbnNhY3Rpb24sIHRoaXMuX2FjY291bnROdW1iZXIsIHRoaXMuX2NoYWluSWQpKSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGNvbXBsZXRlIGV4cGxhbmF0aW9uIGZvciBhIHRyYW5zZmVyIHRyYW5zYWN0aW9uXG4gICAqIEN1cnJlbnRseSBvbmx5IHN1cHBvcnRzIG9uZSBtZXNzYWdlIHBlciB0cmFuc2Zlci5cbiAgICogQHBhcmFtIHtUeERhdGF9IGpzb24gVGhlIHRyYW5zYWN0aW9uIGRhdGEgaW4ganNvbiBmb3JtYXRcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbkV4cGxhbmF0aW9ufSBleHBsYW5hdGlvblJlc3VsdCBUaGUgdHJhbnNhY3Rpb24gZXhwbGFuYXRpb24gdG8gYmUgY29tcGxldGVkXG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkV4cGxhbmF0aW9ufVxuICAgKi9cbiAgZXhwbGFpblRyYW5zYWN0aW9uSW50ZXJuYWwoanNvbjogVHhEYXRhLCBleHBsYW5hdGlvblJlc3VsdDogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbik6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24ge1xuICAgIGxldCBvdXRwdXRzOiBUcmFuc2FjdGlvblJlY2lwaWVudFtdO1xuICAgIGxldCBtZXNzYWdlO1xuICAgIGxldCBvdXRwdXRBbW91bnQ7XG4gICAgc3dpdGNoIChqc29uLnR5cGUpIHtcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlNlbmQ6XG4gICAgICAgIGV4cGxhbmF0aW9uUmVzdWx0LnR5cGUgPSBUcmFuc2FjdGlvblR5cGUuU2VuZDtcbiAgICAgICAgbWVzc2FnZSA9IGpzb24uc2VuZE1lc3NhZ2VzWzBdLnZhbHVlIGFzIFNlbmRNZXNzYWdlO1xuICAgICAgICBvdXRwdXRBbW91bnQgPSBtZXNzYWdlLmFtb3VudFswXS5hbW91bnQ7XG4gICAgICAgIG91dHB1dHMgPSBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogbWVzc2FnZS50b0FkZHJlc3MsXG4gICAgICAgICAgICBhbW91bnQ6IG91dHB1dEFtb3VudCxcbiAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdBY3RpdmF0ZTpcbiAgICAgICAgZXhwbGFuYXRpb25SZXN1bHQudHlwZSA9IFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nQWN0aXZhdGU7XG4gICAgICAgIG1lc3NhZ2UgPSBqc29uLnNlbmRNZXNzYWdlc1swXS52YWx1ZSBhcyBEZWxlZ2F0ZU9yVW5kZWxlZ2V0ZU1lc3NhZ2U7XG4gICAgICAgIG91dHB1dEFtb3VudCA9IG1lc3NhZ2UuYW1vdW50LmFtb3VudDtcbiAgICAgICAgb3V0cHV0cyA9IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiBtZXNzYWdlLnZhbGlkYXRvckFkZHJlc3MsXG4gICAgICAgICAgICBhbW91bnQ6IG91dHB1dEFtb3VudCxcbiAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdEZWFjdGl2YXRlOlxuICAgICAgICBleHBsYW5hdGlvblJlc3VsdC50eXBlID0gVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdEZWFjdGl2YXRlO1xuICAgICAgICBtZXNzYWdlID0ganNvbi5zZW5kTWVzc2FnZXNbMF0udmFsdWUgYXMgRGVsZWdhdGVPclVuZGVsZWdldGVNZXNzYWdlO1xuICAgICAgICBvdXRwdXRBbW91bnQgPSBtZXNzYWdlLmFtb3VudC5hbW91bnQ7XG4gICAgICAgIG91dHB1dHMgPSBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogbWVzc2FnZS52YWxpZGF0b3JBZGRyZXNzLFxuICAgICAgICAgICAgYW1vdW50OiBvdXRwdXRBbW91bnQsXG4gICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nV2l0aGRyYXc6XG4gICAgICAgIGV4cGxhbmF0aW9uUmVzdWx0LnR5cGUgPSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ1dpdGhkcmF3O1xuICAgICAgICBtZXNzYWdlID0ganNvbi5zZW5kTWVzc2FnZXNbMF0udmFsdWUgYXMgV2l0aGRyYXdEZWxlZ2F0b3JSZXdhcmRzTWVzc2FnZTtcbiAgICAgICAgb3V0cHV0cyA9IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiBtZXNzYWdlLnZhbGlkYXRvckFkZHJlc3MsXG4gICAgICAgICAgICBhbW91bnQ6IFVOQVZBSUxBQkxFX1RFWFQsXG4gICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ1RyYW5zYWN0aW9uIHR5cGUgbm90IHN1cHBvcnRlZCcpO1xuICAgIH1cbiAgICBpZiAoanNvbi5tZW1vKSB7XG4gICAgICBvdXRwdXRzLmZvckVhY2goKG91dHB1dCkgPT4ge1xuICAgICAgICBvdXRwdXQubWVtbyA9IGpzb24ubWVtbztcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgLi4uZXhwbGFuYXRpb25SZXN1bHQsXG4gICAgICBvdXRwdXRBbW91bnQsXG4gICAgICBvdXRwdXRzLFxuICAgIH07XG4gIH1cblxuICBsb2FkSW5wdXRzQW5kT3V0cHV0cygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50eXBlID09PSB1bmRlZmluZWQgfHwgIXRoaXMuYXRvbVRyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ1RyYW5zYWN0aW9uIHR5cGUgb3IgYXRvbVRyYW5zYWN0aW9uIGlzIG5vdCBzZXQnKTtcbiAgICB9XG5cbiAgICBjb25zdCBvdXRwdXRzOiBFbnRyeVtdID0gW107XG4gICAgY29uc3QgaW5wdXRzOiBFbnRyeVtdID0gW107XG4gICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlNlbmQ6XG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSB0aGlzLmF0b21UcmFuc2FjdGlvbi5zZW5kTWVzc2FnZXNbMF0udmFsdWUgYXMgU2VuZE1lc3NhZ2U7XG4gICAgICAgIGlucHV0cy5wdXNoKHtcbiAgICAgICAgICBhZGRyZXNzOiBtZXNzYWdlLmZyb21BZGRyZXNzLFxuICAgICAgICAgIHZhbHVlOiBtZXNzYWdlLmFtb3VudFswXS5hbW91bnQsXG4gICAgICAgICAgY29pbjogdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgICAgICB9KTtcbiAgICAgICAgb3V0cHV0cy5wdXNoKHtcbiAgICAgICAgICBhZGRyZXNzOiBtZXNzYWdlLnRvQWRkcmVzcyxcbiAgICAgICAgICB2YWx1ZTogbWVzc2FnZS5hbW91bnRbMF0uYW1vdW50LFxuICAgICAgICAgIGNvaW46IHRoaXMuX2NvaW5Db25maWcubmFtZSxcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0FjdGl2YXRlOlxuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0RlYWN0aXZhdGU6XG4gICAgICAgIGNvbnN0IGRlbGVnYXRlTWVzc2FnZSA9IHRoaXMuYXRvbVRyYW5zYWN0aW9uLnNlbmRNZXNzYWdlc1swXS52YWx1ZSBhcyBEZWxlZ2F0ZU9yVW5kZWxlZ2V0ZU1lc3NhZ2U7XG4gICAgICAgIGlucHV0cy5wdXNoKHtcbiAgICAgICAgICBhZGRyZXNzOiBkZWxlZ2F0ZU1lc3NhZ2UuZGVsZWdhdG9yQWRkcmVzcyxcbiAgICAgICAgICB2YWx1ZTogZGVsZWdhdGVNZXNzYWdlLmFtb3VudC5hbW91bnQsXG4gICAgICAgICAgY29pbjogdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgICAgICB9KTtcbiAgICAgICAgb3V0cHV0cy5wdXNoKHtcbiAgICAgICAgICBhZGRyZXNzOiBkZWxlZ2F0ZU1lc3NhZ2UudmFsaWRhdG9yQWRkcmVzcyxcbiAgICAgICAgICB2YWx1ZTogZGVsZWdhdGVNZXNzYWdlLmFtb3VudC5hbW91bnQsXG4gICAgICAgICAgY29pbjogdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nV2l0aGRyYXc6XG4gICAgICAgIGNvbnN0IHdpdGhkcmF3TWVzc2FnZSA9IHRoaXMuYXRvbVRyYW5zYWN0aW9uLnNlbmRNZXNzYWdlc1swXS52YWx1ZSBhcyBXaXRoZHJhd0RlbGVnYXRvclJld2FyZHNNZXNzYWdlO1xuICAgICAgICBpbnB1dHMucHVzaCh7XG4gICAgICAgICAgYWRkcmVzczogd2l0aGRyYXdNZXNzYWdlLmRlbGVnYXRvckFkZHJlc3MsXG4gICAgICAgICAgdmFsdWU6IFVOQVZBSUxBQkxFX1RFWFQsXG4gICAgICAgICAgY29pbjogdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgICAgICB9KTtcbiAgICAgICAgb3V0cHV0cy5wdXNoKHtcbiAgICAgICAgICBhZGRyZXNzOiB3aXRoZHJhd01lc3NhZ2UudmFsaWRhdG9yQWRkcmVzcyxcbiAgICAgICAgICB2YWx1ZTogVU5BVkFJTEFCTEVfVEVYVCxcbiAgICAgICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignVHJhbnNhY3Rpb24gdHlwZSBub3Qgc3VwcG9ydGVkJyk7XG4gICAgfVxuICAgIHRoaXMuX2lucHV0cyA9IGlucHV0cztcbiAgICB0aGlzLl9vdXRwdXRzID0gb3V0cHV0cztcbiAgfVxufVxuIl19
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
import { BaseAddress, BaseKey, BaseTransactionBuilder, PublicKey as BasePublicKey, TransactionType } from '@bitgo-beta/sdk-core';
|
|
3
|
-
import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
|
|
4
|
-
import BigNumber from 'bignumber.js';
|
|
5
|
-
import { DelegateOrUndelegeteMessage, FeeData, MessageData, SendMessage, WithdrawDelegatorRewardsMessage } from './iface';
|
|
6
|
-
import { Transaction } from './transaction';
|
|
7
|
-
export declare abstract class TransactionBuilder extends BaseTransactionBuilder {
|
|
8
|
-
protected _transaction: Transaction;
|
|
9
|
-
protected _sequence: number;
|
|
10
|
-
protected _messages: MessageData[];
|
|
11
|
-
protected _gasBudget: FeeData;
|
|
12
|
-
private _accountNumber?;
|
|
13
|
-
private _signature;
|
|
14
|
-
private _chainId?;
|
|
15
|
-
private _publicKey?;
|
|
16
|
-
private _signer;
|
|
17
|
-
private _memo?;
|
|
18
|
-
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
19
|
-
/**
|
|
20
|
-
* The transaction type.
|
|
21
|
-
*/
|
|
22
|
-
protected abstract get transactionType(): TransactionType;
|
|
23
|
-
/** @inheritdoc */
|
|
24
|
-
protected get transaction(): Transaction;
|
|
25
|
-
/** @inheritdoc */
|
|
26
|
-
protected set transaction(transaction: Transaction);
|
|
27
|
-
/** @inheritDoc */
|
|
28
|
-
addSignature(publicKey: BasePublicKey, signature: Buffer): void;
|
|
29
|
-
/**
|
|
30
|
-
* Sets gas budget of this transaction
|
|
31
|
-
* Gas budget consist of fee amount and gas limit. Division feeAmount/gasLimit represents
|
|
32
|
-
* the gas-fee and it should be more than minimum required gas-fee to process the transaction
|
|
33
|
-
* @param {FeeData} gasBudget
|
|
34
|
-
* @returns {TransactionBuilder} this transaction builder
|
|
35
|
-
*/
|
|
36
|
-
gasBudget(gasBudget: FeeData): this;
|
|
37
|
-
/**
|
|
38
|
-
* Sets sequence of this transaction.
|
|
39
|
-
* @param {number} sequence - sequence data for tx signer
|
|
40
|
-
* @returns {TransactionBuilder} This transaction builder
|
|
41
|
-
*/
|
|
42
|
-
sequence(sequence: number): this;
|
|
43
|
-
/**
|
|
44
|
-
* Sets messages to the transaction body. Message type will be different based on the transaction type
|
|
45
|
-
* - For @see TransactionType.StakingActivate required type is @see DelegateOrUndelegeteMessage
|
|
46
|
-
* - For @see TransactionType.StakingDeactivate required type is @see DelegateOrUndelegeteMessage
|
|
47
|
-
* - For @see TransactionType.Send required type is @see SendMessage
|
|
48
|
-
* - For @see TransactionType.StakingWithdraw required type is @see WithdrawDelegatorRewardsMessage
|
|
49
|
-
* @param {(SendMessage | DelegateOrUndelegeteMessage | WithdrawDelegatorRewardsMessage)[]} messages
|
|
50
|
-
* @returns {TransactionBuilder} This transaction builder
|
|
51
|
-
*/
|
|
52
|
-
abstract messages(messages: (SendMessage | DelegateOrUndelegeteMessage | WithdrawDelegatorRewardsMessage)[]): this;
|
|
53
|
-
publicKey(publicKey: string | undefined): this;
|
|
54
|
-
accountNumber(accountNumber: number | undefined): this;
|
|
55
|
-
chainId(chainId: string | undefined): this;
|
|
56
|
-
memo(memo: string | undefined): this;
|
|
57
|
-
/**
|
|
58
|
-
* Initialize the transaction builder fields using the decoded transaction data
|
|
59
|
-
* @param {Transaction} tx the transaction data
|
|
60
|
-
*/
|
|
61
|
-
initBuilder(tx: Transaction): void;
|
|
62
|
-
/** @inheritdoc */
|
|
63
|
-
protected fromImplementation(rawTransaction: string): Transaction;
|
|
64
|
-
/** @inheritdoc */
|
|
65
|
-
protected buildImplementation(): Promise<Transaction>;
|
|
66
|
-
/** @inheritdoc */
|
|
67
|
-
protected signImplementation(key: BaseKey): Transaction;
|
|
68
|
-
validateAddress(address: BaseAddress, addressFormat?: string): void;
|
|
69
|
-
/** @inheritdoc */
|
|
70
|
-
validateValue(value: BigNumber): void;
|
|
71
|
-
/** @inheritdoc */
|
|
72
|
-
validateKey(key: BaseKey): void;
|
|
73
|
-
/** @inheritdoc */
|
|
74
|
-
validateRawTransaction(rawTransaction: string): void;
|
|
75
|
-
/** @inheritdoc */
|
|
76
|
-
validateTransaction(transaction: Transaction): void;
|
|
77
|
-
}
|
|
78
|
-
//# sourceMappingURL=transactionBuilder.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilder.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,WAAW,EACX,OAAO,EACP,sBAAsB,EAGtB,SAAS,IAAI,aAAa,EAE1B,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAG7D,OAAO,SAAS,MAAM,cAAc,CAAC;AAErC,OAAO,EACL,2BAA2B,EAC3B,OAAO,EACP,WAAW,EACX,WAAW,EACX,+BAA+B,EAChC,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,8BAAsB,kBAAmB,SAAQ,sBAAsB;IACrE,SAAS,CAAC,YAAY,EAAE,WAAW,CAAC;IACpC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,SAAS,EAAE,WAAW,EAAE,CAAC;IACnC,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC;IAC9B,OAAO,CAAC,cAAc,CAAC,CAAS;IAChC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,QAAQ,CAAC,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAC,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,KAAK,CAAC,CAAS;gBAEX,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C;;OAEG;IACH,SAAS,CAAC,QAAQ,KAAK,eAAe,IAAI,eAAe,CAAC;IAE1D,kBAAkB;IAClB,SAAS,KAAK,WAAW,IAAI,WAAW,CAEvC;IAED,kBAAkB;IAClB,SAAS,KAAK,WAAW,CAAC,WAAW,EAAE,WAAW,EAEjD;IAED,kBAAkB;IAClB,YAAY,CAAC,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAK/D;;;;;;OAMG;IACH,SAAS,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI;IAMnC;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAMhC;;;;;;;;OAQG;IACH,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,WAAW,GAAG,2BAA2B,GAAG,+BAA+B,CAAC,EAAE,GAAG,IAAI;IAElH,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAK9C,aAAa,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAKtD,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAK1C,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAKpC;;;OAGG;IACH,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAmBlC,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,WAAW;IAOjE,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAwC3D,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,WAAW;IAavD,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAMnE,kBAAkB;IAClB,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAMrC,kBAAkB;IAClB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAQ/B,kBAAkB;IAClB,sBAAsB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAYpD,kBAAkB;IAClB,mBAAmB,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;CAQpD"}
|
|
@@ -1,179 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.TransactionBuilder = void 0;
|
|
7
|
-
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
8
|
-
const crypto_1 = require("@cosmjs/crypto");
|
|
9
|
-
const proto_signing_1 = require("@cosmjs/proto-signing");
|
|
10
|
-
const keyPair_1 = require("./keyPair");
|
|
11
|
-
const transaction_1 = require("./transaction");
|
|
12
|
-
const utils_1 = __importDefault(require("./utils"));
|
|
13
|
-
class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
|
|
14
|
-
constructor(_coinConfig) {
|
|
15
|
-
super(_coinConfig);
|
|
16
|
-
this._transaction = new transaction_1.Transaction(_coinConfig);
|
|
17
|
-
}
|
|
18
|
-
/** @inheritdoc */
|
|
19
|
-
get transaction() {
|
|
20
|
-
return this._transaction;
|
|
21
|
-
}
|
|
22
|
-
/** @inheritdoc */
|
|
23
|
-
set transaction(transaction) {
|
|
24
|
-
this._transaction = transaction;
|
|
25
|
-
}
|
|
26
|
-
/** @inheritDoc */
|
|
27
|
-
addSignature(publicKey, signature) {
|
|
28
|
-
this._signature = signature;
|
|
29
|
-
this._publicKey = publicKey.pub;
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Sets gas budget of this transaction
|
|
33
|
-
* Gas budget consist of fee amount and gas limit. Division feeAmount/gasLimit represents
|
|
34
|
-
* the gas-fee and it should be more than minimum required gas-fee to process the transaction
|
|
35
|
-
* @param {FeeData} gasBudget
|
|
36
|
-
* @returns {TransactionBuilder} this transaction builder
|
|
37
|
-
*/
|
|
38
|
-
gasBudget(gasBudget) {
|
|
39
|
-
utils_1.default.validateGasBudget(gasBudget);
|
|
40
|
-
this._gasBudget = gasBudget;
|
|
41
|
-
return this;
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Sets sequence of this transaction.
|
|
45
|
-
* @param {number} sequence - sequence data for tx signer
|
|
46
|
-
* @returns {TransactionBuilder} This transaction builder
|
|
47
|
-
*/
|
|
48
|
-
sequence(sequence) {
|
|
49
|
-
utils_1.default.validateSequence(sequence);
|
|
50
|
-
this._sequence = sequence;
|
|
51
|
-
return this;
|
|
52
|
-
}
|
|
53
|
-
publicKey(publicKey) {
|
|
54
|
-
this._publicKey = publicKey;
|
|
55
|
-
return this;
|
|
56
|
-
}
|
|
57
|
-
accountNumber(accountNumber) {
|
|
58
|
-
this._accountNumber = accountNumber;
|
|
59
|
-
return this;
|
|
60
|
-
}
|
|
61
|
-
chainId(chainId) {
|
|
62
|
-
this._chainId = chainId;
|
|
63
|
-
return this;
|
|
64
|
-
}
|
|
65
|
-
memo(memo) {
|
|
66
|
-
this._memo = memo;
|
|
67
|
-
return this;
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Initialize the transaction builder fields using the decoded transaction data
|
|
71
|
-
* @param {Transaction} tx the transaction data
|
|
72
|
-
*/
|
|
73
|
-
initBuilder(tx) {
|
|
74
|
-
this._transaction = tx;
|
|
75
|
-
const txData = tx.toJson();
|
|
76
|
-
this.gasBudget(txData.gasBudget);
|
|
77
|
-
this.messages(txData.sendMessages.map((message) => {
|
|
78
|
-
return message.value;
|
|
79
|
-
}));
|
|
80
|
-
this.sequence(txData.sequence);
|
|
81
|
-
this.publicKey(txData.publicKey);
|
|
82
|
-
this.accountNumber(txData.accountNumber);
|
|
83
|
-
this.chainId(txData.chainId);
|
|
84
|
-
this.memo(txData.memo);
|
|
85
|
-
if (tx.signature && tx.signature.length > 0) {
|
|
86
|
-
this.addSignature({ pub: txData.publicKey }, Buffer.from(tx.signature[0], 'hex'));
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
/** @inheritdoc */
|
|
90
|
-
fromImplementation(rawTransaction) {
|
|
91
|
-
const tx = new transaction_1.Transaction(this._coinConfig);
|
|
92
|
-
tx.enrichTransactionDetailsFromRawTransaction(rawTransaction);
|
|
93
|
-
this.initBuilder(tx);
|
|
94
|
-
return this.transaction;
|
|
95
|
-
}
|
|
96
|
-
/** @inheritdoc */
|
|
97
|
-
async buildImplementation() {
|
|
98
|
-
var _a;
|
|
99
|
-
this.transaction.transactionType = this.transactionType;
|
|
100
|
-
if (this._accountNumber) {
|
|
101
|
-
this.transaction.accountNumber = this._accountNumber;
|
|
102
|
-
}
|
|
103
|
-
if (this._chainId) {
|
|
104
|
-
this.transaction.chainId = this._chainId;
|
|
105
|
-
}
|
|
106
|
-
this.transaction.atomTransaction = utils_1.default.createAtomTransaction(this._sequence, this._messages, this._gasBudget, this._publicKey, this._memo);
|
|
107
|
-
const privateKey = (_a = this._signer) === null || _a === void 0 ? void 0 : _a.getPrivateKey();
|
|
108
|
-
if (privateKey !== undefined && this.transaction.atomTransaction.publicKey !== undefined) {
|
|
109
|
-
const signDoc = utils_1.default.createSignDoc(this.transaction.atomTransaction, this._accountNumber, this._chainId);
|
|
110
|
-
const txnHash = crypto_1.sha256(proto_signing_1.makeSignBytes(signDoc));
|
|
111
|
-
const signature = await crypto_1.Secp256k1.createSignature(txnHash, privateKey);
|
|
112
|
-
const compressedSig = Buffer.concat([signature.r(), signature.s()]);
|
|
113
|
-
this.addSignature({ pub: this.transaction.atomTransaction.publicKey }, compressedSig);
|
|
114
|
-
}
|
|
115
|
-
if (this._signature !== undefined) {
|
|
116
|
-
this.transaction.addSignature(this._signature.toString('hex'));
|
|
117
|
-
this.transaction.atomTransaction = utils_1.default.createAtomTransactionWithHash(this._sequence, this._messages, this._gasBudget, this._publicKey, this._signature, this._memo);
|
|
118
|
-
}
|
|
119
|
-
this.transaction.loadInputsAndOutputs();
|
|
120
|
-
return this.transaction;
|
|
121
|
-
}
|
|
122
|
-
/** @inheritdoc */
|
|
123
|
-
signImplementation(key) {
|
|
124
|
-
this.validateKey(key);
|
|
125
|
-
if (this._accountNumber === undefined) {
|
|
126
|
-
throw new sdk_core_1.SigningError('accountNumber is required before signing');
|
|
127
|
-
}
|
|
128
|
-
if (this._chainId === undefined) {
|
|
129
|
-
throw new sdk_core_1.SigningError('chainId is required before signing');
|
|
130
|
-
}
|
|
131
|
-
this._signer = new keyPair_1.KeyPair({ prv: key.key });
|
|
132
|
-
this._publicKey = this._signer.getKeys().pub;
|
|
133
|
-
return this.transaction;
|
|
134
|
-
}
|
|
135
|
-
validateAddress(address, addressFormat) {
|
|
136
|
-
if (!(utils_1.default.isValidAddress(address.address) || utils_1.default.isValidValidatorAddress(address.address))) {
|
|
137
|
-
throw new sdk_core_1.BuildTransactionError('transactionBuilder: address isValidAddress check failed: ' + address.address);
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
/** @inheritdoc */
|
|
141
|
-
validateValue(value) {
|
|
142
|
-
if (value.isLessThan(0)) {
|
|
143
|
-
throw new sdk_core_1.BuildTransactionError('Value cannot be less than zero');
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
/** @inheritdoc */
|
|
147
|
-
validateKey(key) {
|
|
148
|
-
try {
|
|
149
|
-
new keyPair_1.KeyPair({ prv: key.key });
|
|
150
|
-
}
|
|
151
|
-
catch {
|
|
152
|
-
throw new sdk_core_1.BuildTransactionError(`Key validation failed`);
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
/** @inheritdoc */
|
|
156
|
-
validateRawTransaction(rawTransaction) {
|
|
157
|
-
if (!rawTransaction) {
|
|
158
|
-
throw new sdk_core_1.InvalidTransactionError('Invalid raw transaction: Undefined rawTransaction');
|
|
159
|
-
}
|
|
160
|
-
try {
|
|
161
|
-
}
|
|
162
|
-
catch (e) {
|
|
163
|
-
throw new sdk_core_1.InvalidTransactionError('Invalid raw transaction: ' + e.message);
|
|
164
|
-
}
|
|
165
|
-
const atomTransaction = utils_1.default.deserializeAtomTransaction(rawTransaction);
|
|
166
|
-
utils_1.default.validateAtomTransaction(atomTransaction);
|
|
167
|
-
}
|
|
168
|
-
/** @inheritdoc */
|
|
169
|
-
validateTransaction(transaction) {
|
|
170
|
-
utils_1.default.validateAtomTransaction({
|
|
171
|
-
sequence: this._sequence,
|
|
172
|
-
sendMessages: this._messages,
|
|
173
|
-
gasBudget: this._gasBudget,
|
|
174
|
-
publicKey: this._publicKey,
|
|
175
|
-
});
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
exports.TransactionBuilder = TransactionBuilder;
|
|
179
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsbURBUzhCO0FBRTlCLDJDQUFtRDtBQUNuRCx5REFBc0Q7QUFVdEQsdUNBQW9DO0FBQ3BDLCtDQUE0QztBQUM1QyxvREFBNEI7QUFFNUIsTUFBc0Isa0JBQW1CLFNBQVEsaUNBQXNCO0lBWXJFLFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSx5QkFBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFPRCxrQkFBa0I7SUFDbEIsSUFBYyxXQUFXO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLElBQWMsV0FBVyxDQUFDLFdBQXdCO1FBQ2hELElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsWUFBWSxDQUFDLFNBQXdCLEVBQUUsU0FBaUI7UUFDdEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7UUFDNUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxTQUFTLENBQUMsU0FBa0I7UUFDMUIsZUFBSyxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO1FBQzVCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxRQUFRLENBQUMsUUFBZ0I7UUFDdkIsZUFBSyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxT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QUFDLENBQUMsRUFBRTtZQUN2QixNQUFNLElBQUksZ0NBQXFCLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztTQUNuRTtJQUNILENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsV0FBVyxDQUFDLEdBQVk7UUFDdEIsSUFBSTtZQUNGLElBQUksaUJBQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztTQUMvQjtRQUFDLE1BQU07WUFDTixNQUFNLElBQUksZ0NBQXFCLENBQUMsdUJBQXVCLENBQUMsQ0FBQztTQUMxRDtJQUNILENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsc0JBQXNCLENBQUMsY0FBc0I7UUFDM0MsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUNuQixNQUFNLElBQUksa0NBQXVCLENBQUMsbURBQW1ELENBQUMsQ0FBQztTQUN4RjtRQUNELElBQUk7U0FDSDtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsTUFBTSxJQUFJLGtDQUF1QixDQUFDLDJCQUEyQixHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUM1RTtRQUNELE1BQU0sZUFBZSxHQUFHLGVBQUssQ0FBQywwQkFBMEIsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN6RSxlQUFLLENBQUMsdUJBQXVCLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixtQkFBbUIsQ0FBQyxXQUF3QjtRQUMxQyxlQUFLLENBQUMsdUJBQXVCLENBQUM7WUFDNUIsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3hCLFlBQVksRUFBRSxJQUFJLENBQUMsU0FBUztZQUM1QixTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDMUIsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVO1NBQzNCLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQS9ORCxnREErTkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYXNlQWRkcmVzcyxcbiAgQmFzZUtleSxcbiAgQmFzZVRyYW5zYWN0aW9uQnVpbGRlcixcbiAgQnVpbGRUcmFuc2FjdGlvbkVycm9yLFxuICBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcixcbiAgUHVibGljS2V5IGFzIEJhc2VQdWJsaWNLZXksXG4gIFNpZ25pbmdFcnJvcixcbiAgVHJhbnNhY3Rpb25UeXBlLFxufSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBTZWNwMjU2azEsIHNoYTI1NiB9IGZyb20gJ0Bjb3NtanMvY3J5cHRvJztcbmltcG9ydCB7IG1ha2VTaWduQnl0ZXMgfSBmcm9tICdAY29zbWpzL3Byb3RvLXNpZ25pbmcnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuXG5pbXBvcnQge1xuICBEZWxlZ2F0ZU9yVW5kZWxlZ2V0ZU1lc3NhZ2UsXG4gIEZlZURhdGEsXG4gIE1lc3NhZ2VEYXRhLFxuICBTZW5kTWVzc2FnZSxcbiAgV2l0aGRyYXdEZWxlZ2F0b3JSZXdhcmRzTWVzc2FnZSxcbn0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnLi9rZXlQYWlyJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBUcmFuc2FjdGlvbkJ1aWxkZXIgZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgcHJvdGVjdGVkIF90cmFuc2FjdGlvbjogVHJhbnNhY3Rpb247XG4gIHByb3RlY3RlZCBfc2VxdWVuY2U6IG51bWJlcjtcbiAgcHJvdGVjdGVkIF9tZXNzYWdlczogTWVzc2FnZURhdGFbXTtcbiAgcHJvdGVjdGVkIF9nYXNCdWRnZXQ6IEZlZURhdGE7XG4gIHByaXZhdGUgX2FjY291bnROdW1iZXI/OiBudW1iZXI7XG4gIHByaXZhdGUgX3NpZ25hdHVyZTogQnVmZmVyO1xuICBwcml2YXRlIF9jaGFpbklkPzogc3RyaW5nO1xuICBwcml2YXRlIF9wdWJsaWNLZXk/OiBzdHJpbmc7XG4gIHByaXZhdGUgX3NpZ25lcjogS2V5UGFpcjtcbiAgcHJpdmF0ZSBfbWVtbz86IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24gPSBuZXcgVHJhbnNhY3Rpb24oX2NvaW5Db25maWcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0cmFuc2FjdGlvbiB0eXBlLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCB0cmFuc2FjdGlvblR5cGUoKTogVHJhbnNhY3Rpb25UeXBlO1xuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uKCk6IFRyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb247XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIHNldCB0cmFuc2FjdGlvbih0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24pIHtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IHRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGFkZFNpZ25hdHVyZShwdWJsaWNLZXk6IEJhc2VQdWJsaWNLZXksIHNpZ25hdHVyZTogQnVmZmVyKTogdm9pZCB7XG4gICAgdGhpcy5fc2lnbmF0dXJlID0gc2lnbmF0dXJlO1xuICAgIHRoaXMuX3B1YmxpY0tleSA9IHB1YmxpY0tleS5wdWI7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyBnYXMgYnVkZ2V0IG9mIHRoaXMgdHJhbnNhY3Rpb25cbiAgICogR2FzIGJ1ZGdldCBjb25zaXN0IG9mIGZlZSBhbW91bnQgYW5kIGdhcyBsaW1pdC4gRGl2aXNpb24gZmVlQW1vdW50L2dhc0xpbWl0IHJlcHJlc2VudHNcbiAgICogdGhlIGdhcy1mZWUgYW5kIGl0IHNob3VsZCBiZSBtb3JlIHRoYW4gbWluaW11bSByZXF1aXJlZCBnYXMtZmVlIHRvIHByb2Nlc3MgdGhlIHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSB7RmVlRGF0YX0gZ2FzQnVkZ2V0XG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IHRoaXMgdHJhbnNhY3Rpb24gYnVpbGRlclxuICAgKi9cbiAgZ2FzQnVkZ2V0KGdhc0J1ZGdldDogRmVlRGF0YSk6IHRoaXMge1xuICAgIHV0aWxzLnZhbGlkYXRlR2FzQnVkZ2V0KGdhc0J1ZGdldCk7XG4gICAgdGhpcy5fZ2FzQnVkZ2V0ID0gZ2FzQnVkZ2V0O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgc2VxdWVuY2Ugb2YgdGhpcyB0cmFuc2FjdGlvbi5cbiAgICogQHBhcmFtIHtudW1iZXJ9IHNlcXVlbmNlIC0gc2VxdWVuY2UgZGF0YSBmb3IgdHggc2lnbmVyXG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IFRoaXMgdHJhbnNhY3Rpb24gYnVpbGRlclxuICAgKi9cbiAgc2VxdWVuY2Uoc2VxdWVuY2U6IG51bWJlcik6IHRoaXMge1xuICAgIHV0aWxzLnZhbGlkYXRlU2VxdWVuY2Uoc2VxdWVuY2UpO1xuICAgIHRoaXMuX3NlcXVlbmNlID0gc2VxdWVuY2U7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyBtZXNzYWdlcyB0byB0aGUgdHJhbnNhY3Rpb24gYm9keS4gTWVzc2FnZSB0eXBlIHdpbGwgYmUgZGlmZmVyZW50IGJhc2VkIG9uIHRoZSB0cmFuc2FjdGlvbiB0eXBlXG4gICAqIC0gRm9yIEBzZWUgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdBY3RpdmF0ZSByZXF1aXJlZCB0eXBlIGlzIEBzZWUgRGVsZWdhdGVPclVuZGVsZWdldGVNZXNzYWdlXG4gICAqIC0gRm9yIEBzZWUgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdEZWFjdGl2YXRlIHJlcXVpcmVkIHR5cGUgaXMgQHNlZSBEZWxlZ2F0ZU9yVW5kZWxlZ2V0ZU1lc3NhZ2VcbiAgICogLSBGb3IgQHNlZSBUcmFuc2FjdGlvblR5cGUuU2VuZCByZXF1aXJlZCB0eXBlIGlzIEBzZWUgU2VuZE1lc3NhZ2VcbiAgICogLSBGb3IgQHNlZSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ1dpdGhkcmF3IHJlcXVpcmVkIHR5cGUgaXMgQHNlZSBXaXRoZHJhd0RlbGVnYXRvclJld2FyZHNNZXNzYWdlXG4gICAqIEBwYXJhbSB7KFNlbmRNZXNzYWdlIHwgRGVsZWdhdGVPclVuZGVsZWdldGVNZXNzYWdlIHwgV2l0aGRyYXdEZWxlZ2F0b3JSZXdhcmRzTWVzc2FnZSlbXX0gbWVzc2FnZXNcbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9uQnVpbGRlcn0gVGhpcyB0cmFuc2FjdGlvbiBidWlsZGVyXG4gICAqL1xuICBhYnN0cmFjdCBtZXNzYWdlcyhtZXNzYWdlczogKFNlbmRNZXNzYWdlIHwgRGVsZWdhdGVPclVuZGVsZWdldGVNZXNzYWdlIHwgV2l0aGRyYXdEZWxlZ2F0b3JSZXdhcmRzTWVzc2FnZSlbXSk6IHRoaXM7XG5cbiAgcHVibGljS2V5KHB1YmxpY0tleTogc3RyaW5nIHwgdW5kZWZpbmVkKTogdGhpcyB7XG4gICAgdGhpcy5fcHVibGljS2V5ID0gcHVibGljS2V5O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgYWNjb3VudE51bWJlcihhY2NvdW50TnVtYmVyOiBudW1iZXIgfCB1bmRlZmluZWQpOiB0aGlzIHtcbiAgICB0aGlzLl9hY2NvdW50TnVtYmVyID0gYWNjb3VudE51bWJlcjtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGNoYWluSWQoY2hhaW5JZDogc3RyaW5nIHwgdW5kZWZpbmVkKTogdGhpcyB7XG4gICAgdGhpcy5fY2hhaW5JZCA9IGNoYWluSWQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBtZW1vKG1lbW86IHN0cmluZyB8IHVuZGVmaW5lZCk6IHRoaXMge1xuICAgIHRoaXMuX21lbW8gPSBtZW1vO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIHRyYW5zYWN0aW9uIGJ1aWxkZXIgZmllbGRzIHVzaW5nIHRoZSBkZWNvZGVkIHRyYW5zYWN0aW9uIGRhdGFcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbn0gdHggdGhlIHRyYW5zYWN0aW9uIGRhdGFcbiAgICovXG4gIGluaXRCdWlsZGVyKHR4OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gdHg7XG4gICAgY29uc3QgdHhEYXRhID0gdHgudG9Kc29uKCk7XG4gICAgdGhpcy5nYXNCdWRnZXQodHhEYXRhLmdhc0J1ZGdldCk7XG4gICAgdGhpcy5tZXNzYWdlcyhcbiAgICAgIHR4RGF0YS5zZW5kTWVzc2FnZXMubWFwKChtZXNzYWdlKSA9PiB7XG4gICAgICAgIHJldHVybiBtZXNzYWdlLnZhbHVlO1xuICAgICAgfSlcbiAgICApO1xuICAgIHRoaXMuc2VxdWVuY2UodHhEYXRhLnNlcXVlbmNlKTtcbiAgICB0aGlzLnB1YmxpY0tleSh0eERhdGEucHVibGljS2V5KTtcbiAgICB0aGlzLmFjY291bnROdW1iZXIodHhEYXRhLmFjY291bnROdW1iZXIpO1xuICAgIHRoaXMuY2hhaW5JZCh0eERhdGEuY2hhaW5JZCk7XG4gICAgdGhpcy5tZW1vKHR4RGF0YS5tZW1vKTtcbiAgICBpZiAodHguc2lnbmF0dXJlICYmIHR4LnNpZ25hdHVyZS5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmFkZFNpZ25hdHVyZSh7IHB1YjogdHhEYXRhLnB1YmxpY0tleSB9IGFzIGFueSwgQnVmZmVyLmZyb20odHguc2lnbmF0dXJlWzBdLCAnaGV4JykpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgZnJvbUltcGxlbWVudGF0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiBUcmFuc2FjdGlvbiB7XG4gICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24odGhpcy5fY29pbkNvbmZpZyk7XG4gICAgdHguZW5yaWNoVHJhbnNhY3Rpb25EZXRhaWxzRnJvbVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uKTtcbiAgICB0aGlzLmluaXRCdWlsZGVyKHR4KTtcbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgYnVpbGRJbXBsZW1lbnRhdGlvbigpOiBQcm9taXNlPFRyYW5zYWN0aW9uPiB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvblR5cGUgPSB0aGlzLnRyYW5zYWN0aW9uVHlwZTtcbiAgICBpZiAodGhpcy5fYWNjb3VudE51bWJlcikge1xuICAgICAgdGhpcy50cmFuc2FjdGlvbi5hY2NvdW50TnVtYmVyID0gdGhpcy5fYWNjb3VudE51bWJlcjtcbiAgICB9XG4gICAgaWYgKHRoaXMuX2NoYWluSWQpIHtcbiAgICAgIHRoaXMudHJhbnNhY3Rpb24uY2hhaW5JZCA9IHRoaXMuX2NoYWluSWQ7XG4gICAgfVxuICAgIHRoaXMudHJhbnNhY3Rpb24uYXRvbVRyYW5zYWN0aW9uID0gdXRpbHMuY3JlYXRlQXRvbVRyYW5zYWN0aW9uKFxuICAgICAgdGhpcy5fc2VxdWVuY2UsXG4gICAgICB0aGlzLl9tZXNzYWdlcyxcbiAgICAgIHRoaXMuX2dhc0J1ZGdldCxcbiAgICAgIHRoaXMuX3B1YmxpY0tleSxcbiAgICAgIHRoaXMuX21lbW9cbiAgICApO1xuXG4gICAgY29uc3QgcHJpdmF0ZUtleSA9IHRoaXMuX3NpZ25lcj8uZ2V0UHJpdmF0ZUtleSgpO1xuICAgIGlmIChwcml2YXRlS2V5ICE9PSB1bmRlZmluZWQgJiYgdGhpcy50cmFuc2FjdGlvbi5hdG9tVHJhbnNhY3Rpb24ucHVibGljS2V5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHNpZ25Eb2MgPSB1dGlscy5jcmVhdGVTaWduRG9jKHRoaXMudHJhbnNhY3Rpb24uYXRvbVRyYW5zYWN0aW9uLCB0aGlzLl9hY2NvdW50TnVtYmVyLCB0aGlzLl9jaGFpbklkKTtcbiAgICAgIGNvbnN0IHR4bkhhc2ggPSBzaGEyNTYobWFrZVNpZ25CeXRlcyhzaWduRG9jKSk7XG4gICAgICBjb25zdCBzaWduYXR1cmUgPSBhd2FpdCBTZWNwMjU2azEuY3JlYXRlU2lnbmF0dXJlKHR4bkhhc2gsIHByaXZhdGVLZXkpO1xuICAgICAgY29uc3QgY29tcHJlc3NlZFNpZyA9IEJ1ZmZlci5jb25jYXQoW3NpZ25hdHVyZS5yKCksIHNpZ25hdHVyZS5zKCldKTtcbiAgICAgIHRoaXMuYWRkU2lnbmF0dXJlKHsgcHViOiB0aGlzLnRyYW5zYWN0aW9uLmF0b21UcmFuc2FjdGlvbi5wdWJsaWNLZXkgfSwgY29tcHJlc3NlZFNpZyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3NpZ25hdHVyZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnRyYW5zYWN0aW9uLmFkZFNpZ25hdHVyZSh0aGlzLl9zaWduYXR1cmUudG9TdHJpbmcoJ2hleCcpKTtcbiAgICAgIHRoaXMudHJhbnNhY3Rpb24uYXRvbVRyYW5zYWN0aW9uID0gdXRpbHMuY3JlYXRlQXRvbVRyYW5zYWN0aW9uV2l0aEhhc2goXG4gICAgICAgIHRoaXMuX3NlcXVlbmNlLFxuICAgICAgICB0aGlzLl9tZXNzYWdlcyxcbiAgICAgICAgdGhpcy5fZ2FzQnVkZ2V0LFxuICAgICAgICB0aGlzLl9wdWJsaWNLZXksXG4gICAgICAgIHRoaXMuX3NpZ25hdHVyZSxcbiAgICAgICAgdGhpcy5fbWVtb1xuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy50cmFuc2FjdGlvbi5sb2FkSW5wdXRzQW5kT3V0cHV0cygpO1xuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBzaWduSW1wbGVtZW50YXRpb24oa2V5OiBCYXNlS2V5KTogVHJhbnNhY3Rpb24ge1xuICAgIHRoaXMudmFsaWRhdGVLZXkoa2V5KTtcbiAgICBpZiAodGhpcy5fYWNjb3VudE51bWJlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKCdhY2NvdW50TnVtYmVyIGlzIHJlcXVpcmVkIGJlZm9yZSBzaWduaW5nJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9jaGFpbklkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBTaWduaW5nRXJyb3IoJ2NoYWluSWQgaXMgcmVxdWlyZWQgYmVmb3JlIHNpZ25pbmcnKTtcbiAgICB9XG4gICAgdGhpcy5fc2lnbmVyID0gbmV3IEtleVBhaXIoeyBwcnY6IGtleS5rZXkgfSk7XG4gICAgdGhpcy5fcHVibGljS2V5ID0gdGhpcy5fc2lnbmVyLmdldEtleXMoKS5wdWI7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb247XG4gIH1cblxuICB2YWxpZGF0ZUFkZHJlc3MoYWRkcmVzczogQmFzZUFkZHJlc3MsIGFkZHJlc3NGb3JtYXQ/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoISh1dGlscy5pc1ZhbGlkQWRkcmVzcyhhZGRyZXNzLmFkZHJlc3MpIHx8IHV0aWxzLmlzVmFsaWRWYWxpZGF0b3JBZGRyZXNzKGFkZHJlc3MuYWRkcmVzcykpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCd0cmFuc2FjdGlvbkJ1aWxkZXI6IGFkZHJlc3MgaXNWYWxpZEFkZHJlc3MgY2hlY2sgZmFpbGVkOiAnICsgYWRkcmVzcy5hZGRyZXNzKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVWYWx1ZSh2YWx1ZTogQmlnTnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHZhbHVlLmlzTGVzc1RoYW4oMCkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1ZhbHVlIGNhbm5vdCBiZSBsZXNzIHRoYW4gemVybycpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZUtleShrZXk6IEJhc2VLZXkpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgbmV3IEtleVBhaXIoeyBwcnY6IGtleS5rZXkgfSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKGBLZXkgdmFsaWRhdGlvbiBmYWlsZWRgKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVSYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCFyYXdUcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHJhdyB0cmFuc2FjdGlvbjogVW5kZWZpbmVkIHJhd1RyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHJhdyB0cmFuc2FjdGlvbjogJyArIGUubWVzc2FnZSk7XG4gICAgfVxuICAgIGNvbnN0IGF0b21UcmFuc2FjdGlvbiA9IHV0aWxzLmRlc2VyaWFsaXplQXRvbVRyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uKTtcbiAgICB1dGlscy52YWxpZGF0ZUF0b21UcmFuc2FjdGlvbihhdG9tVHJhbnNhY3Rpb24pO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlVHJhbnNhY3Rpb24odHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgdXRpbHMudmFsaWRhdGVBdG9tVHJhbnNhY3Rpb24oe1xuICAgICAgc2VxdWVuY2U6IHRoaXMuX3NlcXVlbmNlLFxuICAgICAgc2VuZE1lc3NhZ2VzOiB0aGlzLl9tZXNzYWdlcyxcbiAgICAgIGdhc0J1ZGdldDogdGhpcy5fZ2FzQnVkZ2V0LFxuICAgICAgcHVibGljS2V5OiB0aGlzLl9wdWJsaWNLZXksXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { TransactionType } from '@bitgo-beta/sdk-core';
|
|
2
|
-
import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
|
|
3
|
-
import { SendMessage } from './iface';
|
|
4
|
-
import { TransactionBuilder } from './transactionBuilder';
|
|
5
|
-
export declare class TransferBuilder extends TransactionBuilder {
|
|
6
|
-
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
7
|
-
protected get transactionType(): TransactionType;
|
|
8
|
-
/** @inheritdoc */
|
|
9
|
-
messages(sendMessages: SendMessage[]): this;
|
|
10
|
-
}
|
|
11
|
-
//# sourceMappingURL=transferBuilder.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"transferBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transferBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAG7D,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,qBAAa,eAAgB,SAAQ,kBAAkB;gBACzC,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED,kBAAkB;IAClB,QAAQ,CAAC,YAAY,EAAE,WAAW,EAAE,GAAG,IAAI;CAU5C"}
|