@bitgo-beta/sdk-coin-flrp 1.0.0-alpha.11 → 1.0.0-alpha.13
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/lib/atomicTransactionBuilder.d.ts +7 -10
- package/dist/src/lib/atomicTransactionBuilder.d.ts.map +1 -1
- package/dist/src/lib/atomicTransactionBuilder.js +89 -155
- package/dist/src/lib/constants.d.ts +1 -160
- package/dist/src/lib/constants.d.ts.map +1 -1
- package/dist/src/lib/constants.js +3 -213
- package/dist/src/lib/exportInCTxBuilder.d.ts +1 -1
- package/dist/src/lib/exportInCTxBuilder.d.ts.map +1 -1
- package/dist/src/lib/exportInCTxBuilder.js +17 -46
- package/dist/src/lib/exportInPTxBuilder.d.ts +1 -1
- package/dist/src/lib/exportInPTxBuilder.d.ts.map +1 -1
- package/dist/src/lib/exportInPTxBuilder.js +6 -70
- package/dist/src/lib/index.d.ts +0 -5
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +2 -11
- package/dist/src/lib/transaction.d.ts.map +1 -1
- package/dist/src/lib/transaction.js +13 -14
- package/dist/src/lib/utils.d.ts +0 -2
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +12 -23
- package/dist/test/unit/lib/exportTxBuilder.d.ts +2 -0
- package/dist/test/unit/lib/exportTxBuilder.d.ts.map +1 -0
- package/dist/test/unit/lib/exportTxBuilder.js +45 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -7
- 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/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/permissionlessValidatorTxBuilder.d.ts +0 -81
- package/dist/src/lib/permissionlessValidatorTxBuilder.d.ts.map +0 -1
- package/dist/src/lib/permissionlessValidatorTxBuilder.js +0 -248
- package/dist/src/lib/transactionBuilder.d.ts +0 -85
- package/dist/src/lib/transactionBuilder.d.ts.map +0 -1
- package/dist/src/lib/transactionBuilder.js +0 -167
- 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/exportInCTxBuilder.d.ts +0 -2
- package/dist/test/unit/lib/exportInCTxBuilder.d.ts.map +0 -1
- package/dist/test/unit/lib/exportInCTxBuilder.js +0 -584
- package/dist/test/unit/lib/exportInPTxBuilder.d.ts +0 -2
- package/dist/test/unit/lib/exportInPTxBuilder.d.ts.map +0 -1
- package/dist/test/unit/lib/exportInPTxBuilder.js +0 -377
- package/dist/test/unit/lib/importInCTxBuilder.d.ts +0 -2
- package/dist/test/unit/lib/importInCTxBuilder.d.ts.map +0 -1
- package/dist/test/unit/lib/importInCTxBuilder.js +0 -257
- package/dist/test/unit/lib/importInPTxBuilder.d.ts +0 -2
- package/dist/test/unit/lib/importInPTxBuilder.d.ts.map +0 -1
- package/dist/test/unit/lib/importInPTxBuilder.js +0 -500
- 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/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 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PermissionlessValidatorTxBuilder = void 0;
|
|
4
|
-
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
5
|
-
const atomicTransactionBuilder_1 = require("./atomicTransactionBuilder");
|
|
6
|
-
const constants_1 = require("./constants");
|
|
7
|
-
const utils_1 = require("./utils");
|
|
8
|
-
class PermissionlessValidatorTxBuilder extends atomicTransactionBuilder_1.AtomicTransactionBuilder {
|
|
9
|
-
/**
|
|
10
|
-
* @param coinConfig
|
|
11
|
-
*/
|
|
12
|
-
constructor(coinConfig) {
|
|
13
|
-
super(coinConfig);
|
|
14
|
-
this._nodeID = undefined;
|
|
15
|
-
this._blsPublicKey = undefined;
|
|
16
|
-
this._blsSignature = undefined;
|
|
17
|
-
this._startTime = undefined;
|
|
18
|
-
this._endTime = undefined;
|
|
19
|
-
this._stakeAmount = undefined;
|
|
20
|
-
this._delegationFeeRate = undefined;
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* get transaction type
|
|
24
|
-
* @protected
|
|
25
|
-
*/
|
|
26
|
-
get transactionType() {
|
|
27
|
-
return sdk_core_1.TransactionType.AddPermissionlessValidator;
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Set the node ID for permissionless validation
|
|
31
|
-
* @param nodeID - The node ID
|
|
32
|
-
*/
|
|
33
|
-
nodeID(nodeID) {
|
|
34
|
-
if (!nodeID || nodeID.length === 0) {
|
|
35
|
-
throw new sdk_core_1.BuildTransactionError('Node ID cannot be empty');
|
|
36
|
-
}
|
|
37
|
-
this._nodeID = nodeID;
|
|
38
|
-
return this;
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Set the BLS public key for permissionless validation
|
|
42
|
-
* @param blsPublicKey - The BLS public key
|
|
43
|
-
*/
|
|
44
|
-
blsPublicKey(blsPublicKey) {
|
|
45
|
-
if (!blsPublicKey || blsPublicKey.length === 0) {
|
|
46
|
-
throw new sdk_core_1.BuildTransactionError('BLS public key cannot be empty');
|
|
47
|
-
}
|
|
48
|
-
// BLS public key should be 48 bytes (96 hex characters) with 0x prefix or 192 hex characters with 0x prefix for uncompressed
|
|
49
|
-
if (!(0, utils_1.createHexRegex)(constants_1.BLS_PUBLIC_KEY_COMPRESSED_LENGTH, true).test(blsPublicKey) &&
|
|
50
|
-
!(0, utils_1.createHexRegex)(constants_1.BLS_PUBLIC_KEY_UNCOMPRESSED_LENGTH, true).test(blsPublicKey)) {
|
|
51
|
-
throw new sdk_core_1.BuildTransactionError('Invalid BLS public key format');
|
|
52
|
-
}
|
|
53
|
-
this._blsPublicKey = blsPublicKey;
|
|
54
|
-
return this;
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Set the BLS signature for permissionless validation
|
|
58
|
-
* @param blsSignature - The BLS signature
|
|
59
|
-
*/
|
|
60
|
-
blsSignature(blsSignature) {
|
|
61
|
-
if (!blsSignature || blsSignature.length === 0) {
|
|
62
|
-
throw new sdk_core_1.BuildTransactionError('BLS signature cannot be empty');
|
|
63
|
-
}
|
|
64
|
-
// BLS signature should be 96 bytes (192 hex characters) with 0x prefix
|
|
65
|
-
if (!(0, utils_1.createHexRegex)(constants_1.BLS_SIGNATURE_LENGTH, true).test(blsSignature)) {
|
|
66
|
-
throw new sdk_core_1.BuildTransactionError('Invalid BLS signature format');
|
|
67
|
-
}
|
|
68
|
-
this._blsSignature = blsSignature;
|
|
69
|
-
return this;
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Set the start time for validation
|
|
73
|
-
* @param startTime - Unix timestamp for when validation starts
|
|
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;
|
|
81
|
-
return this;
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* Set the end time for validation
|
|
85
|
-
* @param endTime - Unix timestamp for when validation ends
|
|
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;
|
|
93
|
-
return this;
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Set the stake amount for validation
|
|
97
|
-
* @param amount - Amount to stake (in nFLR)
|
|
98
|
-
*/
|
|
99
|
-
stakeAmount(amount) {
|
|
100
|
-
const stake = BigInt(amount);
|
|
101
|
-
if (stake <= 0) {
|
|
102
|
-
throw new sdk_core_1.BuildTransactionError('Stake amount must be positive');
|
|
103
|
-
}
|
|
104
|
-
this._stakeAmount = stake;
|
|
105
|
-
return this;
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* Set the delegation fee rate
|
|
109
|
-
* @param value - Delegation fee rate in basis points
|
|
110
|
-
*/
|
|
111
|
-
delegationFeeRate(value) {
|
|
112
|
-
this.validateDelegationFeeRate(value);
|
|
113
|
-
this._delegationFeeRate = value;
|
|
114
|
-
return this;
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* Set reward addresses where validation rewards should be sent
|
|
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;
|
|
126
|
-
return this;
|
|
127
|
-
}
|
|
128
|
-
/**
|
|
129
|
-
* Validate that the delegation fee is at least the minDelegationFee
|
|
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
|
-
}
|
|
170
|
-
return this;
|
|
171
|
-
}
|
|
172
|
-
/**
|
|
173
|
-
* Verify if the transaction is a permissionless validator transaction
|
|
174
|
-
* @param tx
|
|
175
|
-
*/
|
|
176
|
-
static verifyTxType(tx) {
|
|
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;
|
|
181
|
-
}
|
|
182
|
-
verifyTxType(tx) {
|
|
183
|
-
return PermissionlessValidatorTxBuilder.verifyTxType(tx);
|
|
184
|
-
}
|
|
185
|
-
/**
|
|
186
|
-
* Build the permissionless validator transaction
|
|
187
|
-
* @protected
|
|
188
|
-
*/
|
|
189
|
-
async buildFlareTransaction() {
|
|
190
|
-
// Basic validation
|
|
191
|
-
if (!this._nodeID) {
|
|
192
|
-
throw new sdk_core_1.BuildTransactionError('Node ID is required for permissionless validator transaction');
|
|
193
|
-
}
|
|
194
|
-
if (!this._blsPublicKey) {
|
|
195
|
-
throw new sdk_core_1.BuildTransactionError('BLS public key is required for permissionless validator transaction');
|
|
196
|
-
}
|
|
197
|
-
if (!this._blsSignature) {
|
|
198
|
-
throw new sdk_core_1.BuildTransactionError('BLS signature is required for permissionless validator transaction');
|
|
199
|
-
}
|
|
200
|
-
if (!this._startTime) {
|
|
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
|
-
}
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
exports.PermissionlessValidatorTxBuilder = PermissionlessValidatorTxBuilder;
|
|
248
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbmxlc3NWYWxpZGF0b3JUeEJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3Blcm1pc3Npb25sZXNzVmFsaWRhdG9yVHhCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1EQUE4RTtBQUU5RSx5RUFBc0U7QUFHdEUsMkNBUXFCO0FBQ3JCLG1DQUF5QztBQUV6QyxNQUFhLGdDQUFpQyxTQUFRLG1EQUF3QjtJQVM1RTs7T0FFRztJQUNILFlBQVksVUFBZ0M7UUFDMUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO1FBQy9CLElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO1FBQy9CLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO1FBQzVCLElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDO1FBQzFCLElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDO1FBQzlCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxTQUFTLENBQUM7SUFDdEMsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQWMsZUFBZTtRQUMzQixPQUFPLDBCQUFlLENBQUMsMEJBQTBCLENBQUM7SUFDcEQsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxNQUFjO1FBQ25CLElBQUksQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNuQyxNQUFNLElBQUksZ0NBQXFCLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUM3RCxDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsWUFBWSxDQUFDLFlBQW9CO1FBQy9CLElB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SUFBSSxDQUFDLGFBQWE7Z0JBQ2hDLFlBQVksRUFBRSxJQUFJLENBQUMsYUFBYTtnQkFDaEMsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVO2dCQUMxQixPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVE7Z0JBQ3RCLFdBQVcsRUFBRSxJQUFJLENBQUMsWUFBWTtnQkFDOUIsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjtnQkFDMUMsYUFBYSxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pDLGFBQWEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWM7Z0JBQzlDLFNBQVMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVU7Z0JBQ3RDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYTtnQkFDbEQsU0FBUyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxJQUFJLENBQUM7Z0JBQzNDLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsSUFBSSxFQUFFO2FBQzNDLENBQUM7WUFFRixJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMvQyxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE1BQU0sSUFBSSxnQ0FBcUIsQ0FDN0IseURBQ0UsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsZUFDM0MsRUFBRSxDQUNILENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBclJELDRFQXFSQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJ1aWxkVHJhbnNhY3Rpb25FcnJvciwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgQXRvbWljVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi9hdG9taWNUcmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgVHggfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IFBlcm1pc3Npb25sZXNzVmFsaWRhdG9yRXh0ZW5kZWRUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHtcbiAgQUREX1BFUk1JU1NJT05MRVNTX1ZBTElEQVRPUl9UWVBFLFxuICBCQVNJU19QT0lOVFNfRElWSVNPUixcbiAgQkxTX1BVQkxJQ19LRVlfQ09NUFJFU1NFRF9MRU5HVEgsXG4gIEJMU19QVUJMSUNfS0VZX1VOQ09NUFJFU1NFRF9MRU5HVEgsXG4gIEJMU19TSUdOQVRVUkVfTEVOR1RILFxuICBNSU5fREVMRUdBVElPTl9GRUVfQkFTSVNfUE9JTlRTLFxuICBQRVJDRU5UQUdFX01VTFRJUExJRVIsXG59IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IGNyZWF0ZUhleFJlZ2V4IH0gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBQZXJtaXNzaW9ubGVzc1ZhbGlkYXRvclR4QnVpbGRlciBleHRlbmRzIEF0b21pY1RyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByb3RlY3RlZCBfbm9kZUlEOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHByb3RlY3RlZCBfYmxzUHVibGljS2V5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHByb3RlY3RlZCBfYmxzU2lnbmF0dXJlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHByb3RlY3RlZCBfc3RhcnRUaW1lOiBiaWdpbnQgfCB1bmRlZmluZWQ7XG4gIHByb3RlY3RlZCBfZW5kVGltZTogYmlnaW50IHwgdW5kZWZpbmVkO1xuICBwcm90ZWN0ZWQgX3N0YWtlQW1vdW50OiBiaWdpbnQgfCB1bmRlZmluZWQ7XG4gIHByb3RlY3RlZCBfZGVsZWdhdGlvbkZlZVJhdGU6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogQHBhcmFtIGNvaW5Db25maWdcbiAgICovXG4gIGNvbnN0cnVjdG9yKGNvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fbm9kZUlEID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuX2Jsc1B1YmxpY0tleSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLl9ibHNTaWduYXR1cmUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5fc3RhcnRUaW1lID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuX2VuZFRpbWUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5fc3Rha2VBbW91bnQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5fZGVsZWdhdGlvbkZlZVJhdGUgPSB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogZ2V0IHRyYW5zYWN0aW9uIHR5cGVcbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvblR5cGUoKTogVHJhbnNhY3Rpb25UeXBlIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLkFkZFBlcm1pc3Npb25sZXNzVmFsaWRhdG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgbm9kZSBJRCBmb3IgcGVybWlzc2lvbmxlc3MgdmFsaWRhdGlvblxuICAgKiBAcGFyYW0gbm9kZUlEIC0gVGhlIG5vZGUgSURcbiAgICovXG4gIG5vZGVJRChub2RlSUQ6IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICghbm9kZUlEIHx8IG5vZGVJRC5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ05vZGUgSUQgY2Fubm90IGJlIGVtcHR5Jyk7XG4gICAgfVxuICAgIHRoaXMuX25vZGVJRCA9IG5vZGVJRDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIEJMUyBwdWJsaWMga2V5IGZvciBwZXJtaXNzaW9ubGVzcyB2YWxpZGF0aW9uXG4gICAqIEBwYXJhbSBibHNQdWJsaWNLZXkgLSBUaGUgQkxTIHB1YmxpYyBrZXlcbiAgICovXG4gIGJsc1B1YmxpY0tleShibHNQdWJsaWNLZXk6IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICghYmxzUHVibGljS2V5IHx8IGJsc1B1YmxpY0tleS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0JMUyBwdWJsaWMga2V5IGNhbm5vdCBiZSBlbXB0eScpO1xuICAgIH1cblxuICAgIC8vIEJMUyBwdWJsaWMga2V5IHNob3VsZCBiZSA0OCBieXRlcyAoOTYgaGV4IGNoYXJhY3RlcnMpIHdpdGggMHggcHJlZml4IG9yIDE5MiBoZXggY2hhcmFjdGVycyB3aXRoIDB4IHByZWZpeCBmb3IgdW5jb21wcmVzc2VkXG4gICAgaWYgKFxuICAgICAgIWNyZWF0ZUhleFJlZ2V4KEJMU19QVUJMSUNfS0VZX0NPTVBSRVNTRURfTEVOR1RILCB0cnVlKS50ZXN0KGJsc1B1YmxpY0tleSkgJiZcbiAgICAgICFjcmVhdGVIZXhSZWdleChCTFNfUFVCTElDX0tFWV9VTkNPTVBSRVNTRURfTEVOR1RILCB0cnVlKS50ZXN0KGJsc1B1YmxpY0tleSlcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgQkxTIHB1YmxpYyBrZXkgZm9ybWF0Jyk7XG4gICAgfVxuXG4gICAgdGhpcy5fYmxzUHVibGljS2V5ID0gYmxzUHVibGljS2V5O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgQkxTIHNpZ25hdHVyZSBmb3IgcGVybWlzc2lvbmxlc3MgdmFsaWRhdGlvblxuICAgKiBAcGFyYW0gYmxzU2lnbmF0dXJlIC0gVGhlIEJMUyBzaWduYXR1cmVcbiAgICovXG4gIGJsc1NpZ25hdHVyZShibHNTaWduYXR1cmU6IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICghYmxzU2lnbmF0dXJlIHx8IGJsc1NpZ25hdHVyZS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0JMUyBzaWduYXR1cmUgY2Fubm90IGJlIGVtcHR5Jyk7XG4gICAgfVxuXG4gICAgLy8gQkxTIHNpZ25hdHVyZSBzaG91bGQgYmUgOTYgYnl0ZXMgKDE5MiBoZXggY2hhcmFjdGVycykgd2l0aCAweCBwcmVmaXhcbiAgICBpZiAoIWNyZWF0ZUhleFJlZ2V4KEJMU19TSUdOQVRVUkVfTEVOR1RILCB0cnVlKS50ZXN0KGJsc1NpZ25hdHVyZSkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgQkxTIHNpZ25hdHVyZSBmb3JtYXQnKTtcbiAgICB9XG5cbiAgICB0aGlzLl9ibHNTaWduYXR1cmUgPSBibHNTaWduYXR1cmU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBzdGFydCB0aW1lIGZvciB2YWxpZGF0aW9uXG4gICAqIEBwYXJhbSBzdGFydFRpbWUgLSBVbml4IHRpbWVzdGFtcCBmb3Igd2hlbiB2YWxpZGF0aW9uIHN0YXJ0c1xuICAgKi9cbiAgc3RhcnRUaW1lKHN0YXJ0VGltZTogc3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50KTogdGhpcyB7XG4gICAgY29uc3QgdGltZSA9IEJpZ0ludChzdGFydFRpbWUpO1xuICAgIGlmICh0aW1lIDwgMCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignU3RhcnQgdGltZSBtdXN0IGJlIG5vbi1uZWdhdGl2ZScpO1xuICAgIH1cbiAgICB0aGlzLl9zdGFydFRpbWUgPSB0aW1lO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgZW5kIHRpbWUgZm9yIHZhbGlkYXRpb25cbiAgICogQHBhcmFtIGVuZFRpbWUgLSBVbml4IHRpbWVzdGFtcCBmb3Igd2hlbiB2YWxpZGF0aW9uIGVuZHNcbiAgICovXG4gIGVuZFRpbWUoZW5kVGltZTogc3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50KTogdGhpcyB7XG4gICAgY29uc3QgdGltZSA9IEJpZ0ludChlbmRUaW1lKTtcbiAgICBpZiAodGltZSA8PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdFbmQgdGltZSBtdXN0IGJlIHBvc2l0aXZlJyk7XG4gICAgfVxuICAgIHRoaXMuX2VuZFRpbWUgPSB0aW1lO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgc3Rha2UgYW1vdW50IGZvciB2YWxpZGF0aW9uXG4gICAqIEBwYXJhbSBhbW91bnQgLSBBbW91bnQgdG8gc3Rha2UgKGluIG5GTFIpXG4gICAqL1xuICBzdGFrZUFtb3VudChhbW91bnQ6IHN0cmluZyB8IG51bWJlciB8IGJpZ2ludCk6IHRoaXMge1xuICAgIGNvbnN0IHN0YWtlID0gQmlnSW50KGFtb3VudCk7XG4gICAgaWYgKHN0YWtlIDw9IDApIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1N0YWtlIGFtb3VudCBtdXN0IGJlIHBvc2l0aXZlJyk7XG4gICAgfVxuICAgIHRoaXMuX3N0YWtlQW1vdW50ID0gc3Rha2U7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBkZWxlZ2F0aW9uIGZlZSByYXRlXG4gICAqIEBwYXJhbSB2YWx1ZSAtIERlbGVnYXRpb24gZmVlIHJhdGUgaW4gYmFzaXMgcG9pbnRzXG4gICAqL1xuICBkZWxlZ2F0aW9uRmVlUmF0ZSh2YWx1ZTogbnVtYmVyKTogdGhpcyB7XG4gICAgdGhpcy52YWxpZGF0ZURlbGVnYXRpb25GZWVSYXRlKHZhbHVlKTtcbiAgICB0aGlzLl9kZWxlZ2F0aW9uRmVlUmF0ZSA9IHZhbHVlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCByZXdhcmQgYWRkcmVzc2VzIHdoZXJlIHZhbGlkYXRpb24gcmV3YXJkcyBzaG91bGQgYmUgc2VudFxuICAgKiBAcGFyYW0gYWRkcmVzc2VzIC0gQXJyYXkgb2YgcmV3YXJkIGFkZHJlc3Nlc1xuICAgKi9cbiAgcmV3YXJkQWRkcmVzc2VzKGFkZHJlc3Nlczogc3RyaW5nW10pOiB0aGlzIHtcbiAgICBpZiAoIWFkZHJlc3NlcyB8fCBhZGRyZXNzZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdBdCBsZWFzdCBvbmUgcmV3YXJkIGFkZHJlc3MgaXMgcmVxdWlyZWQnKTtcbiAgICB9XG4gICAgLy8gU3RvcmUgcmV3YXJkIGFkZHJlc3NlcyBpbiB0aGUgdHJhbnNhY3Rpb24gKHdlJ2xsIG5lZWQgdG8gZXh0ZW5kIHRoZSB0eXBlKVxuICAgICh0aGlzLnRyYW5zYWN0aW9uIGFzIHVua25vd24gYXMgUGVybWlzc2lvbmxlc3NWYWxpZGF0b3JFeHRlbmRlZFRyYW5zYWN0aW9uKS5fcmV3YXJkQWRkcmVzc2VzID0gYWRkcmVzc2VzO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIHRoYXQgdGhlIGRlbGVnYXRpb24gZmVlIGlzIGF0IGxlYXN0IHRoZSBtaW5EZWxlZ2F0aW9uRmVlXG4gICAqIEBwYXJhbSBkZWxlZ2F0aW9uRmVlUmF0ZSBudW1iZXJcbiAgICovXG4gIHZhbGlkYXRlRGVsZWdhdGlvbkZlZVJhdGUoZGVsZWdhdGlvbkZlZVJhdGU6IG51bWJlcik6IHZvaWQge1xuICAgIC8vIEZvciBGbGFyZSwgdXNlIGEgbWluaW11bSBkZWxlZ2F0aW9uIGZlZSBvZiAyJSAoMjAwMDAgYmFzaXMgcG9pbnRzKVxuICAgIGNvbnN0IG1pbkRlbGVnYXRpb25GZWUgPSBNSU5fREVMRUdBVElPTl9GRUVfQkFTSVNfUE9JTlRTO1xuICAgIGlmIChkZWxlZ2F0aW9uRmVlUmF0ZSA8IG1pbkRlbGVnYXRpb25GZWUpIHtcbiAgICAgIGNvbnN0IG1pbkRlbGVnYXRpb25GZWVQZXJjZW50ID0gKG1pbkRlbGVnYXRpb25GZWUgLyBCQVNJU19QT0lOVFNfRElWSVNPUikgKiBQRVJDRU5UQUdFX01VTFRJUExJRVI7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKFxuICAgICAgICBgRGVsZWdhdGlvbiBmZWUgY2Fubm90IGJlIGxlc3MgdGhhbiAke21pbkRlbGVnYXRpb25GZWV9IGJhc2lzIHBvaW50cyAoJHttaW5EZWxlZ2F0aW9uRmVlUGVyY2VudH0lKWBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGluaXRCdWlsZGVyKHR4OiBUeCk6IHRoaXMge1xuICAgIC8vIEV4dHJhY3QgcGVybWlzc2lvbmxlc3MgdmFsaWRhdG9yLXNwZWNpZmljIGZpZWxkcyBmcm9tIHRyYW5zYWN0aW9uXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBjb25zdCB0eERhdGEgPSB0eCBhcyBhbnk7XG5cbiAgICBpZiAodHhEYXRhLm5vZGVJRCkge1xuICAgICAgdGhpcy5fbm9kZUlEID0gdHhEYXRhLm5vZGVJRDtcbiAgICB9XG4gICAgaWYgKHR4RGF0YS5ibHNQdWJsaWNLZXkpIHtcbiAgICAgIHRoaXMuX2Jsc1B1YmxpY0tleSA9IHR4RGF0YS5ibHNQdWJsaWNLZXk7XG4gICAgfVxuICAgIGlmICh0eERhdGEuYmxzU2lnbmF0dXJlKSB7XG4gICAgICB0aGlzLl9ibHNTaWduYXR1cmUgPSB0eERhdGEuYmxzU2lnbmF0dXJlO1xuICAgIH1cbiAgICBpZiAodHhEYXRhLnN0YXJ0VGltZSkge1xuICAgICAgdGhpcy5fc3RhcnRUaW1lID0gQmlnSW50KHR4RGF0YS5zdGFydFRpbWUpO1xuICAgIH1cbiAgICBpZiAodHhEYXRhLmVuZFRpbWUpIHtcbiAgICAgIHRoaXMuX2VuZFRpbWUgPSBCaWdJbnQodHhEYXRhLmVuZFRpbWUpO1xuICAgIH1cbiAgICBpZiAodHhEYXRhLnN0YWtlQW1vdW50KSB7XG4gICAgICB0aGlzLl9zdGFrZUFtb3VudCA9IEJpZ0ludCh0eERhdGEuc3Rha2VBbW91bnQpO1xuICAgIH1cbiAgICBpZiAodHhEYXRhLmRlbGVnYXRpb25GZWVSYXRlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuX2RlbGVnYXRpb25GZWVSYXRlID0gdHhEYXRhLmRlbGVnYXRpb25GZWVSYXRlO1xuICAgIH1cbiAgICBpZiAodHhEYXRhLnJld2FyZEFkZHJlc3Nlcykge1xuICAgICAgKHRoaXMudHJhbnNhY3Rpb24gYXMgdW5rbm93biBhcyBQZXJtaXNzaW9ubGVzc1ZhbGlkYXRvckV4dGVuZGVkVHJhbnNhY3Rpb24pLl9yZXdhcmRBZGRyZXNzZXMgPVxuICAgICAgICB0eERhdGEucmV3YXJkQWRkcmVzc2VzO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmeSBpZiB0aGUgdHJhbnNhY3Rpb24gaXMgYSBwZXJtaXNzaW9ubGVzcyB2YWxpZGF0b3IgdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHR4XG4gICAqL1xuICBzdGF0aWMgdmVyaWZ5VHhUeXBlKHR4OiB1bmtub3duKTogYm9vbGVhbiB7XG4gICAgLy8gQ2hlY2sgaWYgdHJhbnNhY3Rpb24gaGFzIHBlcm1pc3Npb25sZXNzIHZhbGlkYXRvci1zcGVjaWZpYyBwcm9wZXJ0aWVzXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBjb25zdCB0eERhdGEgPSB0eCBhcyBhbnk7XG4gICAgcmV0dXJuIHR4RGF0YSAmJiB0eERhdGEuYmxzUHVibGljS2V5ICYmIHR4RGF0YS5ibHNTaWduYXR1cmU7XG4gIH1cblxuICB2ZXJpZnlUeFR5cGUodHg6IHVua25vd24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gUGVybWlzc2lvbmxlc3NWYWxpZGF0b3JUeEJ1aWxkZXIudmVyaWZ5VHhUeXBlKHR4KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCB0aGUgcGVybWlzc2lvbmxlc3MgdmFsaWRhdG9yIHRyYW5zYWN0aW9uXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyBidWlsZEZsYXJlVHJhbnNhY3Rpb24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gQmFzaWMgdmFsaWRhdGlvblxuICAgIGlmICghdGhpcy5fbm9kZUlEKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdOb2RlIElEIGlzIHJlcXVpcmVkIGZvciBwZXJtaXNzaW9ubGVzcyB2YWxpZGF0b3IgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLl9ibHNQdWJsaWNLZXkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0JMUyBwdWJsaWMga2V5IGlzIHJlcXVpcmVkIGZvciBwZXJtaXNzaW9ubGVzcyB2YWxpZGF0b3IgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLl9ibHNTaWduYXR1cmUpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0JMUyBzaWduYXR1cmUgaXMgcmVxdWlyZWQgZm9yIHBlcm1pc3Npb25sZXNzIHZhbGlkYXRvciB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuX3N0YXJ0VGltZSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignU3RhcnQgdGltZSBpcyByZXF1aXJlZCBmb3IgcGVybWlzc2lvbmxlc3MgdmFsaWRhdG9yIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIGlmICghdGhpcy5fZW5kVGltZSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignRW5kIHRpbWUgaXMgcmVxdWlyZWQgZm9yIHBlcm1pc3Npb25sZXNzIHZhbGlkYXRvciB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuX3N0YWtlQW1vdW50KSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdTdGFrZSBhbW91bnQgaXMgcmVxdWlyZWQgZm9yIHBlcm1pc3Npb25sZXNzIHZhbGlkYXRvciB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fZGVsZWdhdGlvbkZlZVJhdGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignRGVsZWdhdGlvbiBmZWUgcmF0ZSBpcyByZXF1aXJlZCBmb3IgcGVybWlzc2lvbmxlc3MgdmFsaWRhdG9yIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuXG4gICAgY29uc3QgcmV3YXJkQWRkcmVzc2VzID0gKHRoaXMudHJhbnNhY3Rpb24gYXMgdW5rbm93biBhcyBQZXJtaXNzaW9ubGVzc1ZhbGlkYXRvckV4dGVuZGVkVHJhbnNhY3Rpb24pXG4gICAgICAuX3Jld2FyZEFkZHJlc3NlcztcbiAgICBpZiAoIXJld2FyZEFkZHJlc3NlcyB8fCByZXdhcmRBZGRyZXNzZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdSZXdhcmQgYWRkcmVzc2VzIGFyZSByZXF1aXJlZCBmb3IgcGVybWlzc2lvbmxlc3MgdmFsaWRhdG9yIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuXG4gICAgLy8gVmFsaWRhdGUgdGltZSByYW5nZVxuICAgIGlmICh0aGlzLl9lbmRUaW1lIDw9IHRoaXMuX3N0YXJ0VGltZSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignRW5kIHRpbWUgbXVzdCBiZSBhZnRlciBzdGFydCB0aW1lJyk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIC8vIFRPRE86IEltcGxlbWVudCBhY3R1YWwgRmxhcmVKUyBQVk0gQVBJIGNhbGwgd2hlbiBhdmFpbGFibGVcbiAgICAgIC8vIEZvciBub3csIGNyZWF0ZSBhIHBsYWNlaG9sZGVyIHRyYW5zYWN0aW9uIHN0cnVjdHVyZVxuICAgICAgY29uc3QgdmFsaWRhdG9yVHggPSB7XG4gICAgICAgIHR5cGU6IEFERF9QRVJNSVNTSU9OTEVTU19WQUxJREFUT1JfVFlQRSxcbiAgICAgICAgbm9kZUlEOiB0aGlzLl9ub2RlSUQsXG4gICAgICAgIGJsc1B1YmxpY0tleTogdGhpcy5fYmxzUHVibGljS2V5LFxuICAgICAgICBibHNTaWduYXR1cmU6IHRoaXMuX2Jsc1NpZ25hdHVyZSxcbiAgICAgICAgc3RhcnRUaW1lOiB0aGlzLl9zdGFydFRpbWUsXG4gICAgICAgIGVuZFRpbWU6IHRoaXMuX2VuZFRpbWUsXG4gICAgICAgIHN0YWtlQW1vdW50OiB0aGlzLl9zdGFrZUFtb3VudCxcbiAgICAgICAgZGVsZWdhdGlvbkZlZVJhdGU6IHRoaXMuX2RlbGVnYXRpb25GZWVSYXRlLFxuICAgICAgICByZXdhcmRBZGRyZXNzOiByZXdhcmRBZGRyZXNzZXNbMF0sXG4gICAgICAgIGZyb21BZGRyZXNzZXM6IHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXMsXG4gICAgICAgIG5ldHdvcmtJZDogdGhpcy50cmFuc2FjdGlvbi5fbmV0d29ya0lELFxuICAgICAgICBzb3VyY2VCbG9ja2NoYWluSWQ6IHRoaXMudHJhbnNhY3Rpb24uX2Jsb2NrY2hhaW5JRCxcbiAgICAgICAgdGhyZXNob2xkOiB0aGlzLnRyYW5zYWN0aW9uLl90aHJlc2hvbGQgfHwgMSxcbiAgICAgICAgbG9ja3RpbWU6IHRoaXMudHJhbnNhY3Rpb24uX2xvY2t0aW1lIHx8IDBuLFxuICAgICAgfTtcblxuICAgICAgdGhpcy50cmFuc2FjdGlvbi5zZXRUcmFuc2FjdGlvbih2YWxpZGF0b3JUeCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoXG4gICAgICAgIGBGYWlsZWQgdG8gYnVpbGQgcGVybWlzc2lvbmxlc3MgdmFsaWRhdG9yIHRyYW5zYWN0aW9uOiAke1xuICAgICAgICAgIGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJ1Vua25vd24gZXJyb3InXG4gICAgICAgIH1gXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
import { BaseTransactionBuilder } from '@bitgo-beta/sdk-core';
|
|
2
|
-
import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
|
|
3
|
-
import { DecodedUtxoObj, Tx } from './iface';
|
|
4
|
-
import { KeyPair } from './keyPair';
|
|
5
|
-
import { Transaction } from './transaction';
|
|
6
|
-
export declare abstract class TransactionBuilder extends BaseTransactionBuilder {
|
|
7
|
-
protected _transaction: Transaction;
|
|
8
|
-
protected recoverSigner: boolean;
|
|
9
|
-
_signer: KeyPair[];
|
|
10
|
-
protected _recoveryMode: boolean;
|
|
11
|
-
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
12
|
-
/**
|
|
13
|
-
* Initialize the transaction builder fields using the decoded transaction data
|
|
14
|
-
*
|
|
15
|
-
* @param {Tx} tx the transaction data
|
|
16
|
-
* @returns itself
|
|
17
|
-
*/
|
|
18
|
-
initBuilder(tx: Tx): this;
|
|
19
|
-
/**
|
|
20
|
-
* Validates the threshold
|
|
21
|
-
* @param threshold
|
|
22
|
-
*/
|
|
23
|
-
validateThreshold(threshold: number): void;
|
|
24
|
-
/**
|
|
25
|
-
* Check the UTXO has expected fields.
|
|
26
|
-
* @param UTXO
|
|
27
|
-
*/
|
|
28
|
-
validateUtxo(value: DecodedUtxoObj): void;
|
|
29
|
-
/**
|
|
30
|
-
* Check the list of UTXOS is empty and check each UTXO.
|
|
31
|
-
* @param values
|
|
32
|
-
*/
|
|
33
|
-
validateUtxos(values: DecodedUtxoObj[]): void;
|
|
34
|
-
/**
|
|
35
|
-
* Validates locktime
|
|
36
|
-
* @param locktime
|
|
37
|
-
*/
|
|
38
|
-
validateLocktime(locktime: bigint): void;
|
|
39
|
-
/**
|
|
40
|
-
* Threshold is an int that names the number of unique signatures required to spend the output.
|
|
41
|
-
* Must be less than or equal to the length of Addresses.
|
|
42
|
-
* @param {number} value
|
|
43
|
-
*/
|
|
44
|
-
threshold(value: number): this;
|
|
45
|
-
/**
|
|
46
|
-
* Locktime is a long that contains the unix timestamp that this output can be spent after.
|
|
47
|
-
* The unix timestamp is specific to the second.
|
|
48
|
-
* @param value
|
|
49
|
-
*/
|
|
50
|
-
locktime(value: string | number): this;
|
|
51
|
-
/**
|
|
52
|
-
* When using recovery key must be set here
|
|
53
|
-
* @param {boolean}[recoverSigner=true] whether it's recovery signer
|
|
54
|
-
*/
|
|
55
|
-
recoverMode(recoverSigner?: boolean): this;
|
|
56
|
-
/**
|
|
57
|
-
* fromPubKey is a list of unique addresses that correspond to the private keys that can be used to spend this output
|
|
58
|
-
* @param {string | string[]} senderPubKey
|
|
59
|
-
*/
|
|
60
|
-
fromPubKey(senderPubKey: string | string[]): this;
|
|
61
|
-
/**
|
|
62
|
-
* List of UTXO required as inputs.
|
|
63
|
-
* A UTXO is a standalone representation of a transaction output.
|
|
64
|
-
*
|
|
65
|
-
* @param {DecodedUtxoObj[]} list of UTXOS
|
|
66
|
-
*/
|
|
67
|
-
utxos(value: DecodedUtxoObj[]): this;
|
|
68
|
-
/**
|
|
69
|
-
* Build the Flare transaction using FlareJS API
|
|
70
|
-
* @protected
|
|
71
|
-
*/
|
|
72
|
-
protected abstract buildFlareTransaction(): Promise<void> | void;
|
|
73
|
-
/** @inheritdoc */
|
|
74
|
-
protected fromImplementation(rawTransaction: string): Transaction;
|
|
75
|
-
/**
|
|
76
|
-
* Get the transaction instance
|
|
77
|
-
*/
|
|
78
|
-
get transaction(): Transaction;
|
|
79
|
-
/**
|
|
80
|
-
* Validate required fields before building transaction
|
|
81
|
-
* @protected
|
|
82
|
-
*/
|
|
83
|
-
protected validateRequiredFields(): void;
|
|
84
|
-
}
|
|
85
|
-
//# sourceMappingURL=transactionBuilder.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAyB,MAAM,sBAAsB,CAAC;AACrF,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAiB5C,8BAAsB,kBAAmB,SAAQ,sBAAsB;IACrE,SAAS,CAAC,YAAY,EAAE,WAAW,CAAC;IACpC,SAAS,CAAC,aAAa,UAAS;IACzB,OAAO,EAAE,OAAO,EAAE,CAAM;IAG/B,SAAS,CAAC,aAAa,UAAS;gBAEpB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C;;;;;OAKG;IACH,WAAW,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI;IAyBzB;;;OAGG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAM1C;;;OAGG;IACH,YAAY,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAMzC;;;OAGG;IACH,aAAa,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI;IAO7C;;;OAGG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAOxC;;;;OAIG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAM9B;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAMtC;;;OAGG;IACH,WAAW,CAAC,aAAa,UAAO,GAAG,IAAI;IAYvC;;;OAGG;IACH,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAMjD;;;;;OAKG;IACH,KAAK,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,IAAI;IAMpC;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAEhE,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,WAAW;IAajE;;OAEG;IACH,IAAI,WAAW,IAAI,WAAW,CAE7B;IAED;;;OAGG;IACH,SAAS,CAAC,sBAAsB,IAAI,IAAI;CAQzC"}
|
|
@@ -1,167 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TransactionBuilder = void 0;
|
|
4
|
-
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
5
|
-
const transaction_1 = require("./transaction");
|
|
6
|
-
const constants_1 = require("./constants");
|
|
7
|
-
class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
|
|
8
|
-
constructor(_coinConfig) {
|
|
9
|
-
super(_coinConfig);
|
|
10
|
-
this.recoverSigner = false;
|
|
11
|
-
this._signer = [];
|
|
12
|
-
// Recovery mode flag for transaction building
|
|
13
|
-
this._recoveryMode = false;
|
|
14
|
-
this._transaction = new transaction_1.Transaction(_coinConfig);
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Initialize the transaction builder fields using the decoded transaction data
|
|
18
|
-
*
|
|
19
|
-
* @param {Tx} tx the transaction data
|
|
20
|
-
* @returns itself
|
|
21
|
-
*/
|
|
22
|
-
initBuilder(tx) {
|
|
23
|
-
// Validate network and blockchain IDs if available
|
|
24
|
-
const txData = tx;
|
|
25
|
-
if (txData.networkID !== undefined && txData.networkID !== this._transaction._networkID) {
|
|
26
|
-
throw new Error(constants_1.ERROR_NETWORK_ID_MISMATCH);
|
|
27
|
-
}
|
|
28
|
-
if (txData.blockchainID) {
|
|
29
|
-
const blockchainID = Buffer.isBuffer(txData.blockchainID)
|
|
30
|
-
? txData.blockchainID
|
|
31
|
-
: Buffer.from(txData.blockchainID, constants_1.HEX_ENCODING);
|
|
32
|
-
const transactionBlockchainID = Buffer.isBuffer(this._transaction._blockchainID)
|
|
33
|
-
? this._transaction._blockchainID
|
|
34
|
-
: Buffer.from(this._transaction._blockchainID, constants_1.HEX_ENCODING);
|
|
35
|
-
if (!blockchainID.equals(transactionBlockchainID)) {
|
|
36
|
-
throw new Error(constants_1.ERROR_BLOCKCHAIN_ID_MISMATCH_BUILDER);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
this._transaction.setTransaction(tx);
|
|
40
|
-
return this;
|
|
41
|
-
}
|
|
42
|
-
// region Validators
|
|
43
|
-
/**
|
|
44
|
-
* Validates the threshold
|
|
45
|
-
* @param threshold
|
|
46
|
-
*/
|
|
47
|
-
validateThreshold(threshold) {
|
|
48
|
-
if (!threshold || threshold !== 2) {
|
|
49
|
-
throw new sdk_core_1.BuildTransactionError(constants_1.ERROR_INVALID_THRESHOLD);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Check the UTXO has expected fields.
|
|
54
|
-
* @param UTXO
|
|
55
|
-
*/
|
|
56
|
-
validateUtxo(value) {
|
|
57
|
-
constants_1.UTXO_REQUIRED_FIELDS.forEach((field) => {
|
|
58
|
-
if (!value.hasOwnProperty(field))
|
|
59
|
-
throw new sdk_core_1.BuildTransactionError(`${constants_1.ERROR_UTXOS_MISSING_FIELD} ${field}`);
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Check the list of UTXOS is empty and check each UTXO.
|
|
64
|
-
* @param values
|
|
65
|
-
*/
|
|
66
|
-
validateUtxos(values) {
|
|
67
|
-
if (values.length === 0) {
|
|
68
|
-
throw new sdk_core_1.BuildTransactionError(constants_1.ERROR_UTXOS_EMPTY_ARRAY);
|
|
69
|
-
}
|
|
70
|
-
values.forEach(this.validateUtxo);
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Validates locktime
|
|
74
|
-
* @param locktime
|
|
75
|
-
*/
|
|
76
|
-
validateLocktime(locktime) {
|
|
77
|
-
if (!locktime || locktime < BigInt(0)) {
|
|
78
|
-
throw new sdk_core_1.BuildTransactionError(constants_1.ERROR_INVALID_LOCKTIME);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
// endregion
|
|
82
|
-
/**
|
|
83
|
-
* Threshold is an int that names the number of unique signatures required to spend the output.
|
|
84
|
-
* Must be less than or equal to the length of Addresses.
|
|
85
|
-
* @param {number} value
|
|
86
|
-
*/
|
|
87
|
-
threshold(value) {
|
|
88
|
-
this.validateThreshold(value);
|
|
89
|
-
this._transaction._threshold = value;
|
|
90
|
-
return this;
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Locktime is a long that contains the unix timestamp that this output can be spent after.
|
|
94
|
-
* The unix timestamp is specific to the second.
|
|
95
|
-
* @param value
|
|
96
|
-
*/
|
|
97
|
-
locktime(value) {
|
|
98
|
-
this.validateLocktime(BigInt(value));
|
|
99
|
-
this._transaction._locktime = BigInt(value);
|
|
100
|
-
return this;
|
|
101
|
-
}
|
|
102
|
-
/**
|
|
103
|
-
* When using recovery key must be set here
|
|
104
|
-
* @param {boolean}[recoverSigner=true] whether it's recovery signer
|
|
105
|
-
*/
|
|
106
|
-
recoverMode(recoverSigner = true) {
|
|
107
|
-
this.recoverSigner = recoverSigner;
|
|
108
|
-
this._recoveryMode = recoverSigner;
|
|
109
|
-
// Recovery operations typically need single signature
|
|
110
|
-
if (recoverSigner && !this._transaction._threshold) {
|
|
111
|
-
this._transaction._threshold = 1;
|
|
112
|
-
}
|
|
113
|
-
return this;
|
|
114
|
-
}
|
|
115
|
-
/**
|
|
116
|
-
* fromPubKey is a list of unique addresses that correspond to the private keys that can be used to spend this output
|
|
117
|
-
* @param {string | string[]} senderPubKey
|
|
118
|
-
*/
|
|
119
|
-
fromPubKey(senderPubKey) {
|
|
120
|
-
const pubKeys = senderPubKey instanceof Array ? senderPubKey : [senderPubKey];
|
|
121
|
-
this._transaction._fromAddresses = pubKeys; // Store as strings directly
|
|
122
|
-
return this;
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* List of UTXO required as inputs.
|
|
126
|
-
* A UTXO is a standalone representation of a transaction output.
|
|
127
|
-
*
|
|
128
|
-
* @param {DecodedUtxoObj[]} list of UTXOS
|
|
129
|
-
*/
|
|
130
|
-
utxos(value) {
|
|
131
|
-
this.validateUtxos(value);
|
|
132
|
-
this._transaction._utxos = value;
|
|
133
|
-
return this;
|
|
134
|
-
}
|
|
135
|
-
/** @inheritdoc */
|
|
136
|
-
fromImplementation(rawTransaction) {
|
|
137
|
-
// Parse the raw transaction and initialize the builder
|
|
138
|
-
try {
|
|
139
|
-
const parsedTx = JSON.parse(rawTransaction);
|
|
140
|
-
this.initBuilder(parsedTx);
|
|
141
|
-
return this._transaction;
|
|
142
|
-
}
|
|
143
|
-
catch (error) {
|
|
144
|
-
throw new Error(`${constants_1.ERROR_PARSE_RAW_TRANSACTION}: ${error instanceof Error ? error.message : constants_1.ERROR_UNKNOWN_PARSING}`);
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
/**
|
|
148
|
-
* Get the transaction instance
|
|
149
|
-
*/
|
|
150
|
-
get transaction() {
|
|
151
|
-
return this._transaction;
|
|
152
|
-
}
|
|
153
|
-
/**
|
|
154
|
-
* Validate required fields before building transaction
|
|
155
|
-
* @protected
|
|
156
|
-
*/
|
|
157
|
-
validateRequiredFields() {
|
|
158
|
-
if (this._transaction._fromAddresses.length === 0) {
|
|
159
|
-
throw new Error(constants_1.ERROR_FROM_ADDRESSES_REQUIRED);
|
|
160
|
-
}
|
|
161
|
-
if (this._transaction._utxos.length === 0) {
|
|
162
|
-
throw new Error(constants_1.ERROR_UTXOS_REQUIRED_BUILDER);
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
exports.TransactionBuilder = TransactionBuilder;
|
|
167
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbURBQXFGO0FBSXJGLCtDQUE0QztBQUU1QywyQ0FhcUI7QUFFckIsTUFBc0Isa0JBQW1CLFNBQVEsaUNBQXNCO0lBUXJFLFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBUFgsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDekIsWUFBTyxHQUFjLEVBQUUsQ0FBQztRQUUvQiw4Q0FBOEM7UUFDcEMsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFJOUIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLHlCQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsV0FBVyxDQUFDLEVBQU07UUFDaEIsbURBQW1EO1FBQ25ELE1BQU0sTUFBTSxHQUFHLEVBQW1DLENBQUM7UUFFbkQsSUFBSSxNQUFNLENBQUMsU0FBUyxLQUFLLFNBQVMsSUFBSSxNQUFNLENBQUMsU0FBUyxLQUFLLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDeEYsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQ0FBeUIsQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFFRCxJQUFJLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN4QixNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUM7Z0JBQ3ZELENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWTtnQkFDckIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSx3QkFBWSxDQUFDLENBQUM7WUFDbkQsTUFBTSx1QkFBdUIsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxZ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TUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMxQyxNQUFNLElBQUksS0FBSyxDQUFDLHdDQUE0QixDQUFDLENBQUM7UUFDaEQsQ0FBQztJQUNILENBQUM7Q0FDRjtBQXpMRCxnREF5TEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyLCBCdWlsZFRyYW5zYWN0aW9uRXJyb3IgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBEZWNvZGVkVXR4b09iaiwgVHggfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IEtleVBhaXIgfSBmcm9tICcuL2tleVBhaXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IFJhd1RyYW5zYWN0aW9uRGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHtcbiAgRVJST1JfTkVUV09SS19JRF9NSVNNQVRDSCxcbiAgRVJST1JfQkxPQ0tDSEFJTl9JRF9NSVNNQVRDSF9CVUlMREVSLFxuICBFUlJPUl9JTlZBTElEX1RIUkVTSE9MRCxcbiAgRVJST1JfSU5WQUxJRF9MT0NLVElNRSxcbiAgRVJST1JfVVRYT1NfRU1QVFlfQVJSQVksXG4gIEVSUk9SX1VUWE9TX01JU1NJTkdfRklFTEQsXG4gIEVSUk9SX0ZST01fQUREUkVTU0VTX1JFUVVJUkVELFxuICBFUlJPUl9VVFhPU19SRVFVSVJFRF9CVUlMREVSLFxuICBFUlJPUl9QQVJTRV9SQVdfVFJBTlNBQ1RJT04sXG4gIEVSUk9SX1VOS05PV05fUEFSU0lORyxcbiAgVVRYT19SRVFVSVJFRF9GSUVMRFMsXG4gIEhFWF9FTkNPRElORyxcbn0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVHJhbnNhY3Rpb25CdWlsZGVyIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByb3RlY3RlZCBfdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uO1xuICBwcm90ZWN0ZWQgcmVjb3ZlclNpZ25lciA9IGZhbHNlO1xuICBwdWJsaWMgX3NpZ25lcjogS2V5UGFpcltdID0gW107XG5cbiAgLy8gUmVjb3ZlcnkgbW9kZSBmbGFnIGZvciB0cmFuc2FjdGlvbiBidWlsZGluZ1xuICBwcm90ZWN0ZWQgX3JlY292ZXJ5TW9kZSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbihfY29pbkNvbmZpZyk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0aGUgdHJhbnNhY3Rpb24gYnVpbGRlciBmaWVsZHMgdXNpbmcgdGhlIGRlY29kZWQgdHJhbnNhY3Rpb24gZGF0YVxuICAgKlxuICAgKiBAcGFyYW0ge1R4fSB0eCB0aGUgdHJhbnNhY3Rpb24gZGF0YVxuICAgKiBAcmV0dXJucyBpdHNlbGZcbiAgICovXG4gIGluaXRCdWlsZGVyKHR4OiBUeCk6IHRoaXMge1xuICAgIC8vIFZhbGlkYXRlIG5ldHdvcmsgYW5kIGJsb2NrY2hhaW4gSURzIGlmIGF2YWlsYWJsZVxuICAgIGNvbnN0IHR4RGF0YSA9IHR4IGFzIHVua25vd24gYXMgUmF3VHJhbnNhY3Rpb25EYXRhO1xuXG4gICAgaWYgKHR4RGF0YS5uZXR3b3JrSUQgIT09IHVuZGVmaW5lZCAmJiB0eERhdGEubmV0d29ya0lEICE9PSB0aGlzLl90cmFuc2FjdGlvbi5fbmV0d29ya0lEKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoRVJST1JfTkVUV09SS19JRF9NSVNNQVRDSCk7XG4gICAgfVxuXG4gICAgaWYgKHR4RGF0YS5ibG9ja2NoYWluSUQpIHtcbiAgICAgIGNvbnN0IGJsb2NrY2hhaW5JRCA9IEJ1ZmZlci5pc0J1ZmZlcih0eERhdGEuYmxvY2tjaGFpbklEKVxuICAgICAgICA/IHR4RGF0YS5ibG9ja2NoYWluSURcbiAgICAgICAgOiBCdWZmZXIuZnJvbSh0eERhdGEuYmxvY2tjaGFpbklELCBIRVhfRU5DT0RJTkcpO1xuICAgICAgY29uc3QgdHJhbnNhY3Rpb25CbG9ja2NoYWluSUQgPSBCdWZmZXIuaXNCdWZmZXIodGhpcy5fdHJhbnNhY3Rpb24uX2Jsb2NrY2hhaW5JRClcbiAgICAgICAgPyB0aGlzLl90cmFuc2FjdGlvbi5fYmxvY2tjaGFpbklEXG4gICAgICAgIDogQnVmZmVyLmZyb20odGhpcy5fdHJhbnNhY3Rpb24uX2Jsb2NrY2hhaW5JRCwgSEVYX0VOQ09ESU5HKTtcbiAgICAgIGlmICghYmxvY2tjaGFpbklELmVxdWFscyh0cmFuc2FjdGlvbkJsb2NrY2hhaW5JRCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKEVSUk9SX0JMT0NLQ0hBSU5fSURfTUlTTUFUQ0hfQlVJTERFUik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fdHJhbnNhY3Rpb24uc2V0VHJhbnNhY3Rpb24odHgpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gcmVnaW9uIFZhbGlkYXRvcnNcbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgdGhyZXNob2xkXG4gICAqIEBwYXJhbSB0aHJlc2hvbGRcbiAgICovXG4gIHZhbGlkYXRlVGhyZXNob2xkKHRocmVzaG9sZDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKCF0aHJlc2hvbGQgfHwgdGhyZXNob2xkICE9PSAyKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKEVSUk9SX0lOVkFMSURfVEhSRVNIT0xEKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgdGhlIFVUWE8gaGFzIGV4cGVjdGVkIGZpZWxkcy5cbiAgICogQHBhcmFtIFVUWE9cbiAgICovXG4gIHZhbGlkYXRlVXR4byh2YWx1ZTogRGVjb2RlZFV0eG9PYmopOiB2b2lkIHtcbiAgICBVVFhPX1JFUVVJUkVEX0ZJRUxEUy5mb3JFYWNoKChmaWVsZCkgPT4ge1xuICAgICAgaWYgKCF2YWx1ZS5oYXNPd25Qcm9wZXJ0eShmaWVsZCkpIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoYCR7RVJST1JfVVRYT1NfTUlTU0lOR19GSUVMRH0gJHtmaWVsZH1gKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayB0aGUgbGlzdCBvZiBVVFhPUyBpcyBlbXB0eSBhbmQgY2hlY2sgZWFjaCBVVFhPLlxuICAgKiBAcGFyYW0gdmFsdWVzXG4gICAqL1xuICB2YWxpZGF0ZVV0eG9zKHZhbHVlczogRGVjb2RlZFV0eG9PYmpbXSk6IHZvaWQge1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKEVSUk9SX1VUWE9TX0VNUFRZX0FSUkFZKTtcbiAgICB9XG4gICAgdmFsdWVzLmZvckVhY2godGhpcy52YWxpZGF0ZVV0eG8pO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBsb2NrdGltZVxuICAgKiBAcGFyYW0gbG9ja3RpbWVcbiAgICovXG4gIHZhbGlkYXRlTG9ja3RpbWUobG9ja3RpbWU6IGJpZ2ludCk6IHZvaWQge1xuICAgIGlmICghbG9ja3RpbWUgfHwgbG9ja3RpbWUgPCBCaWdJbnQoMCkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoRVJST1JfSU5WQUxJRF9MT0NLVElNRSk7XG4gICAgfVxuICB9XG4gIC8vIGVuZHJlZ2lvblxuXG4gIC8qKlxuICAgKiBUaHJlc2hvbGQgaXMgYW4gaW50IHRoYXQgbmFtZXMgdGhlIG51bWJlciBvZiB1bmlxdWUgc2lnbmF0dXJlcyByZXF1aXJlZCB0byBzcGVuZCB0aGUgb3V0cHV0LlxuICAgKiBNdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgbGVuZ3RoIG9mIEFkZHJlc3Nlcy5cbiAgICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlXG4gICAqL1xuICB0aHJlc2hvbGQodmFsdWU6IG51bWJlcik6IHRoaXMge1xuICAgIHRoaXMudmFsaWRhdGVUaHJlc2hvbGQodmFsdWUpO1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uLl90aHJlc2hvbGQgPSB2YWx1ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2NrdGltZSBpcyBhIGxvbmcgdGhhdCBjb250YWlucyB0aGUgdW5peCB0aW1lc3RhbXAgdGhhdCB0aGlzIG91dHB1dCBjYW4gYmUgc3BlbnQgYWZ0ZXIuXG4gICAqIFRoZSB1bml4IHRpbWVzdGFtcCBpcyBzcGVjaWZpYyB0byB0aGUgc2Vjb25kLlxuICAgKiBAcGFyYW0gdmFsdWVcbiAgICovXG4gIGxvY2t0aW1lKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlTG9ja3RpbWUoQmlnSW50KHZhbHVlKSk7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24uX2xvY2t0aW1lID0gQmlnSW50KHZhbHVlKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGVuIHVzaW5nIHJlY292ZXJ5IGtleSBtdXN0IGJlIHNldCBoZXJlXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn1bcmVjb3ZlclNpZ25lcj10cnVlXSB3aGV0aGVyIGl0J3MgcmVjb3Zlcnkgc2lnbmVyXG4gICAqL1xuICByZWNvdmVyTW9kZShyZWNvdmVyU2lnbmVyID0gdHJ1ZSk6IHRoaXMge1xuICAgIHRoaXMucmVjb3ZlclNpZ25lciA9IHJlY292ZXJTaWduZXI7XG4gICAgdGhpcy5fcmVjb3ZlcnlNb2RlID0gcmVjb3ZlclNpZ25lcjtcblxuICAgIC8vIFJlY292ZXJ5IG9wZXJhdGlvbnMgdHlwaWNhbGx5IG5lZWQgc2luZ2xlIHNpZ25hdHVyZVxuICAgIGlmIChyZWNvdmVyU2lnbmVyICYmICF0aGlzLl90cmFuc2FjdGlvbi5fdGhyZXNob2xkKSB7XG4gICAgICB0aGlzLl90cmFuc2FjdGlvbi5fdGhyZXNob2xkID0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBmcm9tUHViS2V5IGlzIGEgbGlzdCBvZiB1bmlxdWUgYWRkcmVzc2VzIHRoYXQgY29ycmVzcG9uZCB0byB0aGUgcHJpdmF0ZSBrZXlzIHRoYXQgY2FuIGJlIHVzZWQgdG8gc3BlbmQgdGhpcyBvdXRwdXRcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBzdHJpbmdbXX0gc2VuZGVyUHViS2V5XG4gICAqL1xuICBmcm9tUHViS2V5KHNlbmRlclB1YktleTogc3RyaW5nIHwgc3RyaW5nW10pOiB0aGlzIHtcbiAgICBjb25zdCBwdWJLZXlzID0gc2VuZGVyUHViS2V5IGluc3RhbmNlb2YgQXJyYXkgPyBzZW5kZXJQdWJLZXkgOiBbc2VuZGVyUHViS2V5XTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3NlcyA9IHB1YktleXM7IC8vIFN0b3JlIGFzIHN0cmluZ3MgZGlyZWN0bHlcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0IG9mIFVUWE8gcmVxdWlyZWQgYXMgaW5wdXRzLlxuICAgKiBBIFVUWE8gaXMgYSBzdGFuZGFsb25lIHJlcHJlc2VudGF0aW9uIG9mIGEgdHJhbnNhY3Rpb24gb3V0cHV0LlxuICAgKlxuICAgKiBAcGFyYW0ge0RlY29kZWRVdHhvT2JqW119IGxpc3Qgb2YgVVRYT1NcbiAgICovXG4gIHV0eG9zKHZhbHVlOiBEZWNvZGVkVXR4b09ialtdKTogdGhpcyB7XG4gICAgdGhpcy52YWxpZGF0ZVV0eG9zKHZhbHVlKTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbi5fdXR4b3MgPSB2YWx1ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCB0aGUgRmxhcmUgdHJhbnNhY3Rpb24gdXNpbmcgRmxhcmVKUyBBUElcbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGJ1aWxkRmxhcmVUcmFuc2FjdGlvbigpOiBQcm9taXNlPHZvaWQ+IHwgdm9pZDtcblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGZyb21JbXBsZW1lbnRhdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogVHJhbnNhY3Rpb24ge1xuICAgIC8vIFBhcnNlIHRoZSByYXcgdHJhbnNhY3Rpb24gYW5kIGluaXRpYWxpemUgdGhlIGJ1aWxkZXJcbiAgICB0cnkge1xuICAgICAgY29uc3QgcGFyc2VkVHggPSBKU09OLnBhcnNlKHJhd1RyYW5zYWN0aW9uKTtcbiAgICAgIHRoaXMuaW5pdEJ1aWxkZXIocGFyc2VkVHgpO1xuICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGAke0VSUk9SX1BBUlNFX1JBV19UUkFOU0FDVElPTn06ICR7ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBFUlJPUl9VTktOT1dOX1BBUlNJTkd9YFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB0cmFuc2FjdGlvbiBpbnN0YW5jZVxuICAgKi9cbiAgZ2V0IHRyYW5zYWN0aW9uKCk6IFRyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgcmVxdWlyZWQgZmllbGRzIGJlZm9yZSBidWlsZGluZyB0cmFuc2FjdGlvblxuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgdmFsaWRhdGVSZXF1aXJlZEZpZWxkcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fdHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoRVJST1JfRlJPTV9BRERSRVNTRVNfUkVRVUlSRUQpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fdHJhbnNhY3Rpb24uX3V0eG9zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKEVSUk9SX1VUWE9TX1JFUVVJUkVEX0JVSUxERVIpO1xuICAgIH1cbiAgfVxufVxuIl19
|
package/dist/src/lib/types.d.ts
DELETED
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import { DecodedUtxoObj } from './iface';
|
|
2
|
-
/**
|
|
3
|
-
* Base extended transaction interface with common optional properties
|
|
4
|
-
*/
|
|
5
|
-
export interface BaseExtendedTransaction {
|
|
6
|
-
_memo?: Uint8Array;
|
|
7
|
-
_outputAmount?: string;
|
|
8
|
-
_utxos?: DecodedUtxoObj[];
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* Extended transaction for staking transactions (delegator/validator)
|
|
12
|
-
*/
|
|
13
|
-
export interface StakingExtendedTransaction extends BaseExtendedTransaction {
|
|
14
|
-
_rewardAddresses: string[];
|
|
15
|
-
_nodeID?: string;
|
|
16
|
-
_startTime?: bigint;
|
|
17
|
-
_endTime?: bigint;
|
|
18
|
-
_stakeAmount?: bigint;
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Extended transaction for validator transactions
|
|
22
|
-
*/
|
|
23
|
-
export interface ValidatorExtendedTransaction extends StakingExtendedTransaction {
|
|
24
|
-
_delegationFeeRate?: number;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Extended transaction for permissionless validator transactions
|
|
28
|
-
*/
|
|
29
|
-
export interface PermissionlessValidatorExtendedTransaction extends ValidatorExtendedTransaction {
|
|
30
|
-
_blsPublicKey?: string;
|
|
31
|
-
_blsSignature?: string;
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Base raw transaction data structure from serialized transactions
|
|
35
|
-
*/
|
|
36
|
-
export interface BaseRawTransactionData {
|
|
37
|
-
memo?: Uint8Array | string;
|
|
38
|
-
utxos?: DecodedUtxoObj[];
|
|
39
|
-
outputAmount?: string;
|
|
40
|
-
networkID?: number;
|
|
41
|
-
blockchainID?: Buffer | string;
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Raw transaction data for delegator transactions
|
|
45
|
-
*/
|
|
46
|
-
export interface DelegatorRawTransactionData extends BaseRawTransactionData {
|
|
47
|
-
nodeID: string;
|
|
48
|
-
startTime: string | number | bigint;
|
|
49
|
-
endTime: string | number | bigint;
|
|
50
|
-
stakeAmount: string | number | bigint;
|
|
51
|
-
rewardAddresses: string[];
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Raw transaction data for validator transactions
|
|
55
|
-
*/
|
|
56
|
-
export interface ValidatorRawTransactionData extends DelegatorRawTransactionData {
|
|
57
|
-
delegationFeeRate: number;
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Raw transaction data for permissionless validator transactions
|
|
61
|
-
*/
|
|
62
|
-
export interface PermissionlessValidatorRawTransactionData extends ValidatorRawTransactionData {
|
|
63
|
-
blsPublicKey: string;
|
|
64
|
-
blsSignature: string;
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Raw transaction data structure from serialized transactions
|
|
68
|
-
* Union type supporting all transaction types with proper type safety
|
|
69
|
-
*/
|
|
70
|
-
export type RawTransactionData = BaseRawTransactionData | DelegatorRawTransactionData | ValidatorRawTransactionData | PermissionlessValidatorRawTransactionData;
|
|
71
|
-
/**
|
|
72
|
-
* Specific transaction extension types for better type safety
|
|
73
|
-
*/
|
|
74
|
-
export type TransactionWithBaseExtensions = BaseExtendedTransaction & Record<string, unknown>;
|
|
75
|
-
export type TransactionWithStakingExtensions = StakingExtendedTransaction & Record<string, unknown>;
|
|
76
|
-
export type TransactionWithValidatorExtensions = ValidatorExtendedTransaction & Record<string, unknown>;
|
|
77
|
-
export type TransactionWithPermissionlessValidatorExtensions = PermissionlessValidatorExtendedTransaction & Record<string, unknown>;
|
|
78
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/types.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzC;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,cAAc,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,0BAA2B,SAAQ,uBAAuB;IACzE,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,4BAA6B,SAAQ,0BAA0B;IAC9E,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,0CAA2C,SAAQ,4BAA4B;IAC9F,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IAErC,IAAI,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;IAC3B,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,2BAA4B,SAAQ,sBAAsB;IAEzE,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IACpC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IAClC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IACtC,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,2BAA4B,SAAQ,2BAA2B;IAE9E,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,yCAA0C,SAAQ,2BAA2B;IAE5F,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAC1B,sBAAsB,GACtB,2BAA2B,GAC3B,2BAA2B,GAC3B,yCAAyC,CAAC;AAE9C;;GAEG;AACH,MAAM,MAAM,6BAA6B,GAAG,uBAAuB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC9F,MAAM,MAAM,gCAAgC,GAAG,0BAA0B,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACpG,MAAM,MAAM,kCAAkC,GAAG,4BAA4B,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACxG,MAAM,MAAM,gDAAgD,GAAG,0CAA0C,GACvG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC"}
|