@bitgo-beta/sdk-coin-flrp 1.0.1-beta.28 → 1.0.1-beta.280
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/flrp.d.ts +6 -75
- package/dist/src/flrp.d.ts.map +1 -1
- package/dist/src/flrp.js +13 -298
- package/dist/src/index.d.ts +0 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -2
- package/dist/src/lib/ExportInCTxBuilder.d.ts +50 -0
- package/dist/src/lib/ExportInCTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/ExportInCTxBuilder.js +187 -0
- package/dist/src/lib/ExportInPTxBuilder.d.ts +47 -0
- package/dist/src/lib/ExportInPTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/ExportInPTxBuilder.js +330 -0
- package/dist/src/lib/ImportInCTxBuilder.d.ts +47 -0
- package/dist/src/lib/ImportInCTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/ImportInCTxBuilder.js +213 -0
- package/dist/src/lib/ImportInPTxBuilder.d.ts +33 -0
- package/dist/src/lib/ImportInPTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/ImportInPTxBuilder.js +197 -0
- package/dist/src/lib/atomicInCTransactionBuilder.d.ts +18 -16
- package/dist/src/lib/atomicInCTransactionBuilder.d.ts.map +1 -1
- package/dist/src/lib/atomicInCTransactionBuilder.js +38 -36
- package/dist/src/lib/atomicTransactionBuilder.d.ts +42 -76
- package/dist/src/lib/atomicTransactionBuilder.d.ts.map +1 -1
- package/dist/src/lib/atomicTransactionBuilder.js +141 -218
- package/dist/src/lib/iface.d.ts +50 -51
- package/dist/src/lib/iface.d.ts.map +1 -1
- package/dist/src/lib/iface.js +22 -10
- package/dist/src/lib/index.d.ts +4 -0
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +10 -2
- package/dist/src/lib/keyPair.d.ts +5 -5
- package/dist/src/lib/keyPair.d.ts.map +1 -1
- package/dist/src/lib/keyPair.js +17 -9
- package/dist/src/lib/permissionlessValidatorTxBuilder.d.ts +46 -0
- package/dist/src/lib/permissionlessValidatorTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/permissionlessValidatorTxBuilder.js +134 -0
- package/dist/src/lib/transaction.d.ts +8 -73
- package/dist/src/lib/transaction.d.ts.map +1 -1
- package/dist/src/lib/transaction.js +139 -207
- package/dist/src/lib/transactionBuilder.d.ts +107 -0
- package/dist/src/lib/transactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder.js +210 -0
- package/dist/src/lib/transactionBuilderFactory.d.ts +27 -30
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilderFactory.js +84 -75
- package/dist/src/lib/utils.d.ts +98 -147
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +346 -319
- package/dist/test/resources/account.d.ts +49 -0
- package/dist/test/resources/account.d.ts.map +1 -0
- package/dist/test/resources/account.js +52 -0
- package/dist/test/resources/transactionData/exportInC.d.ts +20 -0
- package/dist/test/resources/transactionData/exportInC.d.ts.map +1 -0
- package/dist/test/resources/transactionData/exportInC.js +34 -0
- package/dist/test/resources/transactionData/exportInP.d.ts +69 -0
- package/dist/test/resources/transactionData/exportInP.d.ts.map +1 -0
- package/dist/test/resources/transactionData/exportInP.js +140 -0
- package/dist/test/resources/transactionData/importInP.d.ts +35 -0
- package/dist/test/resources/transactionData/importInP.d.ts.map +1 -0
- package/dist/test/resources/transactionData/importInP.js +58 -0
- package/dist/test/unit/lib/exportInCTxBuilder.d.ts +2 -0
- package/dist/test/unit/lib/exportInCTxBuilder.d.ts.map +1 -0
- package/dist/test/unit/lib/exportInCTxBuilder.js +166 -0
- package/dist/test/unit/lib/exportInPTxBuilder.d.ts +2 -0
- package/dist/test/unit/lib/exportInPTxBuilder.d.ts.map +1 -0
- package/dist/test/unit/lib/exportInPTxBuilder.js +121 -0
- package/dist/test/unit/lib/importInPTxBuilder.d.ts +2 -0
- package/dist/test/unit/lib/importInPTxBuilder.d.ts.map +1 -0
- package/dist/test/unit/lib/importInPTxBuilder.js +73 -0
- package/dist/test/unit/lib/keyPair.d.ts +2 -0
- package/dist/test/unit/lib/keyPair.d.ts.map +1 -0
- package/dist/test/unit/lib/keyPair.js +158 -0
- package/dist/test/unit/lib/signFlowTestSuit.d.ts +20 -0
- package/dist/test/unit/lib/signFlowTestSuit.d.ts.map +1 -0
- package/dist/test/unit/lib/signFlowTestSuit.js +93 -0
- package/dist/test/unit/lib/utils.js +29 -223
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +16 -13
- package/.eslintignore +0 -5
- package/.eslintrc.json +0 -7
- package/.mocharc.yml +0 -8
- package/CHANGELOG.md +0 -0
- package/dist/src/iface.d.ts +0 -25
- package/dist/src/iface.d.ts.map +0 -1
- package/dist/src/iface.js +0 -3
- package/dist/src/lib/constants.d.ts +0 -11
- package/dist/src/lib/constants.d.ts.map +0 -1
- package/dist/src/lib/constants.js +0 -17
- package/dist/src/lib/errors.d.ts +0 -8
- package/dist/src/lib/errors.d.ts.map +0 -1
- package/dist/src/lib/errors.js +0 -19
- package/dist/src/lib/exportInCTxBuilder.d.ts +0 -77
- package/dist/src/lib/exportInCTxBuilder.d.ts.map +0 -1
- package/dist/src/lib/exportInCTxBuilder.js +0 -170
- package/dist/src/lib/exportInPTxBuilder.d.ts +0 -30
- package/dist/src/lib/exportInPTxBuilder.d.ts.map +0 -1
- package/dist/src/lib/exportInPTxBuilder.js +0 -56
- package/dist/test/unit/flrp.d.ts +0 -2
- package/dist/test/unit/flrp.d.ts.map +0 -1
- package/dist/test/unit/flrp.js +0 -118
- package/dist/test/unit/lib/atomicTransactionBuilder.d.ts +0 -2
- package/dist/test/unit/lib/atomicTransactionBuilder.d.ts.map +0 -1
- package/dist/test/unit/lib/atomicTransactionBuilder.js +0 -222
- package/dist/test/unit/lib/exportTxBuilder.d.ts +0 -2
- package/dist/test/unit/lib/exportTxBuilder.d.ts.map +0 -1
- package/dist/test/unit/lib/exportTxBuilder.js +0 -45
- package/dist/test/unit/lib/transaction.d.ts +0 -2
- package/dist/test/unit/lib/transaction.d.ts.map +0 -1
- package/dist/test/unit/lib/transaction.js +0 -460
- package/dist/test/unit/smoke.d.ts +0 -2
- package/dist/test/unit/smoke.d.ts.map +0 -1
- package/dist/test/unit/smoke.js +0 -23
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { BaseTransactionBuilder, BaseKey, BaseAddress } from '@bitgo-beta/sdk-core';
|
|
2
|
+
import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
|
|
3
|
+
import { DecodedUtxoObj, Tx } from './iface';
|
|
4
|
+
import { KeyPair } from './keyPair';
|
|
5
|
+
import { Transaction } from './transaction';
|
|
6
|
+
import BigNumber from 'bignumber.js';
|
|
7
|
+
export declare abstract class TransactionBuilder extends BaseTransactionBuilder {
|
|
8
|
+
protected _transaction: Transaction;
|
|
9
|
+
protected recoverSigner: boolean;
|
|
10
|
+
_signer: KeyPair[];
|
|
11
|
+
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
12
|
+
/**
|
|
13
|
+
* Initialize the transaction builder fields using the decoded transaction data
|
|
14
|
+
*
|
|
15
|
+
* @param {Transaction} tx the transaction data
|
|
16
|
+
* @returns itself
|
|
17
|
+
*/
|
|
18
|
+
initBuilder(tx: Tx): this;
|
|
19
|
+
/**
|
|
20
|
+
* Validates the threshold for multi-signature transactions
|
|
21
|
+
* @param threshold - Number of required signatures
|
|
22
|
+
*/
|
|
23
|
+
validateThreshold(threshold: number): void;
|
|
24
|
+
/**
|
|
25
|
+
* Validates a single UTXO object
|
|
26
|
+
* @param value - UTXO to validate
|
|
27
|
+
*/
|
|
28
|
+
validateUtxo(value: DecodedUtxoObj): void;
|
|
29
|
+
/**
|
|
30
|
+
* Validates an array of UTXOs
|
|
31
|
+
* @param values - Array of UTXOs to validate
|
|
32
|
+
*/
|
|
33
|
+
validateUtxos(values: DecodedUtxoObj[]): void;
|
|
34
|
+
/**
|
|
35
|
+
* Validates the locktime value
|
|
36
|
+
* @param locktime - Timestamp after which the output can be spent
|
|
37
|
+
*/
|
|
38
|
+
validateLocktime(locktime: bigint): void;
|
|
39
|
+
/**
|
|
40
|
+
* Sets the threshold for multi-signature transactions
|
|
41
|
+
* @param value - Number of required signatures
|
|
42
|
+
*/
|
|
43
|
+
threshold(value: number): this;
|
|
44
|
+
/**
|
|
45
|
+
* Sets the locktime for the transaction
|
|
46
|
+
* @param value - Timestamp after which the output can be spent
|
|
47
|
+
*/
|
|
48
|
+
locktime(value: string | number): this;
|
|
49
|
+
/**
|
|
50
|
+
* Enables recovery mode for the transaction
|
|
51
|
+
* @param recoverSigner - Whether to use recovery signing
|
|
52
|
+
*/
|
|
53
|
+
recoverMode(recoverSigner?: boolean): this;
|
|
54
|
+
/**
|
|
55
|
+
* Sets the sender's public key(s)
|
|
56
|
+
* @param senderPubKey - Public key or array of public keys
|
|
57
|
+
*/
|
|
58
|
+
fromPubKey(senderPubKey: string | string[]): this;
|
|
59
|
+
/**
|
|
60
|
+
* Sets the UTXOs for the transaction
|
|
61
|
+
* @param value - Array of UTXOs to use
|
|
62
|
+
*/
|
|
63
|
+
utxos(value: DecodedUtxoObj[]): this;
|
|
64
|
+
/** @inheritdoc */
|
|
65
|
+
protected fromImplementation(rawTransaction: string): Transaction;
|
|
66
|
+
/**
|
|
67
|
+
* Abstract method to be implemented by specific transaction builders
|
|
68
|
+
* Builds the actual transaction based on the builder's configuration
|
|
69
|
+
*/
|
|
70
|
+
protected abstract buildImplementation(): Promise<Transaction>;
|
|
71
|
+
/**
|
|
72
|
+
* Check the buffer has 32 byte long.
|
|
73
|
+
* @param chainID
|
|
74
|
+
*/
|
|
75
|
+
validateChainId(chainID: Buffer): void;
|
|
76
|
+
/** @inheritdoc */
|
|
77
|
+
protected get transaction(): Transaction;
|
|
78
|
+
protected set transaction(transaction: Transaction);
|
|
79
|
+
/**
|
|
80
|
+
* Check that fee is greater than 0.
|
|
81
|
+
* @param {bigint} fee
|
|
82
|
+
*/
|
|
83
|
+
validateFee(fee: bigint): void;
|
|
84
|
+
/** @inheritdoc */
|
|
85
|
+
validateKey({ key }: BaseKey): void;
|
|
86
|
+
/** @inheritdoc */
|
|
87
|
+
validateTransaction(transaction?: Transaction): void;
|
|
88
|
+
/** @inheritdoc */
|
|
89
|
+
validateValue(value: BigNumber): void;
|
|
90
|
+
/** @inheritdoc */
|
|
91
|
+
validateAddress(address: BaseAddress, addressFormat?: string): void;
|
|
92
|
+
/**
|
|
93
|
+
* Check the raw transaction has a valid format in the blockchain context, throw otherwise.
|
|
94
|
+
*
|
|
95
|
+
* @param rawTransaction Transaction in any format
|
|
96
|
+
*/
|
|
97
|
+
validateRawTransaction(rawTransaction: string): void;
|
|
98
|
+
/** @inheritdoc */
|
|
99
|
+
protected signImplementation({ key }: BaseKey): Transaction;
|
|
100
|
+
hasSigner(): boolean;
|
|
101
|
+
/**
|
|
102
|
+
* Check the amount is positive.
|
|
103
|
+
* @param amount
|
|
104
|
+
*/
|
|
105
|
+
validateAmount(amount: bigint): void;
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=transactionBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAyB,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC3G,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,SAAS,MAAM,cAAc,CAAC;AAErC,8BAAsB,kBAAmB,SAAQ,sBAAsB;IACrE,SAAS,CAAC,YAAY,EAAE,WAAW,CAAC;IACpC,SAAS,CAAC,aAAa,UAAS;IACzB,OAAO,EAAE,OAAO,EAAE,CAAM;gBAEnB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C;;;;;OAKG;IACH,WAAW,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI;IAgBzB;;;OAGG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAM1C;;;OAGG;IACH,YAAY,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IASzC;;;OAGG;IACH,aAAa,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI;IAO7C;;;OAGG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAOxC;;;OAGG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAM9B;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAMtC;;;OAGG;IACH,WAAW,CAAC,aAAa,UAAO,GAAG,IAAI;IAKvC;;;OAGG;IACH,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAMjD;;;OAGG;IACH,KAAK,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,IAAI;IAMpC,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,WAAW;IAcjE;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAE9D;;;OAGG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAMtC,kBAAkB;IAClB,SAAS,KAAK,WAAW,IAAI,WAAW,CAEvC;IAED,SAAS,KAAK,WAAW,CAAC,WAAW,EAAE,WAAW,EAEjD;IAED;;;OAGG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAM9B,kBAAkB;IAClB,WAAW,CAAC,EAAE,GAAG,EAAE,EAAE,OAAO,GAAG,IAAI;IAQnC,kBAAkB;IAClB,mBAAmB,CAAC,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI;IAIpD,kBAAkB;IAClB,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAMrC,kBAAkB;IAClB,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAMnE;;;;OAIG;IACH,sBAAsB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAIpD,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,EAAE,GAAG,EAAE,EAAE,OAAO,GAAG,WAAW;IAK3D,SAAS,IAAI,OAAO;IAIpB;;;OAGG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAKrC"}
|
|
@@ -0,0 +1,210 @@
|
|
|
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 flarejs_1 = require("@flarenetwork/flarejs");
|
|
8
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
9
|
+
const keyPair_1 = require("./keyPair");
|
|
10
|
+
const transaction_1 = require("./transaction");
|
|
11
|
+
const utils_1 = __importDefault(require("./utils"));
|
|
12
|
+
class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
|
|
13
|
+
constructor(_coinConfig) {
|
|
14
|
+
super(_coinConfig);
|
|
15
|
+
this.recoverSigner = false;
|
|
16
|
+
this._signer = [];
|
|
17
|
+
this._transaction = new transaction_1.Transaction(_coinConfig);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Initialize the transaction builder fields using the decoded transaction data
|
|
21
|
+
*
|
|
22
|
+
* @param {Transaction} tx the transaction data
|
|
23
|
+
* @returns itself
|
|
24
|
+
*/
|
|
25
|
+
initBuilder(tx) {
|
|
26
|
+
const baseTx = tx.tx.baseTx;
|
|
27
|
+
// Validate network and blockchain IDs match
|
|
28
|
+
if (baseTx.NetworkId.value() !== this._transaction._networkID ||
|
|
29
|
+
baseTx.BlockchainId.value() !== this._transaction._blockchainID) {
|
|
30
|
+
throw new Error('Network or blockchain ID mismatch');
|
|
31
|
+
}
|
|
32
|
+
this._transaction.setTransaction(tx);
|
|
33
|
+
return this;
|
|
34
|
+
}
|
|
35
|
+
// region Validators
|
|
36
|
+
/**
|
|
37
|
+
* Validates the threshold for multi-signature transactions
|
|
38
|
+
* @param threshold - Number of required signatures
|
|
39
|
+
*/
|
|
40
|
+
validateThreshold(threshold) {
|
|
41
|
+
if (!threshold || threshold !== 2) {
|
|
42
|
+
throw new sdk_core_1.BuildTransactionError('Invalid transaction: threshold must be set to 2');
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Validates a single UTXO object
|
|
47
|
+
* @param value - UTXO to validate
|
|
48
|
+
*/
|
|
49
|
+
validateUtxo(value) {
|
|
50
|
+
const requiredFields = ['outputID', 'amount', 'txid', 'outputidx'];
|
|
51
|
+
for (const field of requiredFields) {
|
|
52
|
+
if (!value.hasOwnProperty(field)) {
|
|
53
|
+
throw new sdk_core_1.BuildTransactionError(`UTXO missing required field: ${field}`);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Validates an array of UTXOs
|
|
59
|
+
* @param values - Array of UTXOs to validate
|
|
60
|
+
*/
|
|
61
|
+
validateUtxos(values) {
|
|
62
|
+
if (values.length === 0) {
|
|
63
|
+
throw new sdk_core_1.BuildTransactionError('UTXOs array cannot be empty');
|
|
64
|
+
}
|
|
65
|
+
values.forEach(this.validateUtxo);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Validates the locktime value
|
|
69
|
+
* @param locktime - Timestamp after which the output can be spent
|
|
70
|
+
*/
|
|
71
|
+
validateLocktime(locktime) {
|
|
72
|
+
if (locktime < BigInt(0)) {
|
|
73
|
+
throw new sdk_core_1.BuildTransactionError('Invalid transaction: locktime must be 0 or higher');
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
// endregion
|
|
77
|
+
/**
|
|
78
|
+
* Sets the threshold for multi-signature transactions
|
|
79
|
+
* @param value - Number of required signatures
|
|
80
|
+
*/
|
|
81
|
+
threshold(value) {
|
|
82
|
+
this.validateThreshold(value);
|
|
83
|
+
this._transaction._threshold = value;
|
|
84
|
+
return this;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Sets the locktime for the transaction
|
|
88
|
+
* @param value - Timestamp after which the output can be spent
|
|
89
|
+
*/
|
|
90
|
+
locktime(value) {
|
|
91
|
+
this.validateLocktime(BigInt(value));
|
|
92
|
+
this._transaction._locktime = BigInt(value);
|
|
93
|
+
return this;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Enables recovery mode for the transaction
|
|
97
|
+
* @param recoverSigner - Whether to use recovery signing
|
|
98
|
+
*/
|
|
99
|
+
recoverMode(recoverSigner = true) {
|
|
100
|
+
this.recoverSigner = recoverSigner;
|
|
101
|
+
return this;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Sets the sender's public key(s)
|
|
105
|
+
* @param senderPubKey - Public key or array of public keys
|
|
106
|
+
*/
|
|
107
|
+
fromPubKey(senderPubKey) {
|
|
108
|
+
const pubKeys = Array.isArray(senderPubKey) ? senderPubKey : [senderPubKey];
|
|
109
|
+
this._transaction._fromAddresses = pubKeys.map((addr) => utils_1.default.parseAddress(addr));
|
|
110
|
+
return this;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Sets the UTXOs for the transaction
|
|
114
|
+
* @param value - Array of UTXOs to use
|
|
115
|
+
*/
|
|
116
|
+
utxos(value) {
|
|
117
|
+
this.validateUtxos(value);
|
|
118
|
+
this._transaction._utxos = value;
|
|
119
|
+
return this;
|
|
120
|
+
}
|
|
121
|
+
/** @inheritdoc */
|
|
122
|
+
fromImplementation(rawTransaction) {
|
|
123
|
+
try {
|
|
124
|
+
// Parse the raw transaction using Flare's PVM serialization
|
|
125
|
+
const [tx] = flarejs_1.pvmSerial.AddPermissionlessValidatorTx.fromBytes(Buffer.from(rawTransaction, 'hex'), flarejs_1.avmSerial.getAVMManager().getDefaultCodec());
|
|
126
|
+
this.initBuilder(tx);
|
|
127
|
+
return this._transaction;
|
|
128
|
+
}
|
|
129
|
+
catch (e) {
|
|
130
|
+
throw new sdk_core_1.BuildTransactionError(`Failed to parse raw transaction: ${e.message}`);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Check the buffer has 32 byte long.
|
|
135
|
+
* @param chainID
|
|
136
|
+
*/
|
|
137
|
+
validateChainId(chainID) {
|
|
138
|
+
if (chainID.length !== 32) {
|
|
139
|
+
throw new sdk_core_1.BuildTransactionError('Chain id are 32 byte size');
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
/** @inheritdoc */
|
|
143
|
+
get transaction() {
|
|
144
|
+
return this._transaction;
|
|
145
|
+
}
|
|
146
|
+
set transaction(transaction) {
|
|
147
|
+
this._transaction = transaction;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Check that fee is greater than 0.
|
|
151
|
+
* @param {bigint} fee
|
|
152
|
+
*/
|
|
153
|
+
validateFee(fee) {
|
|
154
|
+
if (fee <= BigInt(0)) {
|
|
155
|
+
throw new sdk_core_1.BuildTransactionError('Fee must be greater than 0');
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
/** @inheritdoc */
|
|
159
|
+
validateKey({ key }) {
|
|
160
|
+
try {
|
|
161
|
+
new keyPair_1.KeyPair({ prv: key });
|
|
162
|
+
}
|
|
163
|
+
catch (e) {
|
|
164
|
+
throw new sdk_core_1.BuildTransactionError('Invalid key');
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
/** @inheritdoc */
|
|
168
|
+
validateTransaction(transaction) {
|
|
169
|
+
// throw new NotImplementedError('validateTransaction not implemented');
|
|
170
|
+
}
|
|
171
|
+
/** @inheritdoc */
|
|
172
|
+
validateValue(value) {
|
|
173
|
+
if (value.isLessThan(0)) {
|
|
174
|
+
throw new sdk_core_1.BuildTransactionError('Value cannot be less than zero');
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
/** @inheritdoc */
|
|
178
|
+
validateAddress(address, addressFormat) {
|
|
179
|
+
if (!utils_1.default.isValidAddress(address.address)) {
|
|
180
|
+
throw new sdk_core_1.BuildTransactionError('Invalid address');
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Check the raw transaction has a valid format in the blockchain context, throw otherwise.
|
|
185
|
+
*
|
|
186
|
+
* @param rawTransaction Transaction in any format
|
|
187
|
+
*/
|
|
188
|
+
validateRawTransaction(rawTransaction) {
|
|
189
|
+
utils_1.default.validateRawTransaction(rawTransaction);
|
|
190
|
+
}
|
|
191
|
+
/** @inheritdoc */
|
|
192
|
+
signImplementation({ key }) {
|
|
193
|
+
this._signer.push(new keyPair_1.KeyPair({ prv: key }));
|
|
194
|
+
return this.transaction;
|
|
195
|
+
}
|
|
196
|
+
hasSigner() {
|
|
197
|
+
return this._signer !== undefined && this._signer.length > 0;
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Check the amount is positive.
|
|
201
|
+
* @param amount
|
|
202
|
+
*/
|
|
203
|
+
validateAmount(amount) {
|
|
204
|
+
if (amount <= BigInt(0)) {
|
|
205
|
+
throw new sdk_core_1.BuildTransactionError('Amount must be greater than 0');
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
exports.TransactionBuilder = TransactionBuilder;
|
|
210
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsbURBQXlFO0FBQ3pFLG1EQUEyRztBQUczRyx1Q0FBb0M7QUFDcEMsK0NBQTRDO0FBQzVDLG9EQUE0QjtBQUc1QixNQUFzQixrQkFBbUIsU0FBUSxpQ0FBc0I7SUFLckUsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFKWCxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN6QixZQUFPLEdBQWMsRUFBRSxDQUFDO1FBSTdCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSx5QkFBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFdBQVcsQ0FBQyxFQUFNO1FBQ2hCLE1BQU0sTUFBTSxHQUFLLEVBQWlCLENBQUMsRUFBNkMsQ0FBQyxNQUFNLENBQUM7UUFFeEYsNENBQTRDO1FBQzVDLElBQ0UsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVU7WUFDekQsTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsS0FBSyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFDL0QsQ0FBQztZQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQztRQUN2RCxDQUFDO1FBRUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDckMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsb0JBQW9CO0lBQ3BCOzs7T0FHRztJQUNILGlCQUFpQixDQUFDLFNBQWlCO1FBQ2pDLElBQUksQ0FBQyxTQUFTLElBQUksU0FBUyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2xDLE1BQU0sSUFB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YXZtU2VyaWFsLCBwdm1TZXJpYWwsIFVuc2lnbmVkVHggfSBmcm9tICdAZmxhcmVuZXR3b3JrL2ZsYXJlanMnO1xuaW1wb3J0IHsgQmFzZVRyYW5zYWN0aW9uQnVpbGRlciwgQnVpbGRUcmFuc2FjdGlvbkVycm9yLCBCYXNlS2V5LCBCYXNlQWRkcmVzcyB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IERlY29kZWRVdHhvT2JqLCBUeCB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgS2V5UGFpciB9IGZyb20gJy4va2V5UGFpcic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVHJhbnNhY3Rpb25CdWlsZGVyIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByb3RlY3RlZCBfdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uO1xuICBwcm90ZWN0ZWQgcmVjb3ZlclNpZ25lciA9IGZhbHNlO1xuICBwdWJsaWMgX3NpZ25lcjogS2V5UGFpcltdID0gW107XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gbmV3IFRyYW5zYWN0aW9uKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIHRoZSB0cmFuc2FjdGlvbiBidWlsZGVyIGZpZWxkcyB1c2luZyB0aGUgZGVjb2RlZCB0cmFuc2FjdGlvbiBkYXRhXG4gICAqXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb259IHR4IHRoZSB0cmFuc2FjdGlvbiBkYXRhXG4gICAqIEByZXR1cm5zIGl0c2VsZlxuICAgKi9cbiAgaW5pdEJ1aWxkZXIodHg6IFR4KTogdGhpcyB7XG4gICAgY29uc3QgYmFzZVR4ID0gKCh0eCBhcyBVbnNpZ25lZFR4KS50eCBhcyBwdm1TZXJpYWwuQWRkUGVybWlzc2lvbmxlc3NWYWxpZGF0b3JUeCkuYmFzZVR4O1xuXG4gICAgLy8gVmFsaWRhdGUgbmV0d29yayBhbmQgYmxvY2tjaGFpbiBJRHMgbWF0Y2hcbiAgICBpZiAoXG4gICAgICBiYXNlVHguTmV0d29ya0lkLnZhbHVlKCkgIT09IHRoaXMuX3RyYW5zYWN0aW9uLl9uZXR3b3JrSUQgfHxcbiAgICAgIGJhc2VUeC5CbG9ja2NoYWluSWQudmFsdWUoKSAhPT0gdGhpcy5fdHJhbnNhY3Rpb24uX2Jsb2NrY2hhaW5JRFxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdOZXR3b3JrIG9yIGJsb2NrY2hhaW4gSUQgbWlzbWF0Y2gnKTtcbiAgICB9XG5cbiAgICB0aGlzLl90cmFuc2FjdGlvbi5zZXRUcmFuc2FjdGlvbih0eCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyByZWdpb24gVmFsaWRhdG9yc1xuICAvKipcbiAgICogVmFsaWRhdGVzIHRoZSB0aHJlc2hvbGQgZm9yIG11bHRpLXNpZ25hdHVyZSB0cmFuc2FjdGlvbnNcbiAgICogQHBhcmFtIHRocmVzaG9sZCAtIE51bWJlciBvZiByZXF1aXJlZCBzaWduYXR1cmVzXG4gICAqL1xuICB2YWxpZGF0ZVRocmVzaG9sZCh0aHJlc2hvbGQ6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICghdGhyZXNob2xkIHx8IHRocmVzaG9sZCAhPT0gMikge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogdGhyZXNob2xkIG11c3QgYmUgc2V0IHRvIDInKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIGEgc2luZ2xlIFVUWE8gb2JqZWN0XG4gICAqIEBwYXJhbSB2YWx1ZSAtIFVUWE8gdG8gdmFsaWRhdGVcbiAgICovXG4gIHZhbGlkYXRlVXR4byh2YWx1ZTogRGVjb2RlZFV0eG9PYmopOiB2b2lkIHtcbiAgICBjb25zdCByZXF1aXJlZEZpZWxkcyA9IFsnb3V0cHV0SUQnLCAnYW1vdW50JywgJ3R4aWQnLCAnb3V0cHV0aWR4J107XG4gICAgZm9yIChjb25zdCBmaWVsZCBvZiByZXF1aXJlZEZpZWxkcykge1xuICAgICAgaWYgKCF2YWx1ZS5oYXNPd25Qcm9wZXJ0eShmaWVsZCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgVVRYTyBtaXNzaW5nIHJlcXVpcmVkIGZpZWxkOiAke2ZpZWxkfWApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgYW4gYXJyYXkgb2YgVVRYT3NcbiAgICogQHBhcmFtIHZhbHVlcyAtIEFycmF5IG9mIFVUWE9zIHRvIHZhbGlkYXRlXG4gICAqL1xuICB2YWxpZGF0ZVV0eG9zKHZhbHVlczogRGVjb2RlZFV0eG9PYmpbXSk6IHZvaWQge1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdVVFhPcyBhcnJheSBjYW5ub3QgYmUgZW1wdHknKTtcbiAgICB9XG4gICAgdmFsdWVzLmZvckVhY2godGhpcy52YWxpZGF0ZVV0eG8pO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgbG9ja3RpbWUgdmFsdWVcbiAgICogQHBhcmFtIGxvY2t0aW1lIC0gVGltZXN0YW1wIGFmdGVyIHdoaWNoIHRoZSBvdXRwdXQgY2FuIGJlIHNwZW50XG4gICAqL1xuICB2YWxpZGF0ZUxvY2t0aW1lKGxvY2t0aW1lOiBiaWdpbnQpOiB2b2lkIHtcbiAgICBpZiAobG9ja3RpbWUgPCBCaWdJbnQoMCkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IGxvY2t0aW1lIG11c3QgYmUgMCBvciBoaWdoZXInKTtcbiAgICB9XG4gIH1cbiAgLy8gZW5kcmVnaW9uXG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHRocmVzaG9sZCBmb3IgbXVsdGktc2lnbmF0dXJlIHRyYW5zYWN0aW9uc1xuICAgKiBAcGFyYW0gdmFsdWUgLSBOdW1iZXIgb2YgcmVxdWlyZWQgc2lnbmF0dXJlc1xuICAgKi9cbiAgdGhyZXNob2xkKHZhbHVlOiBudW1iZXIpOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlVGhyZXNob2xkKHZhbHVlKTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbi5fdGhyZXNob2xkID0gdmFsdWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgbG9ja3RpbWUgZm9yIHRoZSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gdmFsdWUgLSBUaW1lc3RhbXAgYWZ0ZXIgd2hpY2ggdGhlIG91dHB1dCBjYW4gYmUgc3BlbnRcbiAgICovXG4gIGxvY2t0aW1lKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlTG9ja3RpbWUoQmlnSW50KHZhbHVlKSk7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24uX2xvY2t0aW1lID0gQmlnSW50KHZhbHVlKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmFibGVzIHJlY292ZXJ5IG1vZGUgZm9yIHRoZSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gcmVjb3ZlclNpZ25lciAtIFdoZXRoZXIgdG8gdXNlIHJlY292ZXJ5IHNpZ25pbmdcbiAgICovXG4gIHJlY292ZXJNb2RlKHJlY292ZXJTaWduZXIgPSB0cnVlKTogdGhpcyB7XG4gICAgdGhpcy5yZWNvdmVyU2lnbmVyID0gcmVjb3ZlclNpZ25lcjtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBzZW5kZXIncyBwdWJsaWMga2V5KHMpXG4gICAqIEBwYXJhbSBzZW5kZXJQdWJLZXkgLSBQdWJsaWMga2V5IG9yIGFycmF5IG9mIHB1YmxpYyBrZXlzXG4gICAqL1xuICBmcm9tUHViS2V5KHNlbmRlclB1YktleTogc3RyaW5nIHwgc3RyaW5nW10pOiB0aGlzIHtcbiAgICBjb25zdCBwdWJLZXlzID0gQXJyYXkuaXNBcnJheShzZW5kZXJQdWJLZXkpID8gc2VuZGVyUHViS2V5IDogW3NlbmRlclB1YktleV07XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXMgPSBwdWJLZXlzLm1hcCgoYWRkcikgPT4gdXRpbHMucGFyc2VBZGRyZXNzKGFkZHIpKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBVVFhPcyBmb3IgdGhlIHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSB2YWx1ZSAtIEFycmF5IG9mIFVUWE9zIHRvIHVzZVxuICAgKi9cbiAgdXR4b3ModmFsdWU6IERlY29kZWRVdHhvT2JqW10pOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlVXR4b3ModmFsdWUpO1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uLl91dHhvcyA9IHZhbHVlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBmcm9tSW1wbGVtZW50YXRpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IFRyYW5zYWN0aW9uIHtcbiAgICB0cnkge1xuICAgICAgLy8gUGFyc2UgdGhlIHJhdyB0cmFuc2FjdGlvbiB1c2luZyBGbGFyZSdzIFBWTSBzZXJpYWxpemF0aW9uXG4gICAgICBjb25zdCBbdHhdID0gcHZtU2VyaWFsLkFkZFBlcm1pc3Npb25sZXNzVmFsaWRhdG9yVHguZnJvbUJ5dGVzKFxuICAgICAgICBCdWZmZXIuZnJvbShyYXdUcmFuc2FjdGlvbiwgJ2hleCcpLFxuICAgICAgICBhdm1TZXJpYWwuZ2V0QVZNTWFuYWdlcigpLmdldERlZmF1bHRDb2RlYygpXG4gICAgICApO1xuICAgICAgdGhpcy5pbml0QnVpbGRlcih0eCk7XG4gICAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb247XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgRmFpbGVkIHRvIHBhcnNlIHJhdyB0cmFuc2FjdGlvbjogJHtlLm1lc3NhZ2V9YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFic3RyYWN0IG1ldGhvZCB0byBiZSBpbXBsZW1lbnRlZCBieSBzcGVjaWZpYyB0cmFuc2FjdGlvbiBidWlsZGVyc1xuICAgKiBCdWlsZHMgdGhlIGFjdHVhbCB0cmFuc2FjdGlvbiBiYXNlZCBvbiB0aGUgYnVpbGRlcidzIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBidWlsZEltcGxlbWVudGF0aW9uKCk6IFByb21pc2U8VHJhbnNhY3Rpb24+O1xuXG4gIC8qKlxuICAgKiBDaGVjayB0aGUgYnVmZmVyIGhhcyAzMiBieXRlIGxvbmcuXG4gICAqIEBwYXJhbSBjaGFpbklEXG4gICAqL1xuICB2YWxpZGF0ZUNoYWluSWQoY2hhaW5JRDogQnVmZmVyKTogdm9pZCB7XG4gICAgaWYgKGNoYWluSUQubGVuZ3RoICE9PSAzMikge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignQ2hhaW4gaWQgYXJlIDMyIGJ5dGUgc2l6ZScpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uKCk6IFRyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb247XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0IHRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbikge1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gdHJhbnNhY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgdGhhdCBmZWUgaXMgZ3JlYXRlciB0aGFuIDAuXG4gICAqIEBwYXJhbSB7YmlnaW50fSBmZWVcbiAgICovXG4gIHZhbGlkYXRlRmVlKGZlZTogYmlnaW50KTogdm9pZCB7XG4gICAgaWYgKGZlZSA8PSBCaWdJbnQoMCkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ZlZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlS2V5KHsga2V5IH06IEJhc2VLZXkpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgbmV3IEtleVBhaXIoeyBwcnY6IGtleSB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIGtleScpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uPzogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICAvLyB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigndmFsaWRhdGVUcmFuc2FjdGlvbiBub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVZhbHVlKHZhbHVlOiBCaWdOdW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodmFsdWUuaXNMZXNzVGhhbigwKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignVmFsdWUgY2Fubm90IGJlIGxlc3MgdGhhbiB6ZXJvJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlQWRkcmVzcyhhZGRyZXNzOiBCYXNlQWRkcmVzcywgYWRkcmVzc0Zvcm1hdD86IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghdXRpbHMuaXNWYWxpZEFkZHJlc3MoYWRkcmVzcy5hZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBhZGRyZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIHRoZSByYXcgdHJhbnNhY3Rpb24gaGFzIGEgdmFsaWQgZm9ybWF0IGluIHRoZSBibG9ja2NoYWluIGNvbnRleHQsIHRocm93IG90aGVyd2lzZS5cbiAgICpcbiAgICogQHBhcmFtIHJhd1RyYW5zYWN0aW9uIFRyYW5zYWN0aW9uIGluIGFueSBmb3JtYXRcbiAgICovXG4gIHZhbGlkYXRlUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IHZvaWQge1xuICAgIHV0aWxzLnZhbGlkYXRlUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb24pO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBzaWduSW1wbGVtZW50YXRpb24oeyBrZXkgfTogQmFzZUtleSk6IFRyYW5zYWN0aW9uIHtcbiAgICB0aGlzLl9zaWduZXIucHVzaChuZXcgS2V5UGFpcih7IHBydjoga2V5IH0pKTtcbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbjtcbiAgfVxuXG4gIGhhc1NpZ25lcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc2lnbmVyICE9PSB1bmRlZmluZWQgJiYgdGhpcy5fc2lnbmVyLmxlbmd0aCA+IDA7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgdGhlIGFtb3VudCBpcyBwb3NpdGl2ZS5cbiAgICogQHBhcmFtIGFtb3VudFxuICAgKi9cbiAgdmFsaWRhdGVBbW91bnQoYW1vdW50OiBiaWdpbnQpOiB2b2lkIHtcbiAgICBpZiAoYW1vdW50IDw9IEJpZ0ludCgwKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignQW1vdW50IG11c3QgYmUgZ3JlYXRlciB0aGFuIDAnKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,37 +1,34 @@
|
|
|
1
|
+
import { BaseTransactionBuilderFactory } from '@bitgo-beta/sdk-core';
|
|
1
2
|
import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
*/
|
|
23
|
-
export declare class TransactionBuilderFactory {
|
|
24
|
-
protected _coinConfig: Readonly<CoinConfig>;
|
|
25
|
-
constructor(coinConfig: Readonly<CoinConfig>);
|
|
3
|
+
import { TransactionBuilder } from './transactionBuilder';
|
|
4
|
+
import { ExportInPTxBuilder } from './ExportInPTxBuilder';
|
|
5
|
+
import { ImportInPTxBuilder } from './ImportInPTxBuilder';
|
|
6
|
+
import { ExportInCTxBuilder } from './ExportInCTxBuilder';
|
|
7
|
+
import { ImportInCTxBuilder } from './ImportInCTxBuilder';
|
|
8
|
+
export declare class TransactionBuilderFactory extends BaseTransactionBuilderFactory {
|
|
9
|
+
protected recoverSigner: boolean;
|
|
10
|
+
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
11
|
+
/** @inheritdoc */
|
|
12
|
+
from(raw: string): TransactionBuilder;
|
|
13
|
+
/** @inheritdoc */
|
|
14
|
+
getTransferBuilder(): TransactionBuilder;
|
|
15
|
+
/**
|
|
16
|
+
* Export Cross chain transfer
|
|
17
|
+
*/
|
|
18
|
+
getExportInPBuilder(): ExportInPTxBuilder;
|
|
19
|
+
/**
|
|
20
|
+
* Import Cross chain transfer
|
|
21
|
+
*/
|
|
22
|
+
getImportInPBuilder(): ImportInPTxBuilder;
|
|
26
23
|
/**
|
|
27
|
-
*
|
|
28
|
-
* @param txHex - Transaction hex string
|
|
24
|
+
* Import in C chain Cross chain transfer
|
|
29
25
|
*/
|
|
30
|
-
|
|
26
|
+
getImportInCBuilder(): ImportInCTxBuilder;
|
|
31
27
|
/**
|
|
32
|
-
*
|
|
33
|
-
* @param type - Transaction type
|
|
28
|
+
* Export in C chain Cross chain transfer
|
|
34
29
|
*/
|
|
35
|
-
|
|
30
|
+
getExportInCBuilder(): ExportInCTxBuilder;
|
|
31
|
+
/** @inheritdoc */
|
|
32
|
+
getWalletInitializationBuilder(): TransactionBuilder;
|
|
36
33
|
}
|
|
37
34
|
//# sourceMappingURL=transactionBuilderFactory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transactionBuilderFactory.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilderFactory.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"transactionBuilderFactory.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilderFactory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,6BAA6B,EAAgB,MAAM,sBAAsB,CAAC;AACnF,OAAO,EAAgB,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,qBAAa,yBAA0B,SAAQ,6BAA6B;IAC1E,SAAS,CAAC,aAAa,UAAS;gBAEpB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,kBAAkB;IAClB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB;IAgDrC,kBAAkB;IAClB,kBAAkB,IAAI,kBAAkB;IAIxC;;OAEG;IACH,mBAAmB,IAAI,kBAAkB;IAIzC;;OAEG;IACH,mBAAmB,IAAI,kBAAkB;IAIzC;;OAEG;IACH,mBAAmB,IAAI,kBAAkB;IAIzC;;OAEG;IACH,mBAAmB,IAAI,kBAAkB;IAIzC,kBAAkB;IAClB,8BAA8B,IAAI,kBAAkB;CAGrD"}
|
|
@@ -1,91 +1,100 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TransactionBuilderFactory =
|
|
6
|
+
exports.TransactionBuilderFactory = void 0;
|
|
7
|
+
const flarejs_1 = require("@flarenetwork/flarejs");
|
|
4
8
|
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
9
|
+
const ExportInPTxBuilder_1 = require("./ExportInPTxBuilder");
|
|
10
|
+
const ImportInPTxBuilder_1 = require("./ImportInPTxBuilder");
|
|
11
|
+
const ExportInCTxBuilder_1 = require("./ExportInCTxBuilder");
|
|
12
|
+
const ImportInCTxBuilder_1 = require("./ImportInCTxBuilder");
|
|
13
|
+
const utils_1 = __importDefault(require("./utils"));
|
|
14
|
+
class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory {
|
|
15
|
+
constructor(_coinConfig) {
|
|
16
|
+
super(_coinConfig);
|
|
17
|
+
this.recoverSigner = false;
|
|
10
18
|
}
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
19
|
+
/** @inheritdoc */
|
|
20
|
+
from(raw) {
|
|
21
|
+
utils_1.default.validateRawTransaction(raw);
|
|
22
|
+
const rawNoHex = utils_1.default.removeHexPrefix(raw);
|
|
23
|
+
const rawBuffer = Buffer.from(rawNoHex, 'hex');
|
|
24
|
+
let txSource;
|
|
25
|
+
const network = this._coinConfig.network;
|
|
26
|
+
let tx;
|
|
27
|
+
try {
|
|
28
|
+
txSource = 'EVM';
|
|
29
|
+
const evmManager = flarejs_1.utils.getManagerForVM('EVM');
|
|
30
|
+
tx = evmManager.unpackTransaction(rawBuffer);
|
|
31
|
+
const blockchainId = tx.getBlockchainId();
|
|
32
|
+
if (blockchainId === network.cChainBlockchainID) {
|
|
33
|
+
console.log('Parsed as EVM transaction on C-Chain');
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
catch (e) {
|
|
37
|
+
txSource = 'PVM';
|
|
38
|
+
const pvmManager = flarejs_1.utils.getManagerForVM('PVM');
|
|
39
|
+
tx = pvmManager.unpackTransaction(rawBuffer);
|
|
40
|
+
const blockchainId = tx.getBlockchainId();
|
|
41
|
+
if (blockchainId === network.blockchainID) {
|
|
42
|
+
console.log('Parsed as PVM transaction on P-Chain');
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
if (txSource === 'EVM') {
|
|
46
|
+
if (ExportInCTxBuilder_1.ExportInCTxBuilder.verifyTxType(tx._type)) {
|
|
47
|
+
const exportBuilder = this.getExportInCBuilder();
|
|
48
|
+
exportBuilder.initBuilder(tx, rawBuffer);
|
|
49
|
+
return exportBuilder;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
else if (txSource === 'PVM') {
|
|
53
|
+
if (ImportInPTxBuilder_1.ImportInPTxBuilder.verifyTxType(tx._type)) {
|
|
54
|
+
const importBuilder = this.getImportInPBuilder();
|
|
55
|
+
importBuilder.initBuilder(tx, rawBuffer);
|
|
56
|
+
return importBuilder;
|
|
57
|
+
}
|
|
58
|
+
else if (ExportInPTxBuilder_1.ExportInPTxBuilder.verifyTxType(tx._type)) {
|
|
59
|
+
const exportBuilder = this.getExportInPBuilder();
|
|
60
|
+
exportBuilder.initBuilder(tx, rawBuffer);
|
|
61
|
+
return exportBuilder;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
throw new sdk_core_1.NotSupported('Transaction type not supported');
|
|
30
65
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
66
|
+
/** @inheritdoc */
|
|
67
|
+
getTransferBuilder() {
|
|
68
|
+
throw new sdk_core_1.NotSupported('Transfer is not supported in P Chain');
|
|
34
69
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
return
|
|
40
|
-
}
|
|
41
|
-
constructor(coinConfig) {
|
|
42
|
-
super(coinConfig);
|
|
43
|
-
// Don't throw error, allow placeholder functionality
|
|
70
|
+
/**
|
|
71
|
+
* Export Cross chain transfer
|
|
72
|
+
*/
|
|
73
|
+
getExportInPBuilder() {
|
|
74
|
+
return new ExportInPTxBuilder_1.ExportInPTxBuilder(this._coinConfig);
|
|
44
75
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
class TransactionBuilderFactory {
|
|
51
|
-
constructor(coinConfig) {
|
|
52
|
-
this._coinConfig = coinConfig;
|
|
76
|
+
/**
|
|
77
|
+
* Import Cross chain transfer
|
|
78
|
+
*/
|
|
79
|
+
getImportInPBuilder() {
|
|
80
|
+
return new ImportInPTxBuilder_1.ImportInPTxBuilder(this._coinConfig);
|
|
53
81
|
}
|
|
54
82
|
/**
|
|
55
|
-
*
|
|
56
|
-
* @param txHex - Transaction hex string
|
|
83
|
+
* Import in C chain Cross chain transfer
|
|
57
84
|
*/
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
// For now, return a basic export builder as that's the most common use case
|
|
61
|
-
if (!txHex) {
|
|
62
|
-
throw new Error('Transaction hex is required');
|
|
63
|
-
}
|
|
64
|
-
// Create a mock export builder for now
|
|
65
|
-
// In the future, this will parse the transaction and determine the correct type
|
|
66
|
-
const builder = new ExportTxBuilder(this._coinConfig);
|
|
67
|
-
// Initialize with the hex data (placeholder)
|
|
68
|
-
builder.initBuilder({ txHex });
|
|
69
|
-
return builder;
|
|
85
|
+
getImportInCBuilder() {
|
|
86
|
+
return new ImportInCTxBuilder_1.ImportInCTxBuilder(this._coinConfig);
|
|
70
87
|
}
|
|
71
88
|
/**
|
|
72
|
-
*
|
|
73
|
-
* @param type - Transaction type
|
|
89
|
+
* Export in C chain Cross chain transfer
|
|
74
90
|
*/
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
case sdk_core_1.TransactionType.AddValidator:
|
|
82
|
-
return new ValidatorTxBuilder(this._coinConfig);
|
|
83
|
-
case sdk_core_1.TransactionType.AddDelegator:
|
|
84
|
-
return new DelegatorTxBuilder(this._coinConfig);
|
|
85
|
-
default:
|
|
86
|
-
throw new sdk_core_1.NotImplementedError(`Transaction type ${type} not supported`);
|
|
87
|
-
}
|
|
91
|
+
getExportInCBuilder() {
|
|
92
|
+
return new ExportInCTxBuilder_1.ExportInCTxBuilder(this._coinConfig);
|
|
93
|
+
}
|
|
94
|
+
/** @inheritdoc */
|
|
95
|
+
getWalletInitializationBuilder() {
|
|
96
|
+
throw new sdk_core_1.NotSupported('Wallet initialization is not needed');
|
|
88
97
|
}
|
|
89
98
|
}
|
|
90
99
|
exports.TransactionBuilderFactory = TransactionBuilderFactory;
|
|
91
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxtREFBa0Y7QUFDbEYsbURBQW1GO0FBR25GLDZEQUEwRDtBQUMxRCw2REFBMEQ7QUFDMUQsNkRBQTBEO0FBQzFELDZEQUEwRDtBQUMxRCxvREFBNEI7QUFFNUIsTUFBYSx5QkFBMEIsU0FBUSx3Q0FBNkI7SUFHMUUsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFIWCxrQkFBYSxHQUFHLEtBQUssQ0FBQztJQUloQyxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLElBQUksQ0FBQyxHQUFXO1FBQ2QsZUFBSyxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sUUFBUSxHQUFHLGVBQUssQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDNUMsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDL0MsSUFBSSxRQUF1QixDQUFDO1FBRTVCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBdUIsQ0FBQztRQUN6RCxJQUFJLEVBQU8sQ0FBQztRQUNaLElBQUksQ0FBQztZQUNILFFBQVEsR0FBRyxLQUFLLENBQUM7WUFDakIsTUFBTSxVQUFVLEdBQUcsZUFBVSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNyRCxFQUFFLEdBQUcsVUFBVSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzdDLE1BQU0sWUFBWSxHQUFHLEVBQUUsQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUUxQyxJQUFJLFlBQVksS0FBSyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztnQkFDaEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO1lBQ3RELENBQUM7UUFDSCxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLFFBQVEsR0FBRyxLQUFLLENBQUM7WUFDakIsTUFBTSxVQUFVLEdBQUcsZUFBVSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNyRCxFQUFFLEdBQUcsVUFBVSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzdDLE1BQU0sWUFBWSxHQUFHLEVBQUUsQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUUxQyxJQUFJLFlBQVksS0FBSyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQzFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsc0NBQXNDLENBQUMsQ0FBQztZQUN0RCxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksUUFBUSxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ3ZCLElBQUksdUNBQWtCLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUM5QyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztnQkFDakQsYUFBYSxDQUFDLFdBQVcsQ0FBQyxFQUF3QixFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUMvRCxPQUFPLGFBQWEsQ0FBQztZQUN2QixDQUFDO1FBQ0gsQ0FBQzthQUFNLElBQUksUUFBUSxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQzlCLElBQUksdUNBQWtCLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUM5QyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztnQkFDakQsYUFBYSxDQUFDLFdBQVcsQ0FBQyxFQUF3QixFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUMvRCxPQUFPLGFBQWEsQ0FBQztZQUN2QixDQUFDO2lCQUFNLElBQUksdUNBQWtCLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNyRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztnQkFDakQsYUFBYSxDQUFDLFdBQVcsQ0FBQyxFQUF3QixFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUMvRCxPQUFPLGFBQWEsQ0FBQztZQUN2QixDQUFDO1FBQ0gsQ0FBQztRQUNELE1BQU0sSUFBSSx1QkFBWSxDQUFDLGdDQUFnQyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixrQkFBa0I7UUFDaEIsTUFBTSxJQUFJLHVCQUFZLENBQUMsc0NBQXNDLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxtQkFBbUI7UUFDakIsT0FBTyxJQUFJLHVDQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxtQkFBbUI7UUFDakIsT0FBTyxJQUFJLHVDQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxtQkFBbUI7UUFDakIsT0FBTyxJQUFJLHVDQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxtQkFBbUI7UUFDakIsT0FBTyxJQUFJLHVDQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLDhCQUE4QjtRQUM1QixNQUFNLElBQUksdUJBQVksQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7Q0FDRjtBQTdGRCw4REE2RkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1dGlscyBhcyBGbGFyZVV0aWxzLCBldm1TZXJpYWwsIHB2bVNlcmlhbCB9IGZyb20gJ0BmbGFyZW5ldHdvcmsvZmxhcmVqcyc7XG5pbXBvcnQgeyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSwgTm90U3VwcG9ydGVkIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgRmxhcmVOZXR3b3JrLCBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBFeHBvcnRJblBUeEJ1aWxkZXIgfSBmcm9tICcuL0V4cG9ydEluUFR4QnVpbGRlcic7XG5pbXBvcnQgeyBJbXBvcnRJblBUeEJ1aWxkZXIgfSBmcm9tICcuL0ltcG9ydEluUFR4QnVpbGRlcic7XG5pbXBvcnQgeyBFeHBvcnRJbkNUeEJ1aWxkZXIgfSBmcm9tICcuL0V4cG9ydEluQ1R4QnVpbGRlcic7XG5pbXBvcnQgeyBJbXBvcnRJbkNUeEJ1aWxkZXIgfSBmcm9tICcuL0ltcG9ydEluQ1R4QnVpbGRlcic7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uQnVpbGRlckZhY3Rvcnkge1xuICBwcm90ZWN0ZWQgcmVjb3ZlclNpZ25lciA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBmcm9tKHJhdzogc3RyaW5nKTogVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgICB1dGlscy52YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKHJhdyk7XG4gICAgY29uc3QgcmF3Tm9IZXggPSB1dGlscy5yZW1vdmVIZXhQcmVmaXgocmF3KTtcbiAgICBjb25zdCByYXdCdWZmZXIgPSBCdWZmZXIuZnJvbShyYXdOb0hleCwgJ2hleCcpO1xuICAgIGxldCB0eFNvdXJjZTogJ0VWTScgfCAnUFZNJztcblxuICAgIGNvbnN0IG5ldHdvcmsgPSB0aGlzLl9jb2luQ29uZmlnLm5ldHdvcmsgYXMgRmxhcmVOZXR3b3JrO1xuICAgIGxldCB0eDogYW55O1xuICAgIHRyeSB7XG4gICAgICB0eFNvdXJjZSA9ICdFVk0nO1xuICAgICAgY29uc3QgZXZtTWFuYWdlciA9IEZsYXJlVXRpbHMuZ2V0TWFuYWdlckZvclZNKCdFVk0nKTtcbiAgICAgIHR4ID0gZXZtTWFuYWdlci51bnBhY2tUcmFuc2FjdGlvbihyYXdCdWZmZXIpO1xuICAgICAgY29uc3QgYmxvY2tjaGFpbklkID0gdHguZ2V0QmxvY2tjaGFpbklkKCk7XG5cbiAgICAgIGlmIChibG9ja2NoYWluSWQgPT09IG5ldHdvcmsuY0NoYWluQmxvY2tjaGFpbklEKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdQYXJzZWQgYXMgRVZNIHRyYW5zYWN0aW9uIG9uIEMtQ2hhaW4nKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0eFNvdXJjZSA9ICdQVk0nO1xuICAgICAgY29uc3QgcHZtTWFuYWdlciA9IEZsYXJlVXRpbHMuZ2V0TWFuYWdlckZvclZNKCdQVk0nKTtcbiAgICAgIHR4ID0gcHZtTWFuYWdlci51bnBhY2tUcmFuc2FjdGlvbihyYXdCdWZmZXIpO1xuICAgICAgY29uc3QgYmxvY2tjaGFpbklkID0gdHguZ2V0QmxvY2tjaGFpbklkKCk7XG5cbiAgICAgIGlmIChibG9ja2NoYWluSWQgPT09IG5ldHdvcmsuYmxvY2tjaGFpbklEKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdQYXJzZWQgYXMgUFZNIHRyYW5zYWN0aW9uIG9uIFAtQ2hhaW4nKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodHhTb3VyY2UgPT09ICdFVk0nKSB7XG4gICAgICBpZiAoRXhwb3J0SW5DVHhCdWlsZGVyLnZlcmlmeVR4VHlwZSh0eC5fdHlwZSkpIHtcbiAgICAgICAgY29uc3QgZXhwb3J0QnVpbGRlciA9IHRoaXMuZ2V0RXhwb3J0SW5DQnVpbGRlcigpO1xuICAgICAgICBleHBvcnRCdWlsZGVyLmluaXRCdWlsZGVyKHR4IGFzIGV2bVNlcmlhbC5FeHBvcnRUeCwgcmF3QnVmZmVyKTtcbiAgICAgICAgcmV0dXJuIGV4cG9ydEJ1aWxkZXI7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0eFNvdXJjZSA9PT0gJ1BWTScpIHtcbiAgICAgIGlmIChJbXBvcnRJblBUeEJ1aWxkZXIudmVyaWZ5VHhUeXBlKHR4Ll90eXBlKSkge1xuICAgICAgICBjb25zdCBpbXBvcnRCdWlsZGVyID0gdGhpcy5nZXRJbXBvcnRJblBCdWlsZGVyKCk7XG4gICAgICAgIGltcG9ydEJ1aWxkZXIuaW5pdEJ1aWxkZXIodHggYXMgcHZtU2VyaWFsLkltcG9ydFR4LCByYXdCdWZmZXIpO1xuICAgICAgICByZXR1cm4gaW1wb3J0QnVpbGRlcjtcbiAgICAgIH0gZWxzZSBpZiAoRXhwb3J0SW5QVHhCdWlsZGVyLnZlcmlmeVR4VHlwZSh0eC5fdHlwZSkpIHtcbiAgICAgICAgY29uc3QgZXhwb3J0QnVpbGRlciA9IHRoaXMuZ2V0RXhwb3J0SW5QQnVpbGRlcigpO1xuICAgICAgICBleHBvcnRCdWlsZGVyLmluaXRCdWlsZGVyKHR4IGFzIHB2bVNlcmlhbC5FeHBvcnRUeCwgcmF3QnVmZmVyKTtcbiAgICAgICAgcmV0dXJuIGV4cG9ydEJ1aWxkZXI7XG4gICAgICB9XG4gICAgfVxuICAgIHRocm93IG5ldyBOb3RTdXBwb3J0ZWQoJ1RyYW5zYWN0aW9uIHR5cGUgbm90IHN1cHBvcnRlZCcpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGdldFRyYW5zZmVyQnVpbGRlcigpOiBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICAgIHRocm93IG5ldyBOb3RTdXBwb3J0ZWQoJ1RyYW5zZmVyIGlzIG5vdCBzdXBwb3J0ZWQgaW4gUCBDaGFpbicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4cG9ydCBDcm9zcyBjaGFpbiB0cmFuc2ZlclxuICAgKi9cbiAgZ2V0RXhwb3J0SW5QQnVpbGRlcigpOiBFeHBvcnRJblBUeEJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgRXhwb3J0SW5QVHhCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCBDcm9zcyBjaGFpbiB0cmFuc2ZlclxuICAgKi9cbiAgZ2V0SW1wb3J0SW5QQnVpbGRlcigpOiBJbXBvcnRJblBUeEJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgSW1wb3J0SW5QVHhCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCBpbiBDIGNoYWluIENyb3NzIGNoYWluIHRyYW5zZmVyXG4gICAqL1xuICBnZXRJbXBvcnRJbkNCdWlsZGVyKCk6IEltcG9ydEluQ1R4QnVpbGRlciB7XG4gICAgcmV0dXJuIG5ldyBJbXBvcnRJbkNUeEJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZyk7XG4gIH1cblxuICAvKipcbiAgICogRXhwb3J0IGluIEMgY2hhaW4gQ3Jvc3MgY2hhaW4gdHJhbnNmZXJcbiAgICovXG4gIGdldEV4cG9ydEluQ0J1aWxkZXIoKTogRXhwb3J0SW5DVHhCdWlsZGVyIHtcbiAgICByZXR1cm4gbmV3IEV4cG9ydEluQ1R4QnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRXYWxsZXRJbml0aWFsaXphdGlvbkJ1aWxkZXIoKTogVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgICB0aHJvdyBuZXcgTm90U3VwcG9ydGVkKCdXYWxsZXQgaW5pdGlhbGl6YXRpb24gaXMgbm90IG5lZWRlZCcpO1xuICB9XG59XG4iXX0=
|