@bitgo/sdk-coin-flrp 1.3.4 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/flrp.d.ts +6 -75
- package/dist/src/flrp.d.ts.map +1 -1
- package/dist/src/flrp.js +13 -298
- package/dist/src/index.d.ts +0 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -2
- package/dist/src/lib/ExportInCTxBuilder.d.ts +51 -0
- package/dist/src/lib/ExportInCTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/ExportInCTxBuilder.js +186 -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 +50 -51
- package/dist/src/lib/iface.d.ts.map +1 -1
- package/dist/src/lib/iface.js +22 -10
- package/dist/src/lib/index.d.ts +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 +32 -67
- package/dist/src/lib/permissionlessValidatorTxBuilder.d.ts.map +1 -1
- package/dist/src/lib/permissionlessValidatorTxBuilder.js +91 -205
- package/dist/src/lib/transaction.d.ts +8 -73
- package/dist/src/lib/transaction.d.ts.map +1 -1
- package/dist/src/lib/transaction.js +159 -210
- 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 +35 -30
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilderFactory.js +133 -74
- package/dist/src/lib/utils.d.ts +73 -151
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +197 -390
- 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/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 +29 -302
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +8 -10
- 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/flrp.d.ts +0 -2
- package/dist/test/unit/flrp.d.ts.map +0 -1
- package/dist/test/unit/flrp.js +0 -118
- package/dist/test/unit/lib/atomicTransactionBuilder.d.ts +0 -2
- package/dist/test/unit/lib/atomicTransactionBuilder.d.ts.map +0 -1
- package/dist/test/unit/lib/atomicTransactionBuilder.js +0 -222
- package/dist/test/unit/lib/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,134 @@
|
|
|
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.
|
|
16
|
-
this.
|
|
17
|
-
this._startTime = undefined;
|
|
18
|
-
this._endTime = undefined;
|
|
19
|
-
this._stakeAmount = undefined;
|
|
20
|
-
this._delegationFeeRate = undefined;
|
|
14
|
+
this._signer = [];
|
|
15
|
+
this.recoverSigner = false;
|
|
16
|
+
this.transaction._fee.fee = this.transaction._network.txFee;
|
|
21
17
|
}
|
|
22
|
-
/**
|
|
23
|
-
* get transaction type
|
|
24
|
-
* @protected
|
|
25
|
-
*/
|
|
26
18
|
get transactionType() {
|
|
27
19
|
return sdk_core_1.TransactionType.AddPermissionlessValidator;
|
|
28
20
|
}
|
|
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');
|
|
21
|
+
// Validation methods
|
|
22
|
+
validateLocktime(locktime) {
|
|
23
|
+
if (locktime < BigInt(0)) {
|
|
24
|
+
throw new sdk_core_1.BuildTransactionError('Invalid transaction: locktime must be 0 or higher');
|
|
36
25
|
}
|
|
37
|
-
this._nodeID = nodeID;
|
|
38
|
-
return this;
|
|
39
26
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
27
|
+
validateDelegationFeeRate(delegationFeeRate) {
|
|
28
|
+
if (delegationFeeRate < Number(this.transaction._network.minDelegationFee)) {
|
|
29
|
+
throw new sdk_core_1.BuildTransactionError(`Delegation fee cannot be less than ${this.transaction._network.minDelegationFee}`);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
validateUtxo(value) {
|
|
33
|
+
['outputID', 'amount', 'txid', 'outputidx'].forEach((field) => {
|
|
34
|
+
if (!value.hasOwnProperty(field))
|
|
35
|
+
throw new sdk_core_1.BuildTransactionError(`Utxos required ${field}`);
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
validateNodeID(nodeID) {
|
|
39
|
+
if (!nodeID) {
|
|
40
|
+
throw new sdk_core_1.BuildTransactionError('Invalid transaction: missing nodeID');
|
|
47
41
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
42
|
+
if (nodeID.slice(0, 6) !== 'NodeID') {
|
|
43
|
+
throw new sdk_core_1.BuildTransactionError('Invalid transaction: invalid NodeID tag');
|
|
44
|
+
}
|
|
45
|
+
if (!(flarejs_1.utils.base58.decode(nodeID.slice(7)).length === 24)) {
|
|
46
|
+
throw new sdk_core_1.BuildTransactionError('Invalid transaction: NodeID is not in cb58 format');
|
|
52
47
|
}
|
|
53
|
-
this._blsPublicKey = blsPublicKey;
|
|
54
|
-
return this;
|
|
55
48
|
}
|
|
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');
|
|
49
|
+
validateStakeDuration(startTime, endTime) {
|
|
50
|
+
if (endTime < startTime) {
|
|
51
|
+
throw new sdk_core_1.BuildTransactionError('End date cannot be less than start date');
|
|
63
52
|
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
53
|
+
}
|
|
54
|
+
validateStakeAmount(amount) {
|
|
55
|
+
const minStake = BigInt(this.transaction._network.minStake);
|
|
56
|
+
if (amount < minStake) {
|
|
57
|
+
throw new sdk_core_1.BuildTransactionError('Minimum staking amount is ' + Number(minStake) / 1000000000 + ' FLR.');
|
|
67
58
|
}
|
|
68
|
-
|
|
59
|
+
}
|
|
60
|
+
// Builder methods
|
|
61
|
+
rewardAddresses(address) {
|
|
62
|
+
const rewardAddresses = address instanceof Array ? address : [address];
|
|
63
|
+
this.transaction._rewardAddresses = rewardAddresses.map(utils_1.default.parseAddress);
|
|
69
64
|
return this;
|
|
70
65
|
}
|
|
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;
|
|
66
|
+
nodeID(nodeID) {
|
|
67
|
+
this.validateNodeID(nodeID);
|
|
68
|
+
this._nodeID = nodeID;
|
|
81
69
|
return this;
|
|
82
70
|
}
|
|
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;
|
|
71
|
+
blsPublicKey(blsPublicKey) {
|
|
72
|
+
(0, sdk_core_1.isValidBLSPublicKey)(blsPublicKey);
|
|
73
|
+
this._blsPublicKey = blsPublicKey;
|
|
93
74
|
return this;
|
|
94
75
|
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
}
|
|
104
|
-
this._stakeAmount = stake;
|
|
76
|
+
blsSignature(blsSignature) {
|
|
77
|
+
(0, sdk_core_1.isValidBLSSignature)(blsSignature);
|
|
78
|
+
this._blsSignature = blsSignature;
|
|
79
|
+
return this;
|
|
80
|
+
}
|
|
81
|
+
locktime(value) {
|
|
82
|
+
this.validateLocktime(BigInt(value));
|
|
83
|
+
this._transaction._locktime = BigInt(value);
|
|
105
84
|
return this;
|
|
106
85
|
}
|
|
107
|
-
/**
|
|
108
|
-
* Set the delegation fee rate
|
|
109
|
-
* @param value - Delegation fee rate in basis points
|
|
110
|
-
*/
|
|
111
86
|
delegationFeeRate(value) {
|
|
112
87
|
this.validateDelegationFeeRate(value);
|
|
113
88
|
this._delegationFeeRate = value;
|
|
114
89
|
return this;
|
|
115
90
|
}
|
|
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;
|
|
91
|
+
startTime(value) {
|
|
92
|
+
this._startTime = BigInt(value);
|
|
126
93
|
return this;
|
|
127
94
|
}
|
|
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
|
-
}
|
|
95
|
+
endTime(value) {
|
|
96
|
+
this._endTime = BigInt(value);
|
|
170
97
|
return this;
|
|
171
98
|
}
|
|
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;
|
|
99
|
+
stakeAmount(value) {
|
|
100
|
+
const valueBigInt = typeof value === 'bigint' ? value : BigInt(value);
|
|
101
|
+
this.validateStakeAmount(valueBigInt);
|
|
102
|
+
this._stakeAmount = valueBigInt;
|
|
103
|
+
return this;
|
|
181
104
|
}
|
|
182
|
-
|
|
183
|
-
|
|
105
|
+
async buildImplementation() {
|
|
106
|
+
this.buildFlareTransaction();
|
|
107
|
+
this.transaction.setTransactionType(this.transactionType);
|
|
108
|
+
if (this.hasSigner()) {
|
|
109
|
+
for (const keyPair of this._signer) {
|
|
110
|
+
await this.transaction.sign(keyPair);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return this.transaction;
|
|
184
114
|
}
|
|
185
115
|
/**
|
|
186
116
|
* Build the permissionless validator transaction
|
|
187
117
|
* @protected
|
|
188
118
|
*/
|
|
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
|
-
}
|
|
119
|
+
buildFlareTransaction() {
|
|
120
|
+
throw new Error('Method not implemented.');
|
|
121
|
+
}
|
|
122
|
+
static verifyTxType(type) {
|
|
123
|
+
return type === flarejs_1.TypeSymbols.AddPermissionlessValidatorTx;
|
|
124
|
+
}
|
|
125
|
+
/** @inheritdoc */
|
|
126
|
+
get transaction() {
|
|
127
|
+
return this._transaction;
|
|
128
|
+
}
|
|
129
|
+
set transaction(transaction) {
|
|
130
|
+
this._transaction = transaction;
|
|
245
131
|
}
|
|
246
132
|
}
|
|
247
133
|
exports.PermissionlessValidatorTxBuilder = PermissionlessValidatorTxBuilder;
|
|
248
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbmxlc3NWYWxpZGF0b3JUeEJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3Blcm1pc3Npb25sZXNzVmFsaWRhdG9yVHhCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDhDQUF5RTtBQUV6RSx5RUFBc0U7QUFHdEUsMkNBUXFCO0FBQ3JCLG1DQUF5QztBQUV6QyxNQUFhLGdDQUFpQyxTQUFRLG1EQUF3QjtJQVM1RTs7T0FFRztJQUNILFlBQVksVUFBZ0M7UUFDMUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO1FBQy9CLElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO1FBQy9CLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO1FBQzVCLElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDO1FBQzFCLElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDO1FBQzlCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxTQUFTLENBQUM7SUFDdEMsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQWMsZUFBZTtRQUMzQixPQUFPLDBCQUFlLENBQUMsMEJBQTBCLENBQUM7SUFDcEQsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxNQUFjO1FBQ25CLElBQUksQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNuQyxNQUFNLElBQUksZ0NBQXFCLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUM3RCxDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsWUFBWSxDQUFDLFlBQW9CO1FBQy9CLElB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SUFBSSxDQUFDLGFBQWE7Z0JBQ2hDLFlBQVksRUFBRSxJQUFJLENBQUMsYUFBYTtnQkFDaEMsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVO2dCQUMxQixPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVE7Z0JBQ3RCLFdBQVcsRUFBRSxJQUFJLENBQUMsWUFBWTtnQkFDOUIsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjtnQkFDMUMsYUFBYSxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pDLGFBQWEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWM7Z0JBQzlDLFNBQVMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVU7Z0JBQ3RDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYTtnQkFDbEQsU0FBUyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxJQUFJLENBQUM7Z0JBQzNDLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsSUFBSSxFQUFFO2FBQzNDLENBQUM7WUFFRixJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMvQyxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE1BQU0sSUFBSSxnQ0FBcUIsQ0FDN0IseURBQ0UsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsZUFDM0MsRUFBRSxDQUNILENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBclJELDRFQXFSQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJ1aWxkVHJhbnNhY3Rpb25FcnJvciwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBBdG9taWNUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL2F0b21pY1RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBUeCB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgUGVybWlzc2lvbmxlc3NWYWxpZGF0b3JFeHRlbmRlZFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQge1xuICBBRERfUEVSTUlTU0lPTkxFU1NfVkFMSURBVE9SX1RZUEUsXG4gIEJBU0lTX1BPSU5UU19ESVZJU09SLFxuICBCTFNfUFVCTElDX0tFWV9DT01QUkVTU0VEX0xFTkdUSCxcbiAgQkxTX1BVQkxJQ19LRVlfVU5DT01QUkVTU0VEX0xFTkdUSCxcbiAgQkxTX1NJR05BVFVSRV9MRU5HVEgsXG4gIE1JTl9ERUxFR0FUSU9OX0ZFRV9CQVNJU19QT0lOVFMsXG4gIFBFUkNFTlRBR0VfTVVMVElQTElFUixcbn0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgY3JlYXRlSGV4UmVnZXggfSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGNsYXNzIFBlcm1pc3Npb25sZXNzVmFsaWRhdG9yVHhCdWlsZGVyIGV4dGVuZHMgQXRvbWljVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgcHJvdGVjdGVkIF9ub2RlSUQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJvdGVjdGVkIF9ibHNQdWJsaWNLZXk6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJvdGVjdGVkIF9ibHNTaWduYXR1cmU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJvdGVjdGVkIF9zdGFydFRpbWU6IGJpZ2ludCB8IHVuZGVmaW5lZDtcbiAgcHJvdGVjdGVkIF9lbmRUaW1lOiBiaWdpbnQgfCB1bmRlZmluZWQ7XG4gIHByb3RlY3RlZCBfc3Rha2VBbW91bnQ6IGJpZ2ludCB8IHVuZGVmaW5lZDtcbiAgcHJvdGVjdGVkIF9kZWxlZ2F0aW9uRmVlUmF0ZTogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gY29pbkNvbmZpZ1xuICAgKi9cbiAgY29uc3RydWN0b3IoY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihjb2luQ29uZmlnKTtcbiAgICB0aGlzLl9ub2RlSUQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5fYmxzUHVibGljS2V5ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuX2Jsc1NpZ25hdHVyZSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLl9zdGFydFRpbWUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5fZW5kVGltZSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLl9zdGFrZUFtb3VudCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLl9kZWxlZ2F0aW9uRmVlUmF0ZSA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBnZXQgdHJhbnNhY3Rpb24gdHlwZVxuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuQWRkUGVybWlzc2lvbmxlc3NWYWxpZGF0b3I7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBub2RlIElEIGZvciBwZXJtaXNzaW9ubGVzcyB2YWxpZGF0aW9uXG4gICAqIEBwYXJhbSBub2RlSUQgLSBUaGUgbm9kZSBJRFxuICAgKi9cbiAgbm9kZUlEKG5vZGVJRDogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKCFub2RlSUQgfHwgbm9kZUlELmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignTm9kZSBJRCBjYW5ub3QgYmUgZW1wdHknKTtcbiAgICB9XG4gICAgdGhpcy5fbm9kZUlEID0gbm9kZUlEO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgQkxTIHB1YmxpYyBrZXkgZm9yIHBlcm1pc3Npb25sZXNzIHZhbGlkYXRpb25cbiAgICogQHBhcmFtIGJsc1B1YmxpY0tleSAtIFRoZSBCTFMgcHVibGljIGtleVxuICAgKi9cbiAgYmxzUHVibGljS2V5KGJsc1B1YmxpY0tleTogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKCFibHNQdWJsaWNLZXkgfHwgYmxzUHVibGljS2V5Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignQkxTIHB1YmxpYyBrZXkgY2Fubm90IGJlIGVtcHR5Jyk7XG4gICAgfVxuXG4gICAgLy8gQkxTIHB1YmxpYyBrZXkgc2hvdWxkIGJlIDQ4IGJ5dGVzICg5NiBoZXggY2hhcmFjdGVycykgd2l0aCAweCBwcmVmaXggb3IgMTkyIGhleCBjaGFyYWN0ZXJzIHdpdGggMHggcHJlZml4IGZvciB1bmNvbXByZXNzZWRcbiAgICBpZiAoXG4gICAgICAhY3JlYXRlSGV4UmVnZXgoQkxTX1BVQkxJQ19LRVlfQ09NUFJFU1NFRF9MRU5HVEgsIHRydWUpLnRlc3QoYmxzUHVibGljS2V5KSAmJlxuICAgICAgIWNyZWF0ZUhleFJlZ2V4KEJMU19QVUJMSUNfS0VZX1VOQ09NUFJFU1NFRF9MRU5HVEgsIHRydWUpLnRlc3QoYmxzUHVibGljS2V5KVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBCTFMgcHVibGljIGtleSBmb3JtYXQnKTtcbiAgICB9XG5cbiAgICB0aGlzLl9ibHNQdWJsaWNLZXkgPSBibHNQdWJsaWNLZXk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBCTFMgc2lnbmF0dXJlIGZvciBwZXJtaXNzaW9ubGVzcyB2YWxpZGF0aW9uXG4gICAqIEBwYXJhbSBibHNTaWduYXR1cmUgLSBUaGUgQkxTIHNpZ25hdHVyZVxuICAgKi9cbiAgYmxzU2lnbmF0dXJlKGJsc1NpZ25hdHVyZTogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKCFibHNTaWduYXR1cmUgfHwgYmxzU2lnbmF0dXJlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignQkxTIHNpZ25hdHVyZSBjYW5ub3QgYmUgZW1wdHknKTtcbiAgICB9XG5cbiAgICAvLyBCTFMgc2lnbmF0dXJlIHNob3VsZCBiZSA5NiBieXRlcyAoMTkyIGhleCBjaGFyYWN0ZXJzKSB3aXRoIDB4IHByZWZpeFxuICAgIGlmICghY3JlYXRlSGV4UmVnZXgoQkxTX1NJR05BVFVSRV9MRU5HVEgsIHRydWUpLnRlc3QoYmxzU2lnbmF0dXJlKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBCTFMgc2lnbmF0dXJlIGZvcm1hdCcpO1xuICAgIH1cblxuICAgIHRoaXMuX2Jsc1NpZ25hdHVyZSA9IGJsc1NpZ25hdHVyZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHN0YXJ0IHRpbWUgZm9yIHZhbGlkYXRpb25cbiAgICogQHBhcmFtIHN0YXJ0VGltZSAtIFVuaXggdGltZXN0YW1wIGZvciB3aGVuIHZhbGlkYXRpb24gc3RhcnRzXG4gICAqL1xuICBzdGFydFRpbWUoc3RhcnRUaW1lOiBzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnQpOiB0aGlzIHtcbiAgICBjb25zdCB0aW1lID0gQmlnSW50KHN0YXJ0VGltZSk7XG4gICAgaWYgKHRpbWUgPCAwKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdTdGFydCB0aW1lIG11c3QgYmUgbm9uLW5lZ2F0aXZlJyk7XG4gICAgfVxuICAgIHRoaXMuX3N0YXJ0VGltZSA9IHRpbWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBlbmQgdGltZSBmb3IgdmFsaWRhdGlvblxuICAgKiBAcGFyYW0gZW5kVGltZSAtIFVuaXggdGltZXN0YW1wIGZvciB3aGVuIHZhbGlkYXRpb24gZW5kc1xuICAgKi9cbiAgZW5kVGltZShlbmRUaW1lOiBzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnQpOiB0aGlzIHtcbiAgICBjb25zdCB0aW1lID0gQmlnSW50KGVuZFRpbWUpO1xuICAgIGlmICh0aW1lIDw9IDApIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0VuZCB0aW1lIG11c3QgYmUgcG9zaXRpdmUnKTtcbiAgICB9XG4gICAgdGhpcy5fZW5kVGltZSA9IHRpbWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBzdGFrZSBhbW91bnQgZm9yIHZhbGlkYXRpb25cbiAgICogQHBhcmFtIGFtb3VudCAtIEFtb3VudCB0byBzdGFrZSAoaW4gbkZMUilcbiAgICovXG4gIHN0YWtlQW1vdW50KGFtb3VudDogc3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50KTogdGhpcyB7XG4gICAgY29uc3Qgc3Rha2UgPSBCaWdJbnQoYW1vdW50KTtcbiAgICBpZiAoc3Rha2UgPD0gMCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignU3Rha2UgYW1vdW50IG11c3QgYmUgcG9zaXRpdmUnKTtcbiAgICB9XG4gICAgdGhpcy5fc3Rha2VBbW91bnQgPSBzdGFrZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGRlbGVnYXRpb24gZmVlIHJhdGVcbiAgICogQHBhcmFtIHZhbHVlIC0gRGVsZWdhdGlvbiBmZWUgcmF0ZSBpbiBiYXNpcyBwb2ludHNcbiAgICovXG4gIGRlbGVnYXRpb25GZWVSYXRlKHZhbHVlOiBudW1iZXIpOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlRGVsZWdhdGlvbkZlZVJhdGUodmFsdWUpO1xuICAgIHRoaXMuX2RlbGVnYXRpb25GZWVSYXRlID0gdmFsdWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHJld2FyZCBhZGRyZXNzZXMgd2hlcmUgdmFsaWRhdGlvbiByZXdhcmRzIHNob3VsZCBiZSBzZW50XG4gICAqIEBwYXJhbSBhZGRyZXNzZXMgLSBBcnJheSBvZiByZXdhcmQgYWRkcmVzc2VzXG4gICAqL1xuICByZXdhcmRBZGRyZXNzZXMoYWRkcmVzc2VzOiBzdHJpbmdbXSk6IHRoaXMge1xuICAgIGlmICghYWRkcmVzc2VzIHx8IGFkZHJlc3Nlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0F0IGxlYXN0IG9uZSByZXdhcmQgYWRkcmVzcyBpcyByZXF1aXJlZCcpO1xuICAgIH1cbiAgICAvLyBTdG9yZSByZXdhcmQgYWRkcmVzc2VzIGluIHRoZSB0cmFuc2FjdGlvbiAod2UnbGwgbmVlZCB0byBleHRlbmQgdGhlIHR5cGUpXG4gICAgKHRoaXMudHJhbnNhY3Rpb24gYXMgdW5rbm93biBhcyBQZXJtaXNzaW9ubGVzc1ZhbGlkYXRvckV4dGVuZGVkVHJhbnNhY3Rpb24pLl9yZXdhcmRBZGRyZXNzZXMgPSBhZGRyZXNzZXM7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgdGhhdCB0aGUgZGVsZWdhdGlvbiBmZWUgaXMgYXQgbGVhc3QgdGhlIG1pbkRlbGVnYXRpb25GZWVcbiAgICogQHBhcmFtIGRlbGVnYXRpb25GZWVSYXRlIG51bWJlclxuICAgKi9cbiAgdmFsaWRhdGVEZWxlZ2F0aW9uRmVlUmF0ZShkZWxlZ2F0aW9uRmVlUmF0ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgLy8gRm9yIEZsYXJlLCB1c2UgYSBtaW5pbXVtIGRlbGVnYXRpb24gZmVlIG9mIDIlICgyMDAwMCBiYXNpcyBwb2ludHMpXG4gICAgY29uc3QgbWluRGVsZWdhdGlvbkZlZSA9IE1JTl9ERUxFR0FUSU9OX0ZFRV9CQVNJU19QT0lOVFM7XG4gICAgaWYgKGRlbGVnYXRpb25GZWVSYXRlIDwgbWluRGVsZWdhdGlvbkZlZSkge1xuICAgICAgY29uc3QgbWluRGVsZWdhdGlvbkZlZVBlcmNlbnQgPSAobWluRGVsZWdhdGlvbkZlZSAvIEJBU0lTX1BPSU5UU19ESVZJU09SKSAqIFBFUkNFTlRBR0VfTVVMVElQTElFUjtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoXG4gICAgICAgIGBEZWxlZ2F0aW9uIGZlZSBjYW5ub3QgYmUgbGVzcyB0aGFuICR7bWluRGVsZWdhdGlvbkZlZX0gYmFzaXMgcG9pbnRzICgke21pbkRlbGVnYXRpb25GZWVQZXJjZW50fSUpYFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaW5pdEJ1aWxkZXIodHg6IFR4KTogdGhpcyB7XG4gICAgLy8gRXh0cmFjdCBwZXJtaXNzaW9ubGVzcyB2YWxpZGF0b3Itc3BlY2lmaWMgZmllbGRzIGZyb20gdHJhbnNhY3Rpb25cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIGNvbnN0IHR4RGF0YSA9IHR4IGFzIGFueTtcblxuICAgIGlmICh0eERhdGEubm9kZUlEKSB7XG4gICAgICB0aGlzLl9ub2RlSUQgPSB0eERhdGEubm9kZUlEO1xuICAgIH1cbiAgICBpZiAodHhEYXRhLmJsc1B1YmxpY0tleSkge1xuICAgICAgdGhpcy5fYmxzUHVibGljS2V5ID0gdHhEYXRhLmJsc1B1YmxpY0tleTtcbiAgICB9XG4gICAgaWYgKHR4RGF0YS5ibHNTaWduYXR1cmUpIHtcbiAgICAgIHRoaXMuX2Jsc1NpZ25hdHVyZSA9IHR4RGF0YS5ibHNTaWduYXR1cmU7XG4gICAgfVxuICAgIGlmICh0eERhdGEuc3RhcnRUaW1lKSB7XG4gICAgICB0aGlzLl9zdGFydFRpbWUgPSBCaWdJbnQodHhEYXRhLnN0YXJ0VGltZSk7XG4gICAgfVxuICAgIGlmICh0eERhdGEuZW5kVGltZSkge1xuICAgICAgdGhpcy5fZW5kVGltZSA9IEJpZ0ludCh0eERhdGEuZW5kVGltZSk7XG4gICAgfVxuICAgIGlmICh0eERhdGEuc3Rha2VBbW91bnQpIHtcbiAgICAgIHRoaXMuX3N0YWtlQW1vdW50ID0gQmlnSW50KHR4RGF0YS5zdGFrZUFtb3VudCk7XG4gICAgfVxuICAgIGlmICh0eERhdGEuZGVsZWdhdGlvbkZlZVJhdGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fZGVsZWdhdGlvbkZlZVJhdGUgPSB0eERhdGEuZGVsZWdhdGlvbkZlZVJhdGU7XG4gICAgfVxuICAgIGlmICh0eERhdGEucmV3YXJkQWRkcmVzc2VzKSB7XG4gICAgICAodGhpcy50cmFuc2FjdGlvbiBhcyB1bmtub3duIGFzIFBlcm1pc3Npb25sZXNzVmFsaWRhdG9yRXh0ZW5kZWRUcmFuc2FjdGlvbikuX3Jld2FyZEFkZHJlc3NlcyA9XG4gICAgICAgIHR4RGF0YS5yZXdhcmRBZGRyZXNzZXM7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZ5IGlmIHRoZSB0cmFuc2FjdGlvbiBpcyBhIHBlcm1pc3Npb25sZXNzIHZhbGlkYXRvciB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gdHhcbiAgICovXG4gIHN0YXRpYyB2ZXJpZnlUeFR5cGUodHg6IHVua25vd24pOiBib29sZWFuIHtcbiAgICAvLyBDaGVjayBpZiB0cmFuc2FjdGlvbiBoYXMgcGVybWlzc2lvbmxlc3MgdmFsaWRhdG9yLXNwZWNpZmljIHByb3BlcnRpZXNcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIGNvbnN0IHR4RGF0YSA9IHR4IGFzIGFueTtcbiAgICByZXR1cm4gdHhEYXRhICYmIHR4RGF0YS5ibHNQdWJsaWNLZXkgJiYgdHhEYXRhLmJsc1NpZ25hdHVyZTtcbiAgfVxuXG4gIHZlcmlmeVR4VHlwZSh0eDogdW5rbm93bik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBQZXJtaXNzaW9ubGVzc1ZhbGlkYXRvclR4QnVpbGRlci52ZXJpZnlUeFR5cGUodHgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIHRoZSBwZXJtaXNzaW9ubGVzcyB2YWxpZGF0b3IgdHJhbnNhY3Rpb25cbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkRmxhcmVUcmFuc2FjdGlvbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBCYXNpYyB2YWxpZGF0aW9uXG4gICAgaWYgKCF0aGlzLl9ub2RlSUQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ05vZGUgSUQgaXMgcmVxdWlyZWQgZm9yIHBlcm1pc3Npb25sZXNzIHZhbGlkYXRvciB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuX2Jsc1B1YmxpY0tleSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignQkxTIHB1YmxpYyBrZXkgaXMgcmVxdWlyZWQgZm9yIHBlcm1pc3Npb25sZXNzIHZhbGlkYXRvciB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuX2Jsc1NpZ25hdHVyZSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignQkxTIHNpZ25hdHVyZSBpcyByZXF1aXJlZCBmb3IgcGVybWlzc2lvbmxlc3MgdmFsaWRhdG9yIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIGlmICghdGhpcy5fc3RhcnRUaW1lKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdTdGFydCB0aW1lIGlzIHJlcXVpcmVkIGZvciBwZXJtaXNzaW9ubGVzcyB2YWxpZGF0b3IgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLl9lbmRUaW1lKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdFbmQgdGltZSBpcyByZXF1aXJlZCBmb3IgcGVybWlzc2lvbmxlc3MgdmFsaWRhdG9yIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIGlmICghdGhpcy5fc3Rha2VBbW91bnQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1N0YWtlIGFtb3VudCBpcyByZXF1aXJlZCBmb3IgcGVybWlzc2lvbmxlc3MgdmFsaWRhdG9yIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9kZWxlZ2F0aW9uRmVlUmF0ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdEZWxlZ2F0aW9uIGZlZSByYXRlIGlzIHJlcXVpcmVkIGZvciBwZXJtaXNzaW9ubGVzcyB2YWxpZGF0b3IgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXdhcmRBZGRyZXNzZXMgPSAodGhpcy50cmFuc2FjdGlvbiBhcyB1bmtub3duIGFzIFBlcm1pc3Npb25sZXNzVmFsaWRhdG9yRXh0ZW5kZWRUcmFuc2FjdGlvbilcbiAgICAgIC5fcmV3YXJkQWRkcmVzc2VzO1xuICAgIGlmICghcmV3YXJkQWRkcmVzc2VzIHx8IHJld2FyZEFkZHJlc3Nlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1Jld2FyZCBhZGRyZXNzZXMgYXJlIHJlcXVpcmVkIGZvciBwZXJtaXNzaW9ubGVzcyB2YWxpZGF0b3IgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG5cbiAgICAvLyBWYWxpZGF0ZSB0aW1lIHJhbmdlXG4gICAgaWYgKHRoaXMuX2VuZFRpbWUgPD0gdGhpcy5fc3RhcnRUaW1lKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdFbmQgdGltZSBtdXN0IGJlIGFmdGVyIHN0YXJ0IHRpbWUnKTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgLy8gVE9ETzogSW1wbGVtZW50IGFjdHVhbCBGbGFyZUpTIFBWTSBBUEkgY2FsbCB3aGVuIGF2YWlsYWJsZVxuICAgICAgLy8gRm9yIG5vdywgY3JlYXRlIGEgcGxhY2Vob2xkZXIgdHJhbnNhY3Rpb24gc3RydWN0dXJlXG4gICAgICBjb25zdCB2YWxpZGF0b3JUeCA9IHtcbiAgICAgICAgdHlwZTogQUREX1BFUk1JU1NJT05MRVNTX1ZBTElEQVRPUl9UWVBFLFxuICAgICAgICBub2RlSUQ6IHRoaXMuX25vZGVJRCxcbiAgICAgICAgYmxzUHVibGljS2V5OiB0aGlzLl9ibHNQdWJsaWNLZXksXG4gICAgICAgIGJsc1NpZ25hdHVyZTogdGhpcy5fYmxzU2lnbmF0dXJlLFxuICAgICAgICBzdGFydFRpbWU6IHRoaXMuX3N0YXJ0VGltZSxcbiAgICAgICAgZW5kVGltZTogdGhpcy5fZW5kVGltZSxcbiAgICAgICAgc3Rha2VBbW91bnQ6IHRoaXMuX3N0YWtlQW1vdW50LFxuICAgICAgICBkZWxlZ2F0aW9uRmVlUmF0ZTogdGhpcy5fZGVsZWdhdGlvbkZlZVJhdGUsXG4gICAgICAgIHJld2FyZEFkZHJlc3M6IHJld2FyZEFkZHJlc3Nlc1swXSxcbiAgICAgICAgZnJvbUFkZHJlc3NlczogdGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3NlcyxcbiAgICAgICAgbmV0d29ya0lkOiB0aGlzLnRyYW5zYWN0aW9uLl9uZXR3b3JrSUQsXG4gICAgICAgIHNvdXJjZUJsb2NrY2hhaW5JZDogdGhpcy50cmFuc2FjdGlvbi5fYmxvY2tjaGFpbklELFxuICAgICAgICB0aHJlc2hvbGQ6IHRoaXMudHJhbnNhY3Rpb24uX3RocmVzaG9sZCB8fCAxLFxuICAgICAgICBsb2NrdGltZTogdGhpcy50cmFuc2FjdGlvbi5fbG9ja3RpbWUgfHwgMG4sXG4gICAgICB9O1xuXG4gICAgICB0aGlzLnRyYW5zYWN0aW9uLnNldFRyYW5zYWN0aW9uKHZhbGlkYXRvclR4KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgICAgYEZhaWxlZCB0byBidWlsZCBwZXJtaXNzaW9ubGVzcyB2YWxpZGF0b3IgdHJhbnNhY3Rpb246ICR7XG4gICAgICAgICAgZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnVW5rbm93biBlcnJvcidcbiAgICAgICAgfWBcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
134
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbmxlc3NWYWxpZGF0b3JUeEJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3Blcm1pc3Npb25sZXNzVmFsaWRhdG9yVHhCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG1EQUF5RTtBQUN6RSw4Q0FBbUg7QUFLbkgsNkRBQTBEO0FBQzFELG9EQUE0QjtBQUU1QixNQUFhLGdDQUFpQyxTQUFRLHVDQUFrQjtJQVd0RSxZQUFZLFVBQWdDO1FBQzFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQVhiLFlBQU8sR0FBYyxFQUFFLENBQUM7UUFPckIsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFLOUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztJQUM5RCxDQUFDO0lBRUQsSUFBYyxlQUFlO1FBQzNCLE9BQU8sMEJBQWUsQ0FBQywwQkFBMEIsQ0FBQztJQUNwRCxDQUFDO0lBRUQscUJBQXFCO0lBQ3JCLGdCQUFnQixDQUFDLFFBQWdCO1FBQy9CLElBQUksUUFBUSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3pCLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxtREFBbUQsQ0FBQyxDQUFDO1FBQ3ZGLENBQUM7SUFDSCxDQUFDO0lBRUQseUJBQXlCLENBQUMsaUJBQXlCO1FBQ2pELElBQUksaUJBQWlCLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztZQUMzRSxNQUFNLElBQUksZ0NBQXFCLENBQzdCLHNDQUFzQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxDQUNuRixDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFRCxZQUFZLENBQUMsS0FBcUI7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QixDQUFDO0lBRUQ7OztPQUdHO0lBQ08scUJBQXFCO1FBQzdCLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFpQjtRQUNuQyxPQUFPLElBQUksS0FBSyxxQkFBVyxDQUFDLDRCQUE0QixDQUFDO0lBQzNELENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsSUFBYyxXQUFXO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBYyxXQUFXLENBQUMsV0FBd0I7UUFDaEQsSUFBSSxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUM7SUFDbEMsQ0FBQztDQUNGO0FBdkpELDRFQXVKQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHV0aWxzIGFzIEZsYXJlVXRpbHMsIFR5cGVTeW1ib2xzIH0gZnJvbSAnQGZsYXJlbmV0d29yay9mbGFyZWpzJztcbmltcG9ydCB7IEJ1aWxkVHJhbnNhY3Rpb25FcnJvciwgaXNWYWxpZEJMU1B1YmxpY0tleSwgaXNWYWxpZEJMU1NpZ25hdHVyZSwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBEZWNvZGVkVXR4b09iaiB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgS2V5UGFpciB9IGZyb20gJy4va2V5UGFpcic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgUGVybWlzc2lvbmxlc3NWYWxpZGF0b3JUeEJ1aWxkZXIgZXh0ZW5kcyBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwdWJsaWMgX3NpZ25lcjogS2V5UGFpcltdID0gW107XG4gIHByb3RlY3RlZCBfbm9kZUlEOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfYmxzUHVibGljS2V5OiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfYmxzU2lnbmF0dXJlOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfc3RhcnRUaW1lOiBiaWdpbnQ7XG4gIHByb3RlY3RlZCBfZW5kVGltZTogYmlnaW50O1xuICBwcm90ZWN0ZWQgX3N0YWtlQW1vdW50OiBiaWdpbnQ7XG4gIHByb3RlY3RlZCByZWNvdmVyU2lnbmVyID0gZmFsc2U7XG4gIHByb3RlY3RlZCBfZGVsZWdhdGlvbkZlZVJhdGU6IG51bWJlcjtcblxuICBjb25zdHJ1Y3Rvcihjb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKGNvaW5Db25maWcpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uX2ZlZS5mZWUgPSB0aGlzLnRyYW5zYWN0aW9uLl9uZXR3b3JrLnR4RmVlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvblR5cGUoKTogVHJhbnNhY3Rpb25UeXBlIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLkFkZFBlcm1pc3Npb25sZXNzVmFsaWRhdG9yO1xuICB9XG5cbiAgLy8gVmFsaWRhdGlvbiBtZXRob2RzXG4gIHZhbGlkYXRlTG9ja3RpbWUobG9ja3RpbWU6IGJpZ2ludCk6IHZvaWQge1xuICAgIGlmIChsb2NrdGltZSA8IEJpZ0ludCgwKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogbG9ja3RpbWUgbXVzdCBiZSAwIG9yIGhpZ2hlcicpO1xuICAgIH1cbiAgfVxuXG4gIHZhbGlkYXRlRGVsZWdhdGlvbkZlZVJhdGUoZGVsZWdhdGlvbkZlZVJhdGU6IG51bWJlcik6IHZvaWQge1xuICAgIGlmIChkZWxlZ2F0aW9uRmVlUmF0ZSA8IE51bWJlcih0aGlzLnRyYW5zYWN0aW9uLl9uZXR3b3JrLm1pbkRlbGVnYXRpb25GZWUpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKFxuICAgICAgICBgRGVsZWdhdGlvbiBmZWUgY2Fubm90IGJlIGxlc3MgdGhhbiAke3RoaXMudHJhbnNhY3Rpb24uX25ldHdvcmsubWluRGVsZWdhdGlvbkZlZX1gXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHZhbGlkYXRlVXR4byh2YWx1ZTogRGVjb2RlZFV0eG9PYmopOiB2b2lkIHtcbiAgICBbJ291dHB1dElEJywgJ2Ftb3VudCcsICd0eGlkJywgJ291dHB1dGlkeCddLmZvckVhY2goKGZpZWxkKSA9PiB7XG4gICAgICBpZiAoIXZhbHVlLmhhc093blByb3BlcnR5KGZpZWxkKSkgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgVXR4b3MgcmVxdWlyZWQgJHtmaWVsZH1gKTtcbiAgICB9KTtcbiAgfVxuXG4gIHZhbGlkYXRlTm9kZUlEKG5vZGVJRDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCFub2RlSUQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IG1pc3Npbmcgbm9kZUlEJyk7XG4gICAgfVxuICAgIGlmIChub2RlSUQuc2xpY2UoMCwgNikgIT09ICdOb2RlSUQnKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiBpbnZhbGlkIE5vZGVJRCB0YWcnKTtcbiAgICB9XG4gICAgaWYgKCEoRmxhcmVVdGlscy5iYXNlNTguZGVjb2RlKG5vZGVJRC5zbGljZSg3KSkubGVuZ3RoID09PSAyNCkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IE5vZGVJRCBpcyBub3QgaW4gY2I1OCBmb3JtYXQnKTtcbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZVN0YWtlRHVyYXRpb24oc3RhcnRUaW1lOiBiaWdpbnQsIGVuZFRpbWU6IGJpZ2ludCk6IHZvaWQge1xuICAgIGlmIChlbmRUaW1lIDwgc3RhcnRUaW1lKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdFbmQgZGF0ZSBjYW5ub3QgYmUgbGVzcyB0aGFuIHN0YXJ0IGRhdGUnKTtcbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZVN0YWtlQW1vdW50KGFtb3VudDogYmlnaW50KTogdm9pZCB7XG4gICAgY29uc3QgbWluU3Rha2UgPSBCaWdJbnQodGhpcy50cmFuc2FjdGlvbi5fbmV0d29yay5taW5TdGFrZSk7XG4gICAgaWYgKGFtb3VudCA8IG1pblN0YWtlKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdNaW5pbXVtIHN0YWtpbmcgYW1vdW50IGlzICcgKyBOdW1iZXIobWluU3Rha2UpIC8gMTAwMDAwMDAwMCArICcgRkxSLicpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEJ1aWxkZXIgbWV0aG9kc1xuICByZXdhcmRBZGRyZXNzZXMoYWRkcmVzczogc3RyaW5nIHwgc3RyaW5nW10pOiB0aGlzIHtcbiAgICBjb25zdCByZXdhcmRBZGRyZXNzZXMgPSBhZGRyZXNzIGluc3RhbmNlb2YgQXJyYXkgPyBhZGRyZXNzIDogW2FkZHJlc3NdO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uX3Jld2FyZEFkZHJlc3NlcyA9IHJld2FyZEFkZHJlc3Nlcy5tYXAodXRpbHMucGFyc2VBZGRyZXNzKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIG5vZGVJRChub2RlSUQ6IHN0cmluZyk6IHRoaXMge1xuICAgIHRoaXMudmFsaWRhdGVOb2RlSUQobm9kZUlEKTtcbiAgICB0aGlzLl9ub2RlSUQgPSBub2RlSUQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBibHNQdWJsaWNLZXkoYmxzUHVibGljS2V5OiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpc1ZhbGlkQkxTUHVibGljS2V5KGJsc1B1YmxpY0tleSk7XG4gICAgdGhpcy5fYmxzUHVibGljS2V5ID0gYmxzUHVibGljS2V5O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgYmxzU2lnbmF0dXJlKGJsc1NpZ25hdHVyZTogc3RyaW5nKTogdGhpcyB7XG4gICAgaXNWYWxpZEJMU1NpZ25hdHVyZShibHNTaWduYXR1cmUpO1xuICAgIHRoaXMuX2Jsc1NpZ25hdHVyZSA9IGJsc1NpZ25hdHVyZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGxvY2t0aW1lKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlTG9ja3RpbWUoQmlnSW50KHZhbHVlKSk7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24uX2xvY2t0aW1lID0gQmlnSW50KHZhbHVlKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGRlbGVnYXRpb25GZWVSYXRlKHZhbHVlOiBudW1iZXIpOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlRGVsZWdhdGlvbkZlZVJhdGUodmFsdWUpO1xuICAgIHRoaXMuX2RlbGVnYXRpb25GZWVSYXRlID0gdmFsdWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzdGFydFRpbWUodmFsdWU6IHN0cmluZyB8IG51bWJlcik6IHRoaXMge1xuICAgIHRoaXMuX3N0YXJ0VGltZSA9IEJpZ0ludCh2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBlbmRUaW1lKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpOiB0aGlzIHtcbiAgICB0aGlzLl9lbmRUaW1lID0gQmlnSW50KHZhbHVlKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHN0YWtlQW1vdW50KHZhbHVlOiBiaWdpbnQgfCBzdHJpbmcpOiB0aGlzIHtcbiAgICBjb25zdCB2YWx1ZUJpZ0ludCA9IHR5cGVvZiB2YWx1ZSA9PT0gJ2JpZ2ludCcgPyB2YWx1ZSA6IEJpZ0ludCh2YWx1ZSk7XG4gICAgdGhpcy52YWxpZGF0ZVN0YWtlQW1vdW50KHZhbHVlQmlnSW50KTtcbiAgICB0aGlzLl9zdGFrZUFtb3VudCA9IHZhbHVlQmlnSW50O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkSW1wbGVtZW50YXRpb24oKTogUHJvbWlzZTxUcmFuc2FjdGlvbj4ge1xuICAgIHRoaXMuYnVpbGRGbGFyZVRyYW5zYWN0aW9uKCk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5zZXRUcmFuc2FjdGlvblR5cGUodGhpcy50cmFuc2FjdGlvblR5cGUpO1xuICAgIGlmICh0aGlzLmhhc1NpZ25lcigpKSB7XG4gICAgICBmb3IgKGNvbnN0IGtleVBhaXIgb2YgdGhpcy5fc2lnbmVyKSB7XG4gICAgICAgIGF3YWl0IHRoaXMudHJhbnNhY3Rpb24uc2lnbihrZXlQYWlyKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgdGhlIHBlcm1pc3Npb25sZXNzIHZhbGlkYXRvciB0cmFuc2FjdGlvblxuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgYnVpbGRGbGFyZVRyYW5zYWN0aW9uKCk6IHZvaWQge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIHN0YXRpYyB2ZXJpZnlUeFR5cGUodHlwZTogVHlwZVN5bWJvbHMpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZSA9PT0gVHlwZVN5bWJvbHMuQWRkUGVybWlzc2lvbmxlc3NWYWxpZGF0b3JUeDtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uKCk6IFRyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb247XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0IHRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbikge1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gdHJhbnNhY3Rpb247XG4gIH1cbn1cbiJdfQ==
|
|
@@ -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,30 @@ 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;
|
|
42
|
+
get outputs(): Entry[];
|
|
96
43
|
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
|
-
/**
|
|
105
|
-
* Check if transaction is for C-chain (cross-chain)
|
|
106
|
-
*/
|
|
107
|
-
get isTransactionForCChain(): boolean;
|
|
108
|
-
/** @inheritdoc */
|
|
109
44
|
explainTransaction(): TransactionExplanation;
|
|
110
45
|
}
|
|
111
46
|
//# 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,EAMX,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC7E,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,IAAI,OAAO,IAAI,KAAK,EAAE,CAgBrB;IAED,IAAI,aAAa,IAAI,KAAK,EAAE,CAI3B;IAED,kBAAkB,IAAI,sBAAsB;CA0B7C"}
|