@bitgo-beta/sdk-coin-avaxp 3.2.3-alpha.49 → 3.2.3-alpha.490
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/src/avaxp.d.ts +7 -6
- package/dist/src/avaxp.d.ts.map +1 -1
- package/dist/src/avaxp.js +50 -43
- package/dist/src/iface.d.ts +0 -4
- package/dist/src/iface.d.ts.map +1 -1
- package/dist/src/iface.js +1 -1
- package/dist/src/index.js +23 -9
- package/dist/src/lib/atomicInCTransactionBuilder.d.ts +2 -3
- package/dist/src/lib/atomicInCTransactionBuilder.d.ts.map +1 -1
- package/dist/src/lib/atomicInCTransactionBuilder.js +1 -1
- package/dist/src/lib/atomicTransactionBuilder.d.ts +2 -4
- package/dist/src/lib/atomicTransactionBuilder.d.ts.map +1 -1
- package/dist/src/lib/atomicTransactionBuilder.js +9 -10
- package/dist/src/lib/delegatorTxBuilder.d.ts +6 -7
- package/dist/src/lib/delegatorTxBuilder.d.ts.map +1 -1
- package/dist/src/lib/delegatorTxBuilder.js +11 -12
- package/dist/src/lib/deprecatedTransaction.d.ts +98 -0
- package/dist/src/lib/deprecatedTransaction.d.ts.map +1 -0
- package/dist/src/lib/deprecatedTransaction.js +344 -0
- package/dist/src/lib/deprecatedTransactionBuilder.d.ts +114 -0
- package/dist/src/lib/deprecatedTransactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/deprecatedTransactionBuilder.js +210 -0
- package/dist/src/lib/exportInCTxBuilder.d.ts +8 -9
- package/dist/src/lib/exportInCTxBuilder.d.ts.map +1 -1
- package/dist/src/lib/exportInCTxBuilder.js +4 -4
- package/dist/src/lib/exportTxBuilder.d.ts +4 -5
- package/dist/src/lib/exportTxBuilder.d.ts.map +1 -1
- package/dist/src/lib/exportTxBuilder.js +3 -3
- package/dist/src/lib/iface.d.ts +19 -10
- package/dist/src/lib/iface.d.ts.map +1 -1
- package/dist/src/lib/iface.js +9 -4
- package/dist/src/lib/importInCTxBuilder.d.ts +4 -5
- package/dist/src/lib/importInCTxBuilder.d.ts.map +1 -1
- package/dist/src/lib/importInCTxBuilder.js +6 -6
- package/dist/src/lib/importTxBuilder.d.ts +4 -4
- package/dist/src/lib/importTxBuilder.d.ts.map +1 -1
- package/dist/src/lib/importTxBuilder.js +3 -3
- package/dist/src/lib/index.d.ts +2 -0
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +11 -3
- package/dist/src/lib/keyPair.d.ts +0 -1
- package/dist/src/lib/keyPair.d.ts.map +1 -1
- package/dist/src/lib/keyPair.js +20 -21
- package/dist/src/lib/permissionlessValidatorTxBuilder.d.ts +154 -0
- package/dist/src/lib/permissionlessValidatorTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/permissionlessValidatorTxBuilder.js +431 -0
- package/dist/src/lib/transaction.d.ts +19 -41
- package/dist/src/lib/transaction.d.ts.map +1 -1
- package/dist/src/lib/transaction.js +68 -168
- package/dist/src/lib/transactionBuilder.d.ts +31 -82
- package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilder.js +57 -151
- package/dist/src/lib/transactionBuilderFactory.d.ts +16 -8
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilderFactory.js +77 -19
- package/dist/src/lib/utils.d.ts +23 -9
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +72 -22
- package/dist/src/lib/utxoEngine.d.ts +10 -2
- package/dist/src/lib/utxoEngine.d.ts.map +1 -1
- package/dist/src/lib/utxoEngine.js +32 -7
- package/dist/src/lib/validatorTxBuilder.d.ts +4 -4
- package/dist/src/lib/validatorTxBuilder.d.ts.map +1 -1
- package/dist/src/lib/validatorTxBuilder.js +2 -2
- package/dist/test/resources/avaxp.d.ts +80 -6
- package/dist/test/resources/avaxp.d.ts.map +1 -1
- package/dist/test/resources/avaxp.js +166 -33
- package/dist/test/resources/tx/importP.js +8 -8
- package/dist/test/unit/avaxp.js +109 -117
- package/dist/test/unit/lib/exportC2PTxBuilder.js +23 -9
- package/dist/test/unit/lib/exportP2CTxBuilder.js +27 -17
- package/dist/test/unit/lib/importC2PTxBuilder.js +25 -11
- package/dist/test/unit/lib/importP2CTxBuilder.js +25 -13
- package/dist/test/unit/lib/keyPair.js +23 -9
- package/dist/test/unit/lib/permissionlessValidatorTxBuilder.d.ts +2 -0
- package/dist/test/unit/lib/permissionlessValidatorTxBuilder.d.ts.map +1 -0
- package/dist/test/unit/lib/permissionlessValidatorTxBuilder.js +341 -0
- package/dist/test/unit/lib/signFlowTestSuit.js +2 -2
- package/dist/test/unit/lib/transactionBuilderFactory.js +25 -11
- package/dist/test/unit/lib/utils.js +23 -9
- package/dist/test/unit/lib/utxoEngine.js +6 -6
- package/dist/test/unit/lib/validateTxBuilder.js +29 -20
- package/dist/tsconfig.tsbuildinfo +1 -12687
- package/package.json +15 -12
- package/.eslintignore +0 -5
- package/.eslintrc.json +0 -7
- package/.mocharc.yml +0 -8
- package/CHANGELOG.md +0 -318
|
@@ -0,0 +1,344 @@
|
|
|
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.DeprecatedTransaction = void 0;
|
|
7
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
8
|
+
const iface_1 = require("./iface");
|
|
9
|
+
const avalanche_1 = require("avalanche");
|
|
10
|
+
const utils_1 = __importDefault(require("./utils"));
|
|
11
|
+
function isEmptySignature(s) {
|
|
12
|
+
return !!s && s.startsWith(''.padStart(90, '0'));
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Signatures are prestore as empty buffer for hsm and address of signar for first signature.
|
|
16
|
+
* When sign is required, this method return the function that identify a signature to be replaced.
|
|
17
|
+
* @param signatures any signatures as samples to identify which signature required replace.
|
|
18
|
+
*/
|
|
19
|
+
function generateSelectorSignature(signatures) {
|
|
20
|
+
if (signatures.length > 1 && signatures.every((sig) => isEmptySignature(sig.bytes))) {
|
|
21
|
+
// Look for address.
|
|
22
|
+
return function (sig, address) {
|
|
23
|
+
try {
|
|
24
|
+
if (!isEmptySignature(sig.bytes)) {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
const pub = sig.bytes.substring(90);
|
|
28
|
+
return pub === address;
|
|
29
|
+
}
|
|
30
|
+
catch (e) {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
// Look for empty string
|
|
37
|
+
return function (sig, address) {
|
|
38
|
+
if (isEmptySignature(sig.bytes))
|
|
39
|
+
return true;
|
|
40
|
+
return false;
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
// end region utils for sign
|
|
45
|
+
class DeprecatedTransaction extends sdk_core_1.BaseTransaction {
|
|
46
|
+
constructor(coinConfig) {
|
|
47
|
+
super(coinConfig);
|
|
48
|
+
this._threshold = 2;
|
|
49
|
+
this._locktime = new avalanche_1.BN(0);
|
|
50
|
+
this._fromAddresses = [];
|
|
51
|
+
this._utxos = [];
|
|
52
|
+
this._fee = {};
|
|
53
|
+
this._network = coinConfig.network;
|
|
54
|
+
this._assetId = utils_1.default.cb58Decode(this._network.avaxAssetID);
|
|
55
|
+
this._blockchainID = utils_1.default.cb58Decode(this._network.blockchainID);
|
|
56
|
+
this._networkID = this._network.networkID;
|
|
57
|
+
}
|
|
58
|
+
get avaxPTransaction() {
|
|
59
|
+
return this._avaxTransaction.getUnsignedTx().getTransaction();
|
|
60
|
+
}
|
|
61
|
+
get signature() {
|
|
62
|
+
if (this.credentials.length === 0) {
|
|
63
|
+
return [];
|
|
64
|
+
}
|
|
65
|
+
const obj = this.credentials[0].serialize();
|
|
66
|
+
return obj.sigArray.map((s) => s.bytes).filter((s) => !isEmptySignature(s));
|
|
67
|
+
}
|
|
68
|
+
get credentials() {
|
|
69
|
+
return this._avaxTransaction?.credentials;
|
|
70
|
+
}
|
|
71
|
+
get hasCredentials() {
|
|
72
|
+
return this.credentials !== undefined && this.credentials.length > 0;
|
|
73
|
+
}
|
|
74
|
+
/** @inheritdoc */
|
|
75
|
+
canSign({ key }) {
|
|
76
|
+
// TODO(BG-56700): Improve canSign by check in addresses in empty credentials match signer
|
|
77
|
+
return true;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Sign a avaxp transaction and update the transaction hex
|
|
81
|
+
* validator, delegator, import, exports extend baseTx
|
|
82
|
+
* unsignedTx: UnsignedTx = new UnsignedTx(baseTx) (baseTx = addValidatorTx)
|
|
83
|
+
* const tx: Tx = unsignedTx.sign(keychain) (tx is type standard signed tx)
|
|
84
|
+
* get baseTx then create new unsignedTx then sign
|
|
85
|
+
*
|
|
86
|
+
* @param {KeyPair} keyPair
|
|
87
|
+
*/
|
|
88
|
+
sign(keyPair) {
|
|
89
|
+
const prv = keyPair.getPrivateKey();
|
|
90
|
+
const addressHex = keyPair.getAddressBuffer().toString('hex');
|
|
91
|
+
if (!prv) {
|
|
92
|
+
throw new sdk_core_1.SigningError('Missing private key');
|
|
93
|
+
}
|
|
94
|
+
if (!this.avaxPTransaction) {
|
|
95
|
+
throw new sdk_core_1.InvalidTransactionError('empty transaction to sign');
|
|
96
|
+
}
|
|
97
|
+
if (!this.hasCredentials) {
|
|
98
|
+
throw new sdk_core_1.InvalidTransactionError('empty credentials to sign');
|
|
99
|
+
}
|
|
100
|
+
const signature = this.createSignature(prv);
|
|
101
|
+
let checkSign = undefined;
|
|
102
|
+
this.credentials.forEach((c, index) => {
|
|
103
|
+
const cs = c.serialize();
|
|
104
|
+
if (checkSign === undefined) {
|
|
105
|
+
checkSign = generateSelectorSignature(cs.sigArray);
|
|
106
|
+
}
|
|
107
|
+
let find = false;
|
|
108
|
+
cs.sigArray.forEach((sig) => {
|
|
109
|
+
if (checkSign && checkSign(sig, addressHex)) {
|
|
110
|
+
sig.bytes = signature;
|
|
111
|
+
find = true;
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
if (!find)
|
|
115
|
+
throw new sdk_core_1.SigningError('Private key cannot sign the transaction');
|
|
116
|
+
c.deserialize(cs);
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
/** @inheritdoc */
|
|
120
|
+
/**
|
|
121
|
+
* should be of signedTx doing this with baseTx
|
|
122
|
+
*/
|
|
123
|
+
toBroadcastFormat() {
|
|
124
|
+
if (!this.avaxPTransaction) {
|
|
125
|
+
throw new sdk_core_1.InvalidTransactionError('Empty transaction data');
|
|
126
|
+
}
|
|
127
|
+
return this._avaxTransaction.toStringHex();
|
|
128
|
+
}
|
|
129
|
+
// types - stakingTransaction, import, export
|
|
130
|
+
toJson() {
|
|
131
|
+
if (!this.avaxPTransaction) {
|
|
132
|
+
throw new sdk_core_1.InvalidTransactionError('Empty transaction data');
|
|
133
|
+
}
|
|
134
|
+
return {
|
|
135
|
+
id: this.id,
|
|
136
|
+
inputs: this.inputs,
|
|
137
|
+
fromAddresses: this.fromAddresses,
|
|
138
|
+
threshold: this._threshold,
|
|
139
|
+
locktime: this._locktime.toString(),
|
|
140
|
+
type: this.type,
|
|
141
|
+
signatures: this.signature,
|
|
142
|
+
outputs: this.outputs,
|
|
143
|
+
changeOutputs: this.changeOutputs,
|
|
144
|
+
sourceChain: this.sourceChain,
|
|
145
|
+
destinationChain: this.destinationChain,
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
setTransaction(tx) {
|
|
149
|
+
this._avaxTransaction = tx;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Set the transaction type
|
|
153
|
+
*
|
|
154
|
+
* @param {TransactionType} transactionType The transaction type to be set
|
|
155
|
+
*/
|
|
156
|
+
setTransactionType(transactionType) {
|
|
157
|
+
this._type = transactionType;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Returns the portion of the transaction that needs to be signed in Buffer format.
|
|
161
|
+
* Only needed for coins that support adding signatures directly (e.g. TSS).
|
|
162
|
+
*/
|
|
163
|
+
get signablePayload() {
|
|
164
|
+
return utils_1.default.sha256(this._avaxTransaction.getUnsignedTx().toBuffer());
|
|
165
|
+
}
|
|
166
|
+
get id() {
|
|
167
|
+
return utils_1.default.cb58Encode(avalanche_1.Buffer.from(utils_1.default.sha256(this._avaxTransaction.toBuffer())));
|
|
168
|
+
}
|
|
169
|
+
get fromAddresses() {
|
|
170
|
+
return this._fromAddresses.map((a) => utils_1.default.addressToString(this._network.hrp, this._network.alias, a));
|
|
171
|
+
}
|
|
172
|
+
get rewardAddresses() {
|
|
173
|
+
return this._rewardAddresses.map((a) => utils_1.default.addressToString(this._network.hrp, this._network.alias, a));
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Get the list of outputs. Amounts are expressed in absolute value.
|
|
177
|
+
*/
|
|
178
|
+
get outputs() {
|
|
179
|
+
switch (this.type) {
|
|
180
|
+
case sdk_core_1.TransactionType.Import:
|
|
181
|
+
return this.avaxPTransaction
|
|
182
|
+
.getOuts()
|
|
183
|
+
.map(utils_1.default.deprecatedMapOutputToEntry(this._network));
|
|
184
|
+
case sdk_core_1.TransactionType.Export:
|
|
185
|
+
if (utils_1.default.isTransactionOf(this._avaxTransaction, this._network.cChainBlockchainID)) {
|
|
186
|
+
return this.avaxPTransaction
|
|
187
|
+
.getExportedOutputs()
|
|
188
|
+
.map(utils_1.default.deprecatedMapOutputToEntry(this._network));
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
return this.avaxPTransaction
|
|
192
|
+
.getExportOutputs()
|
|
193
|
+
.map(utils_1.default.deprecatedMapOutputToEntry(this._network));
|
|
194
|
+
}
|
|
195
|
+
case sdk_core_1.TransactionType.AddDelegator:
|
|
196
|
+
case sdk_core_1.TransactionType.AddValidator:
|
|
197
|
+
// Get staked outputs
|
|
198
|
+
const addValidatorTx = this.avaxPTransaction;
|
|
199
|
+
return [
|
|
200
|
+
{
|
|
201
|
+
address: addValidatorTx.getNodeIDString(),
|
|
202
|
+
value: addValidatorTx.getStakeAmount().toString(),
|
|
203
|
+
},
|
|
204
|
+
];
|
|
205
|
+
default:
|
|
206
|
+
return [];
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Get a Transasction Fee.
|
|
211
|
+
*/
|
|
212
|
+
get fee() {
|
|
213
|
+
return { fee: '0', ...this._fee };
|
|
214
|
+
}
|
|
215
|
+
get changeOutputs() {
|
|
216
|
+
// C-chain tx adn Import Txs don't have change outputs
|
|
217
|
+
if (this.type === sdk_core_1.TransactionType.Import ||
|
|
218
|
+
utils_1.default.isTransactionOf(this._avaxTransaction, this._network.cChainBlockchainID)) {
|
|
219
|
+
return [];
|
|
220
|
+
}
|
|
221
|
+
// general support any transaction type, but it's scoped yet
|
|
222
|
+
return this.avaxPTransaction.getOuts().map(utils_1.default.deprecatedMapOutputToEntry(this._network));
|
|
223
|
+
}
|
|
224
|
+
get inputs() {
|
|
225
|
+
let inputs;
|
|
226
|
+
switch (this.type) {
|
|
227
|
+
case sdk_core_1.TransactionType.Import:
|
|
228
|
+
inputs = this.avaxPTransaction.getImportInputs();
|
|
229
|
+
break;
|
|
230
|
+
case sdk_core_1.TransactionType.Export:
|
|
231
|
+
if (utils_1.default.isTransactionOf(this._avaxTransaction, this._network.cChainBlockchainID)) {
|
|
232
|
+
return this.avaxPTransaction.getInputs().map((evmInput) => ({
|
|
233
|
+
address: '0x' + evmInput.getAddressString(),
|
|
234
|
+
value: new avalanche_1.BN(evmInput.amount).toString(),
|
|
235
|
+
nonce: evmInput.getNonce().toNumber(),
|
|
236
|
+
}));
|
|
237
|
+
}
|
|
238
|
+
inputs = this.avaxPTransaction.getIns();
|
|
239
|
+
break;
|
|
240
|
+
default:
|
|
241
|
+
inputs = this.avaxPTransaction.getIns();
|
|
242
|
+
}
|
|
243
|
+
return inputs.map((input) => {
|
|
244
|
+
const amountInput = input.getInput();
|
|
245
|
+
return {
|
|
246
|
+
id: utils_1.default.cb58Encode(input.getTxID()) + iface_1.INPUT_SEPARATOR + utils_1.default.outputidxBufferToNumber(input.getOutputIdx()),
|
|
247
|
+
address: this.fromAddresses.sort().join(iface_1.ADDRESS_SEPARATOR),
|
|
248
|
+
value: amountInput.getAmount().toString(),
|
|
249
|
+
};
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Avax wrapper to create signature and return it for credentials
|
|
254
|
+
* @param prv
|
|
255
|
+
* @return hexstring
|
|
256
|
+
*/
|
|
257
|
+
createSignature(prv) {
|
|
258
|
+
const signval = utils_1.default.createSignatureAvaxBuffer(this._network, avalanche_1.Buffer.from(this.signablePayload), avalanche_1.Buffer.from(prv));
|
|
259
|
+
return signval.toString('hex');
|
|
260
|
+
}
|
|
261
|
+
/** @inheritdoc */
|
|
262
|
+
explainTransaction() {
|
|
263
|
+
const txJson = this.toJson();
|
|
264
|
+
const displayOrder = ['id', 'inputs', 'outputAmount', 'changeAmount', 'outputs', 'changeOutputs', 'fee', 'type'];
|
|
265
|
+
const outputAmount = txJson.outputs.reduce((p, n) => p.add(new avalanche_1.BN(n.value)), new avalanche_1.BN(0)).toString();
|
|
266
|
+
const changeAmount = txJson.changeOutputs.reduce((p, n) => p.add(new avalanche_1.BN(n.value)), new avalanche_1.BN(0)).toString();
|
|
267
|
+
let rewardAddresses;
|
|
268
|
+
if ([sdk_core_1.TransactionType.AddValidator, sdk_core_1.TransactionType.AddDelegator].includes(txJson.type)) {
|
|
269
|
+
rewardAddresses = this.rewardAddresses;
|
|
270
|
+
displayOrder.splice(6, 0, 'rewardAddresses');
|
|
271
|
+
}
|
|
272
|
+
return {
|
|
273
|
+
displayOrder,
|
|
274
|
+
id: txJson.id,
|
|
275
|
+
inputs: txJson.inputs,
|
|
276
|
+
outputs: txJson.outputs.map((o) => ({ address: o.address, amount: o.value })),
|
|
277
|
+
outputAmount,
|
|
278
|
+
changeOutputs: txJson.changeOutputs.map((o) => ({ address: o.address, amount: o.value })),
|
|
279
|
+
changeAmount,
|
|
280
|
+
rewardAddresses,
|
|
281
|
+
fee: this.fee,
|
|
282
|
+
type: txJson.type,
|
|
283
|
+
};
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Check if this transaction is a P chain
|
|
287
|
+
*/
|
|
288
|
+
get isTransactionForCChain() {
|
|
289
|
+
return utils_1.default.isTransactionOf(this._avaxTransaction, this._network.cChainBlockchainID);
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* get the source chain id or undefined if it's a cross chain transfer.
|
|
293
|
+
*/
|
|
294
|
+
get sourceChain() {
|
|
295
|
+
let blockchainID;
|
|
296
|
+
switch (this.type) {
|
|
297
|
+
case sdk_core_1.TransactionType.Import:
|
|
298
|
+
blockchainID = this.avaxPTransaction.getSourceChain();
|
|
299
|
+
break;
|
|
300
|
+
case sdk_core_1.TransactionType.Export:
|
|
301
|
+
blockchainID = this.avaxPTransaction.getBlockchainID();
|
|
302
|
+
break;
|
|
303
|
+
default:
|
|
304
|
+
return undefined;
|
|
305
|
+
}
|
|
306
|
+
return this.blockchainIDtoAlias(blockchainID);
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* get the destinationChain or undefined if it's a cross chain transfer.
|
|
310
|
+
*/
|
|
311
|
+
get destinationChain() {
|
|
312
|
+
let blockchainID;
|
|
313
|
+
switch (this.type) {
|
|
314
|
+
case sdk_core_1.TransactionType.Import:
|
|
315
|
+
blockchainID = this.avaxPTransaction.getBlockchainID();
|
|
316
|
+
break;
|
|
317
|
+
case sdk_core_1.TransactionType.Export:
|
|
318
|
+
blockchainID = this.avaxPTransaction.getDestinationChain();
|
|
319
|
+
break;
|
|
320
|
+
default:
|
|
321
|
+
return undefined;
|
|
322
|
+
}
|
|
323
|
+
return this.blockchainIDtoAlias(blockchainID);
|
|
324
|
+
}
|
|
325
|
+
/**
|
|
326
|
+
* Convert a blockchainId buffer to string and return P or C alias if match of any of that chains.
|
|
327
|
+
* @param {BufferAvax} blockchainIDBuffer
|
|
328
|
+
* @return {string} blocchainID or alias if exists.
|
|
329
|
+
* @private
|
|
330
|
+
*/
|
|
331
|
+
blockchainIDtoAlias(blockchainIDBuffer) {
|
|
332
|
+
const blockchainId = utils_1.default.cb58Encode(blockchainIDBuffer);
|
|
333
|
+
switch (blockchainId) {
|
|
334
|
+
case this._network.cChainBlockchainID:
|
|
335
|
+
return 'C';
|
|
336
|
+
case this._network.blockchainID:
|
|
337
|
+
return 'P';
|
|
338
|
+
default:
|
|
339
|
+
return blockchainId;
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
exports.DeprecatedTransaction = DeprecatedTransaction;
|
|
344
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwcmVjYXRlZFRyYW5zYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9kZXByZWNhdGVkVHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsbURBUThCO0FBRTlCLG1DQVFpQjtBQUdqQix5Q0FBcUQ7QUFDckQsb0RBQTRCO0FBWTVCLFNBQVMsZ0JBQWdCLENBQUMsQ0FBUztJQUNqQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ25ELENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBUyx5QkFBeUIsQ0FBQyxVQUFpQztJQUNsRSxJQUFJLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDcEYsb0JBQW9CO1FBQ3BCLE9BQU8sVUFBVSxHQUFHLEVBQUUsT0FBTztZQUMzQixJQUFJLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUNqQyxPQUFPLEtBQUssQ0FBQztnQkFDZixDQUFDO2dCQUNELE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNwQyxPQUFPLEdBQUcsS0FBSyxPQUFPLENBQUM7WUFDekIsQ0FBQztZQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ1gsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1FBQ0gsQ0FBQyxDQUFDO0lBQ0osQ0FBQztTQUFNLENBQUM7UUFDTix3QkFBd0I7UUFDeEIsT0FBTyxVQUFVLEdBQUcsRUFB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QUMsUUFBUSxDQUFDLFlBQVk7Z0JBQzdCLE9BQU8sR0FBRyxDQUFDO1lBQ2I7Z0JBQ0UsT0FBTyxZQUFZLENBQUM7UUFDeEIsQ0FBQztJQUNILENBQUM7Q0FDRjtBQWpWRCxzREFpVkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdmFsYW5jaGVOZXR3b3JrLCBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQge1xuICBCYXNlS2V5LFxuICBCYXNlVHJhbnNhY3Rpb24sXG4gIEVudHJ5LFxuICBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcixcbiAgU2lnbmluZ0Vycm9yLFxuICBUcmFuc2FjdGlvbkZlZSxcbiAgVHJhbnNhY3Rpb25UeXBlLFxufSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnLi9rZXlQYWlyJztcbmltcG9ydCB7XG4gIERlcHJlY2F0ZWRCYXNlVHgsXG4gIERlY29kZWRVdHhvT2JqLFxuICBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uLFxuICBEZXByZWNhdGVkVHgsXG4gIFR4RGF0YSxcbiAgSU5QVVRfU0VQQVJBVE9SLFxuICBBRERSRVNTX1NFUEFSQVRPUixcbn0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBBZGREZWxlZ2F0b3JUeCwgQW1vdW50SW5wdXQsIEJhc2VUeCBhcyBQVk1CYXNlVHgsIEV4cG9ydFR4LCBJbXBvcnRUeCB9IGZyb20gJ2F2YWxhbmNoZS9kaXN0L2FwaXMvcGxhdGZvcm12bSc7XG5pbXBvcnQgeyBFeHBvcnRUeCBhcyBFVk1FeHBvcnRUeCwgSW1wb3J0VHggYXMgRVZNSW1wb3J0VHggfSBmcm9tICdhdmFsYW5jaGUvZGlzdC9hcGlzL2V2bSc7XG5pbXBvcnQgeyBCTiwgQnVmZmVyIGFzIEJ1ZmZlckF2YXggfSBmcm9tICdhdmFsYW5jaGUnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgQ3JlZGVudGlhbCB9IGZyb20gJ2F2YWxhbmNoZS9kaXN0L2NvbW1vbic7XG5pbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG4vLyByZWdpb24gdXRpbHMgdG8gc2lnblxuaW50ZXJmYWNlIHNpZ25hdHVyZVNlcmlhbGl6ZWQge1xuICBieXRlczogc3RyaW5nO1xufVxuaW50ZXJmYWNlIENoZWNrU2lnbmF0dXJlIHtcbiAgKHNpZ2F0dXJlOiBzaWduYXR1cmVTZXJpYWxpemVkLCBhZGRyZXNzSGV4OiBzdHJpbmcpOiBib29sZWFuO1xufVxuXG5mdW5jdGlvbiBpc0VtcHR5U2lnbmF0dXJlKHM6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gISFzICYmIHMuc3RhcnRzV2l0aCgnJy5wYWRTdGFydCg5MCwgJzAnKSk7XG59XG5cbi8qKlxuICogU2lnbmF0dXJlcyBhcmUgcHJlc3RvcmUgYXMgZW1wdHkgYnVmZmVyIGZvciBoc20gYW5kIGFkZHJlc3Mgb2Ygc2lnbmFyIGZvciBmaXJzdCBzaWduYXR1cmUuXG4gKiBXaGVuIHNpZ24gaXMgcmVxdWlyZWQsIHRoaXMgbWV0aG9kIHJldHVybiB0aGUgZnVuY3Rpb24gdGhhdCBpZGVudGlmeSBhIHNpZ25hdHVyZSB0byBiZSByZXBsYWNlZC5cbiAqIEBwYXJhbSBzaWduYXR1cmVzIGFueSBzaWduYXR1cmVzIGFzIHNhbXBsZXMgdG8gaWRlbnRpZnkgd2hpY2ggc2lnbmF0dXJlIHJlcXVpcmVkIHJlcGxhY2UuXG4gKi9cbmZ1bmN0aW9uIGdlbmVyYXRlU2VsZWN0b3JTaWduYXR1cmUoc2lnbmF0dXJlczogc2lnbmF0dXJlU2VyaWFsaXplZFtdKTogQ2hlY2tTaWduYXR1cmUge1xuICBpZiAoc2lnbmF0dXJlcy5sZW5ndGggPiAxICYmIHNpZ25hdHVyZXMuZXZlcnkoKHNpZykgPT4gaXNFbXB0eVNpZ25hdHVyZShzaWcuYnl0ZXMpKSkge1xuICAgIC8vIExvb2sgZm9yIGFkZHJlc3MuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIChzaWcsIGFkZHJlc3MpOiBib29sZWFuIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmICghaXNFbXB0eVNpZ25hdHVyZShzaWcuYnl0ZXMpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHB1YiA9IHNpZy5ieXRlcy5zdWJzdHJpbmcoOTApO1xuICAgICAgICByZXR1cm4gcHViID09PSBhZGRyZXNzO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICAvLyBMb29rIGZvciBlbXB0eSBzdHJpbmdcbiAgICByZXR1cm4gZnVuY3Rpb24gKHNpZywgYWRkcmVzcyk6IGJvb2xlYW4ge1xuICAgICAgaWYgKGlzRW1wdHlTaWduYXR1cmUoc2lnLmJ5dGVzKSkgcmV0dXJuIHRydWU7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcbiAgfVxufVxuLy8gZW5kIHJlZ2lvbiB1dGlscyBmb3Igc2lnblxuXG5leHBvcnQgY2xhc3MgRGVwcmVjYXRlZFRyYW5zYWN0aW9uIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uIHtcbiAgcHJvdGVjdGVkIF9hdmF4VHJhbnNhY3Rpb246IERlcHJlY2F0ZWRUeDtcbiAgcHVibGljIF90eXBlOiBUcmFuc2FjdGlvblR5cGU7XG4gIHB1YmxpYyBfbmV0d29yazogQXZhbGFuY2hlTmV0d29yaztcbiAgcHVibGljIF9uZXR3b3JrSUQ6IG51bWJlcjtcbiAgcHVibGljIF9hc3NldElkOiBCdWZmZXJBdmF4O1xuICBwdWJsaWMgX2Jsb2NrY2hhaW5JRDogQnVmZmVyQXZheDtcbiAgcHVibGljIF90aHJlc2hvbGQgPSAyO1xuICBwdWJsaWMgX2xvY2t0aW1lOiBCTiA9IG5ldyBCTigwKTtcbiAgcHVibGljIF9mcm9tQWRkcmVzc2VzOiBCdWZmZXJBdmF4W10gPSBbXTtcbiAgcHVibGljIF9yZXdhcmRBZGRyZXNzZXM6IEJ1ZmZlckF2YXhbXTtcbiAgcHVibGljIF91dHhvczogRGVjb2RlZFV0eG9PYmpbXSA9IFtdO1xuICBwdWJsaWMgX3RvOiBCdWZmZXJBdmF4W107XG4gIHB1YmxpYyBfZmVlOiBQYXJ0aWFsPFRyYW5zYWN0aW9uRmVlPiA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKGNvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fbmV0d29yayA9IGNvaW5Db25maWcubmV0d29yayBhcyBBdmFsYW5jaGVOZXR3b3JrO1xuICAgIHRoaXMuX2Fzc2V0SWQgPSB1dGlscy5jYjU4RGVjb2RlKHRoaXMuX25ldHdvcmsuYXZheEFzc2V0SUQpO1xuICAgIHRoaXMuX2Jsb2NrY2hhaW5JRCA9IHV0aWxzLmNiNThEZWNvZGUodGhpcy5fbmV0d29yay5ibG9ja2NoYWluSUQpO1xuICAgIHRoaXMuX25ldHdvcmtJRCA9IHRoaXMuX25ldHdvcmsubmV0d29ya0lEO1xuICB9XG5cbiAgZ2V0IGF2YXhQVHJhbnNhY3Rpb24oKTogRGVwcmVjYXRlZEJhc2VUeCB7XG4gICAgcmV0dXJuIHRoaXMuX2F2YXhUcmFuc2FjdGlvbi5nZXRVbnNpZ25lZFR4KCkuZ2V0VHJhbnNhY3Rpb24oKTtcbiAgfVxuXG4gIGdldCBzaWduYXR1cmUoKTogc3RyaW5nW10ge1xuICAgIGlmICh0aGlzLmNyZWRlbnRpYWxzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICBjb25zdCBvYmo6IGFueSA9IHRoaXMuY3JlZGVudGlhbHNbMF0uc2VyaWFsaXplKCk7XG4gICAgcmV0dXJuIG9iai5zaWdBcnJheS5tYXAoKHMpID0+IHMuYnl0ZXMpLmZpbHRlcigocykgPT4gIWlzRW1wdHlTaWduYXR1cmUocykpO1xuICB9XG5cbiAgZ2V0IGNyZWRlbnRpYWxzKCk6IENyZWRlbnRpYWxbXSB7XG4gICAgcmV0dXJuICh0aGlzLl9hdmF4VHJhbnNhY3Rpb24gYXMgYW55KT8uY3JlZGVudGlhbHM7XG4gIH1cblxuICBnZXQgaGFzQ3JlZGVudGlhbHMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY3JlZGVudGlhbHMgIT09IHVuZGVmaW5lZCAmJiB0aGlzLmNyZWRlbnRpYWxzLmxlbmd0aCA+IDA7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgY2FuU2lnbih7IGtleSB9OiBCYXNlS2V5KTogYm9vbGVhbiB7XG4gICAgLy8gVE9ETyhCRy01NjcwMCk6ICBJbXByb3ZlIGNhblNpZ24gYnkgY2hlY2sgaW4gYWRkcmVzc2VzIGluIGVtcHR5IGNyZWRlbnRpYWxzIG1hdGNoIHNpZ25lclxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNpZ24gYSBhdmF4cCB0cmFuc2FjdGlvbiBhbmQgdXBkYXRlIHRoZSB0cmFuc2FjdGlvbiBoZXhcbiAgICogdmFsaWRhdG9yLCBkZWxlZ2F0b3IsIGltcG9ydCwgZXhwb3J0cyBleHRlbmQgYmFzZVR4XG4gICAqIHVuc2lnbmVkVHg6IFVuc2lnbmVkVHggPSBuZXcgVW5zaWduZWRUeChiYXNlVHgpICAoYmFzZVR4ID0gYWRkVmFsaWRhdG9yVHgpXG4gICAqIGNvbnN0IHR4OiBUeCA9IHVuc2lnbmVkVHguc2lnbihrZXljaGFpbikgKHR4IGlzIHR5cGUgc3RhbmRhcmQgc2lnbmVkIHR4KVxuICAgKiBnZXQgYmFzZVR4IHRoZW4gY3JlYXRlIG5ldyB1bnNpZ25lZFR4IHRoZW4gc2lnblxuICAgKlxuICAgKiBAcGFyYW0ge0tleVBhaXJ9IGtleVBhaXJcbiAgICovXG4gIHNpZ24oa2V5UGFpcjogS2V5UGFpcik6IHZvaWQge1xuICAgIGNvbnN0IHBydiA9IGtleVBhaXIuZ2V0UHJpdmF0ZUtleSgpO1xuICAgIGNvbnN0IGFkZHJlc3NIZXggPSBrZXlQYWlyLmdldEFkZHJlc3NCdWZmZXIoKS50b1N0cmluZygnaGV4Jyk7XG4gICAgaWYgKCFwcnYpIHtcbiAgICAgIHRocm93IG5ldyBTaWduaW5nRXJyb3IoJ01pc3NpbmcgcHJpdmF0ZSBrZXknKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmF2YXhQVHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignZW1wdHkgdHJhbnNhY3Rpb24gdG8gc2lnbicpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuaGFzQ3JlZGVudGlhbHMpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignZW1wdHkgY3JlZGVudGlhbHMgdG8gc2lnbicpO1xuICAgIH1cbiAgICBjb25zdCBzaWduYXR1cmUgPSB0aGlzLmNyZWF0ZVNpZ25hdHVyZShwcnYpO1xuICAgIGxldCBjaGVja1NpZ246IENoZWNrU2lnbmF0dXJlIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuY3JlZGVudGlhbHMuZm9yRWFjaCgoYywgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IGNzOiBhbnkgPSBjLnNlcmlhbGl6ZSgpO1xuICAgICAgaWYgKGNoZWNrU2lnbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNoZWNrU2lnbiA9IGdlbmVyYXRlU2VsZWN0b3JTaWduYXR1cmUoY3Muc2lnQXJyYXkpO1xuICAgICAgfVxuICAgICAgbGV0IGZpbmQgPSBmYWxzZTtcbiAgICAgIGNzLnNpZ0FycmF5LmZvckVhY2goKHNpZykgPT4ge1xuICAgICAgICBpZiAoY2hlY2tTaWduICYmIGNoZWNrU2lnbihzaWcsIGFkZHJlc3NIZXgpKSB7XG4gICAgICAgICAgc2lnLmJ5dGVzID0gc2lnbmF0dXJlO1xuICAgICAgICAgIGZpbmQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGlmICghZmluZCkgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignUHJpdmF0ZSBrZXkgY2Fubm90IHNpZ24gdGhlIHRyYW5zYWN0aW9uJyk7XG4gICAgICBjLmRlc2VyaWFsaXplKGNzKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICAvKipcbiAgICogc2hvdWxkIGJlIG9mIHNpZ25lZFR4IGRvaW5nIHRoaXMgd2l0aCBiYXNlVHhcbiAgICovXG4gIHRvQnJvYWRjYXN0Rm9ybWF0KCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLmF2YXhQVHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24gZGF0YScpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fYXZheFRyYW5zYWN0aW9uLnRvU3RyaW5nSGV4KCk7XG4gIH1cblxuICAvLyB0eXBlcyAtIHN0YWtpbmdUcmFuc2FjdGlvbiwgaW1wb3J0LCBleHBvcnRcbiAgdG9Kc29uKCk6IFR4RGF0YSB7XG4gICAgaWYgKCF0aGlzLmF2YXhQVHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24gZGF0YScpO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICBpbnB1dHM6IHRoaXMuaW5wdXRzLFxuICAgICAgZnJvbUFkZHJlc3NlczogdGhpcy5mcm9tQWRkcmVzc2VzLFxuICAgICAgdGhyZXNob2xkOiB0aGlzLl90aHJlc2hvbGQsXG4gICAgICBsb2NrdGltZTogdGhpcy5fbG9ja3RpbWUudG9TdHJpbmcoKSxcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgIHNpZ25hdHVyZXM6IHRoaXMuc2lnbmF0dXJlLFxuICAgICAgb3V0cHV0czogdGhpcy5vdXRwdXRzLFxuICAgICAgY2hhbmdlT3V0cHV0czogdGhpcy5jaGFuZ2VPdXRwdXRzLFxuICAgICAgc291cmNlQ2hhaW46IHRoaXMuc291cmNlQ2hhaW4sXG4gICAgICBkZXN0aW5hdGlvbkNoYWluOiB0aGlzLmRlc3RpbmF0aW9uQ2hhaW4sXG4gICAgfTtcbiAgfVxuXG4gIHNldFRyYW5zYWN0aW9uKHR4OiBEZXByZWNhdGVkVHgpOiB2b2lkIHtcbiAgICB0aGlzLl9hdmF4VHJhbnNhY3Rpb24gPSB0eDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHRyYW5zYWN0aW9uIHR5cGVcbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvblR5cGV9IHRyYW5zYWN0aW9uVHlwZSBUaGUgdHJhbnNhY3Rpb24gdHlwZSB0byBiZSBzZXRcbiAgICovXG4gIHNldFRyYW5zYWN0aW9uVHlwZSh0cmFuc2FjdGlvblR5cGU6IFRyYW5zYWN0aW9uVHlwZSk6IHZvaWQge1xuICAgIHRoaXMuX3R5cGUgPSB0cmFuc2FjdGlvblR5cGU7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgcG9ydGlvbiBvZiB0aGUgdHJhbnNhY3Rpb24gdGhhdCBuZWVkcyB0byBiZSBzaWduZWQgaW4gQnVmZmVyIGZvcm1hdC5cbiAgICogT25seSBuZWVkZWQgZm9yIGNvaW5zIHRoYXQgc3VwcG9ydCBhZGRpbmcgc2lnbmF0dXJlcyBkaXJlY3RseSAoZS5nLiBUU1MpLlxuICAgKi9cbiAgZ2V0IHNpZ25hYmxlUGF5bG9hZCgpOiBCdWZmZXIge1xuICAgIHJldHVybiB1dGlscy5zaGEyNTYodGhpcy5fYXZheFRyYW5zYWN0aW9uLmdldFVuc2lnbmVkVHgoKS50b0J1ZmZlcigpKTtcbiAgfVxuXG4gIGdldCBpZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB1dGlscy5jYjU4RW5jb2RlKEJ1ZmZlckF2YXguZnJvbSh1dGlscy5zaGEyNTYodGhpcy5fYXZheFRyYW5zYWN0aW9uLnRvQnVmZmVyKCkpKSk7XG4gIH1cblxuICBnZXQgZnJvbUFkZHJlc3NlcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2Zyb21BZGRyZXNzZXMubWFwKChhKSA9PiB1dGlscy5hZGRyZXNzVG9TdHJpbmcodGhpcy5fbmV0d29yay5ocnAsIHRoaXMuX25ldHdvcmsuYWxpYXMsIGEpKTtcbiAgfVxuXG4gIGdldCByZXdhcmRBZGRyZXNzZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLl9yZXdhcmRBZGRyZXNzZXMubWFwKChhKSA9PiB1dGlscy5hZGRyZXNzVG9TdHJpbmcodGhpcy5fbmV0d29yay5ocnAsIHRoaXMuX25ldHdvcmsuYWxpYXMsIGEpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGxpc3Qgb2Ygb3V0cHV0cy4gQW1vdW50cyBhcmUgZXhwcmVzc2VkIGluIGFic29sdXRlIHZhbHVlLlxuICAgKi9cbiAgZ2V0IG91dHB1dHMoKTogRW50cnlbXSB7XG4gICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLkltcG9ydDpcbiAgICAgICAgcmV0dXJuICh0aGlzLmF2YXhQVHJhbnNhY3Rpb24gYXMgSW1wb3J0VHggfCBFVk1JbXBvcnRUeClcbiAgICAgICAgICAuZ2V0T3V0cygpXG4gICAgICAgICAgLm1hcCh1dGlscy5kZXByZWNhdGVkTWFwT3V0cHV0VG9FbnRyeSh0aGlzLl9uZXR3b3JrKSk7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5FeHBvcnQ6XG4gICAgICAgIGlmICh1dGlscy5pc1RyYW5zYWN0aW9uT2YodGhpcy5fYXZheFRyYW5zYWN0aW9uLCB0aGlzLl9uZXR3b3JrLmNDaGFpbkJsb2NrY2hhaW5JRCkpIHtcbiAgICAgICAgICByZXR1cm4gKHRoaXMuYXZheFBUcmFuc2FjdGlvbiBhcyBFVk1FeHBvcnRUeClcbiAgICAgICAgICAgIC5nZXRFeHBvcnRlZE91dHB1dHMoKVxuICAgICAgICAgICAgLm1hcCh1dGlscy5kZXByZWNhdGVkTWFwT3V0cHV0VG9FbnRyeSh0aGlzLl9uZXR3b3JrKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuICh0aGlzLmF2YXhQVHJhbnNhY3Rpb24gYXMgRXhwb3J0VHgpXG4gICAgICAgICAgICAuZ2V0RXhwb3J0T3V0cHV0cygpXG4gICAgICAgICAgICAubWFwKHV0aWxzLmRlcHJlY2F0ZWRNYXBPdXRwdXRUb0VudHJ5KHRoaXMuX25ldHdvcmspKTtcbiAgICAgICAgfVxuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuQWRkRGVsZWdhdG9yOlxuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuQWRkVmFsaWRhdG9yOlxuICAgICAgICAvLyBHZXQgc3Rha2VkIG91dHB1dHNcbiAgICAgICAgY29uc3QgYWRkVmFsaWRhdG9yVHggPSB0aGlzLmF2YXhQVHJhbnNhY3Rpb24gYXMgQWRkRGVsZWdhdG9yVHg7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogYWRkVmFsaWRhdG9yVHguZ2V0Tm9kZUlEU3RyaW5nKCksXG4gICAgICAgICAgICB2YWx1ZTogYWRkVmFsaWRhdG9yVHguZ2V0U3Rha2VBbW91bnQoKS50b1N0cmluZygpLFxuICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIFRyYW5zYXNjdGlvbiBGZWUuXG4gICAqL1xuICBnZXQgZmVlKCk6IFRyYW5zYWN0aW9uRmVlIHtcbiAgICByZXR1cm4geyBmZWU6ICcwJywgLi4udGhpcy5fZmVlIH07XG4gIH1cblxuICBnZXQgY2hhbmdlT3V0cHV0cygpOiBFbnRyeVtdIHtcbiAgICAvLyBDLWNoYWluIHR4IGFkbiBJbXBvcnQgVHhzIGRvbid0IGhhdmUgY2hhbmdlIG91dHB1dHNcbiAgICBpZiAoXG4gICAgICB0aGlzLnR5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5JbXBvcnQgfHxcbiAgICAgIHV0aWxzLmlzVHJhbnNhY3Rpb25PZih0aGlzLl9hdmF4VHJhbnNhY3Rpb24sIHRoaXMuX25ldHdvcmsuY0NoYWluQmxvY2tjaGFpbklEKVxuICAgICkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICAvLyBnZW5lcmFsIHN1cHBvcnQgYW55IHRyYW5zYWN0aW9uIHR5cGUsIGJ1dCBpdCdzIHNjb3BlZCB5ZXRcbiAgICByZXR1cm4gKHRoaXMuYXZheFBUcmFuc2FjdGlvbiBhcyBQVk1CYXNlVHgpLmdldE91dHMoKS5tYXAodXRpbHMuZGVwcmVjYXRlZE1hcE91dHB1dFRvRW50cnkodGhpcy5fbmV0d29yaykpO1xuICB9XG5cbiAgZ2V0IGlucHV0cygpOiBFbnRyeVtdIHtcbiAgICBsZXQgaW5wdXRzO1xuICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5JbXBvcnQ6XG4gICAgICAgIGlucHV0cyA9ICh0aGlzLmF2YXhQVHJhbnNhY3Rpb24gYXMgSW1wb3J0VHggfCBFVk1JbXBvcnRUeCkuZ2V0SW1wb3J0SW5wdXRzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuRXhwb3J0OlxuICAgICAgICBpZiAodXRpbHMuaXNUcmFuc2FjdGlvbk9mKHRoaXMuX2F2YXhUcmFuc2FjdGlvbiwgdGhpcy5fbmV0d29yay5jQ2hhaW5CbG9ja2NoYWluSUQpKSB7XG4gICAgICAgICAgcmV0dXJuICh0aGlzLmF2YXhQVHJhbnNhY3Rpb24gYXMgRVZNRXhwb3J0VHgpLmdldElucHV0cygpLm1hcCgoZXZtSW5wdXQpID0+ICh7XG4gICAgICAgICAgICBhZGRyZXNzOiAnMHgnICsgZXZtSW5wdXQuZ2V0QWRkcmVzc1N0cmluZygpLFxuICAgICAgICAgICAgdmFsdWU6IG5ldyBCTigoZXZtSW5wdXQgYXMgYW55KS5hbW91bnQpLnRvU3RyaW5nKCksXG4gICAgICAgICAgICBub25jZTogZXZtSW5wdXQuZ2V0Tm9uY2UoKS50b051bWJlcigpLFxuICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgICAgICBpbnB1dHMgPSAodGhpcy5hdmF4UFRyYW5zYWN0aW9uIGFzIFBWTUJhc2VUeCkuZ2V0SW5zKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaW5wdXRzID0gKHRoaXMuYXZheFBUcmFuc2FjdGlvbiBhcyBQVk1CYXNlVHgpLmdldElucygpO1xuICAgIH1cbiAgICByZXR1cm4gaW5wdXRzLm1hcCgoaW5wdXQpID0+IHtcbiAgICAgIGNvbnN0IGFtb3VudElucHV0ID0gaW5wdXQuZ2V0SW5wdXQoKSBhcyBhbnkgYXMgQW1vdW50SW5wdXQ7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZDogdXRpbHMuY2I1OEVuY29kZShpbnB1dC5nZXRUeElEKCkpICsgSU5QVVRfU0VQQVJBVE9SICsgdXRpbHMub3V0cHV0aWR4QnVmZmVyVG9OdW1iZXIoaW5wdXQuZ2V0T3V0cHV0SWR4KCkpLFxuICAgICAgICBhZGRyZXNzOiB0aGlzLmZyb21BZGRyZXNzZXMuc29ydCgpLmpvaW4oQUREUkVTU19TRVBBUkFUT1IpLFxuICAgICAgICB2YWx1ZTogYW1vdW50SW5wdXQuZ2V0QW1vdW50KCkudG9TdHJpbmcoKSxcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQXZheCB3cmFwcGVyIHRvIGNyZWF0ZSBzaWduYXR1cmUgYW5kIHJldHVybiBpdCBmb3IgY3JlZGVudGlhbHNcbiAgICogQHBhcmFtIHBydlxuICAgKiBAcmV0dXJuIGhleHN0cmluZ1xuICAgKi9cbiAgY3JlYXRlU2lnbmF0dXJlKHBydjogQnVmZmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCBzaWdudmFsID0gdXRpbHMuY3JlYXRlU2lnbmF0dXJlQXZheEJ1ZmZlcihcbiAgICAgIHRoaXMuX25ldHdvcmssXG4gICAgICBCdWZmZXJBdmF4LmZyb20odGhpcy5zaWduYWJsZVBheWxvYWQpLFxuICAgICAgQnVmZmVyQXZheC5mcm9tKHBydilcbiAgICApO1xuICAgIHJldHVybiBzaWdudmFsLnRvU3RyaW5nKCdoZXgnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBleHBsYWluVHJhbnNhY3Rpb24oKTogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiB7XG4gICAgY29uc3QgdHhKc29uID0gdGhpcy50b0pzb24oKTtcbiAgICBjb25zdCBkaXNwbGF5T3JkZXIgPSBbJ2lkJywgJ2lucHV0cycsICdvdXRwdXRBbW91bnQnLCAnY2hhbmdlQW1vdW50JywgJ291dHB1dHMnLCAnY2hhbmdlT3V0cHV0cycsICdmZWUnLCAndHlwZSddO1xuXG4gICAgY29uc3Qgb3V0cHV0QW1vdW50ID0gdHhKc29uLm91dHB1dHMucmVkdWNlKChwLCBuKSA9PiBwLmFkZChuZXcgQk4obi52YWx1ZSkpLCBuZXcgQk4oMCkpLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgY2hhbmdlQW1vdW50ID0gdHhKc29uLmNoYW5nZU91dHB1dHMucmVkdWNlKChwLCBuKSA9PiBwLmFkZChuZXcgQk4obi52YWx1ZSkpLCBuZXcgQk4oMCkpLnRvU3RyaW5nKCk7XG5cbiAgICBsZXQgcmV3YXJkQWRkcmVzc2VzO1xuICAgIGlmIChbVHJhbnNhY3Rpb25UeXBlLkFkZFZhbGlkYXRvciwgVHJhbnNhY3Rpb25UeXBlLkFkZERlbGVnYXRvcl0uaW5jbHVkZXModHhKc29uLnR5cGUpKSB7XG4gICAgICByZXdhcmRBZGRyZXNzZXMgPSB0aGlzLnJld2FyZEFkZHJlc3NlcztcbiAgICAgIGRpc3BsYXlPcmRlci5zcGxpY2UoNiwgMCwgJ3Jld2FyZEFkZHJlc3NlcycpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBkaXNwbGF5T3JkZXIsXG4gICAgICBpZDogdHhKc29uLmlkLFxuICAgICAgaW5wdXRzOiB0eEpzb24uaW5wdXRzLFxuICAgICAgb3V0cHV0czogdHhKc29uLm91dHB1dHMubWFwKChvKSA9PiAoeyBhZGRyZXNzOiBvLmFkZHJlc3MsIGFtb3VudDogby52YWx1ZSB9KSksXG4gICAgICBvdXRwdXRBbW91bnQsXG4gICAgICBjaGFuZ2VPdXRwdXRzOiB0eEpzb24uY2hhbmdlT3V0cHV0cy5tYXAoKG8pID0+ICh7IGFkZHJlc3M6IG8uYWRkcmVzcywgYW1vdW50OiBvLnZhbHVlIH0pKSxcbiAgICAgIGNoYW5nZUFtb3VudCxcbiAgICAgIHJld2FyZEFkZHJlc3NlcyxcbiAgICAgIGZlZTogdGhpcy5mZWUsXG4gICAgICB0eXBlOiB0eEpzb24udHlwZSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIHRoaXMgdHJhbnNhY3Rpb24gaXMgYSBQIGNoYWluXG4gICAqL1xuICBnZXQgaXNUcmFuc2FjdGlvbkZvckNDaGFpbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdXRpbHMuaXNUcmFuc2FjdGlvbk9mKHRoaXMuX2F2YXhUcmFuc2FjdGlvbiwgdGhpcy5fbmV0d29yay5jQ2hhaW5CbG9ja2NoYWluSUQpO1xuICB9XG5cbiAgLyoqXG4gICAqIGdldCB0aGUgc291cmNlIGNoYWluIGlkIG9yIHVuZGVmaW5lZCBpZiBpdCdzIGEgY3Jvc3MgY2hhaW4gdHJhbnNmZXIuXG4gICAqL1xuICBnZXQgc291cmNlQ2hhaW4oKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBsZXQgYmxvY2tjaGFpbklEO1xuICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5JbXBvcnQ6XG4gICAgICAgIGJsb2NrY2hhaW5JRCA9ICh0aGlzLmF2YXhQVHJhbnNhY3Rpb24gYXMgSW1wb3J0VHggfCBFVk1JbXBvcnRUeCkuZ2V0U291cmNlQ2hhaW4oKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5FeHBvcnQ6XG4gICAgICAgIGJsb2NrY2hhaW5JRCA9ICh0aGlzLmF2YXhQVHJhbnNhY3Rpb24gYXMgRXhwb3J0VHggfCBFVk1FeHBvcnRUeCkuZ2V0QmxvY2tjaGFpbklEKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYmxvY2tjaGFpbklEdG9BbGlhcyhibG9ja2NoYWluSUQpO1xuICB9XG5cbiAgLyoqXG4gICAqIGdldCB0aGUgZGVzdGluYXRpb25DaGFpbiBvciB1bmRlZmluZWQgaWYgaXQncyBhIGNyb3NzIGNoYWluIHRyYW5zZmVyLlxuICAgKi9cbiAgZ2V0IGRlc3RpbmF0aW9uQ2hhaW4oKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBsZXQgYmxvY2tjaGFpbklEO1xuICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5JbXBvcnQ6XG4gICAgICAgIGJsb2NrY2hhaW5JRCA9ICh0aGlzLmF2YXhQVHJhbnNhY3Rpb24gYXMgSW1wb3J0VHggfCBFVk1JbXBvcnRUeCkuZ2V0QmxvY2tjaGFpbklEKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuRXhwb3J0OlxuICAgICAgICBibG9ja2NoYWluSUQgPSAodGhpcy5hdmF4UFRyYW5zYWN0aW9uIGFzIEV4cG9ydFR4IHwgRVZNRXhwb3J0VHgpLmdldERlc3RpbmF0aW9uQ2hhaW4oKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5ibG9ja2NoYWluSUR0b0FsaWFzKGJsb2NrY2hhaW5JRCk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBhIGJsb2NrY2hhaW5JZCBidWZmZXIgdG8gc3RyaW5nIGFuZCByZXR1cm4gUCBvciBDIGFsaWFzIGlmIG1hdGNoIG9mIGFueSBvZiB0aGF0IGNoYWlucy5cbiAgICogQHBhcmFtIHtCdWZmZXJBdmF4fSBibG9ja2NoYWluSURCdWZmZXJcbiAgICogQHJldHVybiB7c3RyaW5nfSBibG9jY2hhaW5JRCBvciBhbGlhcyBpZiBleGlzdHMuXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIGJsb2NrY2hhaW5JRHRvQWxpYXMoYmxvY2tjaGFpbklEQnVmZmVyOiBCdWZmZXJBdmF4KTogc3RyaW5nIHtcbiAgICBjb25zdCBibG9ja2NoYWluSWQgPSB1dGlscy5jYjU4RW5jb2RlKGJsb2NrY2hhaW5JREJ1ZmZlcik7XG4gICAgc3dpdGNoIChibG9ja2NoYWluSWQpIHtcbiAgICAgIGNhc2UgdGhpcy5fbmV0d29yay5jQ2hhaW5CbG9ja2NoYWluSUQ6XG4gICAgICAgIHJldHVybiAnQyc7XG4gICAgICBjYXNlIHRoaXMuX25ldHdvcmsuYmxvY2tjaGFpbklEOlxuICAgICAgICByZXR1cm4gJ1AnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGJsb2NrY2hhaW5JZDtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
|
|
2
|
+
import BigNumber from 'bignumber.js';
|
|
3
|
+
import { BaseAddress, BaseKey, BaseTransactionBuilder, TransactionType, BaseTransaction } from '@bitgo-beta/sdk-core';
|
|
4
|
+
import { DeprecatedTransaction } from './deprecatedTransaction';
|
|
5
|
+
import { KeyPair } from './keyPair';
|
|
6
|
+
import { BN, Buffer as BufferAvax } from 'avalanche';
|
|
7
|
+
import { DecodedUtxoObj, DeprecatedTx } from './iface';
|
|
8
|
+
export declare abstract class DeprecatedTransactionBuilder extends BaseTransactionBuilder {
|
|
9
|
+
private _transaction;
|
|
10
|
+
_signer: KeyPair[];
|
|
11
|
+
protected recoverSigner: boolean;
|
|
12
|
+
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
13
|
+
/**
|
|
14
|
+
* Initialize the transaction builder fields using the decoded transaction data
|
|
15
|
+
*
|
|
16
|
+
* @param {DeprecatedTx} tx the transaction data
|
|
17
|
+
* @returns itself
|
|
18
|
+
*/
|
|
19
|
+
initBuilder(tx: DeprecatedTx): this;
|
|
20
|
+
/** @inheritdoc */
|
|
21
|
+
protected fromImplementation(rawTransaction: string): DeprecatedTransaction;
|
|
22
|
+
/** @inheritdoc */
|
|
23
|
+
protected buildImplementation(): Promise<DeprecatedTransaction>;
|
|
24
|
+
/**
|
|
25
|
+
* Builds the avax transaction. transaction field is changed.
|
|
26
|
+
*/
|
|
27
|
+
protected abstract buildAvaxTransaction(): void;
|
|
28
|
+
/**
|
|
29
|
+
* When using recovery key must be set here
|
|
30
|
+
* TODO: STLX-17317 recovery key signing
|
|
31
|
+
* @param {boolean} true if it's recovery signer, default true.
|
|
32
|
+
*/
|
|
33
|
+
recoverMode(recoverSigner?: boolean): this;
|
|
34
|
+
/**
|
|
35
|
+
* Threshold is an int that names the number of unique signatures required to spend the output.
|
|
36
|
+
* Must be less than or equal to the length of Addresses.
|
|
37
|
+
* @param {number}
|
|
38
|
+
*/
|
|
39
|
+
threshold(value: number): this;
|
|
40
|
+
/**
|
|
41
|
+
* Locktime is a long that contains the unix timestamp that this output can be spent after.
|
|
42
|
+
* The unix timestamp is specific to the second.
|
|
43
|
+
* @param value
|
|
44
|
+
*/
|
|
45
|
+
locktime(value: string | number): this;
|
|
46
|
+
/**
|
|
47
|
+
* fromPubKey is a list of unique addresses that correspond to the private keys that can be used to spend this output.
|
|
48
|
+
* @param {string | stirng[]} senderPubKey
|
|
49
|
+
*/
|
|
50
|
+
fromPubKey(senderPubKey: string | string[]): this;
|
|
51
|
+
/**
|
|
52
|
+
* List of UTXO required as inputs.
|
|
53
|
+
* A UTXO is a standalone representation of a transaction output.
|
|
54
|
+
*
|
|
55
|
+
* @param {DecodedUtxoObj[]} list of UTXOS
|
|
56
|
+
*/
|
|
57
|
+
utxos(value: DecodedUtxoObj[]): this;
|
|
58
|
+
/**
|
|
59
|
+
* Getter for know if build should sign
|
|
60
|
+
*/
|
|
61
|
+
get hasSigner(): boolean;
|
|
62
|
+
/** @inheritdoc */
|
|
63
|
+
protected get transaction(): DeprecatedTransaction;
|
|
64
|
+
protected set transaction(transaction: DeprecatedTransaction);
|
|
65
|
+
/** @inheritdoc */
|
|
66
|
+
protected signImplementation({ key }: BaseKey): BaseTransaction;
|
|
67
|
+
protected abstract get transactionType(): TransactionType;
|
|
68
|
+
/**
|
|
69
|
+
* Validates the threshold
|
|
70
|
+
* @param threshold
|
|
71
|
+
*/
|
|
72
|
+
validateThreshold(threshold: number): void;
|
|
73
|
+
/**
|
|
74
|
+
* Validates locktime
|
|
75
|
+
* @param locktime
|
|
76
|
+
*/
|
|
77
|
+
validateLocktime(locktime: BN): void;
|
|
78
|
+
/** @inheritdoc */
|
|
79
|
+
validateAddress(address: BaseAddress, addressFormat?: string): void;
|
|
80
|
+
/** @inheritdoc */
|
|
81
|
+
validateKey({ key }: BaseKey): void;
|
|
82
|
+
/**
|
|
83
|
+
* Check the raw transaction has a valid format in the blockchain context, throw otherwise.
|
|
84
|
+
* It overrides abstract method from BaseTransactionBuilder
|
|
85
|
+
*
|
|
86
|
+
* @param rawTransaction Transaction in any format
|
|
87
|
+
*/
|
|
88
|
+
validateRawTransaction(rawTransaction: string): void;
|
|
89
|
+
/** @inheritdoc */
|
|
90
|
+
validateTransaction(transaction?: DeprecatedTransaction): void;
|
|
91
|
+
/** @inheritdoc */
|
|
92
|
+
validateValue(value: BigNumber): void;
|
|
93
|
+
/**
|
|
94
|
+
* Check the list of UTXOS is empty and check each UTXO.
|
|
95
|
+
* @param values
|
|
96
|
+
*/
|
|
97
|
+
validateUtxos(values: DecodedUtxoObj[]): void;
|
|
98
|
+
/**
|
|
99
|
+
* Check the UTXO has expected fields.
|
|
100
|
+
* @param UTXO
|
|
101
|
+
*/
|
|
102
|
+
validateUtxo(value: DecodedUtxoObj): void;
|
|
103
|
+
/**
|
|
104
|
+
* Check the amount is positive.
|
|
105
|
+
* @param amount
|
|
106
|
+
*/
|
|
107
|
+
validateAmount(amount: BN): void;
|
|
108
|
+
/**
|
|
109
|
+
* Check the buffer has 32 byte long.
|
|
110
|
+
* @param chainID
|
|
111
|
+
*/
|
|
112
|
+
validateChainId(chainID: BufferAvax): void;
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=deprecatedTransactionBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deprecatedTransactionBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/deprecatedTransactionBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EACL,WAAW,EACX,OAAO,EACP,sBAAsB,EACtB,eAAe,EAEf,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,EAAE,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,WAAW,CAAC;AAErD,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAGvD,8BAAsB,4BAA6B,SAAQ,sBAAsB;IAC/E,OAAO,CAAC,YAAY,CAAwB;IACrC,OAAO,EAAE,OAAO,EAAE,CAAM;IAC/B,SAAS,CAAC,aAAa,UAAS;gBAEpB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C;;;;;OAKG;IACH,WAAW,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI;IAYnC,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,qBAAqB;IAO3E,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,qBAAqB,CAAC;IASrE;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,oBAAoB,IAAI,IAAI;IAG/C;;;;OAIG;IACI,WAAW,CAAC,aAAa,UAAO,GAAG,IAAI;IAK9C;;;;OAIG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAM9B;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAMtC;;;OAGG;IACH,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAMjD;;;;;OAKG;IACH,KAAK,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,IAAI;IAMpC;;OAEG;IACH,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,kBAAkB;IAClB,SAAS,KAAK,WAAW,IAAI,qBAAqB,CAEjD;IAED,SAAS,KAAK,WAAW,CAAC,WAAW,EAAE,qBAAqB,EAE3D;IAED,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,EAAE,GAAG,EAAE,EAAE,OAAO,GAAG,eAAe;IAK/D,SAAS,CAAC,QAAQ,KAAK,eAAe,IAAI,eAAe,CAAC;IAK1D;;;OAGG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAM1C;;;OAGG;IACH,gBAAgB,CAAC,QAAQ,EAAE,EAAE,GAAG,IAAI;IAMpC,kBAAkB;IAClB,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAMnE,kBAAkB;IAClB,WAAW,CAAC,EAAE,GAAG,EAAE,EAAE,OAAO,GAAG,IAAI;IAMnC;;;;;OAKG;IACH,sBAAsB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAIpD,kBAAkB;IAClB,mBAAmB,CAAC,WAAW,CAAC,EAAE,qBAAqB,GAAG,IAAI;IAI9D,kBAAkB;IAClB,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAMrC;;;OAGG;IACH,aAAa,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI;IAO7C;;;OAGG;IACH,YAAY,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAMzC;;;OAGG;IACH,cAAc,CAAC,MAAM,EAAE,EAAE,GAAG,IAAI;IAMhC;;;OAGG;IACH,eAAe,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI;CAO3C"}
|