@bitgo-beta/sdk-coin-vet 1.0.1-beta.49 → 1.0.1-beta.490
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/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +3 -1
- package/dist/src/lib/constants.d.ts +25 -0
- package/dist/src/lib/constants.d.ts.map +1 -1
- package/dist/src/lib/constants.js +27 -2
- package/dist/src/lib/iface.d.ts +26 -2
- package/dist/src/lib/iface.d.ts.map +1 -1
- package/dist/src/lib/iface.js +1 -1
- package/dist/src/lib/index.d.ts +19 -0
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +40 -2
- package/dist/src/lib/transaction/addressInitializationTransaction.d.ts +31 -0
- package/dist/src/lib/transaction/addressInitializationTransaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/addressInitializationTransaction.js +170 -0
- package/dist/src/lib/transaction/burnNftTransaction.d.ts +26 -0
- package/dist/src/lib/transaction/burnNftTransaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/burnNftTransaction.js +131 -0
- package/dist/src/lib/transaction/claimRewards.d.ts +41 -0
- package/dist/src/lib/transaction/claimRewards.d.ts.map +1 -0
- package/dist/src/lib/transaction/claimRewards.js +210 -0
- package/dist/src/lib/transaction/delegateClauseTransaction.d.ts +27 -0
- package/dist/src/lib/transaction/delegateClauseTransaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/delegateClauseTransaction.js +156 -0
- package/dist/src/lib/transaction/exitDelegation.d.ts +26 -0
- package/dist/src/lib/transaction/exitDelegation.d.ts.map +1 -0
- package/dist/src/lib/transaction/exitDelegation.js +136 -0
- package/dist/src/lib/transaction/flushTokenTransaction.d.ts +20 -0
- package/dist/src/lib/transaction/flushTokenTransaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/flushTokenTransaction.js +98 -0
- package/dist/src/lib/transaction/nftTransaction.d.ts +17 -0
- package/dist/src/lib/transaction/nftTransaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/nftTransaction.js +108 -0
- package/dist/src/lib/transaction/stakeClauseTransaction.d.ts +27 -0
- package/dist/src/lib/transaction/stakeClauseTransaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/stakeClauseTransaction.js +158 -0
- package/dist/src/lib/transaction/stakingTransaction.d.ts +31 -0
- package/dist/src/lib/transaction/stakingTransaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/stakingTransaction.js +169 -0
- package/dist/src/lib/transaction/tokenTransaction.d.ts +14 -0
- package/dist/src/lib/transaction/tokenTransaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/tokenTransaction.js +95 -0
- package/dist/src/lib/transaction/transaction.d.ts +18 -28
- package/dist/src/lib/transaction/transaction.d.ts.map +1 -1
- package/dist/src/lib/transaction/transaction.js +97 -57
- package/dist/src/lib/transactionBuilder/addressInitializationBuilder.d.ts +78 -0
- package/dist/src/lib/transactionBuilder/addressInitializationBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/addressInitializationBuilder.js +158 -0
- package/dist/src/lib/transactionBuilder/burnNftBuilder.d.ts +59 -0
- package/dist/src/lib/transactionBuilder/burnNftBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/burnNftBuilder.js +118 -0
- package/dist/src/lib/transactionBuilder/claimRewardsBuilder.d.ts +57 -0
- package/dist/src/lib/transactionBuilder/claimRewardsBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/claimRewardsBuilder.js +142 -0
- package/dist/src/lib/transactionBuilder/delegateTxnBuilder.d.ts +66 -0
- package/dist/src/lib/transactionBuilder/delegateTxnBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/delegateTxnBuilder.js +120 -0
- package/dist/src/lib/transactionBuilder/exitDelegationBuilder.d.ts +58 -0
- package/dist/src/lib/transactionBuilder/exitDelegationBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/exitDelegationBuilder.js +115 -0
- package/dist/src/lib/transactionBuilder/flushTokenTransactionBuilder.d.ts +66 -0
- package/dist/src/lib/transactionBuilder/flushTokenTransactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/flushTokenTransactionBuilder.js +129 -0
- package/dist/src/lib/transactionBuilder/nftTransactionBuilder.d.ts +23 -0
- package/dist/src/lib/transactionBuilder/nftTransactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/nftTransactionBuilder.js +93 -0
- package/dist/src/lib/transactionBuilder/stakeClauseTxnBuilder.d.ts +73 -0
- package/dist/src/lib/transactionBuilder/stakeClauseTxnBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/stakeClauseTxnBuilder.js +146 -0
- package/dist/src/lib/transactionBuilder/stakingBuilder.d.ts +73 -0
- package/dist/src/lib/transactionBuilder/stakingBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/stakingBuilder.js +147 -0
- package/dist/src/lib/transactionBuilder/tokenTransactionBuilder.d.ts +21 -0
- package/dist/src/lib/transactionBuilder/tokenTransactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/tokenTransactionBuilder.js +70 -0
- package/dist/src/lib/transactionBuilder/transactionBuilder.d.ts +10 -9
- package/dist/src/lib/transactionBuilder/transactionBuilder.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilder/transactionBuilder.js +25 -19
- package/dist/src/lib/transactionBuilderFactory.d.ts +52 -0
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilderFactory.js +115 -1
- package/dist/src/lib/types.d.ts +24 -0
- package/dist/src/lib/types.d.ts.map +1 -1
- package/dist/src/lib/types.js +1 -1
- package/dist/src/lib/utils.d.ts +98 -1
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +262 -8
- package/dist/src/register.d.ts.map +1 -1
- package/dist/src/register.js +9 -1
- package/dist/src/vet.d.ts +80 -2
- package/dist/src/vet.d.ts.map +1 -1
- package/dist/src/vet.js +478 -8
- package/dist/src/vetNFTCollection.d.ts +18 -0
- package/dist/src/vetNFTCollection.d.ts.map +1 -0
- package/dist/src/vetNFTCollection.js +52 -0
- package/dist/src/vetToken.d.ts +19 -0
- package/dist/src/vetToken.d.ts.map +1 -0
- package/dist/src/vetToken.js +52 -0
- package/dist/test/resources/vet.d.ts +70 -0
- package/dist/test/resources/vet.d.ts.map +1 -0
- package/dist/test/resources/vet.js +125 -0
- package/dist/test/transactionBuilder/addressInitializationBuilder.d.ts +2 -0
- package/dist/test/transactionBuilder/addressInitializationBuilder.d.ts.map +1 -0
- package/dist/test/transactionBuilder/addressInitializationBuilder.js +141 -0
- package/dist/test/transactionBuilder/burnNftBuilder.d.ts +2 -0
- package/dist/test/transactionBuilder/burnNftBuilder.d.ts.map +1 -0
- package/dist/test/transactionBuilder/burnNftBuilder.js +154 -0
- package/dist/test/transactionBuilder/claimRewardsBuilder.d.ts +2 -0
- package/dist/test/transactionBuilder/claimRewardsBuilder.d.ts.map +1 -0
- package/dist/test/transactionBuilder/claimRewardsBuilder.js +246 -0
- package/dist/test/transactionBuilder/delegateClauseTxnBuilder.d.ts +2 -0
- package/dist/test/transactionBuilder/delegateClauseTxnBuilder.d.ts.map +1 -0
- package/dist/test/transactionBuilder/delegateClauseTxnBuilder.js +173 -0
- package/dist/test/transactionBuilder/exitDelegationBuilder.d.ts +2 -0
- package/dist/test/transactionBuilder/exitDelegationBuilder.d.ts.map +1 -0
- package/dist/test/transactionBuilder/exitDelegationBuilder.js +154 -0
- package/dist/test/transactionBuilder/flushTokenTransactionBuilder.d.ts +2 -0
- package/dist/test/transactionBuilder/flushTokenTransactionBuilder.d.ts.map +1 -0
- package/dist/test/transactionBuilder/flushTokenTransactionBuilder.js +132 -0
- package/dist/test/transactionBuilder/nftTransactionBuilder.d.ts +2 -0
- package/dist/test/transactionBuilder/nftTransactionBuilder.d.ts.map +1 -0
- package/dist/test/transactionBuilder/nftTransactionBuilder.js +242 -0
- package/dist/test/transactionBuilder/stakeClauseTransactionBuilder.d.ts +2 -0
- package/dist/test/transactionBuilder/stakeClauseTransactionBuilder.d.ts.map +1 -0
- package/dist/test/transactionBuilder/stakeClauseTransactionBuilder.js +248 -0
- package/dist/test/transactionBuilder/stakingTransaction.d.ts +2 -0
- package/dist/test/transactionBuilder/stakingTransaction.d.ts.map +1 -0
- package/dist/test/transactionBuilder/stakingTransaction.js +250 -0
- package/dist/test/transactionBuilder/tokenTransactionBuilder.d.ts +2 -0
- package/dist/test/transactionBuilder/tokenTransactionBuilder.d.ts.map +1 -0
- package/dist/test/transactionBuilder/tokenTransactionBuilder.js +249 -0
- package/dist/test/transactionBuilder/transferBuilder.d.ts +2 -0
- package/dist/test/transactionBuilder/transferBuilder.d.ts.map +1 -0
- package/dist/test/transactionBuilder/transferBuilder.js +214 -0
- package/dist/test/unit/keyPair.d.ts +2 -0
- package/dist/test/unit/keyPair.d.ts.map +1 -0
- package/dist/test/unit/keyPair.js +181 -0
- package/dist/test/unit/stakingFlowE2E.d.ts +2 -0
- package/dist/test/unit/stakingFlowE2E.d.ts.map +1 -0
- package/dist/test/unit/stakingFlowE2E.js +229 -0
- package/dist/test/unit/utils.d.ts +2 -0
- package/dist/test/unit/utils.d.ts.map +1 -0
- package/dist/test/unit/utils.js +106 -0
- package/dist/test/unit/vet.d.ts +2 -0
- package/dist/test/unit/vet.d.ts.map +1 -0
- package/dist/test/unit/vet.js +251 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +16 -10
- package/.eslintignore +0 -5
- package/.mocharc.yml +0 -8
- package/CHANGELOG.md +0 -34
package/dist/src/lib/utils.js
CHANGED
|
@@ -1,10 +1,16 @@
|
|
|
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.Utils = void 0;
|
|
4
|
-
const sdk_core_1 = require("@
|
|
7
|
+
const sdk_core_1 = require("@vechain/sdk-core");
|
|
8
|
+
const ethereumjs_abi_1 = __importDefault(require("ethereumjs-abi"));
|
|
9
|
+
const ethereumjs_util_1 = require("ethereumjs-util");
|
|
10
|
+
const sdk_core_2 = require("@bitgo-beta/sdk-core");
|
|
11
|
+
const abstract_eth_1 = require("@bitgo-beta/abstract-eth");
|
|
5
12
|
const constants_1 = require("./constants");
|
|
6
13
|
const keyPair_1 = require("./keyPair");
|
|
7
|
-
const sdk_core_2 = require("@vechain/sdk-core");
|
|
8
14
|
class Utils {
|
|
9
15
|
isValidAddress(address) {
|
|
10
16
|
return this.isValidHex(address, constants_1.VET_ADDRESS_LENGTH);
|
|
@@ -41,28 +47,276 @@ class Utils {
|
|
|
41
47
|
return regex.test(value);
|
|
42
48
|
}
|
|
43
49
|
deserializeTransaction(serializedTransaction) {
|
|
44
|
-
const txBytes =
|
|
50
|
+
const txBytes = sdk_core_1.HexUInt.of(serializedTransaction).bytes;
|
|
45
51
|
try {
|
|
46
|
-
return
|
|
52
|
+
return sdk_core_1.Transaction.decode(txBytes, false);
|
|
47
53
|
}
|
|
48
54
|
catch (err) {
|
|
49
55
|
if (err.message?.includes('Expected 9 items, but got 10')) {
|
|
50
56
|
// Likely signed, so retry with isSigned = true
|
|
51
|
-
return
|
|
57
|
+
return sdk_core_1.Transaction.decode(txBytes, true);
|
|
52
58
|
}
|
|
53
59
|
throw err;
|
|
54
60
|
}
|
|
55
61
|
}
|
|
56
62
|
getTransactionTypeFromClause(clauses) {
|
|
57
63
|
if (clauses[0].data === '0x') {
|
|
58
|
-
return
|
|
64
|
+
return sdk_core_2.TransactionType.Send;
|
|
65
|
+
}
|
|
66
|
+
else if (clauses[0].data.startsWith(abstract_eth_1.v4CreateForwarderMethodId)) {
|
|
67
|
+
return sdk_core_2.TransactionType.AddressInitialization;
|
|
68
|
+
}
|
|
69
|
+
else if (clauses[0].data.startsWith(abstract_eth_1.flushForwarderTokensMethodIdV4)) {
|
|
70
|
+
return sdk_core_2.TransactionType.FlushTokens;
|
|
71
|
+
}
|
|
72
|
+
else if (clauses[0].data.startsWith(constants_1.TRANSFER_TOKEN_METHOD_ID)) {
|
|
73
|
+
return sdk_core_2.TransactionType.SendToken;
|
|
74
|
+
}
|
|
75
|
+
else if (clauses[0].data.startsWith(constants_1.STAKING_METHOD_ID)) {
|
|
76
|
+
return sdk_core_2.TransactionType.ContractCall;
|
|
77
|
+
}
|
|
78
|
+
else if (clauses[0].data.startsWith(constants_1.STAKE_CLAUSE_METHOD_ID)) {
|
|
79
|
+
return sdk_core_2.TransactionType.StakingActivate;
|
|
80
|
+
}
|
|
81
|
+
else if (clauses[0].data.startsWith(constants_1.DELEGATE_CLAUSE_METHOD_ID)) {
|
|
82
|
+
return sdk_core_2.TransactionType.StakingDelegate;
|
|
83
|
+
}
|
|
84
|
+
else if (clauses[0].data.startsWith(constants_1.EXIT_DELEGATION_METHOD_ID)) {
|
|
85
|
+
return sdk_core_2.TransactionType.StakingUnlock;
|
|
86
|
+
}
|
|
87
|
+
else if (clauses[0].data.startsWith(constants_1.BURN_NFT_METHOD_ID)) {
|
|
88
|
+
return sdk_core_2.TransactionType.StakingWithdraw;
|
|
89
|
+
}
|
|
90
|
+
else if (clauses[0].data.startsWith(constants_1.CLAIM_BASE_REWARDS_METHOD_ID) ||
|
|
91
|
+
clauses[0].data.startsWith(constants_1.CLAIM_STAKING_REWARDS_METHOD_ID)) {
|
|
92
|
+
return sdk_core_2.TransactionType.StakingClaim;
|
|
93
|
+
}
|
|
94
|
+
else if (clauses[0].data.startsWith(constants_1.TRANSFER_NFT_METHOD_ID)) {
|
|
95
|
+
return sdk_core_2.TransactionType.SendNFT;
|
|
59
96
|
}
|
|
60
97
|
else {
|
|
61
|
-
return
|
|
98
|
+
return sdk_core_2.TransactionType.SendToken;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
getTransferTokenData(toAddress, amountWei) {
|
|
102
|
+
const methodName = 'transfer';
|
|
103
|
+
const types = ['address', 'uint256'];
|
|
104
|
+
const params = [toAddress, new ethereumjs_util_1.BN(amountWei)];
|
|
105
|
+
const method = ethereumjs_abi_1.default.methodID(methodName, types);
|
|
106
|
+
const args = ethereumjs_abi_1.default.rawEncode(types, params);
|
|
107
|
+
return (0, ethereumjs_util_1.addHexPrefix)(Buffer.concat([method, args]).toString('hex'));
|
|
108
|
+
}
|
|
109
|
+
getTransferNFTData(from, to, tokenId) {
|
|
110
|
+
const methodName = 'transferFrom';
|
|
111
|
+
const types = ['address', 'address', 'uint256'];
|
|
112
|
+
const params = [from, to, new ethereumjs_util_1.BN(tokenId)];
|
|
113
|
+
const method = ethereumjs_abi_1.default.methodID(methodName, types);
|
|
114
|
+
const args = ethereumjs_abi_1.default.rawEncode(types, params);
|
|
115
|
+
return (0, ethereumjs_util_1.addHexPrefix)(Buffer.concat([method, args]).toString('hex'));
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Decodes staking transaction data to extract levelId and autorenew
|
|
119
|
+
*
|
|
120
|
+
* @param {string} data - The encoded transaction data
|
|
121
|
+
* @returns {object} - Object containing levelId and autorenew
|
|
122
|
+
*/
|
|
123
|
+
decodeStakingData(data) {
|
|
124
|
+
try {
|
|
125
|
+
const parameters = data.slice(10);
|
|
126
|
+
// Decode using ethereumjs-abi directly
|
|
127
|
+
const decoded = ethereumjs_abi_1.default.rawDecode(['uint8', 'bool'], Buffer.from(parameters, 'hex'));
|
|
128
|
+
return {
|
|
129
|
+
levelId: Number(decoded[0]),
|
|
130
|
+
autorenew: Boolean(decoded[1]),
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
catch (error) {
|
|
134
|
+
throw new Error(`Failed to decode staking data: ${error.message}`);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Decodes staking transaction data to extract levelId and autorenew
|
|
139
|
+
*
|
|
140
|
+
* @param {string} data - The encoded transaction data
|
|
141
|
+
* @returns {object} - Object containing levelId and autorenew
|
|
142
|
+
*/
|
|
143
|
+
decodeStakeClauseData(data) {
|
|
144
|
+
try {
|
|
145
|
+
const parameters = data.slice(10);
|
|
146
|
+
// Decode using ethereumjs-abi directly
|
|
147
|
+
const decoded = ethereumjs_abi_1.default.rawDecode(['uint8'], Buffer.from(parameters, 'hex'));
|
|
148
|
+
return {
|
|
149
|
+
levelId: Number(decoded[0]),
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
catch (error) {
|
|
153
|
+
throw new Error(`Failed to decode staking data: ${error.message}`);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Decodes delegate transaction data to extract tokenId and delegateForever
|
|
158
|
+
*
|
|
159
|
+
* @param {string} data - The encoded transaction data
|
|
160
|
+
* @returns {object} - Object containing tokenId and delegateForever
|
|
161
|
+
*/
|
|
162
|
+
decodeDelegateClauseData(data) {
|
|
163
|
+
try {
|
|
164
|
+
const parameters = data.slice(10);
|
|
165
|
+
// Decode using ethereumjs-abi directly
|
|
166
|
+
const decoded = ethereumjs_abi_1.default.rawDecode(['uint256', 'bool'], Buffer.from(parameters, 'hex'));
|
|
167
|
+
return {
|
|
168
|
+
tokenId: Number(decoded[0]),
|
|
169
|
+
delegateForever: Boolean(decoded[1]),
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
catch (error) {
|
|
173
|
+
throw new Error(`Failed to decode delegation data: ${error.message}`);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
decodeTransferTokenData(data) {
|
|
177
|
+
const [address, amount] = (0, abstract_eth_1.getRawDecoded)(['address', 'uint256'], (0, abstract_eth_1.getBufferedByteCode)(constants_1.TRANSFER_TOKEN_METHOD_ID, data));
|
|
178
|
+
const recipientAddress = (0, ethereumjs_util_1.addHexPrefix)(address.toString()).toLowerCase();
|
|
179
|
+
return {
|
|
180
|
+
address: recipientAddress,
|
|
181
|
+
amount: amount.toString(),
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
decodeTransferNFTData(data) {
|
|
185
|
+
const [from, to, tokenIdBN] = (0, abstract_eth_1.getRawDecoded)(['address', 'address', 'uint256'], (0, abstract_eth_1.getBufferedByteCode)(constants_1.TRANSFER_NFT_METHOD_ID, data));
|
|
186
|
+
const recipientAddress = (0, ethereumjs_util_1.addHexPrefix)(to.toString()).toLowerCase();
|
|
187
|
+
const recipient = {
|
|
188
|
+
address: recipientAddress,
|
|
189
|
+
amount: '1',
|
|
190
|
+
};
|
|
191
|
+
const sender = (0, ethereumjs_util_1.addHexPrefix)(from.toString()).toLowerCase();
|
|
192
|
+
const tokenId = tokenIdBN.toString();
|
|
193
|
+
return {
|
|
194
|
+
recipients: [recipient],
|
|
195
|
+
sender,
|
|
196
|
+
tokenId,
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Decodes claim rewards transaction data to extract tokenId
|
|
201
|
+
*
|
|
202
|
+
* @param {string} data - The encoded claim rewards method call data
|
|
203
|
+
* @returns {string} - The tokenId as a string
|
|
204
|
+
*/
|
|
205
|
+
decodeClaimRewardsData(data) {
|
|
206
|
+
try {
|
|
207
|
+
// Remove method ID (first 10 characters: '0x' + 4-byte method ID)
|
|
208
|
+
const methodData = data.slice(10);
|
|
209
|
+
// Extract tokenId from first 32-byte slot
|
|
210
|
+
// The tokenId is a uint256, so we take the full 64 hex characters
|
|
211
|
+
const tokenIdHex = methodData.slice(0, 64);
|
|
212
|
+
// Convert hex to decimal string
|
|
213
|
+
return BigInt('0x' + tokenIdHex).toString();
|
|
214
|
+
}
|
|
215
|
+
catch (error) {
|
|
216
|
+
throw new Error(`Failed to decode claim rewards data: ${error.message}`);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Decodes exit delegation transaction data to extract tokenId
|
|
221
|
+
*
|
|
222
|
+
* @param {string} data - The encoded exit delegation method call data
|
|
223
|
+
* @returns {string} - The tokenId as a string
|
|
224
|
+
*/
|
|
225
|
+
decodeExitDelegationData(data) {
|
|
226
|
+
try {
|
|
227
|
+
if (!data.startsWith(constants_1.EXIT_DELEGATION_METHOD_ID)) {
|
|
228
|
+
throw new Error('Invalid exit delegation method data');
|
|
229
|
+
}
|
|
230
|
+
const tokenIdHex = data.slice(constants_1.EXIT_DELEGATION_METHOD_ID.length);
|
|
231
|
+
// Convert hex to decimal (matching original parseInt logic)
|
|
232
|
+
return parseInt(tokenIdHex, 16).toString();
|
|
233
|
+
}
|
|
234
|
+
catch (error) {
|
|
235
|
+
throw new Error(`Failed to decode exit delegation data: ${error.message}`);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Decodes burn NFT transaction data to extract tokenId
|
|
240
|
+
*
|
|
241
|
+
* @param {string} data - The encoded burn NFT method call data
|
|
242
|
+
* @returns {string} - The tokenId as a string
|
|
243
|
+
*/
|
|
244
|
+
decodeBurnNftData(data) {
|
|
245
|
+
try {
|
|
246
|
+
if (!data.startsWith(constants_1.BURN_NFT_METHOD_ID)) {
|
|
247
|
+
throw new Error('Invalid burn NFT method data');
|
|
248
|
+
}
|
|
249
|
+
const tokenIdHex = data.slice(constants_1.BURN_NFT_METHOD_ID.length);
|
|
250
|
+
// Convert hex to decimal (matching original parseInt logic)
|
|
251
|
+
return parseInt(tokenIdHex, 16).toString();
|
|
252
|
+
}
|
|
253
|
+
catch (error) {
|
|
254
|
+
throw new Error(`Failed to decode burn NFT data: ${error.message}`);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Get the network-appropriate delegation contract address
|
|
259
|
+
* @param {CoinConfig} coinConfig - The coin configuration object
|
|
260
|
+
* @returns {string} The delegation contract address for the network
|
|
261
|
+
*/
|
|
262
|
+
getDefaultDelegationAddress(coinConfig) {
|
|
263
|
+
const isTestnet = coinConfig.network.type === 'testnet';
|
|
264
|
+
return isTestnet ? constants_1.STARGATE_DELEGATION_ADDRESS_TESTNET : constants_1.STARGATE_DELEGATION_ADDRESS;
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Get the network-appropriate staking contract address
|
|
268
|
+
* @param {CoinConfig} coinConfig - The coin configuration object
|
|
269
|
+
* @returns {string} The staking contract address for the network
|
|
270
|
+
*/
|
|
271
|
+
getDefaultStakingAddress(coinConfig) {
|
|
272
|
+
const isTestnet = coinConfig.network.type === 'testnet';
|
|
273
|
+
return isTestnet ? constants_1.STARGATE_NFT_ADDRESS_TESTNET : constants_1.STARGATE_NFT_ADDRESS;
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Check if an address is a valid delegation contract address for any network
|
|
277
|
+
* @param {string} address - The address to check
|
|
278
|
+
* @returns {boolean} True if the address is a delegation contract address
|
|
279
|
+
*/
|
|
280
|
+
isDelegationContractAddress(address) {
|
|
281
|
+
const lowerAddress = address.toLowerCase();
|
|
282
|
+
return (lowerAddress === constants_1.STARGATE_DELEGATION_ADDRESS.toLowerCase() ||
|
|
283
|
+
lowerAddress === constants_1.STARGATE_DELEGATION_ADDRESS_TESTNET.toLowerCase());
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Check if an address is a valid NFT contract address for any network
|
|
287
|
+
* @param {string} address - The address to check
|
|
288
|
+
* @returns {boolean} True if the address is an NFT contract address
|
|
289
|
+
*/
|
|
290
|
+
isNftContractAddress(address) {
|
|
291
|
+
const lowerAddress = address.toLowerCase();
|
|
292
|
+
return (lowerAddress === constants_1.STARGATE_NFT_ADDRESS.toLowerCase() || lowerAddress === constants_1.STARGATE_NFT_ADDRESS_TESTNET.toLowerCase());
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Validate that a contract address matches the expected NFT/staking contract for the network
|
|
296
|
+
* @param {string} address - The contract address to validate
|
|
297
|
+
* @param {CoinConfig} coinConfig - The coin configuration object
|
|
298
|
+
* @throws {Error} If the address doesn't match the expected NFT contract address
|
|
299
|
+
*/
|
|
300
|
+
validateStakingContractAddress(address, coinConfig) {
|
|
301
|
+
const expectedAddress = this.getDefaultStakingAddress(coinConfig);
|
|
302
|
+
if (address.toLowerCase() !== expectedAddress.toLowerCase()) {
|
|
303
|
+
throw new Error(`Invalid staking contract address. Expected ${expectedAddress} for ${coinConfig.network.type}, got ${address}`);
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* Validate that a contract address matches the expected delegation contract for the network
|
|
308
|
+
* @param {string} address - The contract address to validate
|
|
309
|
+
* @param {CoinConfig} coinConfig - The coin configuration object
|
|
310
|
+
* @throws {Error} If the address doesn't match the expected delegation contract address
|
|
311
|
+
*/
|
|
312
|
+
validateDelegationContractAddress(address, coinConfig) {
|
|
313
|
+
const expectedAddress = this.getDefaultDelegationAddress(coinConfig);
|
|
314
|
+
if (address.toLowerCase() !== expectedAddress.toLowerCase()) {
|
|
315
|
+
throw new Error(`Invalid delegation contract address. Expected ${expectedAddress} for ${coinConfig.network.type}, got ${address}`);
|
|
62
316
|
}
|
|
63
317
|
}
|
|
64
318
|
}
|
|
65
319
|
exports.Utils = Utils;
|
|
66
320
|
const utils = new Utils();
|
|
67
321
|
exports.default = utils;
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1EQUFrRTtBQUNsRSwyQ0FBaUc7QUFDakcsdUNBQW9DO0FBQ3BDLGdEQUE0RTtBQUU1RSxNQUFhLEtBQUs7SUFDaEIsY0FBYyxDQUFDLE9BQWU7UUFDNUIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSw4QkFBa0IsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxjQUFjLENBQUMsSUFBWTtRQUN6QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLCtCQUFtQixDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELGlCQUFpQixDQUFDLEdBQVc7UUFDM0IsSUFBSSxDQUFDO1lBQ0gsSUFBSSxpQkFBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDMUIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztJQUNILENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxHQUFXO1FBQzFCLElBQUksQ0FBQztZQUNILElBQUksaUJBQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQzFCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsU0FBaUI7UUFDaEMsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxJQUFZO1FBQy9CLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUscUNBQXlCLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQWEsRUFBRSxNQUFjO1FBQ3RDLE1BQU0sS0FBSyxHQUFHLElBQUksTUFBTSxDQUFDLHVCQUF1QixNQUFNLElBQUksQ0FBQyxDQUFDO1FBQzVELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsc0JBQXNCLENBQUMscUJBQTZCO1FBQ2xELE1BQU0sT0FBTyxHQUFHLGtCQUFPLENBQUMsRUFBRSxDQUFDLHFCQUFxQixDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ3hELElBQUksQ0FBQztZQUNILE9BQU8sc0JBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVDLENBQUM7UUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2IsSUFBSSxHQUFHLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyw4QkFBOEIsQ0FBQyxFQUFFLENBQUM7Z0JBQzFELCtDQUErQztnQkFDL0MsT0FBTyxzQkFBVyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDM0MsQ0FBQztZQUNELE1BQU0sR0FBRyxDQUFDO1FBQ1osQ0FBQztJQUNILENBQUM7SUFFRCw0QkFBNEIsQ0FBQyxPQUE0QjtRQUN2RCxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDN0IsT0FBTywwQkFBZSxDQUFDLElBQUksQ0FBQztRQUM5QixDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sMEJBQWUsQ0FBQyxTQUFTLENBQUM7UUFDbkMsQ0FBQztJQUNILENBQUM7Q0FDRjtBQTVERCxzQkE0REM7QUFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO0FBRTFCLGtCQUFlLEtBQUssQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VVdGlscywgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgVkVUX0FERFJFU1NfTEVOR1RILCBWRVRfQkxPQ0tfSURfTEVOR1RILCBWRVRfVFJBTlNBQ1RJT05fSURfTEVOR1RIIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgS2V5UGFpciB9IGZyb20gJy4va2V5UGFpcic7XG5pbXBvcnQgeyBIZXhVSW50LCBUcmFuc2FjdGlvbiwgVHJhbnNhY3Rpb25DbGF1c2UgfSBmcm9tICdAdmVjaGFpbi9zZGstY29yZSc7XG5cbmV4cG9ydCBjbGFzcyBVdGlscyBpbXBsZW1lbnRzIEJhc2VVdGlscyB7XG4gIGlzVmFsaWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWRIZXgoYWRkcmVzcywgVkVUX0FERFJFU1NfTEVOR1RIKTtcbiAgfVxuXG4gIGlzVmFsaWRCbG9ja0lkKGhhc2g6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWRIZXgoaGFzaCwgVkVUX0JMT0NLX0lEX0xFTkdUSCk7XG4gIH1cblxuICBpc1ZhbGlkUHJpdmF0ZUtleShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICBuZXcgS2V5UGFpcih7IHBydjoga2V5IH0pO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGlzVmFsaWRQdWJsaWNLZXkoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0cnkge1xuICAgICAgbmV3IEtleVBhaXIoeyBwdWI6IGtleSB9KTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBpc1ZhbGlkU2lnbmF0dXJlKHNpZ25hdHVyZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkJyk7XG4gIH1cblxuICBpc1ZhbGlkVHJhbnNhY3Rpb25JZCh0eElkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkSGV4KHR4SWQsIFZFVF9UUkFOU0FDVElPTl9JRF9MRU5HVEgpO1xuICB9XG5cbiAgaXNWYWxpZEhleCh2YWx1ZTogc3RyaW5nLCBsZW5ndGg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChgXigweHwwWClbYS1mQS1GMC05XXske2xlbmd0aH19JGApO1xuICAgIHJldHVybiByZWdleC50ZXN0KHZhbHVlKTtcbiAgfVxuXG4gIGRlc2VyaWFsaXplVHJhbnNhY3Rpb24oc2VyaWFsaXplZFRyYW5zYWN0aW9uOiBzdHJpbmcpOiBUcmFuc2FjdGlvbiB7XG4gICAgY29uc3QgdHhCeXRlcyA9IEhleFVJbnQub2Yoc2VyaWFsaXplZFRyYW5zYWN0aW9uKS5ieXRlcztcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIFRyYW5zYWN0aW9uLmRlY29kZSh0eEJ5dGVzLCBmYWxzZSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBpZiAoZXJyLm1lc3NhZ2U/LmluY2x1ZGVzKCdFeHBlY3RlZCA5IGl0ZW1zLCBidXQgZ290IDEwJykpIHtcbiAgICAgICAgLy8gTGlrZWx5IHNpZ25lZCwgc28gcmV0cnkgd2l0aCBpc1NpZ25lZCA9IHRydWVcbiAgICAgICAgcmV0dXJuIFRyYW5zYWN0aW9uLmRlY29kZSh0eEJ5dGVzLCB0cnVlKTtcbiAgICAgIH1cbiAgICAgIHRocm93IGVycjtcbiAgICB9XG4gIH1cblxuICBnZXRUcmFuc2FjdGlvblR5cGVGcm9tQ2xhdXNlKGNsYXVzZXM6IFRyYW5zYWN0aW9uQ2xhdXNlW10pOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIGlmIChjbGF1c2VzWzBdLmRhdGEgPT09ICcweCcpIHtcbiAgICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuU2VuZDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5TZW5kVG9rZW47XG4gICAgfVxuICB9XG59XG5cbmNvbnN0IHV0aWxzID0gbmV3IFV0aWxzKCk7XG5cbmV4cG9ydCBkZWZhdWx0IHV0aWxzO1xuIl19
|
|
322
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGdEQUE0RTtBQUM1RSxvRUFBeUM7QUFDekMscURBQW1EO0FBQ25ELG1EQUF3RjtBQUN4RiwyREFLa0M7QUFDbEMsMkNBaUJxQjtBQUNyQix1Q0FBb0M7QUFHcEMsTUFBYSxLQUFLO0lBQ2hCLGNBQWMsQ0FBQyxPQUFlO1FBQzVCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsOEJBQWtCLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsY0FBYyxDQUFDLElBQVk7UUFDekIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSwrQkFBbUIsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxHQUFXO1FBQzNCLElBQUksQ0FBQztZQUNILElBQUksaUJBQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQzFCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsR0FBVztRQUMxQixJQUFJLENBQUM7WUFDSCxJQUFJLGlCQUFPLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUMxQixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQztJQUVELGdCQUFnQixDQUFDLFNBQWlCO1FBQ2hDLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsb0JBQW9CLENBQUMsSUFBWTtRQUMvQixPQUFPLElBQUksQ0FB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Q0osQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsOEJBQThCLENBQUMsT0FBZSxFQUFFLFVBQWdDO1FBQzlFLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNsRSxJQUFJLE9BQU8sQ0FBQyxXQUFXLEVBQUUsS0FBSyxlQUFlLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztZQUM1RCxNQUFNLElBQUksS0FBSyxDQUNiLDhDQUE4QyxlQUFlLFFBQVEsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLFNBQVMsT0FBTyxFQUFFLENBQy9HLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsaUNBQWlDLENBQUMsT0FBZSxFQUFFLFVBQWdDO1FBQ2pGLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNyRSxJQUFJLE9BQU8sQ0FBQyxXQUFXLEVBQUUsS0FBSyxlQUFlLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztZQUM1RCxNQUFNLElBQUksS0FBSyxDQUNiLGlEQUFpRCxlQUFlLFFBQVEsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLFNBQVMsT0FBTyxFQUFFLENBQ2xILENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBdFZELHNCQXNWQztBQUVELE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7QUFFMUIsa0JBQWUsS0FBSyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSGV4VUludCwgVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uQ2xhdXNlIH0gZnJvbSAnQHZlY2hhaW4vc2RrLWNvcmUnO1xuaW1wb3J0IEV0aGVyZXVtQWJpIGZyb20gJ2V0aGVyZXVtanMtYWJpJztcbmltcG9ydCB7IGFkZEhleFByZWZpeCwgQk4gfSBmcm9tICdldGhlcmV1bWpzLXV0aWwnO1xuaW1wb3J0IHsgQmFzZVV0aWxzLCBUcmFuc2FjdGlvblJlY2lwaWVudCwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHtcbiAgdjRDcmVhdGVGb3J3YXJkZXJNZXRob2RJZCxcbiAgZmx1c2hGb3J3YXJkZXJUb2tlbnNNZXRob2RJZFY0LFxuICBnZXRSYXdEZWNvZGVkLFxuICBnZXRCdWZmZXJlZEJ5dGVDb2RlLFxufSBmcm9tICdAYml0Z28tYmV0YS9hYnN0cmFjdC1ldGgnO1xuaW1wb3J0IHtcbiAgVFJBTlNGRVJfVE9LRU5fTUVUSE9EX0lELFxuICBTVEFLSU5HX01FVEhPRF9JRCxcbiAgU1RBS0VfQ0xBVVNFX01FVEhPRF9JRCxcbiAgRVhJVF9ERUxFR0FUSU9OX01FVEhPRF9JRCxcbiAgQlVSTl9ORlRfTUVUSE9EX0lELFxuICBWRVRfQUREUkVTU19MRU5HVEgsXG4gIFZFVF9CTE9DS19JRF9MRU5HVEgsXG4gIFZFVF9UUkFOU0FDVElPTl9JRF9MRU5HVEgsXG4gIFRSQU5TRkVSX05GVF9NRVRIT0RfSUQsXG4gIENMQUlNX0JBU0VfUkVXQVJEU19NRVRIT0RfSUQsXG4gIENMQUlNX1NUQUtJTkdfUkVXQVJEU19NRVRIT0RfSUQsXG4gIFNUQVJHQVRFX05GVF9BRERSRVNTLFxuICBTVEFSR0FURV9ORlRfQUREUkVTU19URVNUTkVULFxuICBTVEFSR0FURV9ERUxFR0FUSU9OX0FERFJFU1MsXG4gIFNUQVJHQVRFX0RFTEVHQVRJT05fQUREUkVTU19URVNUTkVULFxuICBERUxFR0FURV9DTEFVU0VfTUVUSE9EX0lELFxufSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnLi9rZXlQYWlyJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcblxuZXhwb3J0IGNsYXNzIFV0aWxzIGltcGxlbWVudHMgQmFzZVV0aWxzIHtcbiAgaXNWYWxpZEFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZEhleChhZGRyZXNzLCBWRVRfQUREUkVTU19MRU5HVEgpO1xuICB9XG5cbiAgaXNWYWxpZEJsb2NrSWQoaGFzaDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZEhleChoYXNoLCBWRVRfQkxPQ0tfSURfTEVOR1RIKTtcbiAgfVxuXG4gIGlzVmFsaWRQcml2YXRlS2V5KGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIG5ldyBLZXlQYWlyKHsgcHJ2OiBrZXkgfSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgaXNWYWxpZFB1YmxpY0tleShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICBuZXcgS2V5UGFpcih7IHB1Yjoga2V5IH0pO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGlzVmFsaWRTaWduYXR1cmUoc2lnbmF0dXJlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIGlzVmFsaWRUcmFuc2FjdGlvbklkKHR4SWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWRIZXgodHhJZCwgVkVUX1RSQU5TQUNUSU9OX0lEX0xFTkdUSCk7XG4gIH1cblxuICBpc1ZhbGlkSGV4KHZhbHVlOiBzdHJpbmcsIGxlbmd0aDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKGBeKDB4fDBYKVthLWZBLUYwLTldeyR7bGVuZ3RofX0kYCk7XG4gICAgcmV0dXJuIHJlZ2V4LnRlc3QodmFsdWUpO1xuICB9XG5cbiAgZGVzZXJpYWxpemVUcmFuc2FjdGlvbihzZXJpYWxpemVkVHJhbnNhY3Rpb246IHN0cmluZyk6IFRyYW5zYWN0aW9uIHtcbiAgICBjb25zdCB0eEJ5dGVzID0gSGV4VUludC5vZihzZXJpYWxpemVkVHJhbnNhY3Rpb24pLmJ5dGVzO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gVHJhbnNhY3Rpb24uZGVjb2RlKHR4Qnl0ZXMsIGZhbHNlKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlmIChlcnIubWVzc2FnZT8uaW5jbHVkZXMoJ0V4cGVjdGVkIDkgaXRlbXMsIGJ1dCBnb3QgMTAnKSkge1xuICAgICAgICAvLyBMaWtlbHkgc2lnbmVkLCBzbyByZXRyeSB3aXRoIGlzU2lnbmVkID0gdHJ1ZVxuICAgICAgICByZXR1cm4gVHJhbnNhY3Rpb24uZGVjb2RlKHR4Qnl0ZXMsIHRydWUpO1xuICAgICAgfVxuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgfVxuXG4gIGdldFRyYW5zYWN0aW9uVHlwZUZyb21DbGF1c2UoY2xhdXNlczogVHJhbnNhY3Rpb25DbGF1c2VbXSk6IFRyYW5zYWN0aW9uVHlwZSB7XG4gICAgaWYgKGNsYXVzZXNbMF0uZGF0YSA9PT0gJzB4Jykge1xuICAgICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5TZW5kO1xuICAgIH0gZWxzZSBpZiAoY2xhdXNlc1swXS5kYXRhLnN0YXJ0c1dpdGgodjRDcmVhdGVGb3J3YXJkZXJNZXRob2RJZCkpIHtcbiAgICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuQWRkcmVzc0luaXRpYWxpemF0aW9uO1xuICAgIH0gZWxzZSBpZiAoY2xhdXNlc1swXS5kYXRhLnN0YXJ0c1dpdGgoZmx1c2hGb3J3YXJkZXJUb2tlbnNNZXRob2RJZFY0KSkge1xuICAgICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5GbHVzaFRva2VucztcbiAgICB9IGVsc2UgaWYgKGNsYXVzZXNbMF0uZGF0YS5zdGFydHNXaXRoKFRSQU5TRkVSX1RPS0VOX01FVEhPRF9JRCkpIHtcbiAgICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuU2VuZFRva2VuO1xuICAgIH0gZWxzZSBpZiAoY2xhdXNlc1swXS5kYXRhLnN0YXJ0c1dpdGgoU1RBS0lOR19NRVRIT0RfSUQpKSB7XG4gICAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLkNvbnRyYWN0Q2FsbDtcbiAgICB9IGVsc2UgaWYgKGNsYXVzZXNbMF0uZGF0YS5zdGFydHNXaXRoKFNUQUtFX0NMQVVTRV9NRVRIT0RfSUQpKSB7XG4gICAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdBY3RpdmF0ZTtcbiAgICB9IGVsc2UgaWYgKGNsYXVzZXNbMF0uZGF0YS5zdGFydHNXaXRoKERFTEVHQVRFX0NMQVVTRV9NRVRIT0RfSUQpKSB7XG4gICAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdEZWxlZ2F0ZTtcbiAgICB9IGVsc2UgaWYgKGNsYXVzZXNbMF0uZGF0YS5zdGFydHNXaXRoKEVYSVRfREVMRUdBVElPTl9NRVRIT0RfSUQpKSB7XG4gICAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdVbmxvY2s7XG4gICAgfSBlbHNlIGlmIChjbGF1c2VzWzBdLmRhdGEuc3RhcnRzV2l0aChCVVJOX05GVF9NRVRIT0RfSUQpKSB7XG4gICAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdXaXRoZHJhdztcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgY2xhdXNlc1swXS5kYXRhLnN0YXJ0c1dpdGgoQ0xBSU1fQkFTRV9SRVdBUkRTX01FVEhPRF9JRCkgfHxcbiAgICAgIGNsYXVzZXNbMF0uZGF0YS5zdGFydHNXaXRoKENMQUlNX1NUQUtJTkdfUkVXQVJEU19NRVRIT0RfSUQpXG4gICAgKSB7XG4gICAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdDbGFpbTtcbiAgICB9IGVsc2UgaWYgKGNsYXVzZXNbMF0uZGF0YS5zdGFydHNXaXRoKFRSQU5TRkVSX05GVF9NRVRIT0RfSUQpKSB7XG4gICAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLlNlbmRORlQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuU2VuZFRva2VuO1xuICAgIH1cbiAgfVxuXG4gIGdldFRyYW5zZmVyVG9rZW5EYXRhKHRvQWRkcmVzczogc3RyaW5nLCBhbW91bnRXZWk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgbWV0aG9kTmFtZSA9ICd0cmFuc2Zlcic7XG4gICAgY29uc3QgdHlwZXMgPSBbJ2FkZHJlc3MnLCAndWludDI1NiddO1xuICAgIGNvbnN0IHBhcmFtcyA9IFt0b0FkZHJlc3MsIG5ldyBCTihhbW91bnRXZWkpXTtcblxuICAgIGNvbnN0IG1ldGhvZCA9IEV0aGVyZXVtQWJpLm1ldGhvZElEKG1ldGhvZE5hbWUsIHR5cGVzKTtcbiAgICBjb25zdCBhcmdzID0gRXRoZXJldW1BYmkucmF3RW5jb2RlKHR5cGVzLCBwYXJhbXMpO1xuXG4gICAgcmV0dXJuIGFkZEhleFByZWZpeChCdWZmZXIuY29uY2F0KFttZXRob2QsIGFyZ3NdKS50b1N0cmluZygnaGV4JykpO1xuICB9XG5cbiAgZ2V0VHJhbnNmZXJORlREYXRhKGZyb206IHN0cmluZywgdG86IHN0cmluZywgdG9rZW5JZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBtZXRob2ROYW1lID0gJ3RyYW5zZmVyRnJvbSc7XG4gICAgY29uc3QgdHlwZXMgPSBbJ2FkZHJlc3MnLCAnYWRkcmVzcycsICd1aW50MjU2J107XG4gICAgY29uc3QgcGFyYW1zID0gW2Zyb20sIHRvLCBuZXcgQk4odG9rZW5JZCldO1xuXG4gICAgY29uc3QgbWV0aG9kID0gRXRoZXJldW1BYmkubWV0aG9kSUQobWV0aG9kTmFtZSwgdHlwZXMpO1xuICAgIGNvbnN0IGFyZ3MgPSBFdGhlcmV1bUFiaS5yYXdFbmNvZGUodHlwZXMsIHBhcmFtcyk7XG5cbiAgICByZXR1cm4gYWRkSGV4UHJlZml4KEJ1ZmZlci5jb25jYXQoW21ldGhvZCwgYXJnc10pLnRvU3RyaW5nKCdoZXgnKSk7XG4gIH1cblxuICAvKipcbiAgICogRGVjb2RlcyBzdGFraW5nIHRyYW5zYWN0aW9uIGRhdGEgdG8gZXh0cmFjdCBsZXZlbElkIGFuZCBhdXRvcmVuZXdcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGRhdGEgLSBUaGUgZW5jb2RlZCB0cmFuc2FjdGlvbiBkYXRhXG4gICAqIEByZXR1cm5zIHtvYmplY3R9IC0gT2JqZWN0IGNvbnRhaW5pbmcgbGV2ZWxJZCBhbmQgYXV0b3JlbmV3XG4gICAqL1xuICBkZWNvZGVTdGFraW5nRGF0YShkYXRhOiBzdHJpbmcpOiB7IGxldmVsSWQ6IG51bWJlcjsgYXV0b3JlbmV3OiBib29sZWFuIH0ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBwYXJhbWV0ZXJzID0gZGF0YS5zbGljZSgxMCk7XG5cbiAgICAgIC8vIERlY29kZSB1c2luZyBldGhlcmV1bWpzLWFiaSBkaXJlY3RseVxuICAgICAgY29uc3QgZGVjb2RlZCA9IEV0aGVyZXVtQWJpLnJhd0RlY29kZShbJ3VpbnQ4JywgJ2Jvb2wnXSwgQnVmZmVyLmZyb20ocGFyYW1ldGVycywgJ2hleCcpKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbGV2ZWxJZDogTnVtYmVyKGRlY29kZWRbMF0pLFxuICAgICAgICBhdXRvcmVuZXc6IEJvb2xlYW4oZGVjb2RlZFsxXSksXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBkZWNvZGUgc3Rha2luZyBkYXRhOiAke2Vycm9yLm1lc3NhZ2V9YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERlY29kZXMgc3Rha2luZyB0cmFuc2FjdGlvbiBkYXRhIHRvIGV4dHJhY3QgbGV2ZWxJZCBhbmQgYXV0b3JlbmV3XG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhIC0gVGhlIGVuY29kZWQgdHJhbnNhY3Rpb24gZGF0YVxuICAgKiBAcmV0dXJucyB7b2JqZWN0fSAtIE9iamVjdCBjb250YWluaW5nIGxldmVsSWQgYW5kIGF1dG9yZW5ld1xuICAgKi9cbiAgZGVjb2RlU3Rha2VDbGF1c2VEYXRhKGRhdGE6IHN0cmluZyk6IHsgbGV2ZWxJZDogbnVtYmVyIH0ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBwYXJhbWV0ZXJzID0gZGF0YS5zbGljZSgxMCk7XG5cbiAgICAgIC8vIERlY29kZSB1c2luZyBldGhlcmV1bWpzLWFiaSBkaXJlY3RseVxuICAgICAgY29uc3QgZGVjb2RlZCA9IEV0aGVyZXVtQWJpLnJhd0RlY29kZShbJ3VpbnQ4J10sIEJ1ZmZlci5mcm9tKHBhcmFtZXRlcnMsICdoZXgnKSk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGxldmVsSWQ6IE51bWJlcihkZWNvZGVkWzBdKSxcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGRlY29kZSBzdGFraW5nIGRhdGE6ICR7ZXJyb3IubWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRGVjb2RlcyBkZWxlZ2F0ZSB0cmFuc2FjdGlvbiBkYXRhIHRvIGV4dHJhY3QgdG9rZW5JZCBhbmQgZGVsZWdhdGVGb3JldmVyXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhIC0gVGhlIGVuY29kZWQgdHJhbnNhY3Rpb24gZGF0YVxuICAgKiBAcmV0dXJucyB7b2JqZWN0fSAtIE9iamVjdCBjb250YWluaW5nIHRva2VuSWQgYW5kIGRlbGVnYXRlRm9yZXZlclxuICAgKi9cbiAgZGVjb2RlRGVsZWdhdGVDbGF1c2VEYXRhKGRhdGE6IHN0cmluZyk6IHsgdG9rZW5JZDogbnVtYmVyOyBkZWxlZ2F0ZUZvcmV2ZXI6IGJvb2xlYW4gfSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBhcmFtZXRlcnMgPSBkYXRhLnNsaWNlKDEwKTtcblxuICAgICAgLy8gRGVjb2RlIHVzaW5nIGV0aGVyZXVtanMtYWJpIGRpcmVjdGx5XG4gICAgICBjb25zdCBkZWNvZGVkID0gRXRoZXJldW1BYmkucmF3RGVjb2RlKFsndWludDI1NicsICdib29sJ10sIEJ1ZmZlci5mcm9tKHBhcmFtZXRlcnMsICdoZXgnKSk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRva2VuSWQ6IE51bWJlcihkZWNvZGVkWzBdKSxcbiAgICAgICAgZGVsZWdhdGVGb3JldmVyOiBCb29sZWFuKGRlY29kZWRbMV0pLFxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gZGVjb2RlIGRlbGVnYXRpb24gZGF0YTogJHtlcnJvci5tZXNzYWdlfWApO1xuICAgIH1cbiAgfVxuXG4gIGRlY29kZVRyYW5zZmVyVG9rZW5EYXRhKGRhdGE6IHN0cmluZyk6IFRyYW5zYWN0aW9uUmVjaXBpZW50IHtcbiAgICBjb25zdCBbYWRkcmVzcywgYW1vdW50XSA9IGdldFJhd0RlY29kZWQoXG4gICAgICBbJ2FkZHJlc3MnLCAndWludDI1NiddLFxuICAgICAgZ2V0QnVmZmVyZWRCeXRlQ29kZShUUkFOU0ZFUl9UT0tFTl9NRVRIT0RfSUQsIGRhdGEpXG4gICAgKTtcbiAgICBjb25zdCByZWNpcGllbnRBZGRyZXNzID0gYWRkSGV4UHJlZml4KGFkZHJlc3MudG9TdHJpbmcoKSkudG9Mb3dlckNhc2UoKTtcbiAgICByZXR1cm4ge1xuICAgICAgYWRkcmVzczogcmVjaXBpZW50QWRkcmVzcyxcbiAgICAgIGFtb3VudDogYW1vdW50LnRvU3RyaW5nKCksXG4gICAgfTtcbiAgfVxuXG4gIGRlY29kZVRyYW5zZmVyTkZURGF0YShkYXRhOiBzdHJpbmcpOiB7XG4gICAgcmVjaXBpZW50czogVHJhbnNhY3Rpb25SZWNpcGllbnRbXTtcbiAgICBzZW5kZXI6IHN0cmluZztcbiAgICB0b2tlbklkOiBzdHJpbmc7XG4gIH0ge1xuICAgIGNvbnN0IFtmcm9tLCB0bywgdG9rZW5JZEJOXSA9IGdldFJhd0RlY29kZWQoXG4gICAgICBbJ2FkZHJlc3MnLCAnYWRkcmVzcycsICd1aW50MjU2J10sXG4gICAgICBnZXRCdWZmZXJlZEJ5dGVDb2RlKFRSQU5TRkVSX05GVF9NRVRIT0RfSUQsIGRhdGEpXG4gICAgKTtcbiAgICBjb25zdCByZWNpcGllbnRBZGRyZXNzID0gYWRkSGV4UHJlZml4KHRvLnRvU3RyaW5nKCkpLnRvTG93ZXJDYXNlKCk7XG4gICAgY29uc3QgcmVjaXBpZW50OiBUcmFuc2FjdGlvblJlY2lwaWVudCA9IHtcbiAgICAgIGFkZHJlc3M6IHJlY2lwaWVudEFkZHJlc3MsXG4gICAgICBhbW91bnQ6ICcxJyxcbiAgICB9O1xuICAgIGNvbnN0IHNlbmRlciA9IGFkZEhleFByZWZpeChmcm9tLnRvU3RyaW5nKCkpLnRvTG93ZXJDYXNlKCk7XG4gICAgY29uc3QgdG9rZW5JZCA9IHRva2VuSWRCTi50b1N0cmluZygpO1xuICAgIHJldHVybiB7XG4gICAgICByZWNpcGllbnRzOiBbcmVjaXBpZW50XSxcbiAgICAgIHNlbmRlcixcbiAgICAgIHRva2VuSWQsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWNvZGVzIGNsYWltIHJld2FyZHMgdHJhbnNhY3Rpb24gZGF0YSB0byBleHRyYWN0IHRva2VuSWRcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGRhdGEgLSBUaGUgZW5jb2RlZCBjbGFpbSByZXdhcmRzIG1ldGhvZCBjYWxsIGRhdGFcbiAgICogQHJldHVybnMge3N0cmluZ30gLSBUaGUgdG9rZW5JZCBhcyBhIHN0cmluZ1xuICAgKi9cbiAgZGVjb2RlQ2xhaW1SZXdhcmRzRGF0YShkYXRhOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHRyeSB7XG4gICAgICAvLyBSZW1vdmUgbWV0aG9kIElEIChmaXJzdCAxMCBjaGFyYWN0ZXJzOiAnMHgnICsgNC1ieXRlIG1ldGhvZCBJRClcbiAgICAgIGNvbnN0IG1ldGhvZERhdGEgPSBkYXRhLnNsaWNlKDEwKTtcblxuICAgICAgLy8gRXh0cmFjdCB0b2tlbklkIGZyb20gZmlyc3QgMzItYnl0ZSBzbG90XG4gICAgICAvLyBUaGUgdG9rZW5JZCBpcyBhIHVpbnQyNTYsIHNvIHdlIHRha2UgdGhlIGZ1bGwgNjQgaGV4IGNoYXJhY3RlcnNcbiAgICAgIGNvbnN0IHRva2VuSWRIZXggPSBtZXRob2REYXRhLnNsaWNlKDAsIDY0KTtcblxuICAgICAgLy8gQ29udmVydCBoZXggdG8gZGVjaW1hbCBzdHJpbmdcbiAgICAgIHJldHVybiBCaWdJbnQoJzB4JyArIHRva2VuSWRIZXgpLnRvU3RyaW5nKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGRlY29kZSBjbGFpbSByZXdhcmRzIGRhdGE6ICR7ZXJyb3IubWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRGVjb2RlcyBleGl0IGRlbGVnYXRpb24gdHJhbnNhY3Rpb24gZGF0YSB0byBleHRyYWN0IHRva2VuSWRcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGRhdGEgLSBUaGUgZW5jb2RlZCBleGl0IGRlbGVnYXRpb24gbWV0aG9kIGNhbGwgZGF0YVxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSAtIFRoZSB0b2tlbklkIGFzIGEgc3RyaW5nXG4gICAqL1xuICBkZWNvZGVFeGl0RGVsZWdhdGlvbkRhdGEoZGF0YTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB0cnkge1xuICAgICAgaWYgKCFkYXRhLnN0YXJ0c1dpdGgoRVhJVF9ERUxFR0FUSU9OX01FVEhPRF9JRCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGV4aXQgZGVsZWdhdGlvbiBtZXRob2QgZGF0YScpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB0b2tlbklkSGV4ID0gZGF0YS5zbGljZShFWElUX0RFTEVHQVRJT05fTUVUSE9EX0lELmxlbmd0aCk7XG4gICAgICAvLyBDb252ZXJ0IGhleCB0byBkZWNpbWFsIChtYXRjaGluZyBvcmlnaW5hbCBwYXJzZUludCBsb2dpYylcbiAgICAgIHJldHVybiBwYXJzZUludCh0b2tlbklkSGV4LCAxNikudG9TdHJpbmcoKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gZGVjb2RlIGV4aXQgZGVsZWdhdGlvbiBkYXRhOiAke2Vycm9yLm1lc3NhZ2V9YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERlY29kZXMgYnVybiBORlQgdHJhbnNhY3Rpb24gZGF0YSB0byBleHRyYWN0IHRva2VuSWRcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGRhdGEgLSBUaGUgZW5jb2RlZCBidXJuIE5GVCBtZXRob2QgY2FsbCBkYXRhXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gVGhlIHRva2VuSWQgYXMgYSBzdHJpbmdcbiAgICovXG4gIGRlY29kZUJ1cm5OZnREYXRhKGRhdGE6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghZGF0YS5zdGFydHNXaXRoKEJVUk5fTkZUX01FVEhPRF9JRCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGJ1cm4gTkZUIG1ldGhvZCBkYXRhJyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRva2VuSWRIZXggPSBkYXRhLnNsaWNlKEJVUk5fTkZUX01FVEhPRF9JRC5sZW5ndGgpO1xuICAgICAgLy8gQ29udmVydCBoZXggdG8gZGVjaW1hbCAobWF0Y2hpbmcgb3JpZ2luYWwgcGFyc2VJbnQgbG9naWMpXG4gICAgICByZXR1cm4gcGFyc2VJbnQodG9rZW5JZEhleCwgMTYpLnRvU3RyaW5nKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGRlY29kZSBidXJuIE5GVCBkYXRhOiAke2Vycm9yLm1lc3NhZ2V9YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgbmV0d29yay1hcHByb3ByaWF0ZSBkZWxlZ2F0aW9uIGNvbnRyYWN0IGFkZHJlc3NcbiAgICogQHBhcmFtIHtDb2luQ29uZmlnfSBjb2luQ29uZmlnIC0gVGhlIGNvaW4gY29uZmlndXJhdGlvbiBvYmplY3RcbiAgICogQHJldHVybnMge3N0cmluZ30gVGhlIGRlbGVnYXRpb24gY29udHJhY3QgYWRkcmVzcyBmb3IgdGhlIG5ldHdvcmtcbiAgICovXG4gIGdldERlZmF1bHREZWxlZ2F0aW9uQWRkcmVzcyhjb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPik6IHN0cmluZyB7XG4gICAgY29uc3QgaXNUZXN0bmV0ID0gY29pbkNvbmZpZy5uZXR3b3JrLnR5cGUgPT09ICd0ZXN0bmV0JztcbiAgICByZXR1cm4gaXNUZXN0bmV0ID8gU1RBUkdBVEVfREVMRUdBVElPTl9BRERSRVNTX1RFU1RORVQgOiBTVEFSR0FURV9ERUxFR0FUSU9OX0FERFJFU1M7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBuZXR3b3JrLWFwcHJvcHJpYXRlIHN0YWtpbmcgY29udHJhY3QgYWRkcmVzc1xuICAgKiBAcGFyYW0ge0NvaW5Db25maWd9IGNvaW5Db25maWcgLSBUaGUgY29pbiBjb25maWd1cmF0aW9uIG9iamVjdFxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgc3Rha2luZyBjb250cmFjdCBhZGRyZXNzIGZvciB0aGUgbmV0d29ya1xuICAgKi9cbiAgZ2V0RGVmYXVsdFN0YWtpbmdBZGRyZXNzKGNvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KTogc3RyaW5nIHtcbiAgICBjb25zdCBpc1Rlc3RuZXQgPSBjb2luQ29uZmlnLm5ldHdvcmsudHlwZSA9PT0gJ3Rlc3RuZXQnO1xuICAgIHJldHVybiBpc1Rlc3RuZXQgPyBTVEFSR0FURV9ORlRfQUREUkVTU19URVNUTkVUIDogU1RBUkdBVEVfTkZUX0FERFJFU1M7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgYW4gYWRkcmVzcyBpcyBhIHZhbGlkIGRlbGVnYXRpb24gY29udHJhY3QgYWRkcmVzcyBmb3IgYW55IG5ldHdvcmtcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3MgLSBUaGUgYWRkcmVzcyB0byBjaGVja1xuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgYWRkcmVzcyBpcyBhIGRlbGVnYXRpb24gY29udHJhY3QgYWRkcmVzc1xuICAgKi9cbiAgaXNEZWxlZ2F0aW9uQ29udHJhY3RBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGxvd2VyQWRkcmVzcyA9IGFkZHJlc3MudG9Mb3dlckNhc2UoKTtcbiAgICByZXR1cm4gKFxuICAgICAgbG93ZXJBZGRyZXNzID09PSBTVEFSR0FURV9ERUxFR0FUSU9OX0FERFJFU1MudG9Mb3dlckNhc2UoKSB8fFxuICAgICAgbG93ZXJBZGRyZXNzID09PSBTVEFSR0FURV9ERUxFR0FUSU9OX0FERFJFU1NfVEVTVE5FVC50b0xvd2VyQ2FzZSgpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhbiBhZGRyZXNzIGlzIGEgdmFsaWQgTkZUIGNvbnRyYWN0IGFkZHJlc3MgZm9yIGFueSBuZXR3b3JrXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhZGRyZXNzIC0gVGhlIGFkZHJlc3MgdG8gY2hlY2tcbiAgICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIGFkZHJlc3MgaXMgYW4gTkZUIGNvbnRyYWN0IGFkZHJlc3NcbiAgICovXG4gIGlzTmZ0Q29udHJhY3RBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGxvd2VyQWRkcmVzcyA9IGFkZHJlc3MudG9Mb3dlckNhc2UoKTtcbiAgICByZXR1cm4gKFxuICAgICAgbG93ZXJBZGRyZXNzID09PSBTVEFSR0FURV9ORlRfQUREUkVTUy50b0xvd2VyQ2FzZSgpIHx8IGxvd2VyQWRkcmVzcyA9PT0gU1RBUkdBVEVfTkZUX0FERFJFU1NfVEVTVE5FVC50b0xvd2VyQ2FzZSgpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSB0aGF0IGEgY29udHJhY3QgYWRkcmVzcyBtYXRjaGVzIHRoZSBleHBlY3RlZCBORlQvc3Rha2luZyBjb250cmFjdCBmb3IgdGhlIG5ldHdvcmtcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3MgLSBUaGUgY29udHJhY3QgYWRkcmVzcyB0byB2YWxpZGF0ZVxuICAgKiBAcGFyYW0ge0NvaW5Db25maWd9IGNvaW5Db25maWcgLSBUaGUgY29pbiBjb25maWd1cmF0aW9uIG9iamVjdFxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGFkZHJlc3MgZG9lc24ndCBtYXRjaCB0aGUgZXhwZWN0ZWQgTkZUIGNvbnRyYWN0IGFkZHJlc3NcbiAgICovXG4gIHZhbGlkYXRlU3Rha2luZ0NvbnRyYWN0QWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcsIGNvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KTogdm9pZCB7XG4gICAgY29uc3QgZXhwZWN0ZWRBZGRyZXNzID0gdGhpcy5nZXREZWZhdWx0U3Rha2luZ0FkZHJlc3MoY29pbkNvbmZpZyk7XG4gICAgaWYgKGFkZHJlc3MudG9Mb3dlckNhc2UoKSAhPT0gZXhwZWN0ZWRBZGRyZXNzLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEludmFsaWQgc3Rha2luZyBjb250cmFjdCBhZGRyZXNzLiBFeHBlY3RlZCAke2V4cGVjdGVkQWRkcmVzc30gZm9yICR7Y29pbkNvbmZpZy5uZXR3b3JrLnR5cGV9LCBnb3QgJHthZGRyZXNzfWBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIHRoYXQgYSBjb250cmFjdCBhZGRyZXNzIG1hdGNoZXMgdGhlIGV4cGVjdGVkIGRlbGVnYXRpb24gY29udHJhY3QgZm9yIHRoZSBuZXR3b3JrXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhZGRyZXNzIC0gVGhlIGNvbnRyYWN0IGFkZHJlc3MgdG8gdmFsaWRhdGVcbiAgICogQHBhcmFtIHtDb2luQ29uZmlnfSBjb2luQ29uZmlnIC0gVGhlIGNvaW4gY29uZmlndXJhdGlvbiBvYmplY3RcbiAgICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBhZGRyZXNzIGRvZXNuJ3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGRlbGVnYXRpb24gY29udHJhY3QgYWRkcmVzc1xuICAgKi9cbiAgdmFsaWRhdGVEZWxlZ2F0aW9uQ29udHJhY3RBZGRyZXNzKGFkZHJlc3M6IHN0cmluZywgY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pOiB2b2lkIHtcbiAgICBjb25zdCBleHBlY3RlZEFkZHJlc3MgPSB0aGlzLmdldERlZmF1bHREZWxlZ2F0aW9uQWRkcmVzcyhjb2luQ29uZmlnKTtcbiAgICBpZiAoYWRkcmVzcy50b0xvd2VyQ2FzZSgpICE9PSBleHBlY3RlZEFkZHJlc3MudG9Mb3dlckNhc2UoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgSW52YWxpZCBkZWxlZ2F0aW9uIGNvbnRyYWN0IGFkZHJlc3MuIEV4cGVjdGVkICR7ZXhwZWN0ZWRBZGRyZXNzfSBmb3IgJHtjb2luQ29uZmlnLm5ldHdvcmsudHlwZX0sIGdvdCAke2FkZHJlc3N9YFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cblxuY29uc3QgdXRpbHMgPSBuZXcgVXRpbHMoKTtcblxuZXhwb3J0IGRlZmF1bHQgdXRpbHM7XG4iXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAMjD,eAAO,MAAM,QAAQ,QAAS,SAAS,KAAG,IASzC,CAAC"}
|
package/dist/src/register.js
CHANGED
|
@@ -3,9 +3,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.register = void 0;
|
|
4
4
|
const vet_1 = require("./vet");
|
|
5
5
|
const tvet_1 = require("./tvet");
|
|
6
|
+
const vetToken_1 = require("./vetToken");
|
|
7
|
+
const vetNFTCollection_1 = require("./vetNFTCollection");
|
|
6
8
|
const register = (sdk) => {
|
|
7
9
|
sdk.register('vet', vet_1.Vet.createInstance);
|
|
8
10
|
sdk.register('tvet', tvet_1.Tvet.createInstance);
|
|
11
|
+
vetToken_1.VetToken.createTokenConstructors().forEach(({ name, coinConstructor }) => {
|
|
12
|
+
sdk.register(name, coinConstructor);
|
|
13
|
+
});
|
|
14
|
+
vetNFTCollection_1.VetNFTCollection.createNFTCollectionConstructors().forEach(({ name, coinConstructor }) => {
|
|
15
|
+
sdk.register(name, coinConstructor);
|
|
16
|
+
});
|
|
9
17
|
};
|
|
10
18
|
exports.register = register;
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmVnaXN0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsK0JBQTRCO0FBQzVCLGlDQUE4QjtBQUM5Qix5Q0FBc0M7QUFDdEMseURBQXNEO0FBRS9DLE1BQU0sUUFBUSxHQUFHLENBQUMsR0FBYyxFQUFRLEVBQUU7SUFDL0MsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsU0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3hDLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLFdBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUMxQyxtQkFBUSxDQUFDLHVCQUF1QixFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLEVBQUUsRUFBRTtRQUN2RSxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsQ0FBQztJQUN0QyxDQUFDLENBQUMsQ0FBQztJQUNILG1DQUFnQixDQUFDLCtCQUErQixFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLEVBQUUsRUFBRTtRQUN2RixHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsQ0FBQztJQUN0QyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQVRXLFFBQUEsUUFBUSxZQVNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJpdEdvQmFzZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IFZldCB9IGZyb20gJy4vdmV0JztcbmltcG9ydCB7IFR2ZXQgfSBmcm9tICcuL3R2ZXQnO1xuaW1wb3J0IHsgVmV0VG9rZW4gfSBmcm9tICcuL3ZldFRva2VuJztcbmltcG9ydCB7IFZldE5GVENvbGxlY3Rpb24gfSBmcm9tICcuL3ZldE5GVENvbGxlY3Rpb24nO1xuXG5leHBvcnQgY29uc3QgcmVnaXN0ZXIgPSAoc2RrOiBCaXRHb0Jhc2UpOiB2b2lkID0+IHtcbiAgc2RrLnJlZ2lzdGVyKCd2ZXQnLCBWZXQuY3JlYXRlSW5zdGFuY2UpO1xuICBzZGsucmVnaXN0ZXIoJ3R2ZXQnLCBUdmV0LmNyZWF0ZUluc3RhbmNlKTtcbiAgVmV0VG9rZW4uY3JlYXRlVG9rZW5Db25zdHJ1Y3RvcnMoKS5mb3JFYWNoKCh7IG5hbWUsIGNvaW5Db25zdHJ1Y3RvciB9KSA9PiB7XG4gICAgc2RrLnJlZ2lzdGVyKG5hbWUsIGNvaW5Db25zdHJ1Y3Rvcik7XG4gIH0pO1xuICBWZXRORlRDb2xsZWN0aW9uLmNyZWF0ZU5GVENvbGxlY3Rpb25Db25zdHJ1Y3RvcnMoKS5mb3JFYWNoKCh7IG5hbWUsIGNvaW5Db25zdHJ1Y3RvciB9KSA9PiB7XG4gICAgc2RrLnJlZ2lzdGVyKG5hbWUsIGNvaW5Db25zdHJ1Y3Rvcik7XG4gIH0pO1xufTtcbiJdfQ==
|
package/dist/src/vet.d.ts
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
import
|
|
1
|
+
import BigNumber from 'bignumber.js';
|
|
2
|
+
import { TransactionClause } from '@vechain/sdk-core';
|
|
3
|
+
import { AuditDecryptedKeyParams, BaseCoin, BaseTransaction, BitGoBase, BuildNftTransferDataOptions, KeyPair, MPCAlgorithm, MultisigType, ParsedTransaction, SignedTransaction, SignTransactionOptions, TokenTransferRecipientParams, VerifyAddressOptions, VerifyTransactionOptions, BaseBroadcastTransactionOptions, BaseBroadcastTransactionResult } from '@bitgo-beta/sdk-core';
|
|
2
4
|
import { BaseCoin as StaticsBaseCoin } from '@bitgo-beta/statics';
|
|
5
|
+
import { Hash } from 'crypto';
|
|
3
6
|
import { TransactionBuilderFactory } from './lib';
|
|
4
|
-
import { ExplainTransactionOptions, VetParseTransactionOptions } from './lib/types';
|
|
7
|
+
import { ExplainTransactionOptions, RecoverOptions, RecoveryTransaction, UnsignedSweepRecoveryTransaction, VetParseTransactionOptions } from './lib/types';
|
|
5
8
|
import { VetTransactionExplanation } from './lib/iface';
|
|
6
9
|
/**
|
|
7
10
|
* Full Name: Vechain
|
|
@@ -19,6 +22,7 @@ export declare class Vet extends BaseCoin {
|
|
|
19
22
|
getChain(): string;
|
|
20
23
|
getFamily(): string;
|
|
21
24
|
getFullName(): string;
|
|
25
|
+
valuelessTransferAllowed(): boolean;
|
|
22
26
|
/** @inheritDoc */
|
|
23
27
|
supportsTss(): boolean;
|
|
24
28
|
/** inherited doc */
|
|
@@ -41,5 +45,79 @@ export declare class Vet extends BaseCoin {
|
|
|
41
45
|
protected rebuildTransaction(txHex: string): Promise<BaseTransaction>;
|
|
42
46
|
/** @inheritDoc */
|
|
43
47
|
auditDecryptedKey(params: AuditDecryptedKeyParams): void;
|
|
48
|
+
/**
|
|
49
|
+
* Function to get coin specific hash function used to generate transaction digests.
|
|
50
|
+
* @returns {@see Hash} hash function if implemented, otherwise throws exception
|
|
51
|
+
*/
|
|
52
|
+
getHashFunction(): Hash;
|
|
53
|
+
buildNftTransferData(params: BuildNftTransferDataOptions): TokenTransferRecipientParams;
|
|
54
|
+
/**
|
|
55
|
+
* Broadcasts a signed transaction to the VeChain network.
|
|
56
|
+
*
|
|
57
|
+
* @param {BaseBroadcastTransactionOptions} payload - The payload containing the serialized signed transaction.
|
|
58
|
+
* @param {string} payload.serializedSignedTransaction - The serialized signed transaction to broadcast.
|
|
59
|
+
* @returns {Promise<BaseBroadcastTransactionResult>} A promise that resolves to an empty object if the broadcast is successful.
|
|
60
|
+
* @throws {Error} If the broadcast fails, an error is thrown with the failure message.
|
|
61
|
+
*/
|
|
62
|
+
broadcastTransaction(payload: BaseBroadcastTransactionOptions): Promise<BaseBroadcastTransactionResult>;
|
|
63
|
+
/** @inheritDoc */
|
|
64
|
+
recover(params: RecoverOptions): Promise<RecoveryTransaction | UnsignedSweepRecoveryTransaction>;
|
|
65
|
+
/**
|
|
66
|
+
* Returns the public node URL for the VeChain network.
|
|
67
|
+
* @returns {string} The URL of the public VeChain node.
|
|
68
|
+
*/
|
|
69
|
+
private getPublicNodeUrl;
|
|
70
|
+
/**
|
|
71
|
+
* Calculates the transaction fee based on the estimated gas limit and fee estimate data.
|
|
72
|
+
* @param {FeeEstimateData} feeEstimateData - The fee estimate data.
|
|
73
|
+
* @param {BigNumber} estimatedGasLimit - The estimated gas limit for the transaction.
|
|
74
|
+
* @returns {BigNumber} The calculated transaction fee.
|
|
75
|
+
*/
|
|
76
|
+
private calculateFee;
|
|
77
|
+
/**
|
|
78
|
+
* Ensures that the given address has sufficient VTHO balance to cover the transaction fee.
|
|
79
|
+
* @param {string} baseAddress - The address to check for VTHO balance.
|
|
80
|
+
* @param {BigNumber} requiredGasUnits - The required gas units for the transaction.
|
|
81
|
+
* @throws {Error} If the VTHO balance is insufficient or if there's an error checking the balance.
|
|
82
|
+
*/
|
|
83
|
+
ensureVthoBalanceForFee(baseAddress: string, requiredGasUnits: BigNumber): Promise<void>;
|
|
84
|
+
/**
|
|
85
|
+
* Fetches the balance for a given Vechain address.
|
|
86
|
+
*
|
|
87
|
+
* @param address The Vechain address (e.g., "0x...") to check.
|
|
88
|
+
* @param tokenContractAddress (Optional) The contract address of a VIP180 token.
|
|
89
|
+
* @returns A Promise that resolves to a BigNumber instance of the balance.
|
|
90
|
+
*/
|
|
91
|
+
getBalance(address: string, tokenContractAddress?: string): Promise<BigNumber>;
|
|
92
|
+
/**
|
|
93
|
+
* Retrieves the block reference from the VeChain network.
|
|
94
|
+
* @returns {Promise<string>} A promise that resolves to the block reference string.
|
|
95
|
+
* @throws {Error} If there's an error fetching the block reference or if the response is invalid.
|
|
96
|
+
*/
|
|
97
|
+
getBlockRef(): Promise<string>;
|
|
98
|
+
/**
|
|
99
|
+
* Generates a random nonce for use in transactions.
|
|
100
|
+
* @returns {string} A hexadecimal string representing the random nonce.
|
|
101
|
+
*/
|
|
102
|
+
getRandomNonce(): string;
|
|
103
|
+
/**
|
|
104
|
+
* Estimates the gas required for a set of transaction clauses.
|
|
105
|
+
* @param {TransactionClause[]} clauses - An array of transaction clauses.
|
|
106
|
+
* @param {string} caller - The address of the transaction caller.
|
|
107
|
+
* @returns {Promise<BigNumber>} A promise that resolves to the estimated gas amount.
|
|
108
|
+
* @throws {Error} If the clauses are invalid, the caller is not provided, or if there's an error in gas estimation.
|
|
109
|
+
*/
|
|
110
|
+
estimateGas(clauses: TransactionClause[], caller: string): Promise<BigNumber>;
|
|
111
|
+
/**
|
|
112
|
+
* Builds a recovery transaction for the given address.
|
|
113
|
+
* @param {Object} buildParams - The parameters for building the recovery transaction.
|
|
114
|
+
* @param {string} buildParams.baseAddress - The address to recover funds from.
|
|
115
|
+
* @param {RecoverOptions} buildParams.params - The recovery options.
|
|
116
|
+
* @returns {Promise<Transaction>} A promise that resolves to the built recovery transaction.
|
|
117
|
+
* @throws {Error} If there's no VET balance to recover or if there's an error building the transaction.
|
|
118
|
+
*/
|
|
119
|
+
private buildRecoveryTransaction;
|
|
120
|
+
recoverTokens(params: RecoverOptions): Promise<RecoveryTransaction | UnsignedSweepRecoveryTransaction>;
|
|
121
|
+
private buildTokenRecoveryTransaction;
|
|
44
122
|
}
|
|
45
123
|
//# sourceMappingURL=vet.d.ts.map
|
package/dist/src/vet.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vet.d.ts","sourceRoot":"","sources":["../../src/vet.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"vet.d.ts","sourceRoot":"","sources":["../../src/vet.ts"],"names":[],"mappings":"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"}
|