@bitgo/sdk-coin-flrp 1.3.4 → 1.4.1
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 +2 -3
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +5 -6
- 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 +11 -8
- 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,248 +1,132 @@
|
|
|
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.PermissionlessValidatorTxBuilder = void 0;
|
|
7
|
+
const flarejs_1 = require("@flarenetwork/flarejs");
|
|
4
8
|
const sdk_core_1 = require("@bitgo/sdk-core");
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
class PermissionlessValidatorTxBuilder extends atomicTransactionBuilder_1.AtomicTransactionBuilder {
|
|
9
|
-
/**
|
|
10
|
-
* @param coinConfig
|
|
11
|
-
*/
|
|
9
|
+
const transactionBuilder_1 = require("./transactionBuilder");
|
|
10
|
+
const utils_1 = __importDefault(require("./utils"));
|
|
11
|
+
class PermissionlessValidatorTxBuilder extends transactionBuilder_1.TransactionBuilder {
|
|
12
12
|
constructor(coinConfig) {
|
|
13
13
|
super(coinConfig);
|
|
14
|
-
this.
|
|
15
|
-
this._blsPublicKey = undefined;
|
|
16
|
-
this._blsSignature = undefined;
|
|
17
|
-
this._startTime = undefined;
|
|
18
|
-
this._endTime = undefined;
|
|
19
|
-
this._stakeAmount = undefined;
|
|
20
|
-
this._delegationFeeRate = undefined;
|
|
14
|
+
this.transaction._fee.fee = this.transaction._network.txFee;
|
|
21
15
|
}
|
|
22
|
-
/**
|
|
23
|
-
* get transaction type
|
|
24
|
-
* @protected
|
|
25
|
-
*/
|
|
26
16
|
get transactionType() {
|
|
27
17
|
return sdk_core_1.TransactionType.AddPermissionlessValidator;
|
|
28
18
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
nodeID(nodeID) {
|
|
34
|
-
if (!nodeID || nodeID.length === 0) {
|
|
35
|
-
throw new sdk_core_1.BuildTransactionError('Node ID cannot be empty');
|
|
19
|
+
// Validation methods
|
|
20
|
+
validateLocktime(locktime) {
|
|
21
|
+
if (locktime < BigInt(0)) {
|
|
22
|
+
throw new sdk_core_1.BuildTransactionError('Invalid transaction: locktime must be 0 or higher');
|
|
36
23
|
}
|
|
37
|
-
this._nodeID = nodeID;
|
|
38
|
-
return this;
|
|
39
24
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
25
|
+
validateDelegationFeeRate(delegationFeeRate) {
|
|
26
|
+
if (delegationFeeRate < Number(this.transaction._network.minDelegationFee)) {
|
|
27
|
+
throw new sdk_core_1.BuildTransactionError(`Delegation fee cannot be less than ${this.transaction._network.minDelegationFee}`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
validateUtxo(value) {
|
|
31
|
+
['outputID', 'amount', 'txid', 'outputidx'].forEach((field) => {
|
|
32
|
+
if (!value.hasOwnProperty(field))
|
|
33
|
+
throw new sdk_core_1.BuildTransactionError(`Utxos required ${field}`);
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
validateNodeID(nodeID) {
|
|
37
|
+
if (!nodeID) {
|
|
38
|
+
throw new sdk_core_1.BuildTransactionError('Invalid transaction: missing nodeID');
|
|
47
39
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
40
|
+
if (nodeID.slice(0, 6) !== 'NodeID') {
|
|
41
|
+
throw new sdk_core_1.BuildTransactionError('Invalid transaction: invalid NodeID tag');
|
|
42
|
+
}
|
|
43
|
+
if (!(flarejs_1.utils.base58.decode(nodeID.slice(7)).length === 24)) {
|
|
44
|
+
throw new sdk_core_1.BuildTransactionError('Invalid transaction: NodeID is not in cb58 format');
|
|
52
45
|
}
|
|
53
|
-
this._blsPublicKey = blsPublicKey;
|
|
54
|
-
return this;
|
|
55
46
|
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
*/
|
|
60
|
-
blsSignature(blsSignature) {
|
|
61
|
-
if (!blsSignature || blsSignature.length === 0) {
|
|
62
|
-
throw new sdk_core_1.BuildTransactionError('BLS signature cannot be empty');
|
|
47
|
+
validateStakeDuration(startTime, endTime) {
|
|
48
|
+
if (endTime < startTime) {
|
|
49
|
+
throw new sdk_core_1.BuildTransactionError('End date cannot be less than start date');
|
|
63
50
|
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
51
|
+
}
|
|
52
|
+
validateStakeAmount(amount) {
|
|
53
|
+
const minStake = BigInt(this.transaction._network.minStake);
|
|
54
|
+
if (amount < minStake) {
|
|
55
|
+
throw new sdk_core_1.BuildTransactionError('Minimum staking amount is ' + Number(minStake) / 1000000000 + ' FLR.');
|
|
67
56
|
}
|
|
68
|
-
|
|
57
|
+
}
|
|
58
|
+
// Builder methods
|
|
59
|
+
rewardAddresses(address) {
|
|
60
|
+
const rewardAddresses = address instanceof Array ? address : [address];
|
|
61
|
+
this.transaction._rewardAddresses = rewardAddresses.map(utils_1.default.parseAddress);
|
|
69
62
|
return this;
|
|
70
63
|
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
*/
|
|
75
|
-
startTime(startTime) {
|
|
76
|
-
const time = BigInt(startTime);
|
|
77
|
-
if (time < 0) {
|
|
78
|
-
throw new sdk_core_1.BuildTransactionError('Start time must be non-negative');
|
|
79
|
-
}
|
|
80
|
-
this._startTime = time;
|
|
64
|
+
nodeID(nodeID) {
|
|
65
|
+
this.validateNodeID(nodeID);
|
|
66
|
+
this._nodeID = nodeID;
|
|
81
67
|
return this;
|
|
82
68
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
*/
|
|
87
|
-
endTime(endTime) {
|
|
88
|
-
const time = BigInt(endTime);
|
|
89
|
-
if (time <= 0) {
|
|
90
|
-
throw new sdk_core_1.BuildTransactionError('End time must be positive');
|
|
91
|
-
}
|
|
92
|
-
this._endTime = time;
|
|
69
|
+
blsPublicKey(blsPublicKey) {
|
|
70
|
+
(0, sdk_core_1.isValidBLSPublicKey)(blsPublicKey);
|
|
71
|
+
this._blsPublicKey = blsPublicKey;
|
|
93
72
|
return this;
|
|
94
73
|
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
}
|
|
104
|
-
this._stakeAmount = stake;
|
|
74
|
+
blsSignature(blsSignature) {
|
|
75
|
+
(0, sdk_core_1.isValidBLSSignature)(blsSignature);
|
|
76
|
+
this._blsSignature = blsSignature;
|
|
77
|
+
return this;
|
|
78
|
+
}
|
|
79
|
+
locktime(value) {
|
|
80
|
+
this.validateLocktime(BigInt(value));
|
|
81
|
+
this._transaction._locktime = BigInt(value);
|
|
105
82
|
return this;
|
|
106
83
|
}
|
|
107
|
-
/**
|
|
108
|
-
* Set the delegation fee rate
|
|
109
|
-
* @param value - Delegation fee rate in basis points
|
|
110
|
-
*/
|
|
111
84
|
delegationFeeRate(value) {
|
|
112
85
|
this.validateDelegationFeeRate(value);
|
|
113
86
|
this._delegationFeeRate = value;
|
|
114
87
|
return this;
|
|
115
88
|
}
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
* @param addresses - Array of reward addresses
|
|
119
|
-
*/
|
|
120
|
-
rewardAddresses(addresses) {
|
|
121
|
-
if (!addresses || addresses.length === 0) {
|
|
122
|
-
throw new sdk_core_1.BuildTransactionError('At least one reward address is required');
|
|
123
|
-
}
|
|
124
|
-
// Store reward addresses in the transaction (we'll need to extend the type)
|
|
125
|
-
this.transaction._rewardAddresses = addresses;
|
|
89
|
+
startTime(value) {
|
|
90
|
+
this._startTime = BigInt(value);
|
|
126
91
|
return this;
|
|
127
92
|
}
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
* @param delegationFeeRate number
|
|
131
|
-
*/
|
|
132
|
-
validateDelegationFeeRate(delegationFeeRate) {
|
|
133
|
-
// For Flare, use a minimum delegation fee of 2% (20000 basis points)
|
|
134
|
-
const minDelegationFee = constants_1.MIN_DELEGATION_FEE_BASIS_POINTS;
|
|
135
|
-
if (delegationFeeRate < minDelegationFee) {
|
|
136
|
-
const minDelegationFeePercent = (minDelegationFee / constants_1.BASIS_POINTS_DIVISOR) * constants_1.PERCENTAGE_MULTIPLIER;
|
|
137
|
-
throw new sdk_core_1.BuildTransactionError(`Delegation fee cannot be less than ${minDelegationFee} basis points (${minDelegationFeePercent}%)`);
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
/** @inheritdoc */
|
|
141
|
-
initBuilder(tx) {
|
|
142
|
-
// Extract permissionless validator-specific fields from transaction
|
|
143
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
144
|
-
const txData = tx;
|
|
145
|
-
if (txData.nodeID) {
|
|
146
|
-
this._nodeID = txData.nodeID;
|
|
147
|
-
}
|
|
148
|
-
if (txData.blsPublicKey) {
|
|
149
|
-
this._blsPublicKey = txData.blsPublicKey;
|
|
150
|
-
}
|
|
151
|
-
if (txData.blsSignature) {
|
|
152
|
-
this._blsSignature = txData.blsSignature;
|
|
153
|
-
}
|
|
154
|
-
if (txData.startTime) {
|
|
155
|
-
this._startTime = BigInt(txData.startTime);
|
|
156
|
-
}
|
|
157
|
-
if (txData.endTime) {
|
|
158
|
-
this._endTime = BigInt(txData.endTime);
|
|
159
|
-
}
|
|
160
|
-
if (txData.stakeAmount) {
|
|
161
|
-
this._stakeAmount = BigInt(txData.stakeAmount);
|
|
162
|
-
}
|
|
163
|
-
if (txData.delegationFeeRate !== undefined) {
|
|
164
|
-
this._delegationFeeRate = txData.delegationFeeRate;
|
|
165
|
-
}
|
|
166
|
-
if (txData.rewardAddresses) {
|
|
167
|
-
this.transaction._rewardAddresses =
|
|
168
|
-
txData.rewardAddresses;
|
|
169
|
-
}
|
|
93
|
+
endTime(value) {
|
|
94
|
+
this._endTime = BigInt(value);
|
|
170
95
|
return this;
|
|
171
96
|
}
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
// Check if transaction has permissionless validator-specific properties
|
|
178
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
179
|
-
const txData = tx;
|
|
180
|
-
return txData && txData.blsPublicKey && txData.blsSignature;
|
|
97
|
+
stakeAmount(value) {
|
|
98
|
+
const valueBigInt = typeof value === 'bigint' ? value : BigInt(value);
|
|
99
|
+
this.validateStakeAmount(valueBigInt);
|
|
100
|
+
this._stakeAmount = valueBigInt;
|
|
101
|
+
return this;
|
|
181
102
|
}
|
|
182
|
-
|
|
183
|
-
|
|
103
|
+
async buildImplementation() {
|
|
104
|
+
this.buildFlareTransaction();
|
|
105
|
+
this.transaction.setTransactionType(this.transactionType);
|
|
106
|
+
if (this.hasSigner()) {
|
|
107
|
+
for (const keyPair of this._signer) {
|
|
108
|
+
await this.transaction.sign(keyPair);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return this.transaction;
|
|
184
112
|
}
|
|
185
113
|
/**
|
|
186
114
|
* Build the permissionless validator transaction
|
|
187
115
|
* @protected
|
|
188
116
|
*/
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
throw new sdk_core_1.BuildTransactionError('Start time is required for permissionless validator transaction');
|
|
202
|
-
}
|
|
203
|
-
if (!this._endTime) {
|
|
204
|
-
throw new sdk_core_1.BuildTransactionError('End time is required for permissionless validator transaction');
|
|
205
|
-
}
|
|
206
|
-
if (!this._stakeAmount) {
|
|
207
|
-
throw new sdk_core_1.BuildTransactionError('Stake amount is required for permissionless validator transaction');
|
|
208
|
-
}
|
|
209
|
-
if (this._delegationFeeRate === undefined) {
|
|
210
|
-
throw new sdk_core_1.BuildTransactionError('Delegation fee rate is required for permissionless validator transaction');
|
|
211
|
-
}
|
|
212
|
-
const rewardAddresses = this.transaction
|
|
213
|
-
._rewardAddresses;
|
|
214
|
-
if (!rewardAddresses || rewardAddresses.length === 0) {
|
|
215
|
-
throw new sdk_core_1.BuildTransactionError('Reward addresses are required for permissionless validator transaction');
|
|
216
|
-
}
|
|
217
|
-
// Validate time range
|
|
218
|
-
if (this._endTime <= this._startTime) {
|
|
219
|
-
throw new sdk_core_1.BuildTransactionError('End time must be after start time');
|
|
220
|
-
}
|
|
221
|
-
try {
|
|
222
|
-
// TODO: Implement actual FlareJS PVM API call when available
|
|
223
|
-
// For now, create a placeholder transaction structure
|
|
224
|
-
const validatorTx = {
|
|
225
|
-
type: constants_1.ADD_PERMISSIONLESS_VALIDATOR_TYPE,
|
|
226
|
-
nodeID: this._nodeID,
|
|
227
|
-
blsPublicKey: this._blsPublicKey,
|
|
228
|
-
blsSignature: this._blsSignature,
|
|
229
|
-
startTime: this._startTime,
|
|
230
|
-
endTime: this._endTime,
|
|
231
|
-
stakeAmount: this._stakeAmount,
|
|
232
|
-
delegationFeeRate: this._delegationFeeRate,
|
|
233
|
-
rewardAddress: rewardAddresses[0],
|
|
234
|
-
fromAddresses: this.transaction._fromAddresses,
|
|
235
|
-
networkId: this.transaction._networkID,
|
|
236
|
-
sourceBlockchainId: this.transaction._blockchainID,
|
|
237
|
-
threshold: this.transaction._threshold || 1,
|
|
238
|
-
locktime: this.transaction._locktime || 0n,
|
|
239
|
-
};
|
|
240
|
-
this.transaction.setTransaction(validatorTx);
|
|
241
|
-
}
|
|
242
|
-
catch (error) {
|
|
243
|
-
throw new sdk_core_1.BuildTransactionError(`Failed to build permissionless validator transaction: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
244
|
-
}
|
|
117
|
+
buildFlareTransaction() {
|
|
118
|
+
throw new Error('Method not implemented.');
|
|
119
|
+
}
|
|
120
|
+
static verifyTxType(type) {
|
|
121
|
+
return type === flarejs_1.TypeSymbols.AddPermissionlessValidatorTx;
|
|
122
|
+
}
|
|
123
|
+
/** @inheritdoc */
|
|
124
|
+
get transaction() {
|
|
125
|
+
return this._transaction;
|
|
126
|
+
}
|
|
127
|
+
set transaction(transaction) {
|
|
128
|
+
this._transaction = transaction;
|
|
245
129
|
}
|
|
246
130
|
}
|
|
247
131
|
exports.PermissionlessValidatorTxBuilder = PermissionlessValidatorTxBuilder;
|
|
248
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbmxlc3NWYWxpZGF0b3JUeEJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3Blcm1pc3Npb25sZXNzVmFsaWRhdG9yVHhCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDhDQUF5RTtBQUV6RSx5RUFBc0U7QUFHdEUsMkNBUXFCO0FBQ3JCLG1DQUF5QztBQUV6QyxNQUFhLGdDQUFpQyxTQUFRLG1EQUF3QjtJQVM1RTs7T0FFRztJQUNILFlBQVksVUFBZ0M7UUFDMUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO1FBQy9CLElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO1FBQy9CLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO1FBQzVCLElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDO1FBQzFCLElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDO1FBQzlCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxTQUFTLENBQUM7SUFDdEMsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQWMsZUFBZTtRQUMzQixPQUFPLDBCQUFlLENBQUMsMEJBQTBCLENBQUM7SUFDcEQsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxNQUFjO1FBQ25CLElBQUksQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNuQyxNQUFNLElBQUksZ0NBQXFCLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUM3RCxDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsWUFBWSxDQUFDLFlBQW9CO1FBQy9CLElB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SUFBSSxDQUFDLGFBQWE7Z0JBQ2hDLFlBQVksRUFBRSxJQUFJLENBQUMsYUFBYTtnQkFDaEMsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVO2dCQUMxQixPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVE7Z0JBQ3RCLFdBQVcsRUFBRSxJQUFJLENBQUMsWUFBWTtnQkFDOUIsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjtnQkFDMUMsYUFBYSxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pDLGFBQWEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWM7Z0JBQzlDLFNBQVMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVU7Z0JBQ3RDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYTtnQkFDbEQsU0FBUyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxJQUFJLENBQUM7Z0JBQzNDLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsSUFBSSxFQUFFO2FBQzNDLENBQUM7WUFFRixJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMvQyxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE1BQU0sSUFBSSxnQ0FBcUIsQ0FDN0IseURBQ0UsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsZUFDM0MsRUFBRSxDQUNILENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBclJELDRFQXFSQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJ1aWxkVHJhbnNhY3Rpb25FcnJvciwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBBdG9taWNUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL2F0b21pY1RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBUeCB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgUGVybWlzc2lvbmxlc3NWYWxpZGF0b3JFeHRlbmRlZFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQge1xuICBBRERfUEVSTUlTU0lPTkxFU1NfVkFMSURBVE9SX1RZUEUsXG4gIEJBU0lTX1BPSU5UU19ESVZJU09SLFxuICBCTFNfUFVCTElDX0tFWV9DT01QUkVTU0VEX0xFTkdUSCxcbiAgQkxTX1BVQkxJQ19LRVlfVU5DT01QUkVTU0VEX0xFTkdUSCxcbiAgQkxTX1NJR05BVFVSRV9MRU5HVEgsXG4gIE1JTl9ERUxFR0FUSU9OX0ZFRV9CQVNJU19QT0lOVFMsXG4gIFBFUkNFTlRBR0VfTVVMVElQTElFUixcbn0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgY3JlYXRlSGV4UmVnZXggfSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGNsYXNzIFBlcm1pc3Npb25sZXNzVmFsaWRhdG9yVHhCdWlsZGVyIGV4dGVuZHMgQXRvbWljVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgcHJvdGVjdGVkIF9ub2RlSUQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJvdGVjdGVkIF9ibHNQdWJsaWNLZXk6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJvdGVjdGVkIF9ibHNTaWduYXR1cmU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJvdGVjdGVkIF9zdGFydFRpbWU6IGJpZ2ludCB8IHVuZGVmaW5lZDtcbiAgcHJvdGVjdGVkIF9lbmRUaW1lOiBiaWdpbnQgfCB1bmRlZmluZWQ7XG4gIHByb3RlY3RlZCBfc3Rha2VBbW91bnQ6IGJpZ2ludCB8IHVuZGVmaW5lZDtcbiAgcHJvdGVjdGVkIF9kZWxlZ2F0aW9uRmVlUmF0ZTogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gY29pbkNvbmZpZ1xuICAgKi9cbiAgY29uc3RydWN0b3IoY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihjb2luQ29uZmlnKTtcbiAgICB0aGlzLl9ub2RlSUQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5fYmxzUHVibGljS2V5ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuX2Jsc1NpZ25hdHVyZSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLl9zdGFydFRpbWUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5fZW5kVGltZSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLl9zdGFrZUFtb3VudCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLl9kZWxlZ2F0aW9uRmVlUmF0ZSA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBnZXQgdHJhbnNhY3Rpb24gdHlwZVxuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuQWRkUGVybWlzc2lvbmxlc3NWYWxpZGF0b3I7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBub2RlIElEIGZvciBwZXJtaXNzaW9ubGVzcyB2YWxpZGF0aW9uXG4gICAqIEBwYXJhbSBub2RlSUQgLSBUaGUgbm9kZSBJRFxuICAgKi9cbiAgbm9kZUlEKG5vZGVJRDogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKCFub2RlSUQgfHwgbm9kZUlELmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignTm9kZSBJRCBjYW5ub3QgYmUgZW1wdHknKTtcbiAgICB9XG4gICAgdGhpcy5fbm9kZUlEID0gbm9kZUlEO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgQkxTIHB1YmxpYyBrZXkgZm9yIHBlcm1pc3Npb25sZXNzIHZhbGlkYXRpb25cbiAgICogQHBhcmFtIGJsc1B1YmxpY0tleSAtIFRoZSBCTFMgcHVibGljIGtleVxuICAgKi9cbiAgYmxzUHVibGljS2V5KGJsc1B1YmxpY0tleTogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKCFibHNQdWJsaWNLZXkgfHwgYmxzUHVibGljS2V5Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignQkxTIHB1YmxpYyBrZXkgY2Fubm90IGJlIGVtcHR5Jyk7XG4gICAgfVxuXG4gICAgLy8gQkxTIHB1YmxpYyBrZXkgc2hvdWxkIGJlIDQ4IGJ5dGVzICg5NiBoZXggY2hhcmFjdGVycykgd2l0aCAweCBwcmVmaXggb3IgMTkyIGhleCBjaGFyYWN0ZXJzIHdpdGggMHggcHJlZml4IGZvciB1bmNvbXByZXNzZWRcbiAgICBpZiAoXG4gICAgICAhY3JlYXRlSGV4UmVnZXgoQkxTX1BVQkxJQ19LRVlfQ09NUFJFU1NFRF9MRU5HVEgsIHRydWUpLnRlc3QoYmxzUHVibGljS2V5KSAmJlxuICAgICAgIWNyZWF0ZUhleFJlZ2V4KEJMU19QVUJMSUNfS0VZX1VOQ09NUFJFU1NFRF9MRU5HVEgsIHRydWUpLnRlc3QoYmxzUHVibGljS2V5KVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBCTFMgcHVibGljIGtleSBmb3JtYXQnKTtcbiAgICB9XG5cbiAgICB0aGlzLl9ibHNQdWJsaWNLZXkgPSBibHNQdWJsaWNLZXk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBCTFMgc2lnbmF0dXJlIGZvciBwZXJtaXNzaW9ubGVzcyB2YWxpZGF0aW9uXG4gICAqIEBwYXJhbSBibHNTaWduYXR1cmUgLSBUaGUgQkxTIHNpZ25hdHVyZVxuICAgKi9cbiAgYmxzU2lnbmF0dXJlKGJsc1NpZ25hdHVyZTogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKCFibHNTaWduYXR1cmUgfHwgYmxzU2lnbmF0dXJlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignQkxTIHNpZ25hdHVyZSBjYW5ub3QgYmUgZW1wdHknKTtcbiAgICB9XG5cbiAgICAvLyBCTFMgc2lnbmF0dXJlIHNob3VsZCBiZSA5NiBieXRlcyAoMTkyIGhleCBjaGFyYWN0ZXJzKSB3aXRoIDB4IHByZWZpeFxuICAgIGlmICghY3JlYXRlSGV4UmVnZXgoQkxTX1NJR05BVFVSRV9MRU5HVEgsIHRydWUpLnRlc3QoYmxzU2lnbmF0dXJlKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBCTFMgc2lnbmF0dXJlIGZvcm1hdCcpO1xuICAgIH1cblxuICAgIHRoaXMuX2Jsc1NpZ25hdHVyZSA9IGJsc1NpZ25hdHVyZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHN0YXJ0IHRpbWUgZm9yIHZhbGlkYXRpb25cbiAgICogQHBhcmFtIHN0YXJ0VGltZSAtIFVuaXggdGltZXN0YW1wIGZvciB3aGVuIHZhbGlkYXRpb24gc3RhcnRzXG4gICAqL1xuICBzdGFydFRpbWUoc3RhcnRUaW1lOiBzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnQpOiB0aGlzIHtcbiAgICBjb25zdCB0aW1lID0gQmlnSW50KHN0YXJ0VGltZSk7XG4gICAgaWYgKHRpbWUgPCAwKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdTdGFydCB0aW1lIG11c3QgYmUgbm9uLW5lZ2F0aXZlJyk7XG4gICAgfVxuICAgIHRoaXMuX3N0YXJ0VGltZSA9IHRpbWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBlbmQgdGltZSBmb3IgdmFsaWRhdGlvblxuICAgKiBAcGFyYW0gZW5kVGltZSAtIFVuaXggdGltZXN0YW1wIGZvciB3aGVuIHZhbGlkYXRpb24gZW5kc1xuICAgKi9cbiAgZW5kVGltZShlbmRUaW1lOiBzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnQpOiB0aGlzIHtcbiAgICBjb25zdCB0aW1lID0gQmlnSW50KGVuZFRpbWUpO1xuICAgIGlmICh0aW1lIDw9IDApIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0VuZCB0aW1lIG11c3QgYmUgcG9zaXRpdmUnKTtcbiAgICB9XG4gICAgdGhpcy5fZW5kVGltZSA9IHRpbWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBzdGFrZSBhbW91bnQgZm9yIHZhbGlkYXRpb25cbiAgICogQHBhcmFtIGFtb3VudCAtIEFtb3VudCB0byBzdGFrZSAoaW4gbkZMUilcbiAgICovXG4gIHN0YWtlQW1vdW50KGFtb3VudDogc3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50KTogdGhpcyB7XG4gICAgY29uc3Qgc3Rha2UgPSBCaWdJbnQoYW1vdW50KTtcbiAgICBpZiAoc3Rha2UgPD0gMCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignU3Rha2UgYW1vdW50IG11c3QgYmUgcG9zaXRpdmUnKTtcbiAgICB9XG4gICAgdGhpcy5fc3Rha2VBbW91bnQgPSBzdGFrZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGRlbGVnYXRpb24gZmVlIHJhdGVcbiAgICogQHBhcmFtIHZhbHVlIC0gRGVsZWdhdGlvbiBmZWUgcmF0ZSBpbiBiYXNpcyBwb2ludHNcbiAgICovXG4gIGRlbGVnYXRpb25GZWVSYXRlKHZhbHVlOiBudW1iZXIpOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlRGVsZWdhdGlvbkZlZVJhdGUodmFsdWUpO1xuICAgIHRoaXMuX2RlbGVnYXRpb25GZWVSYXRlID0gdmFsdWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHJld2FyZCBhZGRyZXNzZXMgd2hlcmUgdmFsaWRhdGlvbiByZXdhcmRzIHNob3VsZCBiZSBzZW50XG4gICAqIEBwYXJhbSBhZGRyZXNzZXMgLSBBcnJheSBvZiByZXdhcmQgYWRkcmVzc2VzXG4gICAqL1xuICByZXdhcmRBZGRyZXNzZXMoYWRkcmVzc2VzOiBzdHJpbmdbXSk6IHRoaXMge1xuICAgIGlmICghYWRkcmVzc2VzIHx8IGFkZHJlc3Nlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0F0IGxlYXN0IG9uZSByZXdhcmQgYWRkcmVzcyBpcyByZXF1aXJlZCcpO1xuICAgIH1cbiAgICAvLyBTdG9yZSByZXdhcmQgYWRkcmVzc2VzIGluIHRoZSB0cmFuc2FjdGlvbiAod2UnbGwgbmVlZCB0byBleHRlbmQgdGhlIHR5cGUpXG4gICAgKHRoaXMudHJhbnNhY3Rpb24gYXMgdW5rbm93biBhcyBQZXJtaXNzaW9ubGVzc1ZhbGlkYXRvckV4dGVuZGVkVHJhbnNhY3Rpb24pLl9yZXdhcmRBZGRyZXNzZXMgPSBhZGRyZXNzZXM7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgdGhhdCB0aGUgZGVsZWdhdGlvbiBmZWUgaXMgYXQgbGVhc3QgdGhlIG1pbkRlbGVnYXRpb25GZWVcbiAgICogQHBhcmFtIGRlbGVnYXRpb25GZWVSYXRlIG51bWJlclxuICAgKi9cbiAgdmFsaWRhdGVEZWxlZ2F0aW9uRmVlUmF0ZShkZWxlZ2F0aW9uRmVlUmF0ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgLy8gRm9yIEZsYXJlLCB1c2UgYSBtaW5pbXVtIGRlbGVnYXRpb24gZmVlIG9mIDIlICgyMDAwMCBiYXNpcyBwb2ludHMpXG4gICAgY29uc3QgbWluRGVsZWdhdGlvbkZlZSA9IE1JTl9ERUxFR0FUSU9OX0ZFRV9CQVNJU19QT0lOVFM7XG4gICAgaWYgKGRlbGVnYXRpb25GZWVSYXRlIDwgbWluRGVsZWdhdGlvbkZlZSkge1xuICAgICAgY29uc3QgbWluRGVsZWdhdGlvbkZlZVBlcmNlbnQgPSAobWluRGVsZWdhdGlvbkZlZSAvIEJBU0lTX1BPSU5UU19ESVZJU09SKSAqIFBFUkNFTlRBR0VfTVVMVElQTElFUjtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoXG4gICAgICAgIGBEZWxlZ2F0aW9uIGZlZSBjYW5ub3QgYmUgbGVzcyB0aGFuICR7bWluRGVsZWdhdGlvbkZlZX0gYmFzaXMgcG9pbnRzICgke21pbkRlbGVnYXRpb25GZWVQZXJjZW50fSUpYFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaW5pdEJ1aWxkZXIodHg6IFR4KTogdGhpcyB7XG4gICAgLy8gRXh0cmFjdCBwZXJtaXNzaW9ubGVzcyB2YWxpZGF0b3Itc3BlY2lmaWMgZmllbGRzIGZyb20gdHJhbnNhY3Rpb25cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIGNvbnN0IHR4RGF0YSA9IHR4IGFzIGFueTtcblxuICAgIGlmICh0eERhdGEubm9kZUlEKSB7XG4gICAgICB0aGlzLl9ub2RlSUQgPSB0eERhdGEubm9kZUlEO1xuICAgIH1cbiAgICBpZiAodHhEYXRhLmJsc1B1YmxpY0tleSkge1xuICAgICAgdGhpcy5fYmxzUHVibGljS2V5ID0gdHhEYXRhLmJsc1B1YmxpY0tleTtcbiAgICB9XG4gICAgaWYgKHR4RGF0YS5ibHNTaWduYXR1cmUpIHtcbiAgICAgIHRoaXMuX2Jsc1NpZ25hdHVyZSA9IHR4RGF0YS5ibHNTaWduYXR1cmU7XG4gICAgfVxuICAgIGlmICh0eERhdGEuc3RhcnRUaW1lKSB7XG4gICAgICB0aGlzLl9zdGFydFRpbWUgPSBCaWdJbnQodHhEYXRhLnN0YXJ0VGltZSk7XG4gICAgfVxuICAgIGlmICh0eERhdGEuZW5kVGltZSkge1xuICAgICAgdGhpcy5fZW5kVGltZSA9IEJpZ0ludCh0eERhdGEuZW5kVGltZSk7XG4gICAgfVxuICAgIGlmICh0eERhdGEuc3Rha2VBbW91bnQpIHtcbiAgICAgIHRoaXMuX3N0YWtlQW1vdW50ID0gQmlnSW50KHR4RGF0YS5zdGFrZUFtb3VudCk7XG4gICAgfVxuICAgIGlmICh0eERhdGEuZGVsZWdhdGlvbkZlZVJhdGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fZGVsZWdhdGlvbkZlZVJhdGUgPSB0eERhdGEuZGVsZWdhdGlvbkZlZVJhdGU7XG4gICAgfVxuICAgIGlmICh0eERhdGEucmV3YXJkQWRkcmVzc2VzKSB7XG4gICAgICAodGhpcy50cmFuc2FjdGlvbiBhcyB1bmtub3duIGFzIFBlcm1pc3Npb25sZXNzVmFsaWRhdG9yRXh0ZW5kZWRUcmFuc2FjdGlvbikuX3Jld2FyZEFkZHJlc3NlcyA9XG4gICAgICAgIHR4RGF0YS5yZXdhcmRBZGRyZXNzZXM7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZ5IGlmIHRoZSB0cmFuc2FjdGlvbiBpcyBhIHBlcm1pc3Npb25sZXNzIHZhbGlkYXRvciB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gdHhcbiAgICovXG4gIHN0YXRpYyB2ZXJpZnlUeFR5cGUodHg6IHVua25vd24pOiBib29sZWFuIHtcbiAgICAvLyBDaGVjayBpZiB0cmFuc2FjdGlvbiBoYXMgcGVybWlzc2lvbmxlc3MgdmFsaWRhdG9yLXNwZWNpZmljIHByb3BlcnRpZXNcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIGNvbnN0IHR4RGF0YSA9IHR4IGFzIGFueTtcbiAgICByZXR1cm4gdHhEYXRhICYmIHR4RGF0YS5ibHNQdWJsaWNLZXkgJiYgdHhEYXRhLmJsc1NpZ25hdHVyZTtcbiAgfVxuXG4gIHZlcmlmeVR4VHlwZSh0eDogdW5rbm93bik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBQZXJtaXNzaW9ubGVzc1ZhbGlkYXRvclR4QnVpbGRlci52ZXJpZnlUeFR5cGUodHgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIHRoZSBwZXJtaXNzaW9ubGVzcyB2YWxpZGF0b3IgdHJhbnNhY3Rpb25cbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkRmxhcmVUcmFuc2FjdGlvbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBCYXNpYyB2YWxpZGF0aW9uXG4gICAgaWYgKCF0aGlzLl9ub2RlSUQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ05vZGUgSUQgaXMgcmVxdWlyZWQgZm9yIHBlcm1pc3Npb25sZXNzIHZhbGlkYXRvciB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuX2Jsc1B1YmxpY0tleSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignQkxTIHB1YmxpYyBrZXkgaXMgcmVxdWlyZWQgZm9yIHBlcm1pc3Npb25sZXNzIHZhbGlkYXRvciB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuX2Jsc1NpZ25hdHVyZSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignQkxTIHNpZ25hdHVyZSBpcyByZXF1aXJlZCBmb3IgcGVybWlzc2lvbmxlc3MgdmFsaWRhdG9yIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIGlmICghdGhpcy5fc3RhcnRUaW1lKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdTdGFydCB0aW1lIGlzIHJlcXVpcmVkIGZvciBwZXJtaXNzaW9ubGVzcyB2YWxpZGF0b3IgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLl9lbmRUaW1lKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdFbmQgdGltZSBpcyByZXF1aXJlZCBmb3IgcGVybWlzc2lvbmxlc3MgdmFsaWRhdG9yIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIGlmICghdGhpcy5fc3Rha2VBbW91bnQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1N0YWtlIGFtb3VudCBpcyByZXF1aXJlZCBmb3IgcGVybWlzc2lvbmxlc3MgdmFsaWRhdG9yIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9kZWxlZ2F0aW9uRmVlUmF0ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdEZWxlZ2F0aW9uIGZlZSByYXRlIGlzIHJlcXVpcmVkIGZvciBwZXJtaXNzaW9ubGVzcyB2YWxpZGF0b3IgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXdhcmRBZGRyZXNzZXMgPSAodGhpcy50cmFuc2FjdGlvbiBhcyB1bmtub3duIGFzIFBlcm1pc3Npb25sZXNzVmFsaWRhdG9yRXh0ZW5kZWRUcmFuc2FjdGlvbilcbiAgICAgIC5fcmV3YXJkQWRkcmVzc2VzO1xuICAgIGlmICghcmV3YXJkQWRkcmVzc2VzIHx8IHJld2FyZEFkZHJlc3Nlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1Jld2FyZCBhZGRyZXNzZXMgYXJlIHJlcXVpcmVkIGZvciBwZXJtaXNzaW9ubGVzcyB2YWxpZGF0b3IgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG5cbiAgICAvLyBWYWxpZGF0ZSB0aW1lIHJhbmdlXG4gICAgaWYgKHRoaXMuX2VuZFRpbWUgPD0gdGhpcy5fc3RhcnRUaW1lKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdFbmQgdGltZSBtdXN0IGJlIGFmdGVyIHN0YXJ0IHRpbWUnKTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgLy8gVE9ETzogSW1wbGVtZW50IGFjdHVhbCBGbGFyZUpTIFBWTSBBUEkgY2FsbCB3aGVuIGF2YWlsYWJsZVxuICAgICAgLy8gRm9yIG5vdywgY3JlYXRlIGEgcGxhY2Vob2xkZXIgdHJhbnNhY3Rpb24gc3RydWN0dXJlXG4gICAgICBjb25zdCB2YWxpZGF0b3JUeCA9IHtcbiAgICAgICAgdHlwZTogQUREX1BFUk1JU1NJT05MRVNTX1ZBTElEQVRPUl9UWVBFLFxuICAgICAgICBub2RlSUQ6IHRoaXMuX25vZGVJRCxcbiAgICAgICAgYmxzUHVibGljS2V5OiB0aGlzLl9ibHNQdWJsaWNLZXksXG4gICAgICAgIGJsc1NpZ25hdHVyZTogdGhpcy5fYmxzU2lnbmF0dXJlLFxuICAgICAgICBzdGFydFRpbWU6IHRoaXMuX3N0YXJ0VGltZSxcbiAgICAgICAgZW5kVGltZTogdGhpcy5fZW5kVGltZSxcbiAgICAgICAgc3Rha2VBbW91bnQ6IHRoaXMuX3N0YWtlQW1vdW50LFxuICAgICAgICBkZWxlZ2F0aW9uRmVlUmF0ZTogdGhpcy5fZGVsZWdhdGlvbkZlZVJhdGUsXG4gICAgICAgIHJld2FyZEFkZHJlc3M6IHJld2FyZEFkZHJlc3Nlc1swXSxcbiAgICAgICAgZnJvbUFkZHJlc3NlczogdGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3NlcyxcbiAgICAgICAgbmV0d29ya0lkOiB0aGlzLnRyYW5zYWN0aW9uLl9uZXR3b3JrSUQsXG4gICAgICAgIHNvdXJjZUJsb2NrY2hhaW5JZDogdGhpcy50cmFuc2FjdGlvbi5fYmxvY2tjaGFpbklELFxuICAgICAgICB0aHJlc2hvbGQ6IHRoaXMudHJhbnNhY3Rpb24uX3RocmVzaG9sZCB8fCAxLFxuICAgICAgICBsb2NrdGltZTogdGhpcy50cmFuc2FjdGlvbi5fbG9ja3RpbWUgfHwgMG4sXG4gICAgICB9O1xuXG4gICAgICB0aGlzLnRyYW5zYWN0aW9uLnNldFRyYW5zYWN0aW9uKHZhbGlkYXRvclR4KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgICAgYEZhaWxlZCB0byBidWlsZCBwZXJtaXNzaW9ubGVzcyB2YWxpZGF0b3IgdHJhbnNhY3Rpb246ICR7XG4gICAgICAgICAgZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnVW5rbm93biBlcnJvcidcbiAgICAgICAgfWBcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
132
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbmxlc3NWYWxpZGF0b3JUeEJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3Blcm1pc3Npb25sZXNzVmFsaWRhdG9yVHhCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG1EQUF5RTtBQUN6RSw4Q0FBbUg7QUFJbkgsNkRBQTBEO0FBQzFELG9EQUE0QjtBQUU1QixNQUFhLGdDQUFpQyxTQUFRLHVDQUFrQjtJQVN0RSxZQUFZLFVBQWdDO1FBQzFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNsQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO0lBQzlELENBQUM7SUFFRCxJQUFjLGVBQWU7UUFDM0IsT0FBTywwQkFBZSxDQUFDLDBCQUEwQixDQUFDO0lBQ3BELENBQUM7SUFFRCxxQkFBcUI7SUFDckIsZ0JBQWdCLENBQUMsUUFBZ0I7UUFDL0IsSUFBSSxRQUFRLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDekIsTUFBTSxJQUFJLGdDQUFxQixDQUFDLG1EQUFtRCxDQUFDLENBQUM7UUFDdkYsQ0FBQztJQUNILENBQUM7SUFFRCx5QkFBeUIsQ0FBQyxpQkFBeUI7UUFDakQsSUFBSSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDO1lBQzNFLE1BQU0sSUFBSSxnQ0FBcUIsQ0FDN0Isc0NBQXNDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLGdCQUFnQixFQUFFLENBQ25GLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFxQjtRQUNoQyxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxD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Q0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxNQUFNLENBQUMsWUFBWSxDQUFDLElBQWlCO1FBQ25DLE9BQU8sSUFBSSxLQUFLLHFCQUFXLENBQUMsNEJBQTRCLENBQUM7SUFDM0QsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixJQUFjLFdBQVc7UUFDdkIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFjLFdBQVcsQ0FBQyxXQUF3QjtRQUNoRCxJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQztJQUNsQyxDQUFDO0NBQ0Y7QUFySkQsNEVBcUpDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXRpbHMgYXMgRmxhcmVVdGlscywgVHlwZVN5bWJvbHMgfSBmcm9tICdAZmxhcmVuZXR3b3JrL2ZsYXJlanMnO1xuaW1wb3J0IHsgQnVpbGRUcmFuc2FjdGlvbkVycm9yLCBpc1ZhbGlkQkxTUHVibGljS2V5LCBpc1ZhbGlkQkxTU2lnbmF0dXJlLCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmltcG9ydCB7IERlY29kZWRVdHhvT2JqIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgUGVybWlzc2lvbmxlc3NWYWxpZGF0b3JUeEJ1aWxkZXIgZXh0ZW5kcyBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcm90ZWN0ZWQgX25vZGVJRDogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX2Jsc1B1YmxpY0tleTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX2Jsc1NpZ25hdHVyZTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX3N0YXJ0VGltZTogYmlnaW50O1xuICBwcm90ZWN0ZWQgX2VuZFRpbWU6IGJpZ2ludDtcbiAgcHJvdGVjdGVkIF9zdGFrZUFtb3VudDogYmlnaW50O1xuICBwcm90ZWN0ZWQgX2RlbGVnYXRpb25GZWVSYXRlOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihjb2luQ29uZmlnKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLl9mZWUuZmVlID0gdGhpcy50cmFuc2FjdGlvbi5fbmV0d29yay50eEZlZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb25UeXBlKCk6IFRyYW5zYWN0aW9uVHlwZSB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5BZGRQZXJtaXNzaW9ubGVzc1ZhbGlkYXRvcjtcbiAgfVxuXG4gIC8vIFZhbGlkYXRpb24gbWV0aG9kc1xuICB2YWxpZGF0ZUxvY2t0aW1lKGxvY2t0aW1lOiBiaWdpbnQpOiB2b2lkIHtcbiAgICBpZiAobG9ja3RpbWUgPCBCaWdJbnQoMCkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IGxvY2t0aW1lIG11c3QgYmUgMCBvciBoaWdoZXInKTtcbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZURlbGVnYXRpb25GZWVSYXRlKGRlbGVnYXRpb25GZWVSYXRlOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoZGVsZWdhdGlvbkZlZVJhdGUgPCBOdW1iZXIodGhpcy50cmFuc2FjdGlvbi5fbmV0d29yay5taW5EZWxlZ2F0aW9uRmVlKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgICAgYERlbGVnYXRpb24gZmVlIGNhbm5vdCBiZSBsZXNzIHRoYW4gJHt0aGlzLnRyYW5zYWN0aW9uLl9uZXR3b3JrLm1pbkRlbGVnYXRpb25GZWV9YFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZVV0eG8odmFsdWU6IERlY29kZWRVdHhvT2JqKTogdm9pZCB7XG4gICAgWydvdXRwdXRJRCcsICdhbW91bnQnLCAndHhpZCcsICdvdXRwdXRpZHgnXS5mb3JFYWNoKChmaWVsZCkgPT4ge1xuICAgICAgaWYgKCF2YWx1ZS5oYXNPd25Qcm9wZXJ0eShmaWVsZCkpIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoYFV0eG9zIHJlcXVpcmVkICR7ZmllbGR9YCk7XG4gICAgfSk7XG4gIH1cblxuICB2YWxpZGF0ZU5vZGVJRChub2RlSUQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghbm9kZUlEKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiBtaXNzaW5nIG5vZGVJRCcpO1xuICAgIH1cbiAgICBpZiAobm9kZUlELnNsaWNlKDAsIDYpICE9PSAnTm9kZUlEJykge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogaW52YWxpZCBOb2RlSUQgdGFnJyk7XG4gICAgfVxuICAgIGlmICghKEZsYXJlVXRpbHMuYmFzZTU4LmRlY29kZShub2RlSUQuc2xpY2UoNykpLmxlbmd0aCA9PT0gMjQpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiBOb2RlSUQgaXMgbm90IGluIGNiNTggZm9ybWF0Jyk7XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGVTdGFrZUR1cmF0aW9uKHN0YXJ0VGltZTogYmlnaW50LCBlbmRUaW1lOiBiaWdpbnQpOiB2b2lkIHtcbiAgICBpZiAoZW5kVGltZSA8IHN0YXJ0VGltZSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignRW5kIGRhdGUgY2Fubm90IGJlIGxlc3MgdGhhbiBzdGFydCBkYXRlJyk7XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGVTdGFrZUFtb3VudChhbW91bnQ6IGJpZ2ludCk6IHZvaWQge1xuICAgIGNvbnN0IG1pblN0YWtlID0gQmlnSW50KHRoaXMudHJhbnNhY3Rpb24uX25ldHdvcmsubWluU3Rha2UpO1xuICAgIGlmIChhbW91bnQgPCBtaW5TdGFrZSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignTWluaW11bSBzdGFraW5nIGFtb3VudCBpcyAnICsgTnVtYmVyKG1pblN0YWtlKSAvIDEwMDAwMDAwMDAgKyAnIEZMUi4nKTtcbiAgICB9XG4gIH1cblxuICAvLyBCdWlsZGVyIG1ldGhvZHNcbiAgcmV3YXJkQWRkcmVzc2VzKGFkZHJlc3M6IHN0cmluZyB8IHN0cmluZ1tdKTogdGhpcyB7XG4gICAgY29uc3QgcmV3YXJkQWRkcmVzc2VzID0gYWRkcmVzcyBpbnN0YW5jZW9mIEFycmF5ID8gYWRkcmVzcyA6IFthZGRyZXNzXTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLl9yZXdhcmRBZGRyZXNzZXMgPSByZXdhcmRBZGRyZXNzZXMubWFwKHV0aWxzLnBhcnNlQWRkcmVzcyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBub2RlSUQobm9kZUlEOiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlTm9kZUlEKG5vZGVJRCk7XG4gICAgdGhpcy5fbm9kZUlEID0gbm9kZUlEO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgYmxzUHVibGljS2V5KGJsc1B1YmxpY0tleTogc3RyaW5nKTogdGhpcyB7XG4gICAgaXNWYWxpZEJMU1B1YmxpY0tleShibHNQdWJsaWNLZXkpO1xuICAgIHRoaXMuX2Jsc1B1YmxpY0tleSA9IGJsc1B1YmxpY0tleTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGJsc1NpZ25hdHVyZShibHNTaWduYXR1cmU6IHN0cmluZyk6IHRoaXMge1xuICAgIGlzVmFsaWRCTFNTaWduYXR1cmUoYmxzU2lnbmF0dXJlKTtcbiAgICB0aGlzLl9ibHNTaWduYXR1cmUgPSBibHNTaWduYXR1cmU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBsb2NrdGltZSh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyKTogdGhpcyB7XG4gICAgdGhpcy52YWxpZGF0ZUxvY2t0aW1lKEJpZ0ludCh2YWx1ZSkpO1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uLl9sb2NrdGltZSA9IEJpZ0ludCh2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBkZWxlZ2F0aW9uRmVlUmF0ZSh2YWx1ZTogbnVtYmVyKTogdGhpcyB7XG4gICAgdGhpcy52YWxpZGF0ZURlbGVnYXRpb25GZWVSYXRlKHZhbHVlKTtcbiAgICB0aGlzLl9kZWxlZ2F0aW9uRmVlUmF0ZSA9IHZhbHVlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc3RhcnRUaW1lKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpOiB0aGlzIHtcbiAgICB0aGlzLl9zdGFydFRpbWUgPSBCaWdJbnQodmFsdWUpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZW5kVGltZSh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyKTogdGhpcyB7XG4gICAgdGhpcy5fZW5kVGltZSA9IEJpZ0ludCh2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzdGFrZUFtb3VudCh2YWx1ZTogYmlnaW50IHwgc3RyaW5nKTogdGhpcyB7XG4gICAgY29uc3QgdmFsdWVCaWdJbnQgPSB0eXBlb2YgdmFsdWUgPT09ICdiaWdpbnQnID8gdmFsdWUgOiBCaWdJbnQodmFsdWUpO1xuICAgIHRoaXMudmFsaWRhdGVTdGFrZUFtb3VudCh2YWx1ZUJpZ0ludCk7XG4gICAgdGhpcy5fc3Rha2VBbW91bnQgPSB2YWx1ZUJpZ0ludDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBidWlsZEltcGxlbWVudGF0aW9uKCk6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgICB0aGlzLmJ1aWxkRmxhcmVUcmFuc2FjdGlvbigpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uc2V0VHJhbnNhY3Rpb25UeXBlKHRoaXMudHJhbnNhY3Rpb25UeXBlKTtcbiAgICBpZiAodGhpcy5oYXNTaWduZXIoKSkge1xuICAgICAgZm9yIChjb25zdCBrZXlQYWlyIG9mIHRoaXMuX3NpZ25lcikge1xuICAgICAgICBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uLnNpZ24oa2V5UGFpcik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIHRoZSBwZXJtaXNzaW9ubGVzcyB2YWxpZGF0b3IgdHJhbnNhY3Rpb25cbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIGJ1aWxkRmxhcmVUcmFuc2FjdGlvbigpOiB2b2lkIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICBzdGF0aWMgdmVyaWZ5VHhUeXBlKHR5cGU6IFR5cGVTeW1ib2xzKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGUgPT09IFR5cGVTeW1ib2xzLkFkZFBlcm1pc3Npb25sZXNzVmFsaWRhdG9yVHg7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvbigpOiBUcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldCB0cmFuc2FjdGlvbih0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24pIHtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IHRyYW5zYWN0aW9uO1xuICB9XG59XG4iXX0=
|
|
@@ -1,13 +1,9 @@
|
|
|
1
|
-
import { UnsignedTx, Credential } from '@flarenetwork/flarejs';
|
|
2
|
-
import { BaseKey, BaseTransaction, Entry, TransactionFee, TransactionType } from '@bitgo/sdk-core';
|
|
3
1
|
import { FlareNetwork, BaseCoin as CoinConfig } from '@bitgo/statics';
|
|
2
|
+
import { BaseKey, BaseTransaction, Entry, TransactionType, TransactionFee } from '@bitgo/sdk-core';
|
|
3
|
+
import { Credential } from '@flarenetwork/flarejs';
|
|
4
4
|
import { Buffer } from 'buffer';
|
|
5
|
-
import { DecodedUtxoObj, TransactionExplanation, Tx, TxData
|
|
5
|
+
import { DecodedUtxoObj, TransactionExplanation, Tx, TxData } from './iface';
|
|
6
6
|
import { KeyPair } from './keyPair';
|
|
7
|
-
/**
|
|
8
|
-
* Flare P-chain transaction implementation using FlareJS
|
|
9
|
-
* Based on AVAX transaction patterns adapted for Flare network
|
|
10
|
-
*/
|
|
11
7
|
export declare class Transaction extends BaseTransaction {
|
|
12
8
|
protected _flareTransaction: Tx;
|
|
13
9
|
_type: TransactionType;
|
|
@@ -21,91 +17,35 @@ export declare class Transaction extends BaseTransaction {
|
|
|
21
17
|
_stakeAmount: bigint;
|
|
22
18
|
_threshold: number;
|
|
23
19
|
_locktime: bigint;
|
|
24
|
-
_fromAddresses:
|
|
25
|
-
|
|
20
|
+
_fromAddresses: Uint8Array[];
|
|
21
|
+
_to: Uint8Array[];
|
|
22
|
+
_rewardAddresses: Uint8Array[];
|
|
26
23
|
_utxos: DecodedUtxoObj[];
|
|
27
|
-
_to: string[];
|
|
28
24
|
_fee: Partial<TransactionFee>;
|
|
29
|
-
|
|
30
|
-
_blsSignature: string;
|
|
31
|
-
_memo: Uint8Array;
|
|
25
|
+
_rawSignedBytes: Buffer | undefined;
|
|
32
26
|
constructor(coinConfig: Readonly<CoinConfig>);
|
|
33
|
-
/**
|
|
34
|
-
* Get the base transaction from FlareJS UnsignedTx
|
|
35
|
-
* TODO: Implement proper FlareJS transaction extraction
|
|
36
|
-
*/
|
|
37
|
-
get flareTransaction(): UnsignedTx;
|
|
38
27
|
get signature(): string[];
|
|
39
28
|
get credentials(): Credential[];
|
|
40
29
|
get hasCredentials(): boolean;
|
|
41
30
|
/** @inheritdoc */
|
|
42
31
|
canSign({ key }: BaseKey): boolean;
|
|
43
|
-
/**
|
|
44
|
-
* Sign a Flare transaction using FlareJS
|
|
45
|
-
* @param {KeyPair} keyPair
|
|
46
|
-
*/
|
|
47
32
|
sign(keyPair: KeyPair): Promise<void>;
|
|
48
|
-
/**
|
|
49
|
-
* Set memo from string
|
|
50
|
-
* @param {string} memo - Memo text
|
|
51
|
-
*/
|
|
52
|
-
setMemo(memo: string): void;
|
|
53
|
-
/**
|
|
54
|
-
* Set memo from various formats
|
|
55
|
-
* @param {string | Record<string, unknown> | Uint8Array} memo - Memo data
|
|
56
|
-
*/
|
|
57
|
-
setMemoData(memo: string | Record<string, unknown> | Uint8Array): void;
|
|
58
|
-
/**
|
|
59
|
-
* Get memo as bytes (FlareJS format)
|
|
60
|
-
* @returns {Uint8Array} Memo bytes
|
|
61
|
-
*/
|
|
62
|
-
getMemoBytes(): Uint8Array;
|
|
63
|
-
/**
|
|
64
|
-
* Get memo as string
|
|
65
|
-
* @returns {string} Memo string
|
|
66
|
-
*/
|
|
67
|
-
getMemoString(): string;
|
|
68
|
-
/**
|
|
69
|
-
* Check if transaction has memo
|
|
70
|
-
* @returns {boolean} Whether memo exists and is not empty
|
|
71
|
-
*/
|
|
72
|
-
hasMemo(): boolean;
|
|
73
|
-
toHexString(byteArray: Uint8Array): string;
|
|
74
|
-
/** @inheritdoc */
|
|
75
33
|
toBroadcastFormat(): string;
|
|
76
34
|
toJson(): TxData;
|
|
77
35
|
setTransaction(tx: Tx): void;
|
|
78
|
-
/**
|
|
79
|
-
* Set the transaction type
|
|
80
|
-
* @param {TransactionType} transactionType The transaction type to be set
|
|
81
|
-
*/
|
|
82
36
|
setTransactionType(transactionType: TransactionType): void;
|
|
83
|
-
/**
|
|
84
|
-
* Returns the portion of the transaction that needs to be signed in Buffer format.
|
|
85
|
-
* Only needed for coins that support adding signatures directly (e.g. TSS).
|
|
86
|
-
*/
|
|
87
37
|
get signablePayload(): Buffer;
|
|
88
38
|
get id(): string;
|
|
89
39
|
get fromAddresses(): string[];
|
|
90
40
|
get rewardAddresses(): string[];
|
|
91
|
-
/**
|
|
92
|
-
* Get the list of outputs. Amounts are expressed in absolute value.
|
|
93
|
-
*/
|
|
94
|
-
get outputs(): Entry[];
|
|
95
41
|
get fee(): TransactionFee;
|
|
96
|
-
get changeOutputs(): Entry[];
|
|
97
|
-
get inputs(): FlrpEntry[];
|
|
98
|
-
/**
|
|
99
|
-
* Flare wrapper to create signature and return it for credentials
|
|
100
|
-
* @param prv
|
|
101
|
-
* @return hexstring
|
|
102
|
-
*/
|
|
103
|
-
createSignature(prv: Buffer): string;
|
|
104
42
|
/**
|
|
105
|
-
* Check if transaction is for C-chain (
|
|
43
|
+
* Check if this transaction is for C-chain (EVM transactions)
|
|
106
44
|
*/
|
|
107
45
|
get isTransactionForCChain(): boolean;
|
|
108
|
-
|
|
46
|
+
get outputs(): Entry[];
|
|
47
|
+
get changeOutputs(): Entry[];
|
|
48
|
+
get inputs(): Entry[];
|
|
109
49
|
explainTransaction(): TransactionExplanation;
|
|
110
50
|
}
|
|
111
51
|
//# sourceMappingURL=transaction.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../src/lib/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../src/lib/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EACL,OAAO,EACP,eAAe,EACf,KAAK,EAGL,eAAe,EACf,cAAc,EACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAEL,UAAU,EAOX,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,EAAE,EAAE,MAAM,EAA2C,MAAM,SAAS,CAAC;AACtH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgEpC,qBAAa,WAAY,SAAQ,eAAe;IAC9C,SAAS,CAAC,iBAAiB,EAAE,EAAE,CAAC;IACzB,KAAK,EAAE,eAAe,CAAC;IACvB,QAAQ,EAAE,YAAY,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,SAAK;IACf,SAAS,SAAa;IACtB,cAAc,EAAE,UAAU,EAAE,CAAM;IAClC,GAAG,EAAE,UAAU,EAAE,CAAM;IACvB,gBAAgB,EAAE,UAAU,EAAE,CAAM;IACpC,MAAM,EAAE,cAAc,EAAE,CAAM;IAC9B,IAAI,EAAE,OAAO,CAAC,cAAc,CAAC,CAAM;IAEnC,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;gBAE/B,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;IAS5C,IAAI,SAAS,IAAI,MAAM,EAAE,CAKxB;IAED,IAAI,WAAW,IAAI,UAAU,EAAE,CAE9B;IAED,IAAI,cAAc,IAAI,OAAO,CAE5B;IAED,kBAAkB;IAClB,OAAO,CAAC,EAAE,GAAG,EAAE,EAAE,OAAO,GAAG,OAAO;IAI5B,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAuF3C,iBAAiB,IAAI,MAAM;IAkB3B,MAAM,IAAI,MAAM;IAiBhB,cAAc,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI;IAI5B,kBAAkB,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI;IAO1D,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED,IAAI,EAAE,IAAI,MAAM,CAGf;IAED,IAAI,aAAa,IAAI,MAAM,EAAE,CAE5B;IAED,IAAI,eAAe,IAAI,MAAM,EAAE,CAE9B;IAED,IAAI,GAAG,IAAI,cAAc,CAExB;IAED;;OAEG;IACH,IAAI,sBAAsB,IAAI,OAAO,CAIpC;IAED,IAAI,OAAO,IAAI,KAAK,EAAE,CAwCrB;IAED,IAAI,aAAa,IAAI,KAAK,EAAE,CAmB3B;IAED,IAAI,MAAM,IAAI,KAAK,EAAE,CAsDpB;IAED,kBAAkB,IAAI,sBAAsB;CA0B7C"}
|