@bitgo-beta/sdk-coin-flrp 1.0.0-alpha.39 → 1.0.0-alpha.40
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 +9 -16
- package/dist/src/flrp.d.ts.map +1 -1
- package/dist/src/flrp.js +49 -75
- 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 +51 -0
- package/dist/src/lib/ExportInCTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/ExportInCTxBuilder.js +188 -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 +273 -0
- package/dist/src/lib/ImportInCTxBuilder.d.ts +48 -0
- package/dist/src/lib/ImportInCTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/ImportInCTxBuilder.js +215 -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 +180 -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 -79
- package/dist/src/lib/atomicTransactionBuilder.d.ts.map +1 -1
- package/dist/src/lib/atomicTransactionBuilder.js +138 -281
- package/dist/src/lib/iface.d.ts +38 -61
- package/dist/src/lib/iface.d.ts.map +1 -1
- package/dist/src/lib/iface.js +13 -14
- package/dist/src/lib/index.d.ts +3 -3
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +8 -7
- package/dist/src/lib/keyPair.d.ts +1 -1
- package/dist/src/lib/keyPair.d.ts.map +1 -1
- package/dist/src/lib/keyPair.js +9 -5
- package/dist/src/lib/permissionlessValidatorTxBuilder.d.ts +29 -67
- package/dist/src/lib/permissionlessValidatorTxBuilder.d.ts.map +1 -1
- package/dist/src/lib/permissionlessValidatorTxBuilder.js +89 -205
- package/dist/src/lib/transaction.d.ts +11 -71
- package/dist/src/lib/transaction.d.ts.map +1 -1
- package/dist/src/lib/transaction.js +255 -204
- package/dist/src/lib/transactionBuilder.d.ts +56 -34
- package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilder.js +113 -70
- package/dist/src/lib/transactionBuilderFactory.d.ts +50 -30
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilderFactory.js +129 -72
- package/dist/src/lib/utils.d.ts +67 -153
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +178 -397
- package/dist/test/resources/account.d.ts +2 -0
- package/dist/test/resources/account.d.ts.map +1 -1
- package/dist/test/resources/account.js +3 -1
- 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/importInC.d.ts +27 -0
- package/dist/test/resources/transactionData/importInC.d.ts.map +1 -0
- package/dist/test/resources/transactionData/importInC.js +44 -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/flrp.js +449 -68
- package/dist/test/unit/lib/exportInCTxBuilder.js +95 -513
- package/dist/test/unit/lib/exportInPTxBuilder.d.ts +1 -1
- package/dist/test/unit/lib/exportInPTxBuilder.d.ts.map +1 -1
- package/dist/test/unit/lib/exportInPTxBuilder.js +110 -366
- package/dist/test/unit/lib/importInCTxBuilder.d.ts +1 -1
- package/dist/test/unit/lib/importInCTxBuilder.d.ts.map +1 -1
- package/dist/test/unit/lib/importInCTxBuilder.js +40 -251
- package/dist/test/unit/lib/importInPTxBuilder.d.ts +1 -1
- package/dist/test/unit/lib/importInPTxBuilder.d.ts.map +1 -1
- package/dist/test/unit/lib/importInPTxBuilder.js +61 -489
- 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 +89 -0
- package/dist/test/unit/lib/utils.js +367 -279
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +12 -9
- 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 -170
- package/dist/src/lib/constants.d.ts.map +0 -1
- package/dist/src/lib/constants.js +0 -227
- package/dist/src/lib/delegatorTxBuilder.d.ts +0 -58
- package/dist/src/lib/delegatorTxBuilder.d.ts.map +0 -1
- package/dist/src/lib/delegatorTxBuilder.js +0 -224
- 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 -199
- 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 -120
- package/dist/src/lib/importInCTxBuilder.d.ts +0 -67
- package/dist/src/lib/importInCTxBuilder.d.ts.map +0 -1
- package/dist/src/lib/importInCTxBuilder.js +0 -403
- package/dist/src/lib/importInPTxBuilder.d.ts +0 -73
- package/dist/src/lib/importInPTxBuilder.d.ts.map +0 -1
- package/dist/src/lib/importInPTxBuilder.js +0 -464
- package/dist/src/lib/types.d.ts +0 -78
- package/dist/src/lib/types.d.ts.map +0 -1
- package/dist/src/lib/types.js +0 -5
- package/dist/src/lib/validatorTxBuilder.d.ts +0 -40
- package/dist/src/lib/validatorTxBuilder.d.ts.map +0 -1
- package/dist/src/lib/validatorTxBuilder.js +0 -180
- package/dist/test/unit/delegatorTxBuilder.test.d.ts +0 -2
- package/dist/test/unit/delegatorTxBuilder.test.d.ts.map +0 -1
- package/dist/test/unit/delegatorTxBuilder.test.js +0 -233
- 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/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/permissionlessValidatorTxBuilder.test.d.ts +0 -2
- package/dist/test/unit/permissionlessValidatorTxBuilder.test.d.ts.map +0 -1
- package/dist/test/unit/permissionlessValidatorTxBuilder.test.js +0 -271
- 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
- package/dist/test/unit/transactionBuilder.test.d.ts +0 -2
- package/dist/test/unit/transactionBuilder.test.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder.test.js +0 -114
- package/dist/test/unit/validatorTxBuilder.test.d.ts +0 -2
- package/dist/test/unit/validatorTxBuilder.test.d.ts.map +0 -1
- package/dist/test/unit/validatorTxBuilder.test.js +0 -293
|
@@ -1,85 +1,107 @@
|
|
|
1
|
-
import { BaseTransactionBuilder } from '@bitgo-beta/sdk-core';
|
|
1
|
+
import { BaseTransactionBuilder, BaseKey, BaseAddress } from '@bitgo-beta/sdk-core';
|
|
2
2
|
import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
|
|
3
3
|
import { DecodedUtxoObj, Tx } from './iface';
|
|
4
4
|
import { KeyPair } from './keyPair';
|
|
5
5
|
import { Transaction } from './transaction';
|
|
6
|
+
import BigNumber from 'bignumber.js';
|
|
6
7
|
export declare abstract class TransactionBuilder extends BaseTransactionBuilder {
|
|
7
8
|
protected _transaction: Transaction;
|
|
8
9
|
protected recoverSigner: boolean;
|
|
9
10
|
_signer: KeyPair[];
|
|
10
|
-
protected _recoveryMode: boolean;
|
|
11
11
|
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
12
12
|
/**
|
|
13
13
|
* Initialize the transaction builder fields using the decoded transaction data
|
|
14
14
|
*
|
|
15
|
-
* @param {
|
|
15
|
+
* @param {Transaction} tx the transaction data
|
|
16
16
|
* @returns itself
|
|
17
17
|
*/
|
|
18
18
|
initBuilder(tx: Tx): this;
|
|
19
19
|
/**
|
|
20
|
-
* Validates the threshold
|
|
21
|
-
* @param threshold
|
|
20
|
+
* Validates the threshold for multi-signature transactions
|
|
21
|
+
* @param threshold - Number of required signatures
|
|
22
22
|
*/
|
|
23
23
|
validateThreshold(threshold: number): void;
|
|
24
24
|
/**
|
|
25
|
-
*
|
|
26
|
-
* @param UTXO
|
|
25
|
+
* Validates a single UTXO object
|
|
26
|
+
* @param value - UTXO to validate
|
|
27
27
|
*/
|
|
28
28
|
validateUtxo(value: DecodedUtxoObj): void;
|
|
29
29
|
/**
|
|
30
|
-
*
|
|
31
|
-
* @param values
|
|
30
|
+
* Validates an array of UTXOs
|
|
31
|
+
* @param values - Array of UTXOs to validate
|
|
32
32
|
*/
|
|
33
33
|
validateUtxos(values: DecodedUtxoObj[]): void;
|
|
34
34
|
/**
|
|
35
|
-
* Validates locktime
|
|
36
|
-
* @param locktime
|
|
35
|
+
* Validates the locktime value
|
|
36
|
+
* @param locktime - Timestamp after which the output can be spent
|
|
37
37
|
*/
|
|
38
38
|
validateLocktime(locktime: bigint): void;
|
|
39
39
|
/**
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
* @param {number} value
|
|
40
|
+
* Sets the threshold for multi-signature transactions
|
|
41
|
+
* @param value - Number of required signatures
|
|
43
42
|
*/
|
|
44
43
|
threshold(value: number): this;
|
|
45
44
|
/**
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
* @param value
|
|
45
|
+
* Sets the locktime for the transaction
|
|
46
|
+
* @param value - Timestamp after which the output can be spent
|
|
49
47
|
*/
|
|
50
48
|
locktime(value: string | number): this;
|
|
51
49
|
/**
|
|
52
|
-
*
|
|
53
|
-
* @param
|
|
50
|
+
* Enables recovery mode for the transaction
|
|
51
|
+
* @param recoverSigner - Whether to use recovery signing
|
|
54
52
|
*/
|
|
55
53
|
recoverMode(recoverSigner?: boolean): this;
|
|
56
54
|
/**
|
|
57
|
-
*
|
|
58
|
-
* @param
|
|
55
|
+
* Sets the sender's public key(s)
|
|
56
|
+
* @param senderPubKey - Public key or array of public keys
|
|
59
57
|
*/
|
|
60
58
|
fromPubKey(senderPubKey: string | string[]): this;
|
|
61
59
|
/**
|
|
62
|
-
*
|
|
63
|
-
*
|
|
64
|
-
*
|
|
65
|
-
* @param {DecodedUtxoObj[]} list of UTXOS
|
|
60
|
+
* Sets the UTXOs for the transaction
|
|
61
|
+
* @param value - Array of UTXOs to use
|
|
66
62
|
*/
|
|
67
63
|
utxos(value: DecodedUtxoObj[]): this;
|
|
64
|
+
/** @inheritdoc */
|
|
65
|
+
protected fromImplementation(rawTransaction: string): Transaction;
|
|
68
66
|
/**
|
|
69
|
-
*
|
|
70
|
-
*
|
|
67
|
+
* Abstract method to be implemented by specific transaction builders
|
|
68
|
+
* Builds the actual transaction based on the builder's configuration
|
|
71
69
|
*/
|
|
72
|
-
protected abstract
|
|
70
|
+
protected abstract buildImplementation(): Promise<Transaction>;
|
|
71
|
+
/**
|
|
72
|
+
* Check the buffer has 32 byte long.
|
|
73
|
+
* @param chainID
|
|
74
|
+
*/
|
|
75
|
+
validateChainId(chainID: Buffer): void;
|
|
73
76
|
/** @inheritdoc */
|
|
74
|
-
protected
|
|
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;
|
|
75
92
|
/**
|
|
76
|
-
*
|
|
93
|
+
* Check the raw transaction has a valid format in the blockchain context, throw otherwise.
|
|
94
|
+
*
|
|
95
|
+
* @param rawTransaction Transaction in any format
|
|
77
96
|
*/
|
|
78
|
-
|
|
97
|
+
validateRawTransaction(rawTransaction: string): void;
|
|
98
|
+
/** @inheritdoc */
|
|
99
|
+
protected signImplementation({ key }: BaseKey): Transaction;
|
|
100
|
+
hasSigner(): boolean;
|
|
79
101
|
/**
|
|
80
|
-
*
|
|
81
|
-
* @
|
|
102
|
+
* Check the amount is positive.
|
|
103
|
+
* @param amount
|
|
82
104
|
*/
|
|
83
|
-
|
|
105
|
+
validateAmount(amount: bigint): void;
|
|
84
106
|
}
|
|
85
107
|
//# sourceMappingURL=transactionBuilder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilder.ts"],"names":[],"mappings":"
|
|
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"}
|
|
@@ -1,88 +1,82 @@
|
|
|
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
6
|
exports.TransactionBuilder = void 0;
|
|
7
|
+
const flarejs_1 = require("@flarenetwork/flarejs");
|
|
4
8
|
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
9
|
+
const keyPair_1 = require("./keyPair");
|
|
5
10
|
const transaction_1 = require("./transaction");
|
|
6
|
-
const
|
|
11
|
+
const utils_1 = __importDefault(require("./utils"));
|
|
7
12
|
class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
|
|
8
13
|
constructor(_coinConfig) {
|
|
9
14
|
super(_coinConfig);
|
|
10
15
|
this.recoverSigner = false;
|
|
11
16
|
this._signer = [];
|
|
12
|
-
// Recovery mode flag for transaction building
|
|
13
|
-
this._recoveryMode = false;
|
|
14
17
|
this._transaction = new transaction_1.Transaction(_coinConfig);
|
|
15
18
|
}
|
|
16
19
|
/**
|
|
17
20
|
* Initialize the transaction builder fields using the decoded transaction data
|
|
18
21
|
*
|
|
19
|
-
* @param {
|
|
22
|
+
* @param {Transaction} tx the transaction data
|
|
20
23
|
* @returns itself
|
|
21
24
|
*/
|
|
22
25
|
initBuilder(tx) {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
if (
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
if (txData.blockchainID) {
|
|
29
|
-
const blockchainID = Buffer.isBuffer(txData.blockchainID)
|
|
30
|
-
? txData.blockchainID
|
|
31
|
-
: Buffer.from(txData.blockchainID, constants_1.HEX_ENCODING);
|
|
32
|
-
const transactionBlockchainID = Buffer.isBuffer(this._transaction._blockchainID)
|
|
33
|
-
? this._transaction._blockchainID
|
|
34
|
-
: Buffer.from(this._transaction._blockchainID, constants_1.HEX_ENCODING);
|
|
35
|
-
if (!blockchainID.equals(transactionBlockchainID)) {
|
|
36
|
-
throw new Error(constants_1.ERROR_BLOCKCHAIN_ID_MISMATCH_BUILDER);
|
|
37
|
-
}
|
|
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');
|
|
38
31
|
}
|
|
39
32
|
this._transaction.setTransaction(tx);
|
|
40
33
|
return this;
|
|
41
34
|
}
|
|
42
35
|
// region Validators
|
|
43
36
|
/**
|
|
44
|
-
* Validates the threshold
|
|
45
|
-
* @param threshold
|
|
37
|
+
* Validates the threshold for multi-signature transactions
|
|
38
|
+
* @param threshold - Number of required signatures
|
|
46
39
|
*/
|
|
47
40
|
validateThreshold(threshold) {
|
|
48
41
|
if (!threshold || threshold !== 2) {
|
|
49
|
-
throw new sdk_core_1.BuildTransactionError(
|
|
42
|
+
throw new sdk_core_1.BuildTransactionError('Invalid transaction: threshold must be set to 2');
|
|
50
43
|
}
|
|
51
44
|
}
|
|
52
45
|
/**
|
|
53
|
-
*
|
|
54
|
-
* @param UTXO
|
|
46
|
+
* Validates a single UTXO object
|
|
47
|
+
* @param value - UTXO to validate
|
|
55
48
|
*/
|
|
56
49
|
validateUtxo(value) {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
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
|
+
}
|
|
61
56
|
}
|
|
62
57
|
/**
|
|
63
|
-
*
|
|
64
|
-
* @param values
|
|
58
|
+
* Validates an array of UTXOs
|
|
59
|
+
* @param values - Array of UTXOs to validate
|
|
65
60
|
*/
|
|
66
61
|
validateUtxos(values) {
|
|
67
62
|
if (values.length === 0) {
|
|
68
|
-
throw new sdk_core_1.BuildTransactionError(
|
|
63
|
+
throw new sdk_core_1.BuildTransactionError('UTXOs array cannot be empty');
|
|
69
64
|
}
|
|
70
65
|
values.forEach(this.validateUtxo);
|
|
71
66
|
}
|
|
72
67
|
/**
|
|
73
|
-
* Validates locktime
|
|
74
|
-
* @param locktime
|
|
68
|
+
* Validates the locktime value
|
|
69
|
+
* @param locktime - Timestamp after which the output can be spent
|
|
75
70
|
*/
|
|
76
71
|
validateLocktime(locktime) {
|
|
77
|
-
if (
|
|
78
|
-
throw new sdk_core_1.BuildTransactionError(
|
|
72
|
+
if (locktime < BigInt(0)) {
|
|
73
|
+
throw new sdk_core_1.BuildTransactionError('Invalid transaction: locktime must be 0 or higher');
|
|
79
74
|
}
|
|
80
75
|
}
|
|
81
76
|
// endregion
|
|
82
77
|
/**
|
|
83
|
-
*
|
|
84
|
-
*
|
|
85
|
-
* @param {number} value
|
|
78
|
+
* Sets the threshold for multi-signature transactions
|
|
79
|
+
* @param value - Number of required signatures
|
|
86
80
|
*/
|
|
87
81
|
threshold(value) {
|
|
88
82
|
this.validateThreshold(value);
|
|
@@ -90,9 +84,8 @@ class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
|
|
|
90
84
|
return this;
|
|
91
85
|
}
|
|
92
86
|
/**
|
|
93
|
-
*
|
|
94
|
-
*
|
|
95
|
-
* @param value
|
|
87
|
+
* Sets the locktime for the transaction
|
|
88
|
+
* @param value - Timestamp after which the output can be spent
|
|
96
89
|
*/
|
|
97
90
|
locktime(value) {
|
|
98
91
|
this.validateLocktime(BigInt(value));
|
|
@@ -100,32 +93,25 @@ class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
|
|
|
100
93
|
return this;
|
|
101
94
|
}
|
|
102
95
|
/**
|
|
103
|
-
*
|
|
104
|
-
* @param
|
|
96
|
+
* Enables recovery mode for the transaction
|
|
97
|
+
* @param recoverSigner - Whether to use recovery signing
|
|
105
98
|
*/
|
|
106
99
|
recoverMode(recoverSigner = true) {
|
|
107
100
|
this.recoverSigner = recoverSigner;
|
|
108
|
-
this._recoveryMode = recoverSigner;
|
|
109
|
-
// Recovery operations typically need single signature
|
|
110
|
-
if (recoverSigner && !this._transaction._threshold) {
|
|
111
|
-
this._transaction._threshold = 1;
|
|
112
|
-
}
|
|
113
101
|
return this;
|
|
114
102
|
}
|
|
115
103
|
/**
|
|
116
|
-
*
|
|
117
|
-
* @param
|
|
104
|
+
* Sets the sender's public key(s)
|
|
105
|
+
* @param senderPubKey - Public key or array of public keys
|
|
118
106
|
*/
|
|
119
107
|
fromPubKey(senderPubKey) {
|
|
120
|
-
const pubKeys = senderPubKey
|
|
121
|
-
this._transaction._fromAddresses = pubKeys
|
|
108
|
+
const pubKeys = Array.isArray(senderPubKey) ? senderPubKey : [senderPubKey];
|
|
109
|
+
this._transaction._fromAddresses = pubKeys.map((addr) => utils_1.default.parseAddress(addr));
|
|
122
110
|
return this;
|
|
123
111
|
}
|
|
124
112
|
/**
|
|
125
|
-
*
|
|
126
|
-
*
|
|
127
|
-
*
|
|
128
|
-
* @param {DecodedUtxoObj[]} list of UTXOS
|
|
113
|
+
* Sets the UTXOs for the transaction
|
|
114
|
+
* @param value - Array of UTXOs to use
|
|
129
115
|
*/
|
|
130
116
|
utxos(value) {
|
|
131
117
|
this.validateUtxos(value);
|
|
@@ -134,34 +120,91 @@ class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
|
|
|
134
120
|
}
|
|
135
121
|
/** @inheritdoc */
|
|
136
122
|
fromImplementation(rawTransaction) {
|
|
137
|
-
// Parse the raw transaction and initialize the builder
|
|
138
123
|
try {
|
|
139
|
-
|
|
140
|
-
|
|
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);
|
|
141
127
|
return this._transaction;
|
|
142
128
|
}
|
|
143
|
-
catch (
|
|
144
|
-
throw new
|
|
129
|
+
catch (e) {
|
|
130
|
+
throw new sdk_core_1.BuildTransactionError(`Failed to parse raw transaction: ${e.message}`);
|
|
145
131
|
}
|
|
146
132
|
}
|
|
147
133
|
/**
|
|
148
|
-
*
|
|
134
|
+
* Check the buffer has 32 byte long.
|
|
135
|
+
* @param chainID
|
|
149
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 */
|
|
150
143
|
get transaction() {
|
|
151
144
|
return this._transaction;
|
|
152
145
|
}
|
|
146
|
+
set transaction(transaction) {
|
|
147
|
+
this._transaction = transaction;
|
|
148
|
+
}
|
|
153
149
|
/**
|
|
154
|
-
*
|
|
155
|
-
* @
|
|
150
|
+
* Check that fee is greater than 0.
|
|
151
|
+
* @param {bigint} fee
|
|
156
152
|
*/
|
|
157
|
-
|
|
158
|
-
if (
|
|
159
|
-
throw new
|
|
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');
|
|
160
165
|
}
|
|
161
|
-
|
|
162
|
-
|
|
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');
|
|
163
206
|
}
|
|
164
207
|
}
|
|
165
208
|
}
|
|
166
209
|
exports.TransactionBuilder = TransactionBuilder;
|
|
167
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbURBQXFGO0FBSXJGLCtDQUE0QztBQUU1QywyQ0FhcUI7QUFFckIsTUFBc0Isa0JBQW1CLFNBQVEsaUNBQXNCO0lBUXJFLFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBUFgsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDekIsWUFBTyxHQUFjLEVBQUUsQ0FBQztRQUUvQiw4Q0FBOEM7UUFDcEMsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFJOUIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLHlCQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsV0FBVyxDQUFDLEVBQU07UUFDaEIsbURBQW1EO1FBQ25ELE1BQU0sTUFBTSxHQUFHLEVBQW1DLENBQUM7UUFFbkQsSUFBSSxNQUFNLENBQUMsU0FBUyxLQUFLLFNBQVMsSUFBSSxNQUFNLENBQUMsU0FBUyxLQUFLLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDeEYsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQ0FBeUIsQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFFRCxJQUFJLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN4QixNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUM7Z0JBQ3ZELENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWTtnQkFDckIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSx3QkFBWSxDQUFDLENBQUM7WUFDbkQsTUFBTSx1QkFBdUIsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxZ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TUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMxQyxNQUFNLElBQUksS0FBSyxDQUFDLHdDQUE0QixDQUFDLENBQUM7UUFDaEQsQ0FBQztJQUNILENBQUM7Q0FDRjtBQXpMRCxnREF5TEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyLCBCdWlsZFRyYW5zYWN0aW9uRXJyb3IgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBEZWNvZGVkVXR4b09iaiwgVHggfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IEtleVBhaXIgfSBmcm9tICcuL2tleVBhaXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IFJhd1RyYW5zYWN0aW9uRGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHtcbiAgRVJST1JfTkVUV09SS19JRF9NSVNNQVRDSCxcbiAgRVJST1JfQkxPQ0tDSEFJTl9JRF9NSVNNQVRDSF9CVUlMREVSLFxuICBFUlJPUl9JTlZBTElEX1RIUkVTSE9MRCxcbiAgRVJST1JfSU5WQUxJRF9MT0NLVElNRSxcbiAgRVJST1JfVVRYT1NfRU1QVFlfQVJSQVksXG4gIEVSUk9SX1VUWE9TX01JU1NJTkdfRklFTEQsXG4gIEVSUk9SX0ZST01fQUREUkVTU0VTX1JFUVVJUkVELFxuICBFUlJPUl9VVFhPU19SRVFVSVJFRF9CVUlMREVSLFxuICBFUlJPUl9QQVJTRV9SQVdfVFJBTlNBQ1RJT04sXG4gIEVSUk9SX1VOS05PV05fUEFSU0lORyxcbiAgVVRYT19SRVFVSVJFRF9GSUVMRFMsXG4gIEhFWF9FTkNPRElORyxcbn0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVHJhbnNhY3Rpb25CdWlsZGVyIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByb3RlY3RlZCBfdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uO1xuICBwcm90ZWN0ZWQgcmVjb3ZlclNpZ25lciA9IGZhbHNlO1xuICBwdWJsaWMgX3NpZ25lcjogS2V5UGFpcltdID0gW107XG5cbiAgLy8gUmVjb3ZlcnkgbW9kZSBmbGFnIGZvciB0cmFuc2FjdGlvbiBidWlsZGluZ1xuICBwcm90ZWN0ZWQgX3JlY292ZXJ5TW9kZSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbihfY29pbkNvbmZpZyk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0aGUgdHJhbnNhY3Rpb24gYnVpbGRlciBmaWVsZHMgdXNpbmcgdGhlIGRlY29kZWQgdHJhbnNhY3Rpb24gZGF0YVxuICAgKlxuICAgKiBAcGFyYW0ge1R4fSB0eCB0aGUgdHJhbnNhY3Rpb24gZGF0YVxuICAgKiBAcmV0dXJucyBpdHNlbGZcbiAgICovXG4gIGluaXRCdWlsZGVyKHR4OiBUeCk6IHRoaXMge1xuICAgIC8vIFZhbGlkYXRlIG5ldHdvcmsgYW5kIGJsb2NrY2hhaW4gSURzIGlmIGF2YWlsYWJsZVxuICAgIGNvbnN0IHR4RGF0YSA9IHR4IGFzIHVua25vd24gYXMgUmF3VHJhbnNhY3Rpb25EYXRhO1xuXG4gICAgaWYgKHR4RGF0YS5uZXR3b3JrSUQgIT09IHVuZGVmaW5lZCAmJiB0eERhdGEubmV0d29ya0lEICE9PSB0aGlzLl90cmFuc2FjdGlvbi5fbmV0d29ya0lEKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoRVJST1JfTkVUV09SS19JRF9NSVNNQVRDSCk7XG4gICAgfVxuXG4gICAgaWYgKHR4RGF0YS5ibG9ja2NoYWluSUQpIHtcbiAgICAgIGNvbnN0IGJsb2NrY2hhaW5JRCA9IEJ1ZmZlci5pc0J1ZmZlcih0eERhdGEuYmxvY2tjaGFpbklEKVxuICAgICAgICA/IHR4RGF0YS5ibG9ja2NoYWluSURcbiAgICAgICAgOiBCdWZmZXIuZnJvbSh0eERhdGEuYmxvY2tjaGFpbklELCBIRVhfRU5DT0RJTkcpO1xuICAgICAgY29uc3QgdHJhbnNhY3Rpb25CbG9ja2NoYWluSUQgPSBCdWZmZXIuaXNCdWZmZXIodGhpcy5fdHJhbnNhY3Rpb24uX2Jsb2NrY2hhaW5JRClcbiAgICAgICAgPyB0aGlzLl90cmFuc2FjdGlvbi5fYmxvY2tjaGFpbklEXG4gICAgICAgIDogQnVmZmVyLmZyb20odGhpcy5fdHJhbnNhY3Rpb24uX2Jsb2NrY2hhaW5JRCwgSEVYX0VOQ09ESU5HKTtcbiAgICAgIGlmICghYmxvY2tjaGFpbklELmVxdWFscyh0cmFuc2FjdGlvbkJsb2NrY2hhaW5JRCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKEVSUk9SX0JMT0NLQ0hBSU5fSURfTUlTTUFUQ0hfQlVJTERFUik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fdHJhbnNhY3Rpb24uc2V0VHJhbnNhY3Rpb24odHgpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gcmVnaW9uIFZhbGlkYXRvcnNcbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgdGhyZXNob2xkXG4gICAqIEBwYXJhbSB0aHJlc2hvbGRcbiAgICovXG4gIHZhbGlkYXRlVGhyZXNob2xkKHRocmVzaG9sZDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKCF0aHJlc2hvbGQgfHwgdGhyZXNob2xkICE9PSAyKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKEVSUk9SX0lOVkFMSURfVEhSRVNIT0xEKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgdGhlIFVUWE8gaGFzIGV4cGVjdGVkIGZpZWxkcy5cbiAgICogQHBhcmFtIFVUWE9cbiAgICovXG4gIHZhbGlkYXRlVXR4byh2YWx1ZTogRGVjb2RlZFV0eG9PYmopOiB2b2lkIHtcbiAgICBVVFhPX1JFUVVJUkVEX0ZJRUxEUy5mb3JFYWNoKChmaWVsZCkgPT4ge1xuICAgICAgaWYgKCF2YWx1ZS5oYXNPd25Qcm9wZXJ0eShmaWVsZCkpIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoYCR7RVJST1JfVVRYT1NfTUlTU0lOR19GSUVMRH0gJHtmaWVsZH1gKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayB0aGUgbGlzdCBvZiBVVFhPUyBpcyBlbXB0eSBhbmQgY2hlY2sgZWFjaCBVVFhPLlxuICAgKiBAcGFyYW0gdmFsdWVzXG4gICAqL1xuICB2YWxpZGF0ZVV0eG9zKHZhbHVlczogRGVjb2RlZFV0eG9PYmpbXSk6IHZvaWQge1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKEVSUk9SX1VUWE9TX0VNUFRZX0FSUkFZKTtcbiAgICB9XG4gICAgdmFsdWVzLmZvckVhY2godGhpcy52YWxpZGF0ZVV0eG8pO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBsb2NrdGltZVxuICAgKiBAcGFyYW0gbG9ja3RpbWVcbiAgICovXG4gIHZhbGlkYXRlTG9ja3RpbWUobG9ja3RpbWU6IGJpZ2ludCk6IHZvaWQge1xuICAgIGlmICghbG9ja3RpbWUgfHwgbG9ja3RpbWUgPCBCaWdJbnQoMCkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoRVJST1JfSU5WQUxJRF9MT0NLVElNRSk7XG4gICAgfVxuICB9XG4gIC8vIGVuZHJlZ2lvblxuXG4gIC8qKlxuICAgKiBUaHJlc2hvbGQgaXMgYW4gaW50IHRoYXQgbmFtZXMgdGhlIG51bWJlciBvZiB1bmlxdWUgc2lnbmF0dXJlcyByZXF1aXJlZCB0byBzcGVuZCB0aGUgb3V0cHV0LlxuICAgKiBNdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgbGVuZ3RoIG9mIEFkZHJlc3Nlcy5cbiAgICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlXG4gICAqL1xuICB0aHJlc2hvbGQodmFsdWU6IG51bWJlcik6IHRoaXMge1xuICAgIHRoaXMudmFsaWRhdGVUaHJlc2hvbGQodmFsdWUpO1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uLl90aHJlc2hvbGQgPSB2YWx1ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2NrdGltZSBpcyBhIGxvbmcgdGhhdCBjb250YWlucyB0aGUgdW5peCB0aW1lc3RhbXAgdGhhdCB0aGlzIG91dHB1dCBjYW4gYmUgc3BlbnQgYWZ0ZXIuXG4gICAqIFRoZSB1bml4IHRpbWVzdGFtcCBpcyBzcGVjaWZpYyB0byB0aGUgc2Vjb25kLlxuICAgKiBAcGFyYW0gdmFsdWVcbiAgICovXG4gIGxvY2t0aW1lKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlTG9ja3RpbWUoQmlnSW50KHZhbHVlKSk7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24uX2xvY2t0aW1lID0gQmlnSW50KHZhbHVlKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGVuIHVzaW5nIHJlY292ZXJ5IGtleSBtdXN0IGJlIHNldCBoZXJlXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn1bcmVjb3ZlclNpZ25lcj10cnVlXSB3aGV0aGVyIGl0J3MgcmVjb3Zlcnkgc2lnbmVyXG4gICAqL1xuICByZWNvdmVyTW9kZShyZWNvdmVyU2lnbmVyID0gdHJ1ZSk6IHRoaXMge1xuICAgIHRoaXMucmVjb3ZlclNpZ25lciA9IHJlY292ZXJTaWduZXI7XG4gICAgdGhpcy5fcmVjb3ZlcnlNb2RlID0gcmVjb3ZlclNpZ25lcjtcblxuICAgIC8vIFJlY292ZXJ5IG9wZXJhdGlvbnMgdHlwaWNhbGx5IG5lZWQgc2luZ2xlIHNpZ25hdHVyZVxuICAgIGlmIChyZWNvdmVyU2lnbmVyICYmICF0aGlzLl90cmFuc2FjdGlvbi5fdGhyZXNob2xkKSB7XG4gICAgICB0aGlzLl90cmFuc2FjdGlvbi5fdGhyZXNob2xkID0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBmcm9tUHViS2V5IGlzIGEgbGlzdCBvZiB1bmlxdWUgYWRkcmVzc2VzIHRoYXQgY29ycmVzcG9uZCB0byB0aGUgcHJpdmF0ZSBrZXlzIHRoYXQgY2FuIGJlIHVzZWQgdG8gc3BlbmQgdGhpcyBvdXRwdXRcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBzdHJpbmdbXX0gc2VuZGVyUHViS2V5XG4gICAqL1xuICBmcm9tUHViS2V5KHNlbmRlclB1YktleTogc3RyaW5nIHwgc3RyaW5nW10pOiB0aGlzIHtcbiAgICBjb25zdCBwdWJLZXlzID0gc2VuZGVyUHViS2V5IGluc3RhbmNlb2YgQXJyYXkgPyBzZW5kZXJQdWJLZXkgOiBbc2VuZGVyUHViS2V5XTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3NlcyA9IHB1YktleXM7IC8vIFN0b3JlIGFzIHN0cmluZ3MgZGlyZWN0bHlcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0IG9mIFVUWE8gcmVxdWlyZWQgYXMgaW5wdXRzLlxuICAgKiBBIFVUWE8gaXMgYSBzdGFuZGFsb25lIHJlcHJlc2VudGF0aW9uIG9mIGEgdHJhbnNhY3Rpb24gb3V0cHV0LlxuICAgKlxuICAgKiBAcGFyYW0ge0RlY29kZWRVdHhvT2JqW119IGxpc3Qgb2YgVVRYT1NcbiAgICovXG4gIHV0eG9zKHZhbHVlOiBEZWNvZGVkVXR4b09ialtdKTogdGhpcyB7XG4gICAgdGhpcy52YWxpZGF0ZVV0eG9zKHZhbHVlKTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbi5fdXR4b3MgPSB2YWx1ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCB0aGUgRmxhcmUgdHJhbnNhY3Rpb24gdXNpbmcgRmxhcmVKUyBBUElcbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGJ1aWxkRmxhcmVUcmFuc2FjdGlvbigpOiBQcm9taXNlPHZvaWQ+IHwgdm9pZDtcblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGZyb21JbXBsZW1lbnRhdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogVHJhbnNhY3Rpb24ge1xuICAgIC8vIFBhcnNlIHRoZSByYXcgdHJhbnNhY3Rpb24gYW5kIGluaXRpYWxpemUgdGhlIGJ1aWxkZXJcbiAgICB0cnkge1xuICAgICAgY29uc3QgcGFyc2VkVHggPSBKU09OLnBhcnNlKHJhd1RyYW5zYWN0aW9uKTtcbiAgICAgIHRoaXMuaW5pdEJ1aWxkZXIocGFyc2VkVHgpO1xuICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGAke0VSUk9SX1BBUlNFX1JBV19UUkFOU0FDVElPTn06ICR7ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBFUlJPUl9VTktOT1dOX1BBUlNJTkd9YFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB0cmFuc2FjdGlvbiBpbnN0YW5jZVxuICAgKi9cbiAgZ2V0IHRyYW5zYWN0aW9uKCk6IFRyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgcmVxdWlyZWQgZmllbGRzIGJlZm9yZSBidWlsZGluZyB0cmFuc2FjdGlvblxuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgdmFsaWRhdGVSZXF1aXJlZEZpZWxkcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fdHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoRVJST1JfRlJPTV9BRERSRVNTRVNfUkVRVUlSRUQpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fdHJhbnNhY3Rpb24uX3V0eG9zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKEVSUk9SX1VUWE9TX1JFUVVJUkVEX0JVSUxERVIpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
210
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsbURBQXlFO0FBQ3pFLG1EQUEyRztBQUczRyx1Q0FBb0M7QUFDcEMsK0NBQTRDO0FBQzVDLG9EQUE0QjtBQUc1QixNQUFzQixrQkFBbUIsU0FBUSxpQ0FBc0I7SUFLckUsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFKWCxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN6QixZQUFPLEdBQWMsRUFBRSxDQUFDO1FBSTdCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSx5QkFBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFdBQVcsQ0FBQyxFQUFNO1FBQ2hCLE1BQU0sTUFBTSxHQUFLLEVBQWlCLENBQUMsRUFBNkMsQ0FBQyxNQUFNLENBQUM7UUFFeEYsNENBQTRDO1FBQzVDLElBQ0UsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVU7WUFDekQsTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsS0FBSyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFDL0QsQ0FBQztZQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQztRQUN2RCxDQUFDO1FBRUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDckMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsb0JBQW9CO0lBQ3BCOzs7T0FHRztJQUNILGlCQUFpQixDQUFDLFNBQWlCO1FBQ2pDLElBQUksQ0FBQyxTQUFTLElBQUksU0FBUyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2xDLE1BQU0sSUFB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YXZtU2VyaWFsLCBwdm1TZXJpYWwsIFVuc2lnbmVkVHggfSBmcm9tICdAZmxhcmVuZXR3b3JrL2ZsYXJlanMnO1xuaW1wb3J0IHsgQmFzZVRyYW5zYWN0aW9uQnVpbGRlciwgQnVpbGRUcmFuc2FjdGlvbkVycm9yLCBCYXNlS2V5LCBCYXNlQWRkcmVzcyB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IERlY29kZWRVdHhvT2JqLCBUeCB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgS2V5UGFpciB9IGZyb20gJy4va2V5UGFpcic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVHJhbnNhY3Rpb25CdWlsZGVyIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByb3RlY3RlZCBfdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uO1xuICBwcm90ZWN0ZWQgcmVjb3ZlclNpZ25lciA9IGZhbHNlO1xuICBwdWJsaWMgX3NpZ25lcjogS2V5UGFpcltdID0gW107XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gbmV3IFRyYW5zYWN0aW9uKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIHRoZSB0cmFuc2FjdGlvbiBidWlsZGVyIGZpZWxkcyB1c2luZyB0aGUgZGVjb2RlZCB0cmFuc2FjdGlvbiBkYXRhXG4gICAqXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb259IHR4IHRoZSB0cmFuc2FjdGlvbiBkYXRhXG4gICAqIEByZXR1cm5zIGl0c2VsZlxuICAgKi9cbiAgaW5pdEJ1aWxkZXIodHg6IFR4KTogdGhpcyB7XG4gICAgY29uc3QgYmFzZVR4ID0gKCh0eCBhcyBVbnNpZ25lZFR4KS50eCBhcyBwdm1TZXJpYWwuQWRkUGVybWlzc2lvbmxlc3NWYWxpZGF0b3JUeCkuYmFzZVR4O1xuXG4gICAgLy8gVmFsaWRhdGUgbmV0d29yayBhbmQgYmxvY2tjaGFpbiBJRHMgbWF0Y2hcbiAgICBpZiAoXG4gICAgICBiYXNlVHguTmV0d29ya0lkLnZhbHVlKCkgIT09IHRoaXMuX3RyYW5zYWN0aW9uLl9uZXR3b3JrSUQgfHxcbiAgICAgIGJhc2VUeC5CbG9ja2NoYWluSWQudmFsdWUoKSAhPT0gdGhpcy5fdHJhbnNhY3Rpb24uX2Jsb2NrY2hhaW5JRFxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdOZXR3b3JrIG9yIGJsb2NrY2hhaW4gSUQgbWlzbWF0Y2gnKTtcbiAgICB9XG5cbiAgICB0aGlzLl90cmFuc2FjdGlvbi5zZXRUcmFuc2FjdGlvbih0eCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyByZWdpb24gVmFsaWRhdG9yc1xuICAvKipcbiAgICogVmFsaWRhdGVzIHRoZSB0aHJlc2hvbGQgZm9yIG11bHRpLXNpZ25hdHVyZSB0cmFuc2FjdGlvbnNcbiAgICogQHBhcmFtIHRocmVzaG9sZCAtIE51bWJlciBvZiByZXF1aXJlZCBzaWduYXR1cmVzXG4gICAqL1xuICB2YWxpZGF0ZVRocmVzaG9sZCh0aHJlc2hvbGQ6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICghdGhyZXNob2xkIHx8IHRocmVzaG9sZCAhPT0gMikge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogdGhyZXNob2xkIG11c3QgYmUgc2V0IHRvIDInKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIGEgc2luZ2xlIFVUWE8gb2JqZWN0XG4gICAqIEBwYXJhbSB2YWx1ZSAtIFVUWE8gdG8gdmFsaWRhdGVcbiAgICovXG4gIHZhbGlkYXRlVXR4byh2YWx1ZTogRGVjb2RlZFV0eG9PYmopOiB2b2lkIHtcbiAgICBjb25zdCByZXF1aXJlZEZpZWxkcyA9IFsnb3V0cHV0SUQnLCAnYW1vdW50JywgJ3R4aWQnLCAnb3V0cHV0aWR4J107XG4gICAgZm9yIChjb25zdCBmaWVsZCBvZiByZXF1aXJlZEZpZWxkcykge1xuICAgICAgaWYgKCF2YWx1ZS5oYXNPd25Qcm9wZXJ0eShmaWVsZCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgVVRYTyBtaXNzaW5nIHJlcXVpcmVkIGZpZWxkOiAke2ZpZWxkfWApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgYW4gYXJyYXkgb2YgVVRYT3NcbiAgICogQHBhcmFtIHZhbHVlcyAtIEFycmF5IG9mIFVUWE9zIHRvIHZhbGlkYXRlXG4gICAqL1xuICB2YWxpZGF0ZVV0eG9zKHZhbHVlczogRGVjb2RlZFV0eG9PYmpbXSk6IHZvaWQge1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdVVFhPcyBhcnJheSBjYW5ub3QgYmUgZW1wdHknKTtcbiAgICB9XG4gICAgdmFsdWVzLmZvckVhY2godGhpcy52YWxpZGF0ZVV0eG8pO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgbG9ja3RpbWUgdmFsdWVcbiAgICogQHBhcmFtIGxvY2t0aW1lIC0gVGltZXN0YW1wIGFmdGVyIHdoaWNoIHRoZSBvdXRwdXQgY2FuIGJlIHNwZW50XG4gICAqL1xuICB2YWxpZGF0ZUxvY2t0aW1lKGxvY2t0aW1lOiBiaWdpbnQpOiB2b2lkIHtcbiAgICBpZiAobG9ja3RpbWUgPCBCaWdJbnQoMCkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IGxvY2t0aW1lIG11c3QgYmUgMCBvciBoaWdoZXInKTtcbiAgICB9XG4gIH1cbiAgLy8gZW5kcmVnaW9uXG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHRocmVzaG9sZCBmb3IgbXVsdGktc2lnbmF0dXJlIHRyYW5zYWN0aW9uc1xuICAgKiBAcGFyYW0gdmFsdWUgLSBOdW1iZXIgb2YgcmVxdWlyZWQgc2lnbmF0dXJlc1xuICAgKi9cbiAgdGhyZXNob2xkKHZhbHVlOiBudW1iZXIpOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlVGhyZXNob2xkKHZhbHVlKTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbi5fdGhyZXNob2xkID0gdmFsdWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgbG9ja3RpbWUgZm9yIHRoZSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gdmFsdWUgLSBUaW1lc3RhbXAgYWZ0ZXIgd2hpY2ggdGhlIG91dHB1dCBjYW4gYmUgc3BlbnRcbiAgICovXG4gIGxvY2t0aW1lKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlTG9ja3RpbWUoQmlnSW50KHZhbHVlKSk7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24uX2xvY2t0aW1lID0gQmlnSW50KHZhbHVlKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmFibGVzIHJlY292ZXJ5IG1vZGUgZm9yIHRoZSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gcmVjb3ZlclNpZ25lciAtIFdoZXRoZXIgdG8gdXNlIHJlY292ZXJ5IHNpZ25pbmdcbiAgICovXG4gIHJlY292ZXJNb2RlKHJlY292ZXJTaWduZXIgPSB0cnVlKTogdGhpcyB7XG4gICAgdGhpcy5yZWNvdmVyU2lnbmVyID0gcmVjb3ZlclNpZ25lcjtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBzZW5kZXIncyBwdWJsaWMga2V5KHMpXG4gICAqIEBwYXJhbSBzZW5kZXJQdWJLZXkgLSBQdWJsaWMga2V5IG9yIGFycmF5IG9mIHB1YmxpYyBrZXlzXG4gICAqL1xuICBmcm9tUHViS2V5KHNlbmRlclB1YktleTogc3RyaW5nIHwgc3RyaW5nW10pOiB0aGlzIHtcbiAgICBjb25zdCBwdWJLZXlzID0gQXJyYXkuaXNBcnJheShzZW5kZXJQdWJLZXkpID8gc2VuZGVyUHViS2V5IDogW3NlbmRlclB1YktleV07XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXMgPSBwdWJLZXlzLm1hcCgoYWRkcikgPT4gdXRpbHMucGFyc2VBZGRyZXNzKGFkZHIpKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBVVFhPcyBmb3IgdGhlIHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSB2YWx1ZSAtIEFycmF5IG9mIFVUWE9zIHRvIHVzZVxuICAgKi9cbiAgdXR4b3ModmFsdWU6IERlY29kZWRVdHhvT2JqW10pOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlVXR4b3ModmFsdWUpO1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uLl91dHhvcyA9IHZhbHVlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBmcm9tSW1wbGVtZW50YXRpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IFRyYW5zYWN0aW9uIHtcbiAgICB0cnkge1xuICAgICAgLy8gUGFyc2UgdGhlIHJhdyB0cmFuc2FjdGlvbiB1c2luZyBGbGFyZSdzIFBWTSBzZXJpYWxpemF0aW9uXG4gICAgICBjb25zdCBbdHhdID0gcHZtU2VyaWFsLkFkZFBlcm1pc3Npb25sZXNzVmFsaWRhdG9yVHguZnJvbUJ5dGVzKFxuICAgICAgICBCdWZmZXIuZnJvbShyYXdUcmFuc2FjdGlvbiwgJ2hleCcpLFxuICAgICAgICBhdm1TZXJpYWwuZ2V0QVZNTWFuYWdlcigpLmdldERlZmF1bHRDb2RlYygpXG4gICAgICApO1xuICAgICAgdGhpcy5pbml0QnVpbGRlcih0eCk7XG4gICAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb247XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgRmFpbGVkIHRvIHBhcnNlIHJhdyB0cmFuc2FjdGlvbjogJHtlLm1lc3NhZ2V9YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFic3RyYWN0IG1ldGhvZCB0byBiZSBpbXBsZW1lbnRlZCBieSBzcGVjaWZpYyB0cmFuc2FjdGlvbiBidWlsZGVyc1xuICAgKiBCdWlsZHMgdGhlIGFjdHVhbCB0cmFuc2FjdGlvbiBiYXNlZCBvbiB0aGUgYnVpbGRlcidzIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBidWlsZEltcGxlbWVudGF0aW9uKCk6IFByb21pc2U8VHJhbnNhY3Rpb24+O1xuXG4gIC8qKlxuICAgKiBDaGVjayB0aGUgYnVmZmVyIGhhcyAzMiBieXRlIGxvbmcuXG4gICAqIEBwYXJhbSBjaGFpbklEXG4gICAqL1xuICB2YWxpZGF0ZUNoYWluSWQoY2hhaW5JRDogQnVmZmVyKTogdm9pZCB7XG4gICAgaWYgKGNoYWluSUQubGVuZ3RoICE9PSAzMikge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignQ2hhaW4gaWQgYXJlIDMyIGJ5dGUgc2l6ZScpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uKCk6IFRyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb247XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0IHRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbikge1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gdHJhbnNhY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgdGhhdCBmZWUgaXMgZ3JlYXRlciB0aGFuIDAuXG4gICAqIEBwYXJhbSB7YmlnaW50fSBmZWVcbiAgICovXG4gIHZhbGlkYXRlRmVlKGZlZTogYmlnaW50KTogdm9pZCB7XG4gICAgaWYgKGZlZSA8PSBCaWdJbnQoMCkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ZlZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlS2V5KHsga2V5IH06IEJhc2VLZXkpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgbmV3IEtleVBhaXIoeyBwcnY6IGtleSB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIGtleScpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uPzogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICAvLyB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigndmFsaWRhdGVUcmFuc2FjdGlvbiBub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVZhbHVlKHZhbHVlOiBCaWdOdW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodmFsdWUuaXNMZXNzVGhhbigwKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignVmFsdWUgY2Fubm90IGJlIGxlc3MgdGhhbiB6ZXJvJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlQWRkcmVzcyhhZGRyZXNzOiBCYXNlQWRkcmVzcywgYWRkcmVzc0Zvcm1hdD86IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghdXRpbHMuaXNWYWxpZEFkZHJlc3MoYWRkcmVzcy5hZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBhZGRyZXNzJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIHRoZSByYXcgdHJhbnNhY3Rpb24gaGFzIGEgdmFsaWQgZm9ybWF0IGluIHRoZSBibG9ja2NoYWluIGNvbnRleHQsIHRocm93IG90aGVyd2lzZS5cbiAgICpcbiAgICogQHBhcmFtIHJhd1RyYW5zYWN0aW9uIFRyYW5zYWN0aW9uIGluIGFueSBmb3JtYXRcbiAgICovXG4gIHZhbGlkYXRlUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IHZvaWQge1xuICAgIHV0aWxzLnZhbGlkYXRlUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb24pO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBzaWduSW1wbGVtZW50YXRpb24oeyBrZXkgfTogQmFzZUtleSk6IFRyYW5zYWN0aW9uIHtcbiAgICB0aGlzLl9zaWduZXIucHVzaChuZXcgS2V5UGFpcih7IHBydjoga2V5IH0pKTtcbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbjtcbiAgfVxuXG4gIGhhc1NpZ25lcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc2lnbmVyICE9PSB1bmRlZmluZWQgJiYgdGhpcy5fc2lnbmVyLmxlbmd0aCA+IDA7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgdGhlIGFtb3VudCBpcyBwb3NpdGl2ZS5cbiAgICogQHBhcmFtIGFtb3VudFxuICAgKi9cbiAgdmFsaWRhdGVBbW91bnQoYW1vdW50OiBiaWdpbnQpOiB2b2lkIHtcbiAgICBpZiAoYW1vdW50IDw9IEJpZ0ludCgwKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignQW1vdW50IG11c3QgYmUgZ3JlYXRlciB0aGFuIDAnKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,37 +1,57 @@
|
|
|
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
|
-
|
|
24
|
-
|
|
25
|
-
|
|
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
|
+
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
10
|
+
/**
|
|
11
|
+
* Extract credentials from remaining bytes after transaction using FlareJS codec.
|
|
12
|
+
* This is the proper way to parse credentials - using the codec's UnpackPrefix method.
|
|
13
|
+
* @param credentialBytes Remaining bytes after the transaction (starts with numCredentials)
|
|
14
|
+
* @param codec The FlareJS codec to use for unpacking
|
|
15
|
+
* @returns Array of parsed credentials
|
|
16
|
+
*/
|
|
17
|
+
private extractCredentialsWithCodec;
|
|
18
|
+
/**
|
|
19
|
+
* Parse a raw transaction buffer using the specified VM manager.
|
|
20
|
+
* @param rawBuffer The raw transaction buffer
|
|
21
|
+
* @param vmType The VM type to use for parsing ('EVM' or 'PVM')
|
|
22
|
+
* @returns Parsed transaction and credentials, or null if parsing fails
|
|
23
|
+
*/
|
|
24
|
+
private parseWithVM;
|
|
25
|
+
/**
|
|
26
|
+
* Create the appropriate transaction builder based on transaction type.
|
|
27
|
+
* @param tx The parsed transaction
|
|
28
|
+
* @param rawBuffer The raw transaction buffer
|
|
29
|
+
* @param credentials The extracted credentials
|
|
30
|
+
* @param isEVM Whether this is an EVM transaction
|
|
31
|
+
* @returns The appropriate transaction builder
|
|
32
|
+
*/
|
|
33
|
+
private createBuilder;
|
|
34
|
+
/** @inheritdoc */
|
|
35
|
+
from(raw: string): TransactionBuilder;
|
|
36
|
+
/** @inheritdoc */
|
|
37
|
+
getTransferBuilder(): TransactionBuilder;
|
|
38
|
+
/**
|
|
39
|
+
* Export Cross chain transfer
|
|
40
|
+
*/
|
|
41
|
+
getExportInPBuilder(): ExportInPTxBuilder;
|
|
42
|
+
/**
|
|
43
|
+
* Import Cross chain transfer
|
|
44
|
+
*/
|
|
45
|
+
getImportInPBuilder(): ImportInPTxBuilder;
|
|
26
46
|
/**
|
|
27
|
-
*
|
|
28
|
-
* @param txHex - Transaction hex string
|
|
47
|
+
* Import in C chain Cross chain transfer
|
|
29
48
|
*/
|
|
30
|
-
|
|
49
|
+
getImportInCBuilder(): ImportInCTxBuilder;
|
|
31
50
|
/**
|
|
32
|
-
*
|
|
33
|
-
* @param type - Transaction type
|
|
51
|
+
* Export in C chain Cross chain transfer
|
|
34
52
|
*/
|
|
35
|
-
|
|
53
|
+
getExportInCBuilder(): ExportInCTxBuilder;
|
|
54
|
+
/** @inheritdoc */
|
|
55
|
+
getWalletInitializationBuilder(): TransactionBuilder;
|
|
36
56
|
}
|
|
37
57
|
//# 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,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,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;AAQ1D,qBAAa,yBAA0B,SAAQ,6BAA6B;gBAC9D,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C;;;;;;OAMG;IACH,OAAO,CAAC,2BAA2B;IAwBnC;;;;;OAKG;IACH,OAAO,CAAC,WAAW;IAkBnB;;;;;;;OAOG;IACH,OAAO,CAAC,aAAa;IAgCrB,kBAAkB;IAClB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB;IAkBrC,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"}
|