@bitgo-beta/sdk-coin-vet 1.0.1-beta.62 → 1.0.1-beta.620
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 +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -1
- package/dist/src/lib/constants.d.ts +28 -0
- package/dist/src/lib/constants.d.ts.map +1 -1
- package/dist/src/lib/constants.js +30 -2
- package/dist/src/lib/iface.d.ts +28 -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 +21 -0
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +44 -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 +29 -0
- package/dist/src/lib/transaction/burnNftTransaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/burnNftTransaction.js +138 -0
- package/dist/src/lib/transaction/claimRewards.d.ts +31 -0
- package/dist/src/lib/transaction/claimRewards.d.ts.map +1 -0
- package/dist/src/lib/transaction/claimRewards.js +151 -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 +158 -0
- package/dist/src/lib/transaction/exitDelegation.d.ts +29 -0
- package/dist/src/lib/transaction/exitDelegation.d.ts.map +1 -0
- package/dist/src/lib/transaction/exitDelegation.js +143 -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 +99 -58
- package/dist/src/lib/transaction/validatorRegistrationTransaction.d.ts +32 -0
- package/dist/src/lib/transaction/validatorRegistrationTransaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/validatorRegistrationTransaction.js +170 -0
- 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 +59 -0
- package/dist/src/lib/transactionBuilder/claimRewardsBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/claimRewardsBuilder.js +117 -0
- package/dist/src/lib/transactionBuilder/delegateTxnBuilder.d.ts +72 -0
- package/dist/src/lib/transactionBuilder/delegateTxnBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/delegateTxnBuilder.js +133 -0
- package/dist/src/lib/transactionBuilder/exitDelegationBuilder.d.ts +59 -0
- package/dist/src/lib/transactionBuilder/exitDelegationBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/exitDelegationBuilder.js +118 -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/transactionBuilder/validatorRegistrationBuilder.d.ts +79 -0
- package/dist/src/lib/transactionBuilder/validatorRegistrationBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/validatorRegistrationBuilder.js +150 -0
- package/dist/src/lib/transactionBuilderFactory.d.ts +55 -0
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilderFactory.js +124 -1
- package/dist/src/lib/types.d.ts +21 -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 +102 -1
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +277 -8
- package/dist/src/register.d.ts.map +1 -1
- package/dist/src/register.js +5 -1
- package/dist/src/vet.d.ts +94 -3
- package/dist/src/vet.d.ts.map +1 -1
- package/dist/src/vet.js +505 -10
- 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 +1 -1
- package/dist/src/vetToken.d.ts.map +1 -1
- package/dist/src/vetToken.js +2 -2
- package/dist/test/resources/vet.d.ts +88 -0
- package/dist/test/resources/vet.d.ts.map +1 -0
- package/dist/test/resources/vet.js +143 -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 +150 -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 +183 -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 +209 -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 +150 -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 +247 -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 +244 -0
- package/dist/test/transactionBuilder/validatorRegistrationTxnBuilder.d.ts +2 -0
- package/dist/test/transactionBuilder/validatorRegistrationTxnBuilder.d.ts.map +1 -0
- package/dist/test/transactionBuilder/validatorRegistrationTxnBuilder.js +231 -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 +292 -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 +336 -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 -40
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.StakeClauseTxnBuilder = void 0;
|
|
7
|
+
const assert_1 = __importDefault(require("assert"));
|
|
8
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
9
|
+
const transactionBuilder_1 = require("./transactionBuilder");
|
|
10
|
+
const stakeClauseTransaction_1 = require("../transaction/stakeClauseTransaction");
|
|
11
|
+
const utils_1 = __importDefault(require("../utils"));
|
|
12
|
+
class StakeClauseTxnBuilder extends transactionBuilder_1.TransactionBuilder {
|
|
13
|
+
/**
|
|
14
|
+
* Creates a new StakingBuilder instance.
|
|
15
|
+
*
|
|
16
|
+
* @param {Readonly<CoinConfig>} _coinConfig - The coin configuration object
|
|
17
|
+
*/
|
|
18
|
+
constructor(_coinConfig) {
|
|
19
|
+
super(_coinConfig);
|
|
20
|
+
this._transaction = new stakeClauseTransaction_1.StakeClauseTransaction(_coinConfig);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Initializes the builder with an existing StakingTransaction.
|
|
24
|
+
*
|
|
25
|
+
* @param {StakingTransaction} tx - The transaction to initialize the builder with
|
|
26
|
+
*/
|
|
27
|
+
initBuilder(tx) {
|
|
28
|
+
this._transaction = tx;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Gets the staking transaction instance.
|
|
32
|
+
*
|
|
33
|
+
* @returns {StakingTransaction} The staking transaction
|
|
34
|
+
*/
|
|
35
|
+
get stakingTransaction() {
|
|
36
|
+
return this._transaction;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Gets the transaction type for staking.
|
|
40
|
+
*
|
|
41
|
+
* @returns {TransactionType} The transaction type
|
|
42
|
+
*/
|
|
43
|
+
get transactionType() {
|
|
44
|
+
return sdk_core_1.TransactionType.StakingActivate;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Validates the transaction clauses for staking transaction.
|
|
48
|
+
* @param {TransactionClause[]} clauses - The transaction clauses to validate.
|
|
49
|
+
* @returns {boolean} - Returns true if the clauses are valid, false otherwise.
|
|
50
|
+
*/
|
|
51
|
+
isValidTransactionClauses(clauses) {
|
|
52
|
+
try {
|
|
53
|
+
if (!clauses || !Array.isArray(clauses) || clauses.length === 0) {
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
const clause = clauses[0];
|
|
57
|
+
if (!clause.to || !utils_1.default.isValidAddress(clause.to)) {
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
// For staking transactions, value must be greater than 0
|
|
61
|
+
if (!clause.value || clause.value === '0x0' || clause.value === '0') {
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
return true;
|
|
65
|
+
}
|
|
66
|
+
catch (e) {
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Sets the staking contract address for this staking tx.
|
|
72
|
+
* The address must be explicitly provided to ensure the correct contract is used.
|
|
73
|
+
*
|
|
74
|
+
* @param {string} address - The staking contract address (required)
|
|
75
|
+
* @returns {StakingBuilder} This transaction builder
|
|
76
|
+
* @throws {Error} If no address is provided
|
|
77
|
+
*/
|
|
78
|
+
stakingContractAddress(address) {
|
|
79
|
+
if (!address) {
|
|
80
|
+
throw new Error('Staking contract address is required');
|
|
81
|
+
}
|
|
82
|
+
this.validateAddress({ address });
|
|
83
|
+
this.stakingTransaction.stakingContractAddress = address;
|
|
84
|
+
return this;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Sets the level ID for this staking tx.
|
|
88
|
+
*
|
|
89
|
+
* @param {number} levelId - The level ID for staking
|
|
90
|
+
* @returns {StakingBuilder} This transaction builder
|
|
91
|
+
*/
|
|
92
|
+
levelId(levelId) {
|
|
93
|
+
this.stakingTransaction.levelId = levelId;
|
|
94
|
+
return this;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Sets the amount to stake for this staking tx (VET amount being sent).
|
|
98
|
+
*
|
|
99
|
+
* @param {string} amount - The amount to stake in wei
|
|
100
|
+
* @returns {StakingBuilder} This transaction builder
|
|
101
|
+
*/
|
|
102
|
+
amountToStake(amount) {
|
|
103
|
+
this.stakingTransaction.amountToStake = amount;
|
|
104
|
+
return this;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Sets the transaction data for this staking tx.
|
|
108
|
+
*
|
|
109
|
+
* @param {string} data - The transaction data
|
|
110
|
+
* @returns {StakingBuilder} This transaction builder
|
|
111
|
+
*/
|
|
112
|
+
transactionData(data) {
|
|
113
|
+
this.stakingTransaction.transactionData = data;
|
|
114
|
+
return this;
|
|
115
|
+
}
|
|
116
|
+
/** @inheritdoc */
|
|
117
|
+
validateTransaction(transaction) {
|
|
118
|
+
if (!transaction) {
|
|
119
|
+
throw new Error('transaction not defined');
|
|
120
|
+
}
|
|
121
|
+
(0, assert_1.default)(transaction.stakingContractAddress, 'Staking contract address is required');
|
|
122
|
+
(0, assert_1.default)(transaction.amountToStake, 'Amount to stake is required');
|
|
123
|
+
// Validate amount is a valid number string
|
|
124
|
+
if (transaction.amountToStake) {
|
|
125
|
+
try {
|
|
126
|
+
const bn = new (require('bignumber.js'))(transaction.amountToStake);
|
|
127
|
+
if (!bn.isFinite() || bn.isNaN()) {
|
|
128
|
+
throw new Error('Invalid character');
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
catch (e) {
|
|
132
|
+
throw new Error('Invalid character');
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
(0, assert_1.default)(transaction.levelId, 'Level ID is required');
|
|
136
|
+
this.validateAddress({ address: transaction.stakingContractAddress });
|
|
137
|
+
}
|
|
138
|
+
/** @inheritdoc */
|
|
139
|
+
async buildImplementation() {
|
|
140
|
+
this.transaction.type = this.transactionType;
|
|
141
|
+
await this.stakingTransaction.build();
|
|
142
|
+
return this.transaction;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
exports.StakeClauseTxnBuilder = StakeClauseTxnBuilder;
|
|
146
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rha2VDbGF1c2VUeG5CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbkJ1aWxkZXIvc3Rha2VDbGF1c2VUeG5CdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG9EQUE0QjtBQUU1QixtREFBdUQ7QUFHdkQsNkRBQTBEO0FBRTFELGtGQUErRTtBQUMvRSxxREFBNkI7QUFFN0IsTUFBYSxxQkFBc0IsU0FBUSx1Q0FBa0I7SUFDM0Q7Ozs7T0FJRztJQUNILFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSwrQ0FBc0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFdBQVcsQ0FBQyxFQUEwQjtRQUNwQyxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQUksa0JBQWtCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFlBQXNDLENBQUM7SUFDckQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFjLGVBQWU7UUFDM0IsT0FBTywwQkFBZSxDQUFDLGVBQWUsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLHlCQUF5QixDQUFDLE9BQTRCO1FBQzlELElBQUksQ0FBQztZQUNILElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ2hFLE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztZQUVELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUUxQixJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLGVBQUssQ0FBQyxj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O1FBQ3RDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0NBQ0Y7QUFsSkQsc0RBa0pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25DbGF1c2UgfSBmcm9tICdAdmVjaGFpbi9zZGstY29yZSc7XG5cbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vdHJhbnNhY3Rpb24vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgU3Rha2VDbGF1c2VUcmFuc2FjdGlvbiB9IGZyb20gJy4uL3RyYW5zYWN0aW9uL3N0YWtlQ2xhdXNlVHJhbnNhY3Rpb24nO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGNsYXNzIFN0YWtlQ2xhdXNlVHhuQnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IFN0YWtpbmdCdWlsZGVyIGluc3RhbmNlLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWRvbmx5PENvaW5Db25maWc+fSBfY29pbkNvbmZpZyAtIFRoZSBjb2luIGNvbmZpZ3VyYXRpb24gb2JqZWN0XG4gICAqL1xuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24gPSBuZXcgU3Rha2VDbGF1c2VUcmFuc2FjdGlvbihfY29pbkNvbmZpZyk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgdGhlIGJ1aWxkZXIgd2l0aCBhbiBleGlzdGluZyBTdGFraW5nVHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7U3Rha2luZ1RyYW5zYWN0aW9ufSB0eCAtIFRoZSB0cmFuc2FjdGlvbiB0byBpbml0aWFsaXplIHRoZSBidWlsZGVyIHdpdGhcbiAgICovXG4gIGluaXRCdWlsZGVyKHR4OiBTdGFrZUNsYXVzZVRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24gPSB0eDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBzdGFraW5nIHRyYW5zYWN0aW9uIGluc3RhbmNlLlxuICAgKlxuICAgKiBAcmV0dXJucyB7U3Rha2luZ1RyYW5zYWN0aW9ufSBUaGUgc3Rha2luZyB0cmFuc2FjdGlvblxuICAgKi9cbiAgZ2V0IHN0YWtpbmdUcmFuc2FjdGlvbigpOiBTdGFrZUNsYXVzZVRyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb24gYXMgU3Rha2VDbGF1c2VUcmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSB0cmFuc2FjdGlvbiB0eXBlIGZvciBzdGFraW5nLlxuICAgKlxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25UeXBlfSBUaGUgdHJhbnNhY3Rpb24gdHlwZVxuICAgKi9cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvblR5cGUoKTogVHJhbnNhY3Rpb25UeXBlIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdBY3RpdmF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIHRyYW5zYWN0aW9uIGNsYXVzZXMgZm9yIHN0YWtpbmcgdHJhbnNhY3Rpb24uXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25DbGF1c2VbXX0gY2xhdXNlcyAtIFRoZSB0cmFuc2FjdGlvbiBjbGF1c2VzIHRvIHZhbGlkYXRlLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBSZXR1cm5zIHRydWUgaWYgdGhlIGNsYXVzZXMgYXJlIHZhbGlkLCBmYWxzZSBvdGhlcndpc2UuXG4gICAqL1xuICBwcm90ZWN0ZWQgaXNWYWxpZFRyYW5zYWN0aW9uQ2xhdXNlcyhjbGF1c2VzOiBUcmFuc2FjdGlvbkNsYXVzZVtdKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghY2xhdXNlcyB8fCAhQXJyYXkuaXNBcnJheShjbGF1c2VzKSB8fCBjbGF1c2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNsYXVzZSA9IGNsYXVzZXNbMF07XG5cbiAgICAgIGlmICghY2xhdXNlLnRvIHx8ICF1dGlscy5pc1ZhbGlkQWRkcmVzcyhjbGF1c2UudG8pKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgLy8gRm9yIHN0YWtpbmcgdHJhbnNhY3Rpb25zLCB2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwXG4gICAgICBpZiAoIWNsYXVzZS52YWx1ZSB8fCBjbGF1c2UudmFsdWUgPT09ICcweDAnIHx8IGNsYXVzZS52YWx1ZSA9PT0gJzAnKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBzdGFraW5nIGNvbnRyYWN0IGFkZHJlc3MgZm9yIHRoaXMgc3Rha2luZyB0eC5cbiAgICogVGhlIGFkZHJlc3MgbXVzdCBiZSBleHBsaWNpdGx5IHByb3ZpZGVkIHRvIGVuc3VyZSB0aGUgY29ycmVjdCBjb250cmFjdCBpcyB1c2VkLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWRkcmVzcyAtIFRoZSBzdGFraW5nIGNvbnRyYWN0IGFkZHJlc3MgKHJlcXVpcmVkKVxuICAgKiBAcmV0dXJucyB7U3Rha2luZ0J1aWxkZXJ9IFRoaXMgdHJhbnNhY3Rpb24gYnVpbGRlclxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgbm8gYWRkcmVzcyBpcyBwcm92aWRlZFxuICAgKi9cbiAgc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAoIWFkZHJlc3MpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU3Rha2luZyBjb250cmFjdCBhZGRyZXNzIGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuICAgIHRoaXMudmFsaWRhdGVBZGRyZXNzKHsgYWRkcmVzcyB9KTtcbiAgICB0aGlzLnN0YWtpbmdUcmFuc2FjdGlvbi5zdGFraW5nQ29udHJhY3RBZGRyZXNzID0gYWRkcmVzcztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBsZXZlbCBJRCBmb3IgdGhpcyBzdGFraW5nIHR4LlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gbGV2ZWxJZCAtIFRoZSBsZXZlbCBJRCBmb3Igc3Rha2luZ1xuICAgKiBAcmV0dXJucyB7U3Rha2luZ0J1aWxkZXJ9IFRoaXMgdHJhbnNhY3Rpb24gYnVpbGRlclxuICAgKi9cbiAgbGV2ZWxJZChsZXZlbElkOiBudW1iZXIpOiB0aGlzIHtcbiAgICB0aGlzLnN0YWtpbmdUcmFuc2FjdGlvbi5sZXZlbElkID0gbGV2ZWxJZDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBhbW91bnQgdG8gc3Rha2UgZm9yIHRoaXMgc3Rha2luZyB0eCAoVkVUIGFtb3VudCBiZWluZyBzZW50KS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFtb3VudCAtIFRoZSBhbW91bnQgdG8gc3Rha2UgaW4gd2VpXG4gICAqIEByZXR1cm5zIHtTdGFraW5nQnVpbGRlcn0gVGhpcyB0cmFuc2FjdGlvbiBidWlsZGVyXG4gICAqL1xuICBhbW91bnRUb1N0YWtlKGFtb3VudDogc3RyaW5nKTogdGhpcyB7XG4gICAgdGhpcy5zdGFraW5nVHJhbnNhY3Rpb24uYW1vdW50VG9TdGFrZSA9IGFtb3VudDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB0cmFuc2FjdGlvbiBkYXRhIGZvciB0aGlzIHN0YWtpbmcgdHguXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhIC0gVGhlIHRyYW5zYWN0aW9uIGRhdGFcbiAgICogQHJldHVybnMge1N0YWtpbmdCdWlsZGVyfSBUaGlzIHRyYW5zYWN0aW9uIGJ1aWxkZXJcbiAgICovXG4gIHRyYW5zYWN0aW9uRGF0YShkYXRhOiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLnN0YWtpbmdUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkRhdGEgPSBkYXRhO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24/OiBTdGFrZUNsYXVzZVRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgaWYgKCF0cmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd0cmFuc2FjdGlvbiBub3QgZGVmaW5lZCcpO1xuICAgIH1cbiAgICBhc3NlcnQodHJhbnNhY3Rpb24uc3Rha2luZ0NvbnRyYWN0QWRkcmVzcywgJ1N0YWtpbmcgY29udHJhY3QgYWRkcmVzcyBpcyByZXF1aXJlZCcpO1xuICAgIGFzc2VydCh0cmFuc2FjdGlvbi5hbW91bnRUb1N0YWtlLCAnQW1vdW50IHRvIHN0YWtlIGlzIHJlcXVpcmVkJyk7XG5cbiAgICAvLyBWYWxpZGF0ZSBhbW91bnQgaXMgYSB2YWxpZCBudW1iZXIgc3RyaW5nXG4gICAgaWYgKHRyYW5zYWN0aW9uLmFtb3VudFRvU3Rha2UpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGJuID0gbmV3IChyZXF1aXJlKCdiaWdudW1iZXIuanMnKSkodHJhbnNhY3Rpb24uYW1vdW50VG9TdGFrZSk7XG4gICAgICAgIGlmICghYm4uaXNGaW5pdGUoKSB8fCBibi5pc05hTigpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGNoYXJhY3RlcicpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjaGFyYWN0ZXInKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhc3NlcnQodHJhbnNhY3Rpb24ubGV2ZWxJZCwgJ0xldmVsIElEIGlzIHJlcXVpcmVkJyk7XG4gICAgdGhpcy52YWxpZGF0ZUFkZHJlc3MoeyBhZGRyZXNzOiB0cmFuc2FjdGlvbi5zdGFraW5nQ29udHJhY3RBZGRyZXNzIH0pO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBhc3luYyBidWlsZEltcGxlbWVudGF0aW9uKCk6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnR5cGUgPSB0aGlzLnRyYW5zYWN0aW9uVHlwZTtcbiAgICBhd2FpdCB0aGlzLnN0YWtpbmdUcmFuc2FjdGlvbi5idWlsZCgpO1xuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
|
|
2
|
+
import { TransactionType } from '@bitgo-beta/sdk-core';
|
|
3
|
+
import { TransactionClause } from '@vechain/sdk-core';
|
|
4
|
+
import { TransactionBuilder } from './transactionBuilder';
|
|
5
|
+
import { Transaction } from '../transaction/transaction';
|
|
6
|
+
import { StakingTransaction } from '../transaction/stakingTransaction';
|
|
7
|
+
export declare class StakingBuilder extends TransactionBuilder {
|
|
8
|
+
/**
|
|
9
|
+
* Creates a new StakingBuilder instance.
|
|
10
|
+
*
|
|
11
|
+
* @param {Readonly<CoinConfig>} _coinConfig - The coin configuration object
|
|
12
|
+
*/
|
|
13
|
+
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
14
|
+
/**
|
|
15
|
+
* Initializes the builder with an existing StakingTransaction.
|
|
16
|
+
*
|
|
17
|
+
* @param {StakingTransaction} tx - The transaction to initialize the builder with
|
|
18
|
+
*/
|
|
19
|
+
initBuilder(tx: StakingTransaction): void;
|
|
20
|
+
/**
|
|
21
|
+
* Gets the staking transaction instance.
|
|
22
|
+
*
|
|
23
|
+
* @returns {StakingTransaction} The staking transaction
|
|
24
|
+
*/
|
|
25
|
+
get stakingTransaction(): StakingTransaction;
|
|
26
|
+
/**
|
|
27
|
+
* Gets the transaction type for staking.
|
|
28
|
+
*
|
|
29
|
+
* @returns {TransactionType} The transaction type
|
|
30
|
+
*/
|
|
31
|
+
protected get transactionType(): TransactionType;
|
|
32
|
+
/**
|
|
33
|
+
* Validates the transaction clauses for staking transaction.
|
|
34
|
+
* @param {TransactionClause[]} clauses - The transaction clauses to validate.
|
|
35
|
+
* @returns {boolean} - Returns true if the clauses are valid, false otherwise.
|
|
36
|
+
*/
|
|
37
|
+
protected isValidTransactionClauses(clauses: TransactionClause[]): boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Sets the staking contract address for this staking tx.
|
|
40
|
+
* The address must be explicitly provided to ensure the correct contract is used.
|
|
41
|
+
*
|
|
42
|
+
* @param {string} address - The staking contract address (required)
|
|
43
|
+
* @returns {StakingBuilder} This transaction builder
|
|
44
|
+
* @throws {Error} If no address is provided
|
|
45
|
+
*/
|
|
46
|
+
stakingContractAddress(address: string): this;
|
|
47
|
+
/**
|
|
48
|
+
* Sets the level ID for this staking tx.
|
|
49
|
+
*
|
|
50
|
+
* @param {number} levelId - The level ID for staking
|
|
51
|
+
* @returns {StakingBuilder} This transaction builder
|
|
52
|
+
*/
|
|
53
|
+
levelId(levelId: number): this;
|
|
54
|
+
/**
|
|
55
|
+
* Sets the amount to stake for this staking tx (VET amount being sent).
|
|
56
|
+
*
|
|
57
|
+
* @param {string} amount - The amount to stake in wei
|
|
58
|
+
* @returns {StakingBuilder} This transaction builder
|
|
59
|
+
*/
|
|
60
|
+
amountToStake(amount: string): this;
|
|
61
|
+
/**
|
|
62
|
+
* Sets the transaction data for this staking tx.
|
|
63
|
+
*
|
|
64
|
+
* @param {string} data - The transaction data
|
|
65
|
+
* @returns {StakingBuilder} This transaction builder
|
|
66
|
+
*/
|
|
67
|
+
transactionData(data: string): this;
|
|
68
|
+
/** @inheritdoc */
|
|
69
|
+
validateTransaction(transaction?: StakingTransaction): void;
|
|
70
|
+
/** @inheritdoc */
|
|
71
|
+
protected buildImplementation(): Promise<Transaction>;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=stakingBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stakingBuilder.d.ts","sourceRoot":"","sources":["../../../../src/lib/transactionBuilder/stakingBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAGvE,qBAAa,cAAe,SAAQ,kBAAkB;IACpD;;;;OAIG;gBACS,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C;;;;OAIG;IACH,WAAW,CAAC,EAAE,EAAE,kBAAkB,GAAG,IAAI;IAIzC;;;;OAIG;IACH,IAAI,kBAAkB,IAAI,kBAAkB,CAE3C;IAED;;;;OAIG;IACH,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED;;;;OAIG;IACH,SAAS,CAAC,yBAAyB,CAAC,OAAO,EAAE,iBAAiB,EAAE,GAAG,OAAO;IAuB1E;;;;;;;OAOG;IACH,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAS7C;;;;;OAKG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAK9B;;;;;OAKG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAKnC;;;;;OAKG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKnC,kBAAkB;IAClB,mBAAmB,CAAC,WAAW,CAAC,EAAE,kBAAkB,GAAG,IAAI;IAwB3D,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;CAK5D"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.StakingBuilder = void 0;
|
|
7
|
+
const assert_1 = __importDefault(require("assert"));
|
|
8
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
9
|
+
const transactionBuilder_1 = require("./transactionBuilder");
|
|
10
|
+
const stakingTransaction_1 = require("../transaction/stakingTransaction");
|
|
11
|
+
const utils_1 = __importDefault(require("../utils"));
|
|
12
|
+
class StakingBuilder extends transactionBuilder_1.TransactionBuilder {
|
|
13
|
+
/**
|
|
14
|
+
* Creates a new StakingBuilder instance.
|
|
15
|
+
*
|
|
16
|
+
* @param {Readonly<CoinConfig>} _coinConfig - The coin configuration object
|
|
17
|
+
*/
|
|
18
|
+
constructor(_coinConfig) {
|
|
19
|
+
super(_coinConfig);
|
|
20
|
+
this._transaction = new stakingTransaction_1.StakingTransaction(_coinConfig);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Initializes the builder with an existing StakingTransaction.
|
|
24
|
+
*
|
|
25
|
+
* @param {StakingTransaction} tx - The transaction to initialize the builder with
|
|
26
|
+
*/
|
|
27
|
+
initBuilder(tx) {
|
|
28
|
+
this._transaction = tx;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Gets the staking transaction instance.
|
|
32
|
+
*
|
|
33
|
+
* @returns {StakingTransaction} The staking transaction
|
|
34
|
+
*/
|
|
35
|
+
get stakingTransaction() {
|
|
36
|
+
return this._transaction;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Gets the transaction type for staking.
|
|
40
|
+
*
|
|
41
|
+
* @returns {TransactionType} The transaction type
|
|
42
|
+
*/
|
|
43
|
+
get transactionType() {
|
|
44
|
+
return sdk_core_1.TransactionType.ContractCall;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Validates the transaction clauses for staking transaction.
|
|
48
|
+
* @param {TransactionClause[]} clauses - The transaction clauses to validate.
|
|
49
|
+
* @returns {boolean} - Returns true if the clauses are valid, false otherwise.
|
|
50
|
+
*/
|
|
51
|
+
isValidTransactionClauses(clauses) {
|
|
52
|
+
try {
|
|
53
|
+
if (!clauses || !Array.isArray(clauses) || clauses.length === 0) {
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
const clause = clauses[0];
|
|
57
|
+
if (!clause.to || !utils_1.default.isValidAddress(clause.to)) {
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
// For staking transactions, value must be greater than 0
|
|
61
|
+
if (!clause.value || clause.value === '0x0' || clause.value === '0') {
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
return true;
|
|
65
|
+
}
|
|
66
|
+
catch (e) {
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Sets the staking contract address for this staking tx.
|
|
72
|
+
* The address must be explicitly provided to ensure the correct contract is used.
|
|
73
|
+
*
|
|
74
|
+
* @param {string} address - The staking contract address (required)
|
|
75
|
+
* @returns {StakingBuilder} This transaction builder
|
|
76
|
+
* @throws {Error} If no address is provided
|
|
77
|
+
*/
|
|
78
|
+
stakingContractAddress(address) {
|
|
79
|
+
if (!address) {
|
|
80
|
+
throw new Error('Staking contract address is required');
|
|
81
|
+
}
|
|
82
|
+
this.validateAddress({ address });
|
|
83
|
+
this.stakingTransaction.stakingContractAddress = address;
|
|
84
|
+
return this;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Sets the level ID for this staking tx.
|
|
88
|
+
*
|
|
89
|
+
* @param {number} levelId - The level ID for staking
|
|
90
|
+
* @returns {StakingBuilder} This transaction builder
|
|
91
|
+
*/
|
|
92
|
+
levelId(levelId) {
|
|
93
|
+
this.stakingTransaction.levelId = levelId;
|
|
94
|
+
return this;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Sets the amount to stake for this staking tx (VET amount being sent).
|
|
98
|
+
*
|
|
99
|
+
* @param {string} amount - The amount to stake in wei
|
|
100
|
+
* @returns {StakingBuilder} This transaction builder
|
|
101
|
+
*/
|
|
102
|
+
amountToStake(amount) {
|
|
103
|
+
this.stakingTransaction.amountToStake = amount;
|
|
104
|
+
return this;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Sets the transaction data for this staking tx.
|
|
108
|
+
*
|
|
109
|
+
* @param {string} data - The transaction data
|
|
110
|
+
* @returns {StakingBuilder} This transaction builder
|
|
111
|
+
*/
|
|
112
|
+
transactionData(data) {
|
|
113
|
+
this.stakingTransaction.transactionData = data;
|
|
114
|
+
return this;
|
|
115
|
+
}
|
|
116
|
+
/** @inheritdoc */
|
|
117
|
+
validateTransaction(transaction) {
|
|
118
|
+
if (!transaction) {
|
|
119
|
+
throw new Error('transaction not defined');
|
|
120
|
+
}
|
|
121
|
+
(0, assert_1.default)(transaction.stakingContractAddress, 'Staking contract address is required');
|
|
122
|
+
(0, assert_1.default)(transaction.amountToStake, 'Amount to stake is required');
|
|
123
|
+
// Validate amount is a valid number string
|
|
124
|
+
if (transaction.amountToStake) {
|
|
125
|
+
try {
|
|
126
|
+
const bn = new (require('bignumber.js'))(transaction.amountToStake);
|
|
127
|
+
if (!bn.isFinite() || bn.isNaN()) {
|
|
128
|
+
throw new Error('Invalid character');
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
catch (e) {
|
|
132
|
+
throw new Error('Invalid character');
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
(0, assert_1.default)(transaction.levelId, 'Level ID is required');
|
|
136
|
+
(0, assert_1.default)(transaction.autorenew, 'Autorenew flag is required');
|
|
137
|
+
this.validateAddress({ address: transaction.stakingContractAddress });
|
|
138
|
+
}
|
|
139
|
+
/** @inheritdoc */
|
|
140
|
+
async buildImplementation() {
|
|
141
|
+
this.transaction.type = this.transactionType;
|
|
142
|
+
await this.stakingTransaction.build();
|
|
143
|
+
return this.transaction;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
exports.StakingBuilder = StakingBuilder;
|
|
147
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rha2luZ0J1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uQnVpbGRlci9zdGFraW5nQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxvREFBNEI7QUFFNUIsbURBQXVEO0FBR3ZELDZEQUEwRDtBQUUxRCwwRUFBdUU7QUFDdkUscURBQTZCO0FBRTdCLE1BQWEsY0FBZSxTQUFRLHVDQUFrQjtJQUNwRDs7OztPQUlHO0lBQ0gsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLHVDQUFrQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsV0FBVyxDQUFDLEVBQXNCO1FBQ2hDLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBSSxrQkFBa0I7UUFDcEIsT0FBTyxJQUFJLENBQUMsWUFBa0MsQ0FBQztJQUNqRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQWMsZUFBZTtRQUMzQixPQUFPLDBCQUFlLENBQUMsWUFBWSxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7OztPQUlHO0lBQ08seUJBQXlCLENBQUMsT0FBNEI7UUFDOUQsSUFBSSxDQUFDO1lBQ0gsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDaEUsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1lBRUQsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRTFCLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLENBQUMsZUFBSyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENB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QyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN0QyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztDQUNGO0FBbkpELHdDQW1KQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQ2xhdXNlIH0gZnJvbSAnQHZlY2hhaW4vc2RrLWNvcmUnO1xuXG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4uL3RyYW5zYWN0aW9uL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IFN0YWtpbmdUcmFuc2FjdGlvbiB9IGZyb20gJy4uL3RyYW5zYWN0aW9uL3N0YWtpbmdUcmFuc2FjdGlvbic7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi4vdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgU3Rha2luZ0J1aWxkZXIgZXh0ZW5kcyBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBTdGFraW5nQnVpbGRlciBpbnN0YW5jZS5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFkb25seTxDb2luQ29uZmlnPn0gX2NvaW5Db25maWcgLSBUaGUgY29pbiBjb25maWd1cmF0aW9uIG9iamVjdFxuICAgKi9cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gbmV3IFN0YWtpbmdUcmFuc2FjdGlvbihfY29pbkNvbmZpZyk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgdGhlIGJ1aWxkZXIgd2l0aCBhbiBleGlzdGluZyBTdGFraW5nVHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7U3Rha2luZ1RyYW5zYWN0aW9ufSB0eCAtIFRoZSB0cmFuc2FjdGlvbiB0byBpbml0aWFsaXplIHRoZSBidWlsZGVyIHdpdGhcbiAgICovXG4gIGluaXRCdWlsZGVyKHR4OiBTdGFraW5nVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IHR4O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHN0YWtpbmcgdHJhbnNhY3Rpb24gaW5zdGFuY2UuXG4gICAqXG4gICAqIEByZXR1cm5zIHtTdGFraW5nVHJhbnNhY3Rpb259IFRoZSBzdGFraW5nIHRyYW5zYWN0aW9uXG4gICAqL1xuICBnZXQgc3Rha2luZ1RyYW5zYWN0aW9uKCk6IFN0YWtpbmdUcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uIGFzIFN0YWtpbmdUcmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSB0cmFuc2FjdGlvbiB0eXBlIGZvciBzdGFraW5nLlxuICAgKlxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25UeXBlfSBUaGUgdHJhbnNhY3Rpb24gdHlwZVxuICAgKi9cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvblR5cGUoKTogVHJhbnNhY3Rpb25UeXBlIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLkNvbnRyYWN0Q2FsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIHRyYW5zYWN0aW9uIGNsYXVzZXMgZm9yIHN0YWtpbmcgdHJhbnNhY3Rpb24uXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25DbGF1c2VbXX0gY2xhdXNlcyAtIFRoZSB0cmFuc2FjdGlvbiBjbGF1c2VzIHRvIHZhbGlkYXRlLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBSZXR1cm5zIHRydWUgaWYgdGhlIGNsYXVzZXMgYXJlIHZhbGlkLCBmYWxzZSBvdGhlcndpc2UuXG4gICAqL1xuICBwcm90ZWN0ZWQgaXNWYWxpZFRyYW5zYWN0aW9uQ2xhdXNlcyhjbGF1c2VzOiBUcmFuc2FjdGlvbkNsYXVzZVtdKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghY2xhdXNlcyB8fCAhQXJyYXkuaXNBcnJheShjbGF1c2VzKSB8fCBjbGF1c2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNsYXVzZSA9IGNsYXVzZXNbMF07XG5cbiAgICAgIGlmICghY2xhdXNlLnRvIHx8ICF1dGlscy5pc1ZhbGlkQWRkcmVzcyhjbGF1c2UudG8pKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgLy8gRm9yIHN0YWtpbmcgdHJhbnNhY3Rpb25zLCB2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwXG4gICAgICBpZiAoIWNsYXVzZS52YWx1ZSB8fCBjbGF1c2UudmFsdWUgPT09ICcweDAnIHx8IGNsYXVzZS52YWx1ZSA9PT0gJzAnKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBzdGFraW5nIGNvbnRyYWN0IGFkZHJlc3MgZm9yIHRoaXMgc3Rha2luZyB0eC5cbiAgICogVGhlIGFkZHJlc3MgbXVzdCBiZSBleHBsaWNpdGx5IHByb3ZpZGVkIHRvIGVuc3VyZSB0aGUgY29ycmVjdCBjb250cmFjdCBpcyB1c2VkLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWRkcmVzcyAtIFRoZSBzdGFraW5nIGNvbnRyYWN0IGFkZHJlc3MgKHJlcXVpcmVkKVxuICAgKiBAcmV0dXJucyB7U3Rha2luZ0J1aWxkZXJ9IFRoaXMgdHJhbnNhY3Rpb24gYnVpbGRlclxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgbm8gYWRkcmVzcyBpcyBwcm92aWRlZFxuICAgKi9cbiAgc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAoIWFkZHJlc3MpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU3Rha2luZyBjb250cmFjdCBhZGRyZXNzIGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuICAgIHRoaXMudmFsaWRhdGVBZGRyZXNzKHsgYWRkcmVzcyB9KTtcbiAgICB0aGlzLnN0YWtpbmdUcmFuc2FjdGlvbi5zdGFraW5nQ29udHJhY3RBZGRyZXNzID0gYWRkcmVzcztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBsZXZlbCBJRCBmb3IgdGhpcyBzdGFraW5nIHR4LlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gbGV2ZWxJZCAtIFRoZSBsZXZlbCBJRCBmb3Igc3Rha2luZ1xuICAgKiBAcmV0dXJucyB7U3Rha2luZ0J1aWxkZXJ9IFRoaXMgdHJhbnNhY3Rpb24gYnVpbGRlclxuICAgKi9cbiAgbGV2ZWxJZChsZXZlbElkOiBudW1iZXIpOiB0aGlzIHtcbiAgICB0aGlzLnN0YWtpbmdUcmFuc2FjdGlvbi5sZXZlbElkID0gbGV2ZWxJZDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBhbW91bnQgdG8gc3Rha2UgZm9yIHRoaXMgc3Rha2luZyB0eCAoVkVUIGFtb3VudCBiZWluZyBzZW50KS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFtb3VudCAtIFRoZSBhbW91bnQgdG8gc3Rha2UgaW4gd2VpXG4gICAqIEByZXR1cm5zIHtTdGFraW5nQnVpbGRlcn0gVGhpcyB0cmFuc2FjdGlvbiBidWlsZGVyXG4gICAqL1xuICBhbW91bnRUb1N0YWtlKGFtb3VudDogc3RyaW5nKTogdGhpcyB7XG4gICAgdGhpcy5zdGFraW5nVHJhbnNhY3Rpb24uYW1vdW50VG9TdGFrZSA9IGFtb3VudDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB0cmFuc2FjdGlvbiBkYXRhIGZvciB0aGlzIHN0YWtpbmcgdHguXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhIC0gVGhlIHRyYW5zYWN0aW9uIGRhdGFcbiAgICogQHJldHVybnMge1N0YWtpbmdCdWlsZGVyfSBUaGlzIHRyYW5zYWN0aW9uIGJ1aWxkZXJcbiAgICovXG4gIHRyYW5zYWN0aW9uRGF0YShkYXRhOiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLnN0YWtpbmdUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkRhdGEgPSBkYXRhO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24/OiBTdGFraW5nVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICBpZiAoIXRyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3RyYW5zYWN0aW9uIG5vdCBkZWZpbmVkJyk7XG4gICAgfVxuICAgIGFzc2VydCh0cmFuc2FjdGlvbi5zdGFraW5nQ29udHJhY3RBZGRyZXNzLCAnU3Rha2luZyBjb250cmFjdCBhZGRyZXNzIGlzIHJlcXVpcmVkJyk7XG4gICAgYXNzZXJ0KHRyYW5zYWN0aW9uLmFtb3VudFRvU3Rha2UsICdBbW91bnQgdG8gc3Rha2UgaXMgcmVxdWlyZWQnKTtcblxuICAgIC8vIFZhbGlkYXRlIGFtb3VudCBpcyBhIHZhbGlkIG51bWJlciBzdHJpbmdcbiAgICBpZiAodHJhbnNhY3Rpb24uYW1vdW50VG9TdGFrZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgYm4gPSBuZXcgKHJlcXVpcmUoJ2JpZ251bWJlci5qcycpKSh0cmFuc2FjdGlvbi5hbW91bnRUb1N0YWtlKTtcbiAgICAgICAgaWYgKCFibi5pc0Zpbml0ZSgpIHx8IGJuLmlzTmFOKCkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgY2hhcmFjdGVyJyk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGNoYXJhY3RlcicpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGFzc2VydCh0cmFuc2FjdGlvbi5sZXZlbElkLCAnTGV2ZWwgSUQgaXMgcmVxdWlyZWQnKTtcbiAgICBhc3NlcnQodHJhbnNhY3Rpb24uYXV0b3JlbmV3LCAnQXV0b3JlbmV3IGZsYWcgaXMgcmVxdWlyZWQnKTtcbiAgICB0aGlzLnZhbGlkYXRlQWRkcmVzcyh7IGFkZHJlc3M6IHRyYW5zYWN0aW9uLnN0YWtpbmdDb250cmFjdEFkZHJlc3MgfSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkSW1wbGVtZW50YXRpb24oKTogUHJvbWlzZTxUcmFuc2FjdGlvbj4ge1xuICAgIHRoaXMudHJhbnNhY3Rpb24udHlwZSA9IHRoaXMudHJhbnNhY3Rpb25UeXBlO1xuICAgIGF3YWl0IHRoaXMuc3Rha2luZ1RyYW5zYWN0aW9uLmJ1aWxkKCk7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb247XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
|
|
2
|
+
import { TransactionType } from '@bitgo-beta/sdk-core';
|
|
3
|
+
import { TransactionClause } from '@vechain/sdk-core';
|
|
4
|
+
import { TransactionBuilder } from './transactionBuilder';
|
|
5
|
+
import { TokenTransaction } from '../transaction/tokenTransaction';
|
|
6
|
+
export declare class TokenTransactionBuilder extends TransactionBuilder {
|
|
7
|
+
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
8
|
+
initBuilder(tx: TokenTransaction): void;
|
|
9
|
+
get tokenTransaction(): TokenTransaction;
|
|
10
|
+
protected get transactionType(): TransactionType;
|
|
11
|
+
/**
|
|
12
|
+
* Validates the transaction clauses for flush token transaction.
|
|
13
|
+
* @param {TransactionClause[]} clauses - The transaction clauses to validate.
|
|
14
|
+
* @returns {boolean} - Returns true if the clauses are valid, false otherwise.
|
|
15
|
+
*/
|
|
16
|
+
protected isValidTransactionClauses(clauses: TransactionClause[]): boolean;
|
|
17
|
+
tokenAddress(address: string): this;
|
|
18
|
+
/** @inheritdoc */
|
|
19
|
+
validateTransaction(transaction?: TokenTransaction): void;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=tokenTransactionBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenTransactionBuilder.d.ts","sourceRoot":"","sources":["../../../../src/lib/transactionBuilder/tokenTransactionBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAGnE,qBAAa,uBAAwB,SAAQ,kBAAkB;gBACjD,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,WAAW,CAAC,EAAE,EAAE,gBAAgB,GAAG,IAAI;IAIvC,IAAI,gBAAgB,IAAI,gBAAgB,CAEvC;IAED,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED;;;;OAIG;IACH,SAAS,CAAC,yBAAyB,CAAC,OAAO,EAAE,iBAAiB,EAAE,GAAG,OAAO;IA8B1E,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAMnC,kBAAkB;IAClB,mBAAmB,CAAC,WAAW,CAAC,EAAE,gBAAgB,GAAG,IAAI;CAW1D"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.TokenTransactionBuilder = void 0;
|
|
7
|
+
const ethereumjs_util_1 = require("ethereumjs-util");
|
|
8
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
9
|
+
const transactionBuilder_1 = require("./transactionBuilder");
|
|
10
|
+
const utils_1 = __importDefault(require("../utils"));
|
|
11
|
+
class TokenTransactionBuilder extends transactionBuilder_1.TransactionBuilder {
|
|
12
|
+
constructor(_coinConfig) {
|
|
13
|
+
super(_coinConfig);
|
|
14
|
+
}
|
|
15
|
+
initBuilder(tx) {
|
|
16
|
+
this._transaction = tx;
|
|
17
|
+
}
|
|
18
|
+
get tokenTransaction() {
|
|
19
|
+
return this._transaction;
|
|
20
|
+
}
|
|
21
|
+
get transactionType() {
|
|
22
|
+
return sdk_core_1.TransactionType.Send;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Validates the transaction clauses for flush token transaction.
|
|
26
|
+
* @param {TransactionClause[]} clauses - The transaction clauses to validate.
|
|
27
|
+
* @returns {boolean} - Returns true if the clauses are valid, false otherwise.
|
|
28
|
+
*/
|
|
29
|
+
isValidTransactionClauses(clauses) {
|
|
30
|
+
try {
|
|
31
|
+
if (!clauses || !Array.isArray(clauses) || clauses.length === 0) {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
const clause = clauses[0];
|
|
35
|
+
if (!clause.to || !utils_1.default.isValidAddress(clause.to)) {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
// For token transactions, the value should be 0
|
|
39
|
+
if (clause.value !== 0) {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
const { address } = utils_1.default.decodeTransferTokenData(clause.data);
|
|
43
|
+
const recipientAddress = (0, ethereumjs_util_1.addHexPrefix)(address.toString()).toLowerCase();
|
|
44
|
+
if (!recipientAddress || !utils_1.default.isValidAddress(recipientAddress)) {
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
catch (e) {
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
tokenAddress(address) {
|
|
54
|
+
this.validateAddress({ address });
|
|
55
|
+
this.tokenTransaction.tokenAddress = address;
|
|
56
|
+
return this;
|
|
57
|
+
}
|
|
58
|
+
/** @inheritdoc */
|
|
59
|
+
validateTransaction(transaction) {
|
|
60
|
+
if (!transaction) {
|
|
61
|
+
throw new Error('transaction not defined');
|
|
62
|
+
}
|
|
63
|
+
if (!transaction.tokenAddress) {
|
|
64
|
+
throw new Error('Token address is required');
|
|
65
|
+
}
|
|
66
|
+
this.validateAddress({ address: transaction.tokenAddress });
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
exports.TokenTransactionBuilder = TokenTransactionBuilder;
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5UcmFuc2FjdGlvbkJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uQnVpbGRlci90b2tlblRyYW5zYWN0aW9uQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxxREFBK0M7QUFFL0MsbURBQXVEO0FBR3ZELDZEQUEwRDtBQUUxRCxxREFBNkI7QUFFN0IsTUFBYSx1QkFBd0IsU0FBUSx1Q0FBa0I7SUFDN0QsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVELFdBQVcsQ0FBQyxFQUFvQjtRQUM5QixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsWUFBZ0MsQ0FBQztJQUMvQyxDQUFDO0lBRUQsSUFBYyxlQUFlO1FBQzNCLE9BQU8sMEJBQWUsQ0FBQyxJQUFJLENBQUM7SUFDOUIsQ0FBQztJQUVEOzs7O09BSUc7SUFDTyx5QkFBeUIsQ0FBQyxPQUE0QjtRQUM5RCxJQUFJLENBQUM7WUFDSCxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNoRSxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7WUFFRCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQyxlQUFLLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUNuRCxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7WUFFRCxnREFBZ0Q7WUFDaEQsSUFBSSxNQUFNLENBQUMsS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUN2QixPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7WUFFRCxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsZUFBSyxDQUFDLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMvRCxNQUFNLGdCQUFnQixHQUFHLElBQUEsOEJBQVksRUFBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUV4RSxJQUFJLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxlQUFLLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztnQkFDakUsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1lBRUQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztJQUNILENBQUM7SUFFRCxZQUFZLENBQUMsT0FBZTtRQUMxQixJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQztRQUM3QyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsbUJBQW1CLENBQUMsV0FBOEI7UUFDaEQsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUM3QyxDQUFDO1FBRUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUM5QixNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFDL0MsQ0FBQztRQUVELElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxPQUFPLEVBQUUsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7SUFDOUQsQ0FBQztDQUNGO0FBdEVELDBEQXNFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFkZEhleFByZWZpeCB9IGZyb20gJ2V0aGVyZXVtanMtdXRpbCc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkNsYXVzZSB9IGZyb20gJ0B2ZWNoYWluL3Nkay1jb3JlJztcblxuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgVG9rZW5UcmFuc2FjdGlvbiB9IGZyb20gJy4uL3RyYW5zYWN0aW9uL3Rva2VuVHJhbnNhY3Rpb24nO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGNsYXNzIFRva2VuVHJhbnNhY3Rpb25CdWlsZGVyIGV4dGVuZHMgVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICB9XG5cbiAgaW5pdEJ1aWxkZXIodHg6IFRva2VuVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IHR4O1xuICB9XG5cbiAgZ2V0IHRva2VuVHJhbnNhY3Rpb24oKTogVG9rZW5UcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uIGFzIFRva2VuVHJhbnNhY3Rpb247XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuU2VuZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIHRyYW5zYWN0aW9uIGNsYXVzZXMgZm9yIGZsdXNoIHRva2VuIHRyYW5zYWN0aW9uLlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uQ2xhdXNlW119IGNsYXVzZXMgLSBUaGUgdHJhbnNhY3Rpb24gY2xhdXNlcyB0byB2YWxpZGF0ZS5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IC0gUmV0dXJucyB0cnVlIGlmIHRoZSBjbGF1c2VzIGFyZSB2YWxpZCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgKi9cbiAgcHJvdGVjdGVkIGlzVmFsaWRUcmFuc2FjdGlvbkNsYXVzZXMoY2xhdXNlczogVHJhbnNhY3Rpb25DbGF1c2VbXSk6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICBpZiAoIWNsYXVzZXMgfHwgIUFycmF5LmlzQXJyYXkoY2xhdXNlcykgfHwgY2xhdXNlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjbGF1c2UgPSBjbGF1c2VzWzBdO1xuXG4gICAgICBpZiAoIWNsYXVzZS50byB8fCAhdXRpbHMuaXNWYWxpZEFkZHJlc3MoY2xhdXNlLnRvKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIC8vIEZvciB0b2tlbiB0cmFuc2FjdGlvbnMsIHRoZSB2YWx1ZSBzaG91bGQgYmUgMFxuICAgICAgaWYgKGNsYXVzZS52YWx1ZSAhPT0gMCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgYWRkcmVzcyB9ID0gdXRpbHMuZGVjb2RlVHJhbnNmZXJUb2tlbkRhdGEoY2xhdXNlLmRhdGEpO1xuICAgICAgY29uc3QgcmVjaXBpZW50QWRkcmVzcyA9IGFkZEhleFByZWZpeChhZGRyZXNzLnRvU3RyaW5nKCkpLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgIGlmICghcmVjaXBpZW50QWRkcmVzcyB8fCAhdXRpbHMuaXNWYWxpZEFkZHJlc3MocmVjaXBpZW50QWRkcmVzcykpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgdG9rZW5BZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IHRoaXMge1xuICAgIHRoaXMudmFsaWRhdGVBZGRyZXNzKHsgYWRkcmVzcyB9KTtcbiAgICB0aGlzLnRva2VuVHJhbnNhY3Rpb24udG9rZW5BZGRyZXNzID0gYWRkcmVzcztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uPzogVG9rZW5UcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIGlmICghdHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndHJhbnNhY3Rpb24gbm90IGRlZmluZWQnKTtcbiAgICB9XG5cbiAgICBpZiAoIXRyYW5zYWN0aW9uLnRva2VuQWRkcmVzcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUb2tlbiBhZGRyZXNzIGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuXG4gICAgdGhpcy52YWxpZGF0ZUFkZHJlc3MoeyBhZGRyZXNzOiB0cmFuc2FjdGlvbi50b2tlbkFkZHJlc3MgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import BigNumber from 'bignumber.js';
|
|
2
|
-
import { BaseKey, BaseTransactionBuilder, BaseAddress, Recipient, TransactionType
|
|
2
|
+
import { BaseKey, BaseTransactionBuilder, BaseAddress, Recipient, TransactionType } from '@bitgo-beta/sdk-core';
|
|
3
3
|
import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
|
|
4
4
|
import { Transaction } from '../transaction/transaction';
|
|
5
5
|
import { TransactionClause } from '@vechain/sdk-core';
|
|
@@ -7,12 +7,14 @@ export declare abstract class TransactionBuilder extends BaseTransactionBuilder
|
|
|
7
7
|
protected _transaction: Transaction;
|
|
8
8
|
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
9
9
|
protected abstract get transactionType(): TransactionType;
|
|
10
|
-
getNonce():
|
|
11
|
-
initBuilder(tx: Transaction): void;
|
|
10
|
+
getNonce(): string;
|
|
12
11
|
/** @inheritdoc */
|
|
13
12
|
get transaction(): Transaction;
|
|
14
13
|
/** @inheritdoc */
|
|
15
14
|
protected set transaction(transaction: Transaction);
|
|
15
|
+
initBuilder(tx: Transaction): void;
|
|
16
|
+
chainTag(tag: number): this;
|
|
17
|
+
isRecovery(isRecovery: boolean): this;
|
|
16
18
|
/**
|
|
17
19
|
* Sets the sender of this transaction.
|
|
18
20
|
*
|
|
@@ -22,16 +24,15 @@ export declare abstract class TransactionBuilder extends BaseTransactionBuilder
|
|
|
22
24
|
sender(senderAddress: string): this;
|
|
23
25
|
recipients(recipients: Recipient[]): this;
|
|
24
26
|
gas(g: number): this;
|
|
25
|
-
nonce(n:
|
|
27
|
+
nonce(n: string): this;
|
|
26
28
|
expiration(exp: number): this;
|
|
27
29
|
dependsOn(dep: string | null): this;
|
|
28
30
|
blockRef(ref: string): this;
|
|
29
31
|
gasPriceCoef(coef: number): this;
|
|
32
|
+
contract(address: string): this;
|
|
30
33
|
/** @inheritDoc */
|
|
31
34
|
addSenderSignature(signature: Buffer): void;
|
|
32
|
-
addFeePayerSignature(
|
|
33
|
-
/** @inheritdoc */
|
|
34
|
-
protected fromImplementation(rawTransaction: string): Transaction;
|
|
35
|
+
addFeePayerSignature(signature: Buffer): void;
|
|
35
36
|
/** @inheritdoc */
|
|
36
37
|
protected buildImplementation(): Promise<Transaction>;
|
|
37
38
|
/** @inheritdoc */
|
|
@@ -43,12 +44,12 @@ export declare abstract class TransactionBuilder extends BaseTransactionBuilder
|
|
|
43
44
|
/** @inheritdoc */
|
|
44
45
|
validateRawTransaction(rawTransaction: string): void;
|
|
45
46
|
validateValue(value: BigNumber): void;
|
|
46
|
-
private validateGas;
|
|
47
47
|
addFeePayerAddress(address: string): void;
|
|
48
|
-
getFeePayerPubKey(): string;
|
|
49
48
|
/** @inheritdoc */
|
|
50
49
|
protected signImplementation(key: BaseKey): Transaction;
|
|
51
50
|
/** @inheritdoc */
|
|
52
51
|
validateKey(key: BaseKey): void;
|
|
52
|
+
/** @inheritdoc */
|
|
53
|
+
protected fromImplementation(rawTransaction: string): Transaction;
|
|
53
54
|
}
|
|
54
55
|
//# sourceMappingURL=transactionBuilder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../../src/lib/transactionBuilder/transactionBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EACL,OAAO,EACP,sBAAsB,EACtB,WAAW,EAEX,SAAS,EACT,eAAe,
|
|
1
|
+
{"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../../src/lib/transactionBuilder/transactionBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EACL,OAAO,EACP,sBAAsB,EACtB,WAAW,EAEX,SAAS,EACT,eAAe,EAEhB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,8BAAsB,kBAAmB,SAAQ,sBAAsB;IACrE,SAAS,CAAC,YAAY,EAAE,WAAW,CAAC;gBAExB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,SAAS,CAAC,QAAQ,KAAK,eAAe,IAAI,eAAe,CAAC;IAE1D,QAAQ,IAAI,MAAM;IAIlB,kBAAkB;IAClB,IAAI,WAAW,IAAI,WAAW,CAE7B;IAED,kBAAkB;IAClB,SAAS,KAAK,WAAW,CAAC,WAAW,EAAE,WAAW,EAEjD;IAED,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAIlC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAK3B,UAAU,CAAC,UAAU,EAAE,OAAO,GAAG,IAAI;IAKrC;;;;;OAKG;IACH,MAAM,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;IAMnC,UAAU,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,IAAI;IASzC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAMpB,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAKtB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAK7B,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAKnC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAK3B,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKhC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAM/B,kBAAkB;IAClB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAI3C,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAI7C,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAM3D,kBAAkB;IAClB,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAMnE,SAAS,CAAC,QAAQ,CAAC,yBAAyB,CAAC,OAAO,EAAE,iBAAiB,EAAE,GAAG,OAAO;IAEnF,kBAAkB;IAClB,mBAAmB,CAAC,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI;IAUpD,qBAAqB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO;IAStD,kBAAkB;IAClB,sBAAsB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IASpD,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAQrC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIzC,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,WAAW;IAIvD,kBAAkB;IAClB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAI/B,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,WAAW;CAKlE"}
|