@bitgo-beta/sdk-coin-flrp 1.0.0-alpha.39 → 1.0.0-alpha.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/flrp.d.ts +9 -16
- package/dist/src/flrp.d.ts.map +1 -1
- package/dist/src/flrp.js +49 -75
- package/dist/src/index.d.ts +0 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -2
- package/dist/src/lib/ExportInCTxBuilder.d.ts +51 -0
- package/dist/src/lib/ExportInCTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/ExportInCTxBuilder.js +188 -0
- package/dist/src/lib/ExportInPTxBuilder.d.ts +47 -0
- package/dist/src/lib/ExportInPTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/ExportInPTxBuilder.js +273 -0
- package/dist/src/lib/ImportInCTxBuilder.d.ts +48 -0
- package/dist/src/lib/ImportInCTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/ImportInCTxBuilder.js +215 -0
- package/dist/src/lib/ImportInPTxBuilder.d.ts +33 -0
- package/dist/src/lib/ImportInPTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/ImportInPTxBuilder.js +180 -0
- package/dist/src/lib/atomicInCTransactionBuilder.d.ts +18 -16
- package/dist/src/lib/atomicInCTransactionBuilder.d.ts.map +1 -1
- package/dist/src/lib/atomicInCTransactionBuilder.js +38 -36
- package/dist/src/lib/atomicTransactionBuilder.d.ts +42 -79
- package/dist/src/lib/atomicTransactionBuilder.d.ts.map +1 -1
- package/dist/src/lib/atomicTransactionBuilder.js +138 -281
- package/dist/src/lib/iface.d.ts +38 -61
- package/dist/src/lib/iface.d.ts.map +1 -1
- package/dist/src/lib/iface.js +13 -14
- package/dist/src/lib/index.d.ts +3 -3
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +8 -7
- package/dist/src/lib/keyPair.d.ts +1 -1
- package/dist/src/lib/keyPair.d.ts.map +1 -1
- package/dist/src/lib/keyPair.js +9 -5
- package/dist/src/lib/permissionlessValidatorTxBuilder.d.ts +29 -67
- package/dist/src/lib/permissionlessValidatorTxBuilder.d.ts.map +1 -1
- package/dist/src/lib/permissionlessValidatorTxBuilder.js +89 -205
- package/dist/src/lib/transaction.d.ts +11 -71
- package/dist/src/lib/transaction.d.ts.map +1 -1
- package/dist/src/lib/transaction.js +255 -204
- package/dist/src/lib/transactionBuilder.d.ts +56 -34
- package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilder.js +113 -70
- package/dist/src/lib/transactionBuilderFactory.d.ts +50 -30
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilderFactory.js +129 -72
- package/dist/src/lib/utils.d.ts +67 -153
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +178 -397
- package/dist/test/resources/account.d.ts +2 -0
- package/dist/test/resources/account.d.ts.map +1 -1
- package/dist/test/resources/account.js +3 -1
- package/dist/test/resources/transactionData/exportInC.d.ts +20 -0
- package/dist/test/resources/transactionData/exportInC.d.ts.map +1 -0
- package/dist/test/resources/transactionData/exportInC.js +34 -0
- package/dist/test/resources/transactionData/exportInP.d.ts +69 -0
- package/dist/test/resources/transactionData/exportInP.d.ts.map +1 -0
- package/dist/test/resources/transactionData/exportInP.js +140 -0
- package/dist/test/resources/transactionData/importInC.d.ts +27 -0
- package/dist/test/resources/transactionData/importInC.d.ts.map +1 -0
- package/dist/test/resources/transactionData/importInC.js +44 -0
- package/dist/test/resources/transactionData/importInP.d.ts +35 -0
- package/dist/test/resources/transactionData/importInP.d.ts.map +1 -0
- package/dist/test/resources/transactionData/importInP.js +58 -0
- package/dist/test/unit/flrp.js +449 -68
- package/dist/test/unit/lib/exportInCTxBuilder.js +95 -513
- package/dist/test/unit/lib/exportInPTxBuilder.d.ts +1 -1
- package/dist/test/unit/lib/exportInPTxBuilder.d.ts.map +1 -1
- package/dist/test/unit/lib/exportInPTxBuilder.js +110 -366
- package/dist/test/unit/lib/importInCTxBuilder.d.ts +1 -1
- package/dist/test/unit/lib/importInCTxBuilder.d.ts.map +1 -1
- package/dist/test/unit/lib/importInCTxBuilder.js +40 -251
- package/dist/test/unit/lib/importInPTxBuilder.d.ts +1 -1
- package/dist/test/unit/lib/importInPTxBuilder.d.ts.map +1 -1
- package/dist/test/unit/lib/importInPTxBuilder.js +61 -489
- package/dist/test/unit/lib/signFlowTestSuit.d.ts +20 -0
- package/dist/test/unit/lib/signFlowTestSuit.d.ts.map +1 -0
- package/dist/test/unit/lib/signFlowTestSuit.js +89 -0
- package/dist/test/unit/lib/utils.js +367 -279
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +12 -9
- package/dist/src/iface.d.ts +0 -25
- package/dist/src/iface.d.ts.map +0 -1
- package/dist/src/iface.js +0 -3
- package/dist/src/lib/constants.d.ts +0 -170
- package/dist/src/lib/constants.d.ts.map +0 -1
- package/dist/src/lib/constants.js +0 -227
- package/dist/src/lib/delegatorTxBuilder.d.ts +0 -58
- package/dist/src/lib/delegatorTxBuilder.d.ts.map +0 -1
- package/dist/src/lib/delegatorTxBuilder.js +0 -224
- package/dist/src/lib/errors.d.ts +0 -8
- package/dist/src/lib/errors.d.ts.map +0 -1
- package/dist/src/lib/errors.js +0 -19
- package/dist/src/lib/exportInCTxBuilder.d.ts +0 -77
- package/dist/src/lib/exportInCTxBuilder.d.ts.map +0 -1
- package/dist/src/lib/exportInCTxBuilder.js +0 -199
- package/dist/src/lib/exportInPTxBuilder.d.ts +0 -30
- package/dist/src/lib/exportInPTxBuilder.d.ts.map +0 -1
- package/dist/src/lib/exportInPTxBuilder.js +0 -120
- package/dist/src/lib/importInCTxBuilder.d.ts +0 -67
- package/dist/src/lib/importInCTxBuilder.d.ts.map +0 -1
- package/dist/src/lib/importInCTxBuilder.js +0 -403
- package/dist/src/lib/importInPTxBuilder.d.ts +0 -73
- package/dist/src/lib/importInPTxBuilder.d.ts.map +0 -1
- package/dist/src/lib/importInPTxBuilder.js +0 -464
- package/dist/src/lib/types.d.ts +0 -78
- package/dist/src/lib/types.d.ts.map +0 -1
- package/dist/src/lib/types.js +0 -5
- package/dist/src/lib/validatorTxBuilder.d.ts +0 -40
- package/dist/src/lib/validatorTxBuilder.d.ts.map +0 -1
- package/dist/src/lib/validatorTxBuilder.js +0 -180
- package/dist/test/unit/delegatorTxBuilder.test.d.ts +0 -2
- package/dist/test/unit/delegatorTxBuilder.test.d.ts.map +0 -1
- package/dist/test/unit/delegatorTxBuilder.test.js +0 -233
- package/dist/test/unit/lib/atomicTransactionBuilder.d.ts +0 -2
- package/dist/test/unit/lib/atomicTransactionBuilder.d.ts.map +0 -1
- package/dist/test/unit/lib/atomicTransactionBuilder.js +0 -222
- package/dist/test/unit/lib/transaction.d.ts +0 -2
- package/dist/test/unit/lib/transaction.d.ts.map +0 -1
- package/dist/test/unit/lib/transaction.js +0 -460
- package/dist/test/unit/permissionlessValidatorTxBuilder.test.d.ts +0 -2
- package/dist/test/unit/permissionlessValidatorTxBuilder.test.d.ts.map +0 -1
- package/dist/test/unit/permissionlessValidatorTxBuilder.test.js +0 -271
- package/dist/test/unit/smoke.d.ts +0 -2
- package/dist/test/unit/smoke.d.ts.map +0 -1
- package/dist/test/unit/smoke.js +0 -23
- package/dist/test/unit/transactionBuilder.test.d.ts +0 -2
- package/dist/test/unit/transactionBuilder.test.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder.test.js +0 -114
- package/dist/test/unit/validatorTxBuilder.test.d.ts +0 -2
- package/dist/test/unit/validatorTxBuilder.test.d.ts.map +0 -1
- package/dist/test/unit/validatorTxBuilder.test.js +0 -293
|
@@ -1,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-beta/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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbmxlc3NWYWxpZGF0b3JUeEJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3Blcm1pc3Npb25sZXNzVmFsaWRhdG9yVHhCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1EQUE4RTtBQUU5RSx5RUFBc0U7QUFHdEUsMkNBUXFCO0FBQ3JCLG1DQUF5QztBQUV6QyxNQUFhLGdDQUFpQyxTQUFRLG1EQUF3QjtJQVM1RTs7T0FFRztJQUNILFlBQVksVUFBZ0M7UUFDMUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO1FBQy9CLElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO1FBQy9CLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO1FBQzVCLElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDO1FBQzFCLElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDO1FBQzlCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxTQUFTLENBQUM7SUFDdEMsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQWMsZUFBZTtRQUMzQixPQUFPLDBCQUFlLENBQUMsMEJBQTBCLENBQUM7SUFDcEQsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxNQUFjO1FBQ25CLElBQUksQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNuQyxNQUFNLElBQUksZ0NBQXFCLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUM3RCxDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsWUFBWSxDQUFDLFlBQW9CO1FBQy9CLElB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SUFBSSxDQUFDLGFBQWE7Z0JBQ2hDLFlBQVksRUFBRSxJQUFJLENBQUMsYUFBYTtnQkFDaEMsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVO2dCQUMxQixPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVE7Z0JBQ3RCLFdBQVcsRUFBRSxJQUFJLENBQUMsWUFBWTtnQkFDOUIsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjtnQkFDMUMsYUFBYSxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pDLGFBQWEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWM7Z0JBQzlDLFNBQVMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVU7Z0JBQ3RDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYTtnQkFDbEQsU0FBUyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxJQUFJLENBQUM7Z0JBQzNDLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsSUFBSSxFQUFFO2FBQzNDLENBQUM7WUFFRixJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMvQyxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE1BQU0sSUFBSSxnQ0FBcUIsQ0FDN0IseURBQ0UsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsZUFDM0MsRUFBRSxDQUNILENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBclJELDRFQXFSQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJ1aWxkVHJhbnNhY3Rpb25FcnJvciwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgQXRvbWljVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi9hdG9taWNUcmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgVHggfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IFBlcm1pc3Npb25sZXNzVmFsaWRhdG9yRXh0ZW5kZWRUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHtcbiAgQUREX1BFUk1JU1NJT05MRVNTX1ZBTElEQVRPUl9UWVBFLFxuICBCQVNJU19QT0lOVFNfRElWSVNPUixcbiAgQkxTX1BVQkxJQ19LRVlfQ09NUFJFU1NFRF9MRU5HVEgsXG4gIEJMU19QVUJMSUNfS0VZX1VOQ09NUFJFU1NFRF9MRU5HVEgsXG4gIEJMU19TSUdOQVRVUkVfTEVOR1RILFxuICBNSU5fREVMRUdBVElPTl9GRUVfQkFTSVNfUE9JTlRTLFxuICBQRVJDRU5UQUdFX01VTFRJUExJRVIsXG59IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IGNyZWF0ZUhleFJlZ2V4IH0gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBQZXJtaXNzaW9ubGVzc1ZhbGlkYXRvclR4QnVpbGRlciBleHRlbmRzIEF0b21pY1RyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByb3RlY3RlZCBfbm9kZUlEOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHByb3RlY3RlZCBfYmxzUHVibGljS2V5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHByb3RlY3RlZCBfYmxzU2lnbmF0dXJlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHByb3RlY3RlZCBfc3RhcnRUaW1lOiBiaWdpbnQgfCB1bmRlZmluZWQ7XG4gIHByb3RlY3RlZCBfZW5kVGltZTogYmlnaW50IHwgdW5kZWZpbmVkO1xuICBwcm90ZWN0ZWQgX3N0YWtlQW1vdW50OiBiaWdpbnQgfCB1bmRlZmluZWQ7XG4gIHByb3RlY3RlZCBfZGVsZWdhdGlvbkZlZVJhdGU6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogQHBhcmFtIGNvaW5Db25maWdcbiAgICovXG4gIGNvbnN0cnVjdG9yKGNvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fbm9kZUlEID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuX2Jsc1B1YmxpY0tleSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLl9ibHNTaWduYXR1cmUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5fc3RhcnRUaW1lID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuX2VuZFRpbWUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5fc3Rha2VBbW91bnQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5fZGVsZWdhdGlvbkZlZVJhdGUgPSB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogZ2V0IHRyYW5zYWN0aW9uIHR5cGVcbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvblR5cGUoKTogVHJhbnNhY3Rpb25UeXBlIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLkFkZFBlcm1pc3Npb25sZXNzVmFsaWRhdG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgbm9kZSBJRCBmb3IgcGVybWlzc2lvbmxlc3MgdmFsaWRhdGlvblxuICAgKiBAcGFyYW0gbm9kZUlEIC0gVGhlIG5vZGUgSURcbiAgICovXG4gIG5vZGVJRChub2RlSUQ6IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICghbm9kZUlEIHx8IG5vZGVJRC5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ05vZGUgSUQgY2Fubm90IGJlIGVtcHR5Jyk7XG4gICAgfVxuICAgIHRoaXMuX25vZGVJRCA9IG5vZGVJRDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIEJMUyBwdWJsaWMga2V5IGZvciBwZXJtaXNzaW9ubGVzcyB2YWxpZGF0aW9uXG4gICAqIEBwYXJhbSBibHNQdWJsaWNLZXkgLSBUaGUgQkxTIHB1YmxpYyBrZXlcbiAgICovXG4gIGJsc1B1YmxpY0tleShibHNQdWJsaWNLZXk6IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICghYmxzUHVibGljS2V5IHx8IGJsc1B1YmxpY0tleS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0JMUyBwdWJsaWMga2V5IGNhbm5vdCBiZSBlbXB0eScpO1xuICAgIH1cblxuICAgIC8vIEJMUyBwdWJsaWMga2V5IHNob3VsZCBiZSA0OCBieXRlcyAoOTYgaGV4IGNoYXJhY3RlcnMpIHdpdGggMHggcHJlZml4IG9yIDE5MiBoZXggY2hhcmFjdGVycyB3aXRoIDB4IHByZWZpeCBmb3IgdW5jb21wcmVzc2VkXG4gICAgaWYgKFxuICAgICAgIWNyZWF0ZUhleFJlZ2V4KEJMU19QVUJMSUNfS0VZX0NPTVBSRVNTRURfTEVOR1RILCB0cnVlKS50ZXN0KGJsc1B1YmxpY0tleSkgJiZcbiAgICAgICFjcmVhdGVIZXhSZWdleChCTFNfUFVCTElDX0tFWV9VTkNPTVBSRVNTRURfTEVOR1RILCB0cnVlKS50ZXN0KGJsc1B1YmxpY0tleSlcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgQkxTIHB1YmxpYyBrZXkgZm9ybWF0Jyk7XG4gICAgfVxuXG4gICAgdGhpcy5fYmxzUHVibGljS2V5ID0gYmxzUHVibGljS2V5O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgQkxTIHNpZ25hdHVyZSBmb3IgcGVybWlzc2lvbmxlc3MgdmFsaWRhdGlvblxuICAgKiBAcGFyYW0gYmxzU2lnbmF0dXJlIC0gVGhlIEJMUyBzaWduYXR1cmVcbiAgICovXG4gIGJsc1NpZ25hdHVyZShibHNTaWduYXR1cmU6IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICghYmxzU2lnbmF0dXJlIHx8IGJsc1NpZ25hdHVyZS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0JMUyBzaWduYXR1cmUgY2Fubm90IGJlIGVtcHR5Jyk7XG4gICAgfVxuXG4gICAgLy8gQkxTIHNpZ25hdHVyZSBzaG91bGQgYmUgOTYgYnl0ZXMgKDE5MiBoZXggY2hhcmFjdGVycykgd2l0aCAweCBwcmVmaXhcbiAgICBpZiAoIWNyZWF0ZUhleFJlZ2V4KEJMU19TSUdOQVRVUkVfTEVOR1RILCB0cnVlKS50ZXN0KGJsc1NpZ25hdHVyZSkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgQkxTIHNpZ25hdHVyZSBmb3JtYXQnKTtcbiAgICB9XG5cbiAgICB0aGlzLl9ibHNTaWduYXR1cmUgPSBibHNTaWduYXR1cmU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBzdGFydCB0aW1lIGZvciB2YWxpZGF0aW9uXG4gICAqIEBwYXJhbSBzdGFydFRpbWUgLSBVbml4IHRpbWVzdGFtcCBmb3Igd2hlbiB2YWxpZGF0aW9uIHN0YXJ0c1xuICAgKi9cbiAgc3RhcnRUaW1lKHN0YXJ0VGltZTogc3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50KTogdGhpcyB7XG4gICAgY29uc3QgdGltZSA9IEJpZ0ludChzdGFydFRpbWUpO1xuICAgIGlmICh0aW1lIDwgMCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignU3RhcnQgdGltZSBtdXN0IGJlIG5vbi1uZWdhdGl2ZScpO1xuICAgIH1cbiAgICB0aGlzLl9zdGFydFRpbWUgPSB0aW1lO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgZW5kIHRpbWUgZm9yIHZhbGlkYXRpb25cbiAgICogQHBhcmFtIGVuZFRpbWUgLSBVbml4IHRpbWVzdGFtcCBmb3Igd2hlbiB2YWxpZGF0aW9uIGVuZHNcbiAgICovXG4gIGVuZFRpbWUoZW5kVGltZTogc3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50KTogdGhpcyB7XG4gICAgY29uc3QgdGltZSA9IEJpZ0ludChlbmRUaW1lKTtcbiAgICBpZiAodGltZSA8PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdFbmQgdGltZSBtdXN0IGJlIHBvc2l0aXZlJyk7XG4gICAgfVxuICAgIHRoaXMuX2VuZFRpbWUgPSB0aW1lO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgc3Rha2UgYW1vdW50IGZvciB2YWxpZGF0aW9uXG4gICAqIEBwYXJhbSBhbW91bnQgLSBBbW91bnQgdG8gc3Rha2UgKGluIG5GTFIpXG4gICAqL1xuICBzdGFrZUFtb3VudChhbW91bnQ6IHN0cmluZyB8IG51bWJlciB8IGJpZ2ludCk6IHRoaXMge1xuICAgIGNvbnN0IHN0YWtlID0gQmlnSW50KGFtb3VudCk7XG4gICAgaWYgKHN0YWtlIDw9IDApIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1N0YWtlIGFtb3VudCBtdXN0IGJlIHBvc2l0aXZlJyk7XG4gICAgfVxuICAgIHRoaXMuX3N0YWtlQW1vdW50ID0gc3Rha2U7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBkZWxlZ2F0aW9uIGZlZSByYXRlXG4gICAqIEBwYXJhbSB2YWx1ZSAtIERlbGVnYXRpb24gZmVlIHJhdGUgaW4gYmFzaXMgcG9pbnRzXG4gICAqL1xuICBkZWxlZ2F0aW9uRmVlUmF0ZSh2YWx1ZTogbnVtYmVyKTogdGhpcyB7XG4gICAgdGhpcy52YWxpZGF0ZURlbGVnYXRpb25GZWVSYXRlKHZhbHVlKTtcbiAgICB0aGlzLl9kZWxlZ2F0aW9uRmVlUmF0ZSA9IHZhbHVlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCByZXdhcmQgYWRkcmVzc2VzIHdoZXJlIHZhbGlkYXRpb24gcmV3YXJkcyBzaG91bGQgYmUgc2VudFxuICAgKiBAcGFyYW0gYWRkcmVzc2VzIC0gQXJyYXkgb2YgcmV3YXJkIGFkZHJlc3Nlc1xuICAgKi9cbiAgcmV3YXJkQWRkcmVzc2VzKGFkZHJlc3Nlczogc3RyaW5nW10pOiB0aGlzIHtcbiAgICBpZiAoIWFkZHJlc3NlcyB8fCBhZGRyZXNzZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdBdCBsZWFzdCBvbmUgcmV3YXJkIGFkZHJlc3MgaXMgcmVxdWlyZWQnKTtcbiAgICB9XG4gICAgLy8gU3RvcmUgcmV3YXJkIGFkZHJlc3NlcyBpbiB0aGUgdHJhbnNhY3Rpb24gKHdlJ2xsIG5lZWQgdG8gZXh0ZW5kIHRoZSB0eXBlKVxuICAgICh0aGlzLnRyYW5zYWN0aW9uIGFzIHVua25vd24gYXMgUGVybWlzc2lvbmxlc3NWYWxpZGF0b3JFeHRlbmRlZFRyYW5zYWN0aW9uKS5fcmV3YXJkQWRkcmVzc2VzID0gYWRkcmVzc2VzO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIHRoYXQgdGhlIGRlbGVnYXRpb24gZmVlIGlzIGF0IGxlYXN0IHRoZSBtaW5EZWxlZ2F0aW9uRmVlXG4gICAqIEBwYXJhbSBkZWxlZ2F0aW9uRmVlUmF0ZSBudW1iZXJcbiAgICovXG4gIHZhbGlkYXRlRGVsZWdhdGlvbkZlZVJhdGUoZGVsZWdhdGlvbkZlZVJhdGU6IG51bWJlcik6IHZvaWQge1xuICAgIC8vIEZvciBGbGFyZSwgdXNlIGEgbWluaW11bSBkZWxlZ2F0aW9uIGZlZSBvZiAyJSAoMjAwMDAgYmFzaXMgcG9pbnRzKVxuICAgIGNvbnN0IG1pbkRlbGVnYXRpb25GZWUgPSBNSU5fREVMRUdBVElPTl9GRUVfQkFTSVNfUE9JTlRTO1xuICAgIGlmIChkZWxlZ2F0aW9uRmVlUmF0ZSA8IG1pbkRlbGVnYXRpb25GZWUpIHtcbiAgICAgIGNvbnN0IG1pbkRlbGVnYXRpb25GZWVQZXJjZW50ID0gKG1pbkRlbGVnYXRpb25GZWUgLyBCQVNJU19QT0lOVFNfRElWSVNPUikgKiBQRVJDRU5UQUdFX01VTFRJUExJRVI7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKFxuICAgICAgICBgRGVsZWdhdGlvbiBmZWUgY2Fubm90IGJlIGxlc3MgdGhhbiAke21pbkRlbGVnYXRpb25GZWV9IGJhc2lzIHBvaW50cyAoJHttaW5EZWxlZ2F0aW9uRmVlUGVyY2VudH0lKWBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGluaXRCdWlsZGVyKHR4OiBUeCk6IHRoaXMge1xuICAgIC8vIEV4dHJhY3QgcGVybWlzc2lvbmxlc3MgdmFsaWRhdG9yLXNwZWNpZmljIGZpZWxkcyBmcm9tIHRyYW5zYWN0aW9uXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBjb25zdCB0eERhdGEgPSB0eCBhcyBhbnk7XG5cbiAgICBpZiAodHhEYXRhLm5vZGVJRCkge1xuICAgICAgdGhpcy5fbm9kZUlEID0gdHhEYXRhLm5vZGVJRDtcbiAgICB9XG4gICAgaWYgKHR4RGF0YS5ibHNQdWJsaWNLZXkpIHtcbiAgICAgIHRoaXMuX2Jsc1B1YmxpY0tleSA9IHR4RGF0YS5ibHNQdWJsaWNLZXk7XG4gICAgfVxuICAgIGlmICh0eERhdGEuYmxzU2lnbmF0dXJlKSB7XG4gICAgICB0aGlzLl9ibHNTaWduYXR1cmUgPSB0eERhdGEuYmxzU2lnbmF0dXJlO1xuICAgIH1cbiAgICBpZiAodHhEYXRhLnN0YXJ0VGltZSkge1xuICAgICAgdGhpcy5fc3RhcnRUaW1lID0gQmlnSW50KHR4RGF0YS5zdGFydFRpbWUpO1xuICAgIH1cbiAgICBpZiAodHhEYXRhLmVuZFRpbWUpIHtcbiAgICAgIHRoaXMuX2VuZFRpbWUgPSBCaWdJbnQodHhEYXRhLmVuZFRpbWUpO1xuICAgIH1cbiAgICBpZiAodHhEYXRhLnN0YWtlQW1vdW50KSB7XG4gICAgICB0aGlzLl9zdGFrZUFtb3VudCA9IEJpZ0ludCh0eERhdGEuc3Rha2VBbW91bnQpO1xuICAgIH1cbiAgICBpZiAodHhEYXRhLmRlbGVnYXRpb25GZWVSYXRlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuX2RlbGVnYXRpb25GZWVSYXRlID0gdHhEYXRhLmRlbGVnYXRpb25GZWVSYXRlO1xuICAgIH1cbiAgICBpZiAodHhEYXRhLnJld2FyZEFkZHJlc3Nlcykge1xuICAgICAgKHRoaXMudHJhbnNhY3Rpb24gYXMgdW5rbm93biBhcyBQZXJtaXNzaW9ubGVzc1ZhbGlkYXRvckV4dGVuZGVkVHJhbnNhY3Rpb24pLl9yZXdhcmRBZGRyZXNzZXMgPVxuICAgICAgICB0eERhdGEucmV3YXJkQWRkcmVzc2VzO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmeSBpZiB0aGUgdHJhbnNhY3Rpb24gaXMgYSBwZXJtaXNzaW9ubGVzcyB2YWxpZGF0b3IgdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHR4XG4gICAqL1xuICBzdGF0aWMgdmVyaWZ5VHhUeXBlKHR4OiB1bmtub3duKTogYm9vbGVhbiB7XG4gICAgLy8gQ2hlY2sgaWYgdHJhbnNhY3Rpb24gaGFzIHBlcm1pc3Npb25sZXNzIHZhbGlkYXRvci1zcGVjaWZpYyBwcm9wZXJ0aWVzXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBjb25zdCB0eERhdGEgPSB0eCBhcyBhbnk7XG4gICAgcmV0dXJuIHR4RGF0YSAmJiB0eERhdGEuYmxzUHVibGljS2V5ICYmIHR4RGF0YS5ibHNTaWduYXR1cmU7XG4gIH1cblxuICB2ZXJpZnlUeFR5cGUodHg6IHVua25vd24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gUGVybWlzc2lvbmxlc3NWYWxpZGF0b3JUeEJ1aWxkZXIudmVyaWZ5VHhUeXBlKHR4KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCB0aGUgcGVybWlzc2lvbmxlc3MgdmFsaWRhdG9yIHRyYW5zYWN0aW9uXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyBidWlsZEZsYXJlVHJhbnNhY3Rpb24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gQmFzaWMgdmFsaWRhdGlvblxuICAgIGlmICghdGhpcy5fbm9kZUlEKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdOb2RlIElEIGlzIHJlcXVpcmVkIGZvciBwZXJtaXNzaW9ubGVzcyB2YWxpZGF0b3IgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLl9ibHNQdWJsaWNLZXkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0JMUyBwdWJsaWMga2V5IGlzIHJlcXVpcmVkIGZvciBwZXJtaXNzaW9ubGVzcyB2YWxpZGF0b3IgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLl9ibHNTaWduYXR1cmUpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0JMUyBzaWduYXR1cmUgaXMgcmVxdWlyZWQgZm9yIHBlcm1pc3Npb25sZXNzIHZhbGlkYXRvciB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuX3N0YXJ0VGltZSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignU3RhcnQgdGltZSBpcyByZXF1aXJlZCBmb3IgcGVybWlzc2lvbmxlc3MgdmFsaWRhdG9yIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIGlmICghdGhpcy5fZW5kVGltZSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignRW5kIHRpbWUgaXMgcmVxdWlyZWQgZm9yIHBlcm1pc3Npb25sZXNzIHZhbGlkYXRvciB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuX3N0YWtlQW1vdW50KSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdTdGFrZSBhbW91bnQgaXMgcmVxdWlyZWQgZm9yIHBlcm1pc3Npb25sZXNzIHZhbGlkYXRvciB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fZGVsZWdhdGlvbkZlZVJhdGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignRGVsZWdhdGlvbiBmZWUgcmF0ZSBpcyByZXF1aXJlZCBmb3IgcGVybWlzc2lvbmxlc3MgdmFsaWRhdG9yIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuXG4gICAgY29uc3QgcmV3YXJkQWRkcmVzc2VzID0gKHRoaXMudHJhbnNhY3Rpb24gYXMgdW5rbm93biBhcyBQZXJtaXNzaW9ubGVzc1ZhbGlkYXRvckV4dGVuZGVkVHJhbnNhY3Rpb24pXG4gICAgICAuX3Jld2FyZEFkZHJlc3NlcztcbiAgICBpZiAoIXJld2FyZEFkZHJlc3NlcyB8fCByZXdhcmRBZGRyZXNzZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdSZXdhcmQgYWRkcmVzc2VzIGFyZSByZXF1aXJlZCBmb3IgcGVybWlzc2lvbmxlc3MgdmFsaWRhdG9yIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuXG4gICAgLy8gVmFsaWRhdGUgdGltZSByYW5nZVxuICAgIGlmICh0aGlzLl9lbmRUaW1lIDw9IHRoaXMuX3N0YXJ0VGltZSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignRW5kIHRpbWUgbXVzdCBiZSBhZnRlciBzdGFydCB0aW1lJyk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIC8vIFRPRE86IEltcGxlbWVudCBhY3R1YWwgRmxhcmVKUyBQVk0gQVBJIGNhbGwgd2hlbiBhdmFpbGFibGVcbiAgICAgIC8vIEZvciBub3csIGNyZWF0ZSBhIHBsYWNlaG9sZGVyIHRyYW5zYWN0aW9uIHN0cnVjdHVyZVxuICAgICAgY29uc3QgdmFsaWRhdG9yVHggPSB7XG4gICAgICAgIHR5cGU6IEFERF9QRVJNSVNTSU9OTEVTU19WQUxJREFUT1JfVFlQRSxcbiAgICAgICAgbm9kZUlEOiB0aGlzLl9ub2RlSUQsXG4gICAgICAgIGJsc1B1YmxpY0tleTogdGhpcy5fYmxzUHVibGljS2V5LFxuICAgICAgICBibHNTaWduYXR1cmU6IHRoaXMuX2Jsc1NpZ25hdHVyZSxcbiAgICAgICAgc3RhcnRUaW1lOiB0aGlzLl9zdGFydFRpbWUsXG4gICAgICAgIGVuZFRpbWU6IHRoaXMuX2VuZFRpbWUsXG4gICAgICAgIHN0YWtlQW1vdW50OiB0aGlzLl9zdGFrZUFtb3VudCxcbiAgICAgICAgZGVsZWdhdGlvbkZlZVJhdGU6IHRoaXMuX2RlbGVnYXRpb25GZWVSYXRlLFxuICAgICAgICByZXdhcmRBZGRyZXNzOiByZXdhcmRBZGRyZXNzZXNbMF0sXG4gICAgICAgIGZyb21BZGRyZXNzZXM6IHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXMsXG4gICAgICAgIG5ldHdvcmtJZDogdGhpcy50cmFuc2FjdGlvbi5fbmV0d29ya0lELFxuICAgICAgICBzb3VyY2VCbG9ja2NoYWluSWQ6IHRoaXMudHJhbnNhY3Rpb24uX2Jsb2NrY2hhaW5JRCxcbiAgICAgICAgdGhyZXNob2xkOiB0aGlzLnRyYW5zYWN0aW9uLl90aHJlc2hvbGQgfHwgMSxcbiAgICAgICAgbG9ja3RpbWU6IHRoaXMudHJhbnNhY3Rpb24uX2xvY2t0aW1lIHx8IDBuLFxuICAgICAgfTtcblxuICAgICAgdGhpcy50cmFuc2FjdGlvbi5zZXRUcmFuc2FjdGlvbih2YWxpZGF0b3JUeCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoXG4gICAgICAgIGBGYWlsZWQgdG8gYnVpbGQgcGVybWlzc2lvbmxlc3MgdmFsaWRhdG9yIHRyYW5zYWN0aW9uOiAke1xuICAgICAgICAgIGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJ1Vua25vd24gZXJyb3InXG4gICAgICAgIH1gXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
132
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbmxlc3NWYWxpZGF0b3JUeEJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3Blcm1pc3Npb25sZXNzVmFsaWRhdG9yVHhCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG1EQUF5RTtBQUN6RSxtREFBd0g7QUFJeEgsNkRBQTBEO0FBQzFELG9EQUE0QjtBQUU1QixNQUFhLGdDQUFpQyxTQUFRLHVDQUFrQjtJQVN0RSxZQUFZLFVBQWdDO1FBQzFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNsQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO0lBQzlELENBQUM7SUFFRCxJQUFjLGVBQWU7UUFDM0IsT0FBTywwQkFBZSxDQUFDLDBCQUEwQixDQUFDO0lBQ3BELENBQUM7SUFFRCxxQkFBcUI7SUFDckIsZ0JBQWdCLENBQUMsUUFBZ0I7UUFDL0IsSUFBSSxRQUFRLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDekIsTUFBTSxJQUFJLGdDQUFxQixDQUFDLG1EQUFtRCxDQUFDLENBQUM7UUFDdkYsQ0FBQztJQUNILENBQUM7SUFFRCx5QkFBeUIsQ0FBQyxpQkFBeUI7UUFDakQsSUFBSSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDO1lBQzNFLE1BQU0sSUFBSSxnQ0FBcUIsQ0FDN0Isc0NBQXNDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLGdCQUFnQixFQUFFLENBQ25GLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFxQjtRQUNoQyxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxD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Q0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxNQUFNLENBQUMsWUFBWSxDQUFDLElBQWlCO1FBQ25DLE9BQU8sSUFBSSxLQUFLLHFCQUFXLENBQUMsNEJBQTRCLENBQUM7SUFDM0QsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixJQUFjLFdBQVc7UUFDdkIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFjLFdBQVcsQ0FBQyxXQUF3QjtRQUNoRCxJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQztJQUNsQyxDQUFDO0NBQ0Y7QUFySkQsNEVBcUpDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXRpbHMgYXMgRmxhcmVVdGlscywgVHlwZVN5bWJvbHMgfSBmcm9tICdAZmxhcmVuZXR3b3JrL2ZsYXJlanMnO1xuaW1wb3J0IHsgQnVpbGRUcmFuc2FjdGlvbkVycm9yLCBpc1ZhbGlkQkxTUHVibGljS2V5LCBpc1ZhbGlkQkxTU2lnbmF0dXJlLCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBEZWNvZGVkVXR4b09iaiB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGNsYXNzIFBlcm1pc3Npb25sZXNzVmFsaWRhdG9yVHhCdWlsZGVyIGV4dGVuZHMgVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgcHJvdGVjdGVkIF9ub2RlSUQ6IHN0cmluZztcbiAgcHJvdGVjdGVkIF9ibHNQdWJsaWNLZXk6IHN0cmluZztcbiAgcHJvdGVjdGVkIF9ibHNTaWduYXR1cmU6IHN0cmluZztcbiAgcHJvdGVjdGVkIF9zdGFydFRpbWU6IGJpZ2ludDtcbiAgcHJvdGVjdGVkIF9lbmRUaW1lOiBiaWdpbnQ7XG4gIHByb3RlY3RlZCBfc3Rha2VBbW91bnQ6IGJpZ2ludDtcbiAgcHJvdGVjdGVkIF9kZWxlZ2F0aW9uRmVlUmF0ZTogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKGNvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoY29pbkNvbmZpZyk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5fZmVlLmZlZSA9IHRoaXMudHJhbnNhY3Rpb24uX25ldHdvcmsudHhGZWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuQWRkUGVybWlzc2lvbmxlc3NWYWxpZGF0b3I7XG4gIH1cblxuICAvLyBWYWxpZGF0aW9uIG1ldGhvZHNcbiAgdmFsaWRhdGVMb2NrdGltZShsb2NrdGltZTogYmlnaW50KTogdm9pZCB7XG4gICAgaWYgKGxvY2t0aW1lIDwgQmlnSW50KDApKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiBsb2NrdGltZSBtdXN0IGJlIDAgb3IgaGlnaGVyJyk7XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGVEZWxlZ2F0aW9uRmVlUmF0ZShkZWxlZ2F0aW9uRmVlUmF0ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKGRlbGVnYXRpb25GZWVSYXRlIDwgTnVtYmVyKHRoaXMudHJhbnNhY3Rpb24uX25ldHdvcmsubWluRGVsZWdhdGlvbkZlZSkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoXG4gICAgICAgIGBEZWxlZ2F0aW9uIGZlZSBjYW5ub3QgYmUgbGVzcyB0aGFuICR7dGhpcy50cmFuc2FjdGlvbi5fbmV0d29yay5taW5EZWxlZ2F0aW9uRmVlfWBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGVVdHhvKHZhbHVlOiBEZWNvZGVkVXR4b09iaik6IHZvaWQge1xuICAgIFsnb3V0cHV0SUQnLCAnYW1vdW50JywgJ3R4aWQnLCAnb3V0cHV0aWR4J10uZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICAgIGlmICghdmFsdWUuaGFzT3duUHJvcGVydHkoZmllbGQpKSB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKGBVdHhvcyByZXF1aXJlZCAke2ZpZWxkfWApO1xuICAgIH0pO1xuICB9XG5cbiAgdmFsaWRhdGVOb2RlSUQobm9kZUlEOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIW5vZGVJRCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogbWlzc2luZyBub2RlSUQnKTtcbiAgICB9XG4gICAgaWYgKG5vZGVJRC5zbGljZSgwLCA2KSAhPT0gJ05vZGVJRCcpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IGludmFsaWQgTm9kZUlEIHRhZycpO1xuICAgIH1cbiAgICBpZiAoIShGbGFyZVV0aWxzLmJhc2U1OC5kZWNvZGUobm9kZUlELnNsaWNlKDcpKS5sZW5ndGggPT09IDI0KSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogTm9kZUlEIGlzIG5vdCBpbiBjYjU4IGZvcm1hdCcpO1xuICAgIH1cbiAgfVxuXG4gIHZhbGlkYXRlU3Rha2VEdXJhdGlvbihzdGFydFRpbWU6IGJpZ2ludCwgZW5kVGltZTogYmlnaW50KTogdm9pZCB7XG4gICAgaWYgKGVuZFRpbWUgPCBzdGFydFRpbWUpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0VuZCBkYXRlIGNhbm5vdCBiZSBsZXNzIHRoYW4gc3RhcnQgZGF0ZScpO1xuICAgIH1cbiAgfVxuXG4gIHZhbGlkYXRlU3Rha2VBbW91bnQoYW1vdW50OiBiaWdpbnQpOiB2b2lkIHtcbiAgICBjb25zdCBtaW5TdGFrZSA9IEJpZ0ludCh0aGlzLnRyYW5zYWN0aW9uLl9uZXR3b3JrLm1pblN0YWtlKTtcbiAgICBpZiAoYW1vdW50IDwgbWluU3Rha2UpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ01pbmltdW0gc3Rha2luZyBhbW91bnQgaXMgJyArIE51bWJlcihtaW5TdGFrZSkgLyAxMDAwMDAwMDAwICsgJyBGTFIuJyk7XG4gICAgfVxuICB9XG5cbiAgLy8gQnVpbGRlciBtZXRob2RzXG4gIHJld2FyZEFkZHJlc3NlcyhhZGRyZXNzOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHRoaXMge1xuICAgIGNvbnN0IHJld2FyZEFkZHJlc3NlcyA9IGFkZHJlc3MgaW5zdGFuY2VvZiBBcnJheSA/IGFkZHJlc3MgOiBbYWRkcmVzc107XG4gICAgdGhpcy50cmFuc2FjdGlvbi5fcmV3YXJkQWRkcmVzc2VzID0gcmV3YXJkQWRkcmVzc2VzLm1hcCh1dGlscy5wYXJzZUFkZHJlc3MpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgbm9kZUlEKG5vZGVJRDogc3RyaW5nKTogdGhpcyB7XG4gICAgdGhpcy52YWxpZGF0ZU5vZGVJRChub2RlSUQpO1xuICAgIHRoaXMuX25vZGVJRCA9IG5vZGVJRDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGJsc1B1YmxpY0tleShibHNQdWJsaWNLZXk6IHN0cmluZyk6IHRoaXMge1xuICAgIGlzVmFsaWRCTFNQdWJsaWNLZXkoYmxzUHVibGljS2V5KTtcbiAgICB0aGlzLl9ibHNQdWJsaWNLZXkgPSBibHNQdWJsaWNLZXk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBibHNTaWduYXR1cmUoYmxzU2lnbmF0dXJlOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpc1ZhbGlkQkxTU2lnbmF0dXJlKGJsc1NpZ25hdHVyZSk7XG4gICAgdGhpcy5fYmxzU2lnbmF0dXJlID0gYmxzU2lnbmF0dXJlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgbG9ja3RpbWUodmFsdWU6IHN0cmluZyB8IG51bWJlcik6IHRoaXMge1xuICAgIHRoaXMudmFsaWRhdGVMb2NrdGltZShCaWdJbnQodmFsdWUpKTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbi5fbG9ja3RpbWUgPSBCaWdJbnQodmFsdWUpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZGVsZWdhdGlvbkZlZVJhdGUodmFsdWU6IG51bWJlcik6IHRoaXMge1xuICAgIHRoaXMudmFsaWRhdGVEZWxlZ2F0aW9uRmVlUmF0ZSh2YWx1ZSk7XG4gICAgdGhpcy5fZGVsZWdhdGlvbkZlZVJhdGUgPSB2YWx1ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHN0YXJ0VGltZSh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyKTogdGhpcyB7XG4gICAgdGhpcy5fc3RhcnRUaW1lID0gQmlnSW50KHZhbHVlKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGVuZFRpbWUodmFsdWU6IHN0cmluZyB8IG51bWJlcik6IHRoaXMge1xuICAgIHRoaXMuX2VuZFRpbWUgPSBCaWdJbnQodmFsdWUpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc3Rha2VBbW91bnQodmFsdWU6IGJpZ2ludCB8IHN0cmluZyk6IHRoaXMge1xuICAgIGNvbnN0IHZhbHVlQmlnSW50ID0gdHlwZW9mIHZhbHVlID09PSAnYmlnaW50JyA/IHZhbHVlIDogQmlnSW50KHZhbHVlKTtcbiAgICB0aGlzLnZhbGlkYXRlU3Rha2VBbW91bnQodmFsdWVCaWdJbnQpO1xuICAgIHRoaXMuX3N0YWtlQW1vdW50ID0gdmFsdWVCaWdJbnQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgYnVpbGRJbXBsZW1lbnRhdGlvbigpOiBQcm9taXNlPFRyYW5zYWN0aW9uPiB7XG4gICAgdGhpcy5idWlsZEZsYXJlVHJhbnNhY3Rpb24oKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNldFRyYW5zYWN0aW9uVHlwZSh0aGlzLnRyYW5zYWN0aW9uVHlwZSk7XG4gICAgaWYgKHRoaXMuaGFzU2lnbmVyKCkpIHtcbiAgICAgIGZvciAoY29uc3Qga2V5UGFpciBvZiB0aGlzLl9zaWduZXIpIHtcbiAgICAgICAgYXdhaXQgdGhpcy50cmFuc2FjdGlvbi5zaWduKGtleVBhaXIpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCB0aGUgcGVybWlzc2lvbmxlc3MgdmFsaWRhdG9yIHRyYW5zYWN0aW9uXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBidWlsZEZsYXJlVHJhbnNhY3Rpb24oKTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgc3RhdGljIHZlcmlmeVR4VHlwZSh0eXBlOiBUeXBlU3ltYm9scyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlID09PSBUeXBlU3ltYm9scy5BZGRQZXJtaXNzaW9ubGVzc1ZhbGlkYXRvclR4O1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb24oKTogVHJhbnNhY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLl90cmFuc2FjdGlvbjtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXQgdHJhbnNhY3Rpb24odHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uKSB7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24gPSB0cmFuc2FjdGlvbjtcbiAgfVxufVxuIl19
|
|
@@ -1,13 +1,9 @@
|
|
|
1
|
-
import { UnsignedTx, Credential } from '@flarenetwork/flarejs';
|
|
2
|
-
import { BaseKey, BaseTransaction, Entry, TransactionFee, TransactionType } from '@bitgo-beta/sdk-core';
|
|
3
1
|
import { FlareNetwork, BaseCoin as CoinConfig } from '@bitgo-beta/statics';
|
|
2
|
+
import { BaseKey, BaseTransaction, Entry, TransactionType, TransactionFee } from '@bitgo-beta/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,qBAAqB,CAAC;AAC3E,OAAO,EACL,OAAO,EACP,eAAe,EACf,KAAK,EAGL,eAAe,EACf,cAAc,EACf,MAAM,sBAAsB,CAAC;AAC9B,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"}
|