@bitgo-beta/sdk-coin-vet 1.0.1-beta.48 → 1.0.1-beta.481
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
|
@@ -0,0 +1,142 @@
|
|
|
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.ClaimRewardsBuilder = void 0;
|
|
7
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
8
|
+
const assert_1 = __importDefault(require("assert"));
|
|
9
|
+
const transactionBuilder_1 = require("./transactionBuilder");
|
|
10
|
+
const claimRewards_1 = require("../transaction/claimRewards");
|
|
11
|
+
const constants_1 = require("../constants");
|
|
12
|
+
const utils_1 = __importDefault(require("../utils"));
|
|
13
|
+
class ClaimRewardsBuilder extends transactionBuilder_1.TransactionBuilder {
|
|
14
|
+
/**
|
|
15
|
+
* Creates a new ClaimRewardsBuilder instance.
|
|
16
|
+
*
|
|
17
|
+
* @param {Readonly<CoinConfig>} _coinConfig - The coin configuration object
|
|
18
|
+
*/
|
|
19
|
+
constructor(_coinConfig) {
|
|
20
|
+
super(_coinConfig);
|
|
21
|
+
this._transaction = new claimRewards_1.ClaimRewardsTransaction(_coinConfig);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Initializes the builder with an existing ClaimRewardsTransaction.
|
|
25
|
+
*
|
|
26
|
+
* @param {ClaimRewardsTransaction} tx - The transaction to initialize the builder with
|
|
27
|
+
*/
|
|
28
|
+
initBuilder(tx) {
|
|
29
|
+
this._transaction = tx;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Gets the claim rewards transaction instance.
|
|
33
|
+
*
|
|
34
|
+
* @returns {ClaimRewardsTransaction} The claim rewards transaction
|
|
35
|
+
*/
|
|
36
|
+
get claimRewardsTransaction() {
|
|
37
|
+
return this._transaction;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Gets the transaction type for claim rewards.
|
|
41
|
+
*
|
|
42
|
+
* @returns {TransactionType} The transaction type
|
|
43
|
+
*/
|
|
44
|
+
get transactionType() {
|
|
45
|
+
return sdk_core_1.TransactionType.StakingClaim;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Validates the transaction clauses for claim rewards transaction.
|
|
49
|
+
* @param {TransactionClause[]} clauses - The transaction clauses to validate.
|
|
50
|
+
* @returns {boolean} - Returns true if the clauses are valid, false otherwise.
|
|
51
|
+
*/
|
|
52
|
+
isValidTransactionClauses(clauses) {
|
|
53
|
+
try {
|
|
54
|
+
if (!clauses || !Array.isArray(clauses) || clauses.length === 0) {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
let hasValidClaimClause = false;
|
|
58
|
+
for (const clause of clauses) {
|
|
59
|
+
if (!clause.to || !utils_1.default.isValidAddress(clause.to)) {
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
// For claim rewards transactions, value must be '0x0' or 0
|
|
63
|
+
if (clause.value !== '0x0' && clause.value !== 0 && clause.value !== '0') {
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
const isDelegationContract = utils_1.default.isDelegationContractAddress(clause.to);
|
|
67
|
+
const isNftContract = utils_1.default.isNftContractAddress(clause.to);
|
|
68
|
+
if (clause.data && (isDelegationContract || isNftContract)) {
|
|
69
|
+
if ((clause.data.startsWith(constants_1.CLAIM_BASE_REWARDS_METHOD_ID) && isNftContract) ||
|
|
70
|
+
(clause.data.startsWith(constants_1.CLAIM_STAKING_REWARDS_METHOD_ID) && isDelegationContract)) {
|
|
71
|
+
hasValidClaimClause = true;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return hasValidClaimClause;
|
|
76
|
+
}
|
|
77
|
+
catch (e) {
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Sets the claim rewards data for this transaction.
|
|
83
|
+
*
|
|
84
|
+
* @param {ClaimRewardsData} data - The claim rewards data
|
|
85
|
+
* @returns {ClaimRewardsBuilder} This transaction builder
|
|
86
|
+
*/
|
|
87
|
+
claimRewardsData(data) {
|
|
88
|
+
this.validateClaimRewardsData(data);
|
|
89
|
+
this.claimRewardsTransaction.claimRewardsData = data;
|
|
90
|
+
return this;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Validates the claim rewards data.
|
|
94
|
+
*
|
|
95
|
+
* @param {ClaimRewardsData} data - The claim rewards data to validate
|
|
96
|
+
*/
|
|
97
|
+
validateClaimRewardsData(data) {
|
|
98
|
+
if (!data) {
|
|
99
|
+
throw new Error('Claim rewards data is required');
|
|
100
|
+
}
|
|
101
|
+
if (!data.tokenId) {
|
|
102
|
+
throw new Error('Token ID is required');
|
|
103
|
+
}
|
|
104
|
+
// Validate tokenId is a valid number string
|
|
105
|
+
if (!/^\d+$/.test(data.tokenId)) {
|
|
106
|
+
throw new Error('Token ID must be a valid number string');
|
|
107
|
+
}
|
|
108
|
+
if (data.claimBaseRewards !== undefined && typeof data.claimBaseRewards !== 'boolean') {
|
|
109
|
+
throw new Error('claimBaseRewards must be a boolean');
|
|
110
|
+
}
|
|
111
|
+
if (data.claimStakingRewards !== undefined && typeof data.claimStakingRewards !== 'boolean') {
|
|
112
|
+
throw new Error('claimStakingRewards must be a boolean');
|
|
113
|
+
}
|
|
114
|
+
// At least one type of rewards must be claimed (both default to true if undefined)
|
|
115
|
+
const claimBase = data.claimBaseRewards !== false;
|
|
116
|
+
const claimStaking = data.claimStakingRewards !== false;
|
|
117
|
+
if (!claimBase && !claimStaking) {
|
|
118
|
+
throw new Error('At least one type of rewards (base or staking) must be claimed');
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
/** @inheritdoc */
|
|
122
|
+
validateTransaction(transaction) {
|
|
123
|
+
if (!transaction) {
|
|
124
|
+
throw new Error('transaction not defined');
|
|
125
|
+
}
|
|
126
|
+
const claimData = transaction.claimRewardsData;
|
|
127
|
+
(0, assert_1.default)(claimData, 'Claim rewards data is required');
|
|
128
|
+
(0, assert_1.default)(claimData.tokenId, 'Token ID is required');
|
|
129
|
+
// Validate tokenId is a valid number string
|
|
130
|
+
if (!/^\d+$/.test(claimData.tokenId)) {
|
|
131
|
+
throw new Error('Token ID must be a valid number string');
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
/** @inheritdoc */
|
|
135
|
+
async buildImplementation() {
|
|
136
|
+
this.transaction.type = this.transactionType;
|
|
137
|
+
await this.claimRewardsTransaction.build();
|
|
138
|
+
return this.transaction;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
exports.ClaimRewardsBuilder = ClaimRewardsBuilder;
|
|
142
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhaW1SZXdhcmRzQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb25CdWlsZGVyL2NsYWltUmV3YXJkc0J1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsbURBQXVEO0FBR3ZELG9EQUE0QjtBQUU1Qiw2REFBMEQ7QUFDMUQsOERBQXNFO0FBR3RFLDRDQUE2RjtBQUM3RixxREFBNkI7QUFFN0IsTUFBYSxtQkFBb0IsU0FBUSx1Q0FBa0I7SUFDekQ7Ozs7T0FJRztJQUNILFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxzQ0FBdUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFdBQVcsQ0FBQyxFQUEyQjtRQUNyQyxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQUksdUJBQXVCO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLFlBQXVDLENBQUM7SUFDdEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFjLGVBQWU7UUFDM0IsT0FBTywwQkFBZSxDQUFDLFlBQVksQ0FBQztJQUN0QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLHlCQUF5QixDQUFDLE9BQTRCO1FBQzlELElBQUksQ0FBQztZQUNILElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ2hFLE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztZQUVELElBQUksbUJBQW1CLEdBQUcsS0FBSyxDQUFDO1lBRWhDLEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLENBQUMsZUFBSyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztvQkFDbkQsT0FBTyxLQUFLLENBQUM7Z0JBQ2YsQ0FBQztnQkFFRCwyREFBMkQ7Z0JBQzNELElBQUksTUFBTSxDQUFDLEtBQUssS0FBSyxLQUFLLElBQUksTUFBTSxDQUFDLEtBQUssS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLEtBQUssS0FBSyxHQUFHLEVBQUUsQ0FBQztvQkFDekUsT0FBTyxLQUFLLENBQUM7Z0JBQ2YsQ0FBQztnQkFFRCxNQUFNLG9CQUFvQixHQUFHLGVBQUssQ0FBQywyQkFBMkIsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzFFLE1BQU0sYUFBYSxHQUFHLGVBQUssQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBRTVELElBQUksTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLG9CQUFvQixJQUFJLGFBQWEsQ0FBQyxFQUFFLENBQUM7b0JBQzNELElBQ0UsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyx3Q0FBNEIsQ0FBQyxJQUFJLGFBQWEsQ0FBQzt3QkFDdkUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQywyQ0FBK0IsQ0FBQyxJQUFJLG9CQUFvQixDQUFDLEVBQ2pGLENBQUM7d0JBQ0QsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO29CQUM3QixDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1lBRUQsT0FBTyxtQkFBbUIsQ0FBQztRQUM3QixDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGdCQUFnQixDQUFDLElBQXNCO1FBQ3JDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQ3JELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyx3QkFBd0IsQ0FBQyxJQUFzQjtRQUNyRCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDVixNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7UUFDcEQsQ0FBQztRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFFRCw0Q0FBNEM7UUFDNUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDaEMsTUFBTSxJQUFJLEtBQUssQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO1FBQzVELENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxTQUFTLElBQUksT0FBTyxJQUFJLENBQUMsZ0JBQWdCLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDdEYsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO1FBQ3hELENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxtQkFBbUIsS0FBSyxTQUFTLElBQUksT0FBTyxJQUFJLENBQUMsbUJBQW1CLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDNUYsTUFBTSxJQUFJLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO1FBQzNELENBQUM7UUFFRCxtRkFBbUY7UUFDbkYsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixLQUFLLEtBQUssQ0FBQztRQUNsRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsbUJBQW1CLEtBQUssS0FBSyxDQUFDO1FBRXhELElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNoQyxNQUFNLElBQUksS0FBSyxDQUFDLGdFQUFnRSxDQUFDLENBQUM7UUFDcEYsQ0FBQztJQUNILENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsbUJBQW1CLENBQUMsV0FBcUM7UUFDdkQsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUM3QyxDQUFDO1FBRUQsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDLGdCQUFnQixDQUFDO1FBQy9DLElBQUEsZ0JBQU0sRUFBQyxTQUFTLEVBQUUsZ0NBQWdDLENBQUMsQ0FBQztRQUNwRCxJQUFBLGdCQUFNLEVBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO1FBRWxELDRDQUE0QztRQUM1QyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNyQyxNQUFNLElBQUksS0FBSyxDQUFDLHdDQUF3QyxDQUFDLENBQUM7UUFDNUQsQ0FBQztJQUNILENBQUM7SUFFRCxrQkFBa0I7SUFDUixLQUFLLENBQUMsbUJBQW1CO1FBQ2pDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7UUFDN0MsTUFBTSxJQUFJLENBQUMsdUJBQXVCLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDM0MsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7Q0FDRjtBQXRKRCxrREFzSkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkNsYXVzZSB9IGZyb20gJ0B2ZWNoYWluL3Nkay1jb3JlJztcbmltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgQ2xhaW1SZXdhcmRzVHJhbnNhY3Rpb24gfSBmcm9tICcuLi90cmFuc2FjdGlvbi9jbGFpbVJld2FyZHMnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuLi90cmFuc2FjdGlvbi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBDbGFpbVJld2FyZHNEYXRhIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgQ0xBSU1fQkFTRV9SRVdBUkRTX01FVEhPRF9JRCwgQ0xBSU1fU1RBS0lOR19SRVdBUkRTX01FVEhPRF9JRCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi4vdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgQ2xhaW1SZXdhcmRzQnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IENsYWltUmV3YXJkc0J1aWxkZXIgaW5zdGFuY2UuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhZG9ubHk8Q29pbkNvbmZpZz59IF9jb2luQ29uZmlnIC0gVGhlIGNvaW4gY29uZmlndXJhdGlvbiBvYmplY3RcbiAgICovXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IG5ldyBDbGFpbVJld2FyZHNUcmFuc2FjdGlvbihfY29pbkNvbmZpZyk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgdGhlIGJ1aWxkZXIgd2l0aCBhbiBleGlzdGluZyBDbGFpbVJld2FyZHNUcmFuc2FjdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtDbGFpbVJld2FyZHNUcmFuc2FjdGlvbn0gdHggLSBUaGUgdHJhbnNhY3Rpb24gdG8gaW5pdGlhbGl6ZSB0aGUgYnVpbGRlciB3aXRoXG4gICAqL1xuICBpbml0QnVpbGRlcih0eDogQ2xhaW1SZXdhcmRzVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IHR4O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGNsYWltIHJld2FyZHMgdHJhbnNhY3Rpb24gaW5zdGFuY2UuXG4gICAqXG4gICAqIEByZXR1cm5zIHtDbGFpbVJld2FyZHNUcmFuc2FjdGlvbn0gVGhlIGNsYWltIHJld2FyZHMgdHJhbnNhY3Rpb25cbiAgICovXG4gIGdldCBjbGFpbVJld2FyZHNUcmFuc2FjdGlvbigpOiBDbGFpbVJld2FyZHNUcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uIGFzIENsYWltUmV3YXJkc1RyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHRyYW5zYWN0aW9uIHR5cGUgZm9yIGNsYWltIHJld2FyZHMuXG4gICAqXG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvblR5cGV9IFRoZSB0cmFuc2FjdGlvbiB0eXBlXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0NsYWltO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgdHJhbnNhY3Rpb24gY2xhdXNlcyBmb3IgY2xhaW0gcmV3YXJkcyB0cmFuc2FjdGlvbi5cbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbkNsYXVzZVtdfSBjbGF1c2VzIC0gVGhlIHRyYW5zYWN0aW9uIGNsYXVzZXMgdG8gdmFsaWRhdGUuXG4gICAqIEByZXR1cm5zIHtib29sZWFufSAtIFJldHVybnMgdHJ1ZSBpZiB0aGUgY2xhdXNlcyBhcmUgdmFsaWQsIGZhbHNlIG90aGVyd2lzZS5cbiAgICovXG4gIHByb3RlY3RlZCBpc1ZhbGlkVHJhbnNhY3Rpb25DbGF1c2VzKGNsYXVzZXM6IFRyYW5zYWN0aW9uQ2xhdXNlW10pOiBib29sZWFuIHtcbiAgICB0cnkge1xuICAgICAgaWYgKCFjbGF1c2VzIHx8ICFBcnJheS5pc0FycmF5KGNsYXVzZXMpIHx8IGNsYXVzZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgbGV0IGhhc1ZhbGlkQ2xhaW1DbGF1c2UgPSBmYWxzZTtcblxuICAgICAgZm9yIChjb25zdCBjbGF1c2Ugb2YgY2xhdXNlcykge1xuICAgICAgICBpZiAoIWNsYXVzZS50byB8fCAhdXRpbHMuaXNWYWxpZEFkZHJlc3MoY2xhdXNlLnRvKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEZvciBjbGFpbSByZXdhcmRzIHRyYW5zYWN0aW9ucywgdmFsdWUgbXVzdCBiZSAnMHgwJyBvciAwXG4gICAgICAgIGlmIChjbGF1c2UudmFsdWUgIT09ICcweDAnICYmIGNsYXVzZS52YWx1ZSAhPT0gMCAmJiBjbGF1c2UudmFsdWUgIT09ICcwJykge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGlzRGVsZWdhdGlvbkNvbnRyYWN0ID0gdXRpbHMuaXNEZWxlZ2F0aW9uQ29udHJhY3RBZGRyZXNzKGNsYXVzZS50byk7XG4gICAgICAgIGNvbnN0IGlzTmZ0Q29udHJhY3QgPSB1dGlscy5pc05mdENvbnRyYWN0QWRkcmVzcyhjbGF1c2UudG8pO1xuXG4gICAgICAgIGlmIChjbGF1c2UuZGF0YSAmJiAoaXNEZWxlZ2F0aW9uQ29udHJhY3QgfHwgaXNOZnRDb250cmFjdCkpIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAoY2xhdXNlLmRhdGEuc3RhcnRzV2l0aChDTEFJTV9CQVNFX1JFV0FSRFNfTUVUSE9EX0lEKSAmJiBpc05mdENvbnRyYWN0KSB8fFxuICAgICAgICAgICAgKGNsYXVzZS5kYXRhLnN0YXJ0c1dpdGgoQ0xBSU1fU1RBS0lOR19SRVdBUkRTX01FVEhPRF9JRCkgJiYgaXNEZWxlZ2F0aW9uQ29udHJhY3QpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBoYXNWYWxpZENsYWltQ2xhdXNlID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGhhc1ZhbGlkQ2xhaW1DbGF1c2U7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBjbGFpbSByZXdhcmRzIGRhdGEgZm9yIHRoaXMgdHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7Q2xhaW1SZXdhcmRzRGF0YX0gZGF0YSAtIFRoZSBjbGFpbSByZXdhcmRzIGRhdGFcbiAgICogQHJldHVybnMge0NsYWltUmV3YXJkc0J1aWxkZXJ9IFRoaXMgdHJhbnNhY3Rpb24gYnVpbGRlclxuICAgKi9cbiAgY2xhaW1SZXdhcmRzRGF0YShkYXRhOiBDbGFpbVJld2FyZHNEYXRhKTogdGhpcyB7XG4gICAgdGhpcy52YWxpZGF0ZUNsYWltUmV3YXJkc0RhdGEoZGF0YSk7XG4gICAgdGhpcy5jbGFpbVJld2FyZHNUcmFuc2FjdGlvbi5jbGFpbVJld2FyZHNEYXRhID0gZGF0YTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIGNsYWltIHJld2FyZHMgZGF0YS5cbiAgICpcbiAgICogQHBhcmFtIHtDbGFpbVJld2FyZHNEYXRhfSBkYXRhIC0gVGhlIGNsYWltIHJld2FyZHMgZGF0YSB0byB2YWxpZGF0ZVxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZUNsYWltUmV3YXJkc0RhdGEoZGF0YTogQ2xhaW1SZXdhcmRzRGF0YSk6IHZvaWQge1xuICAgIGlmICghZGF0YSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDbGFpbSByZXdhcmRzIGRhdGEgaXMgcmVxdWlyZWQnKTtcbiAgICB9XG5cbiAgICBpZiAoIWRhdGEudG9rZW5JZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUb2tlbiBJRCBpcyByZXF1aXJlZCcpO1xuICAgIH1cblxuICAgIC8vIFZhbGlkYXRlIHRva2VuSWQgaXMgYSB2YWxpZCBudW1iZXIgc3RyaW5nXG4gICAgaWYgKCEvXlxcZCskLy50ZXN0KGRhdGEudG9rZW5JZCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVG9rZW4gSUQgbXVzdCBiZSBhIHZhbGlkIG51bWJlciBzdHJpbmcnKTtcbiAgICB9XG5cbiAgICBpZiAoZGF0YS5jbGFpbUJhc2VSZXdhcmRzICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIGRhdGEuY2xhaW1CYXNlUmV3YXJkcyAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NsYWltQmFzZVJld2FyZHMgbXVzdCBiZSBhIGJvb2xlYW4nKTtcbiAgICB9XG5cbiAgICBpZiAoZGF0YS5jbGFpbVN0YWtpbmdSZXdhcmRzICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIGRhdGEuY2xhaW1TdGFraW5nUmV3YXJkcyAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NsYWltU3Rha2luZ1Jld2FyZHMgbXVzdCBiZSBhIGJvb2xlYW4nKTtcbiAgICB9XG5cbiAgICAvLyBBdCBsZWFzdCBvbmUgdHlwZSBvZiByZXdhcmRzIG11c3QgYmUgY2xhaW1lZCAoYm90aCBkZWZhdWx0IHRvIHRydWUgaWYgdW5kZWZpbmVkKVxuICAgIGNvbnN0IGNsYWltQmFzZSA9IGRhdGEuY2xhaW1CYXNlUmV3YXJkcyAhPT0gZmFsc2U7XG4gICAgY29uc3QgY2xhaW1TdGFraW5nID0gZGF0YS5jbGFpbVN0YWtpbmdSZXdhcmRzICE9PSBmYWxzZTtcblxuICAgIGlmICghY2xhaW1CYXNlICYmICFjbGFpbVN0YWtpbmcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQXQgbGVhc3Qgb25lIHR5cGUgb2YgcmV3YXJkcyAoYmFzZSBvciBzdGFraW5nKSBtdXN0IGJlIGNsYWltZWQnKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVUcmFuc2FjdGlvbih0cmFuc2FjdGlvbj86IENsYWltUmV3YXJkc1RyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgaWYgKCF0cmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd0cmFuc2FjdGlvbiBub3QgZGVmaW5lZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IGNsYWltRGF0YSA9IHRyYW5zYWN0aW9uLmNsYWltUmV3YXJkc0RhdGE7XG4gICAgYXNzZXJ0KGNsYWltRGF0YSwgJ0NsYWltIHJld2FyZHMgZGF0YSBpcyByZXF1aXJlZCcpO1xuICAgIGFzc2VydChjbGFpbURhdGEudG9rZW5JZCwgJ1Rva2VuIElEIGlzIHJlcXVpcmVkJyk7XG5cbiAgICAvLyBWYWxpZGF0ZSB0b2tlbklkIGlzIGEgdmFsaWQgbnVtYmVyIHN0cmluZ1xuICAgIGlmICghL15cXGQrJC8udGVzdChjbGFpbURhdGEudG9rZW5JZCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVG9rZW4gSUQgbXVzdCBiZSBhIHZhbGlkIG51bWJlciBzdHJpbmcnKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkSW1wbGVtZW50YXRpb24oKTogUHJvbWlzZTxUcmFuc2FjdGlvbj4ge1xuICAgIHRoaXMudHJhbnNhY3Rpb24udHlwZSA9IHRoaXMudHJhbnNhY3Rpb25UeXBlO1xuICAgIGF3YWl0IHRoaXMuY2xhaW1SZXdhcmRzVHJhbnNhY3Rpb24uYnVpbGQoKTtcbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbjtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,66 @@
|
|
|
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 { DelegateClauseTransaction } from '../transaction/delegateClauseTransaction';
|
|
7
|
+
export declare class DelegateTxnBuilder extends TransactionBuilder {
|
|
8
|
+
/**
|
|
9
|
+
* Creates a new Delegate Clause txn 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 Delegate txn.
|
|
16
|
+
*
|
|
17
|
+
* @param {DelegateClauseTransaction} tx - The transaction to initialize the builder with
|
|
18
|
+
*/
|
|
19
|
+
initBuilder(tx: DelegateClauseTransaction): void;
|
|
20
|
+
/**
|
|
21
|
+
* Gets the staking transaction instance.
|
|
22
|
+
*
|
|
23
|
+
* @returns {DelegateClauseTransaction} The delegate transaction
|
|
24
|
+
*/
|
|
25
|
+
get delegateTransaction(): DelegateClauseTransaction;
|
|
26
|
+
/**
|
|
27
|
+
* Gets the transaction type for delegate.
|
|
28
|
+
*
|
|
29
|
+
* @returns {TransactionType} The transaction type
|
|
30
|
+
*/
|
|
31
|
+
protected get transactionType(): TransactionType;
|
|
32
|
+
/**
|
|
33
|
+
* Validates the transaction clauses for delegate 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 delegate 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 {DelegateTxnBuilder} This transaction builder
|
|
44
|
+
* @throws {Error} If no address is provided
|
|
45
|
+
*/
|
|
46
|
+
stakingContractAddress(address: string): this;
|
|
47
|
+
/**
|
|
48
|
+
* Sets the token ID for this delegate tx.
|
|
49
|
+
*
|
|
50
|
+
* @param {number} levelId - The level ID for staking
|
|
51
|
+
* @returns {DelegateTxnBuilder} This transaction builder
|
|
52
|
+
*/
|
|
53
|
+
tokenId(tokenId: number): this;
|
|
54
|
+
/**
|
|
55
|
+
* Sets the transaction data for this delegate tx.
|
|
56
|
+
*
|
|
57
|
+
* @param {string} data - The transaction data
|
|
58
|
+
* @returns {DelegateTxnBuilder} This transaction builder
|
|
59
|
+
*/
|
|
60
|
+
transactionData(data: string): this;
|
|
61
|
+
/** @inheritdoc */
|
|
62
|
+
validateTransaction(transaction?: DelegateClauseTransaction): void;
|
|
63
|
+
/** @inheritdoc */
|
|
64
|
+
protected buildImplementation(): Promise<Transaction>;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=delegateTxnBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delegateTxnBuilder.d.ts","sourceRoot":"","sources":["../../../../src/lib/transactionBuilder/delegateTxnBuilder.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,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AAGrF,qBAAa,kBAAmB,SAAQ,kBAAkB;IACxD;;;;OAIG;gBACS,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C;;;;OAIG;IACH,WAAW,CAAC,EAAE,EAAE,yBAAyB,GAAG,IAAI;IAIhD;;;;OAIG;IACH,IAAI,mBAAmB,IAAI,yBAAyB,CAEnD;IAED;;;;OAIG;IACH,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED;;;;OAIG;IACH,SAAS,CAAC,yBAAyB,CAAC,OAAO,EAAE,iBAAiB,EAAE,GAAG,OAAO;IAiB1E;;;;;;;OAOG;IACH,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAS7C;;;;;OAKG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAK9B;;;;;OAKG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKnC,kBAAkB;IAClB,mBAAmB,CAAC,WAAW,CAAC,EAAE,yBAAyB,GAAG,IAAI;IAWlE,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;CAK5D"}
|
|
@@ -0,0 +1,120 @@
|
|
|
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.DelegateTxnBuilder = 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 delegateClauseTransaction_1 = require("../transaction/delegateClauseTransaction");
|
|
11
|
+
const utils_1 = __importDefault(require("../utils"));
|
|
12
|
+
class DelegateTxnBuilder extends transactionBuilder_1.TransactionBuilder {
|
|
13
|
+
/**
|
|
14
|
+
* Creates a new Delegate Clause txn instance.
|
|
15
|
+
*
|
|
16
|
+
* @param {Readonly<CoinConfig>} _coinConfig - The coin configuration object
|
|
17
|
+
*/
|
|
18
|
+
constructor(_coinConfig) {
|
|
19
|
+
super(_coinConfig);
|
|
20
|
+
this._transaction = new delegateClauseTransaction_1.DelegateClauseTransaction(_coinConfig);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Initializes the builder with an existing Delegate txn.
|
|
24
|
+
*
|
|
25
|
+
* @param {DelegateClauseTransaction} 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 {DelegateClauseTransaction} The delegate transaction
|
|
34
|
+
*/
|
|
35
|
+
get delegateTransaction() {
|
|
36
|
+
return this._transaction;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Gets the transaction type for delegate.
|
|
40
|
+
*
|
|
41
|
+
* @returns {TransactionType} The transaction type
|
|
42
|
+
*/
|
|
43
|
+
get transactionType() {
|
|
44
|
+
return sdk_core_1.TransactionType.StakingDelegate;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Validates the transaction clauses for delegate 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
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
catch (e) {
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Sets the staking contract address for this delegate tx.
|
|
68
|
+
* The address must be explicitly provided to ensure the correct contract is used.
|
|
69
|
+
*
|
|
70
|
+
* @param {string} address - The staking contract address (required)
|
|
71
|
+
* @returns {DelegateTxnBuilder} This transaction builder
|
|
72
|
+
* @throws {Error} If no address is provided
|
|
73
|
+
*/
|
|
74
|
+
stakingContractAddress(address) {
|
|
75
|
+
if (!address) {
|
|
76
|
+
throw new Error('Staking contract address is required');
|
|
77
|
+
}
|
|
78
|
+
this.validateAddress({ address });
|
|
79
|
+
this.delegateTransaction.stakingContractAddress = address;
|
|
80
|
+
return this;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Sets the token ID for this delegate tx.
|
|
84
|
+
*
|
|
85
|
+
* @param {number} levelId - The level ID for staking
|
|
86
|
+
* @returns {DelegateTxnBuilder} This transaction builder
|
|
87
|
+
*/
|
|
88
|
+
tokenId(tokenId) {
|
|
89
|
+
this.delegateTransaction.tokenId = tokenId;
|
|
90
|
+
return this;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Sets the transaction data for this delegate tx.
|
|
94
|
+
*
|
|
95
|
+
* @param {string} data - The transaction data
|
|
96
|
+
* @returns {DelegateTxnBuilder} This transaction builder
|
|
97
|
+
*/
|
|
98
|
+
transactionData(data) {
|
|
99
|
+
this.delegateTransaction.transactionData = data;
|
|
100
|
+
return this;
|
|
101
|
+
}
|
|
102
|
+
/** @inheritdoc */
|
|
103
|
+
validateTransaction(transaction) {
|
|
104
|
+
if (!transaction) {
|
|
105
|
+
throw new Error('transaction not defined');
|
|
106
|
+
}
|
|
107
|
+
(0, assert_1.default)(transaction.stakingContractAddress, 'Staking contract address is required');
|
|
108
|
+
(0, assert_1.default)(transaction.tokenId, 'Token ID is required');
|
|
109
|
+
(0, assert_1.default)(transaction.delegateForever, 'delegate forever flag is required');
|
|
110
|
+
this.validateAddress({ address: transaction.stakingContractAddress });
|
|
111
|
+
}
|
|
112
|
+
/** @inheritdoc */
|
|
113
|
+
async buildImplementation() {
|
|
114
|
+
this.transaction.type = this.transactionType;
|
|
115
|
+
await this.delegateTransaction.build();
|
|
116
|
+
return this.transaction;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
exports.DelegateTxnBuilder = DelegateTxnBuilder;
|
|
120
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZWdhdGVUeG5CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbkJ1aWxkZXIvZGVsZWdhdGVUeG5CdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG9EQUE0QjtBQUU1QixtREFBdUQ7QUFHdkQsNkRBQTBEO0FBRTFELHdGQUFxRjtBQUNyRixxREFBNkI7QUFFN0IsTUFBYSxrQkFBbUIsU0FBUSx1Q0FBa0I7SUFDeEQ7Ozs7T0FJRztJQUNILFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxxREFBeUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFdBQVcsQ0FBQyxFQUE2QjtRQUN2QyxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQUksbUJBQW1CO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFlBQXlDLENBQUM7SUFDeEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFjLGVBQWU7UUFDM0IsT0FBTywwQkFBZSxDQUFDLGVBQWUsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLHlCQUF5QixDQUFDLE9BQTRCO1FBQzlELElBQUksQ0FBQztZQUNILElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ2hFLE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztZQUVELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLGVBQUssQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQ25ELE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztZQUVELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILHNCQUFzQixDQUFDLE9BQWU7UUFDcEMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2IsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO1FBQzFELENBQUM7UUFDRCxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsc0JBQXNCLEdBQUcsT0FBTyxDQUFDO1FBQzFELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsT0FBTyxDQUFDLE9BQWU7UUFDckIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDM0MsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxlQUFlLENBQUMsSUFBWTtRQUMxQixJQUFJLENBQUMsbUJBQW1CLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUNoRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsbUJBQW1CLENBQUMsV0FBdUM7UUFDekQsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUM3QyxDQUFDO1FBQ0QsSUFBQSxnQkFBTSxFQUFDLFdBQVcsQ0FBQyxzQkFBc0IsRUFBRSxzQ0FBc0MsQ0FBQyxDQUFDO1FBRW5GLElBQUEsZ0JBQU0sRUFBQyxXQUFXLENBQUMsT0FBTyxFQUFFLHNCQUFzQixDQUFDLENBQUM7UUFDcEQsSUFBQSxnQkFBTSxFQUFDLFdBQVcsQ0FBQyxlQUFlLEVBQUUsbUNBQW1DLENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsT0FBTyxFQUFFLFdBQVcsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVELGtCQUFrQjtJQUNSLEtBQUssQ0FBQyxtQkFBbUI7UUFDakMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUM3QyxNQUFNLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN2QyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztDQUNGO0FBckhELGdEQXFIQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQ2xhdXNlIH0gZnJvbSAnQHZlY2hhaW4vc2RrLWNvcmUnO1xuXG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4uL3RyYW5zYWN0aW9uL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IERlbGVnYXRlQ2xhdXNlVHJhbnNhY3Rpb24gfSBmcm9tICcuLi90cmFuc2FjdGlvbi9kZWxlZ2F0ZUNsYXVzZVRyYW5zYWN0aW9uJztcbmltcG9ydCB1dGlscyBmcm9tICcuLi91dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBEZWxlZ2F0ZVR4bkJ1aWxkZXIgZXh0ZW5kcyBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBEZWxlZ2F0ZSBDbGF1c2UgdHhuIGluc3RhbmNlLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWRvbmx5PENvaW5Db25maWc+fSBfY29pbkNvbmZpZyAtIFRoZSBjb2luIGNvbmZpZ3VyYXRpb24gb2JqZWN0XG4gICAqL1xuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24gPSBuZXcgRGVsZWdhdGVDbGF1c2VUcmFuc2FjdGlvbihfY29pbkNvbmZpZyk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgdGhlIGJ1aWxkZXIgd2l0aCBhbiBleGlzdGluZyBEZWxlZ2F0ZSB0eG4uXG4gICAqXG4gICAqIEBwYXJhbSB7RGVsZWdhdGVDbGF1c2VUcmFuc2FjdGlvbn0gdHggLSBUaGUgdHJhbnNhY3Rpb24gdG8gaW5pdGlhbGl6ZSB0aGUgYnVpbGRlciB3aXRoXG4gICAqL1xuICBpbml0QnVpbGRlcih0eDogRGVsZWdhdGVDbGF1c2VUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gdHg7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgc3Rha2luZyB0cmFuc2FjdGlvbiBpbnN0YW5jZS5cbiAgICpcbiAgICogQHJldHVybnMge0RlbGVnYXRlQ2xhdXNlVHJhbnNhY3Rpb259IFRoZSBkZWxlZ2F0ZSB0cmFuc2FjdGlvblxuICAgKi9cbiAgZ2V0IGRlbGVnYXRlVHJhbnNhY3Rpb24oKTogRGVsZWdhdGVDbGF1c2VUcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uIGFzIERlbGVnYXRlQ2xhdXNlVHJhbnNhY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgdHJhbnNhY3Rpb24gdHlwZSBmb3IgZGVsZWdhdGUuXG4gICAqXG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvblR5cGV9IFRoZSB0cmFuc2FjdGlvbiB0eXBlXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0RlbGVnYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgdHJhbnNhY3Rpb24gY2xhdXNlcyBmb3IgZGVsZWdhdGUgdHJhbnNhY3Rpb24uXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25DbGF1c2VbXX0gY2xhdXNlcyAtIFRoZSB0cmFuc2FjdGlvbiBjbGF1c2VzIHRvIHZhbGlkYXRlLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBSZXR1cm5zIHRydWUgaWYgdGhlIGNsYXVzZXMgYXJlIHZhbGlkLCBmYWxzZSBvdGhlcndpc2UuXG4gICAqL1xuICBwcm90ZWN0ZWQgaXNWYWxpZFRyYW5zYWN0aW9uQ2xhdXNlcyhjbGF1c2VzOiBUcmFuc2FjdGlvbkNsYXVzZVtdKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghY2xhdXNlcyB8fCAhQXJyYXkuaXNBcnJheShjbGF1c2VzKSB8fCBjbGF1c2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNsYXVzZSA9IGNsYXVzZXNbMF07XG4gICAgICBpZiAoIWNsYXVzZS50byB8fCAhdXRpbHMuaXNWYWxpZEFkZHJlc3MoY2xhdXNlLnRvKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgc3Rha2luZyBjb250cmFjdCBhZGRyZXNzIGZvciB0aGlzIGRlbGVnYXRlIHR4LlxuICAgKiBUaGUgYWRkcmVzcyBtdXN0IGJlIGV4cGxpY2l0bHkgcHJvdmlkZWQgdG8gZW5zdXJlIHRoZSBjb3JyZWN0IGNvbnRyYWN0IGlzIHVzZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhZGRyZXNzIC0gVGhlIHN0YWtpbmcgY29udHJhY3QgYWRkcmVzcyAocmVxdWlyZWQpXG4gICAqIEByZXR1cm5zIHtEZWxlZ2F0ZVR4bkJ1aWxkZXJ9IFRoaXMgdHJhbnNhY3Rpb24gYnVpbGRlclxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgbm8gYWRkcmVzcyBpcyBwcm92aWRlZFxuICAgKi9cbiAgc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAoIWFkZHJlc3MpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU3Rha2luZyBjb250cmFjdCBhZGRyZXNzIGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuICAgIHRoaXMudmFsaWRhdGVBZGRyZXNzKHsgYWRkcmVzcyB9KTtcbiAgICB0aGlzLmRlbGVnYXRlVHJhbnNhY3Rpb24uc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyA9IGFkZHJlc3M7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgdG9rZW4gSUQgZm9yIHRoaXMgZGVsZWdhdGUgdHguXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBsZXZlbElkIC0gVGhlIGxldmVsIElEIGZvciBzdGFraW5nXG4gICAqIEByZXR1cm5zIHtEZWxlZ2F0ZVR4bkJ1aWxkZXJ9IFRoaXMgdHJhbnNhY3Rpb24gYnVpbGRlclxuICAgKi9cbiAgdG9rZW5JZCh0b2tlbklkOiBudW1iZXIpOiB0aGlzIHtcbiAgICB0aGlzLmRlbGVnYXRlVHJhbnNhY3Rpb24udG9rZW5JZCA9IHRva2VuSWQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgdHJhbnNhY3Rpb24gZGF0YSBmb3IgdGhpcyBkZWxlZ2F0ZSB0eC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGRhdGEgLSBUaGUgdHJhbnNhY3Rpb24gZGF0YVxuICAgKiBAcmV0dXJucyB7RGVsZWdhdGVUeG5CdWlsZGVyfSBUaGlzIHRyYW5zYWN0aW9uIGJ1aWxkZXJcbiAgICovXG4gIHRyYW5zYWN0aW9uRGF0YShkYXRhOiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLmRlbGVnYXRlVHJhbnNhY3Rpb24udHJhbnNhY3Rpb25EYXRhID0gZGF0YTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uPzogRGVsZWdhdGVDbGF1c2VUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIGlmICghdHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndHJhbnNhY3Rpb24gbm90IGRlZmluZWQnKTtcbiAgICB9XG4gICAgYXNzZXJ0KHRyYW5zYWN0aW9uLnN0YWtpbmdDb250cmFjdEFkZHJlc3MsICdTdGFraW5nIGNvbnRyYWN0IGFkZHJlc3MgaXMgcmVxdWlyZWQnKTtcblxuICAgIGFzc2VydCh0cmFuc2FjdGlvbi50b2tlbklkLCAnVG9rZW4gSUQgaXMgcmVxdWlyZWQnKTtcbiAgICBhc3NlcnQodHJhbnNhY3Rpb24uZGVsZWdhdGVGb3JldmVyLCAnZGVsZWdhdGUgZm9yZXZlciBmbGFnIGlzIHJlcXVpcmVkJyk7XG4gICAgdGhpcy52YWxpZGF0ZUFkZHJlc3MoeyBhZGRyZXNzOiB0cmFuc2FjdGlvbi5zdGFraW5nQ29udHJhY3RBZGRyZXNzIH0pO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBhc3luYyBidWlsZEltcGxlbWVudGF0aW9uKCk6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnR5cGUgPSB0aGlzLnRyYW5zYWN0aW9uVHlwZTtcbiAgICBhd2FpdCB0aGlzLmRlbGVnYXRlVHJhbnNhY3Rpb24uYnVpbGQoKTtcbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbjtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { TransactionClause } from '@vechain/sdk-core';
|
|
2
|
+
import { TransactionType } from '@bitgo-beta/sdk-core';
|
|
3
|
+
import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
|
|
4
|
+
import { TransactionBuilder } from './transactionBuilder';
|
|
5
|
+
import { ExitDelegationTransaction } from '../transaction/exitDelegation';
|
|
6
|
+
import { Transaction } from '../transaction/transaction';
|
|
7
|
+
export declare class ExitDelegationBuilder extends TransactionBuilder {
|
|
8
|
+
/**
|
|
9
|
+
* Creates a new ExitDelegationBuilder 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 ExitDelegationTransaction.
|
|
16
|
+
*
|
|
17
|
+
* @param {ExitDelegationTransaction} tx - The transaction to initialize the builder with
|
|
18
|
+
*/
|
|
19
|
+
initBuilder(tx: ExitDelegationTransaction): void;
|
|
20
|
+
/**
|
|
21
|
+
* Gets the exit delegation transaction instance.
|
|
22
|
+
*
|
|
23
|
+
* @returns {ExitDelegationTransaction} The exit delegation transaction
|
|
24
|
+
*/
|
|
25
|
+
get exitDelegationTransaction(): ExitDelegationTransaction;
|
|
26
|
+
/**
|
|
27
|
+
* Gets the transaction type for unstaking.
|
|
28
|
+
*
|
|
29
|
+
* @returns {TransactionType} The transaction type
|
|
30
|
+
*/
|
|
31
|
+
protected get transactionType(): TransactionType;
|
|
32
|
+
/**
|
|
33
|
+
* Validates the transaction clauses for unstaking.
|
|
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 token ID for this unstaking transaction.
|
|
40
|
+
*
|
|
41
|
+
* @param {string} tokenId - The ID of the NFT token to unstake
|
|
42
|
+
* @returns {ExitDelegationBuilder} This transaction builder
|
|
43
|
+
*/
|
|
44
|
+
tokenId(tokenId: string): this;
|
|
45
|
+
/**
|
|
46
|
+
* Sets the delegation contract address for this unstaking transaction.
|
|
47
|
+
* If not provided, uses the network-appropriate default address.
|
|
48
|
+
*
|
|
49
|
+
* @param {string} address - The delegation contract address
|
|
50
|
+
* @returns {ExitDelegationBuilder} This transaction builder
|
|
51
|
+
*/
|
|
52
|
+
delegationContract(address?: string): this;
|
|
53
|
+
/** @inheritdoc */
|
|
54
|
+
validateTransaction(transaction?: ExitDelegationTransaction): void;
|
|
55
|
+
/** @inheritdoc */
|
|
56
|
+
protected buildImplementation(): Promise<Transaction>;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=exitDelegationBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exitDelegationBuilder.d.ts","sourceRoot":"","sources":["../../../../src/lib/transactionBuilder/exitDelegationBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAIzD,qBAAa,qBAAsB,SAAQ,kBAAkB;IAC3D;;;;OAIG;gBACS,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C;;;;OAIG;IACH,WAAW,CAAC,EAAE,EAAE,yBAAyB,GAAG,IAAI;IAIhD;;;;OAIG;IACH,IAAI,yBAAyB,IAAI,yBAAyB,CAEzD;IAED;;;;OAIG;IACH,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED;;;;OAIG;IACH,SAAS,CAAC,yBAAyB,CAAC,OAAO,EAAE,iBAAiB,EAAE,GAAG,OAAO;IA4B1E;;;;;OAKG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAK9B;;;;;;OAMG;IACH,kBAAkB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAO1C,kBAAkB;IAClB,mBAAmB,CAAC,WAAW,CAAC,EAAE,yBAAyB,GAAG,IAAI;IAUlE,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;CAK5D"}
|
|
@@ -0,0 +1,115 @@
|
|
|
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.ExitDelegationBuilder = 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 exitDelegation_1 = require("../transaction/exitDelegation");
|
|
11
|
+
const utils_1 = __importDefault(require("../utils"));
|
|
12
|
+
const constants_1 = require("../constants");
|
|
13
|
+
class ExitDelegationBuilder extends transactionBuilder_1.TransactionBuilder {
|
|
14
|
+
/**
|
|
15
|
+
* Creates a new ExitDelegationBuilder instance.
|
|
16
|
+
*
|
|
17
|
+
* @param {Readonly<CoinConfig>} _coinConfig - The coin configuration object
|
|
18
|
+
*/
|
|
19
|
+
constructor(_coinConfig) {
|
|
20
|
+
super(_coinConfig);
|
|
21
|
+
this._transaction = new exitDelegation_1.ExitDelegationTransaction(_coinConfig);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Initializes the builder with an existing ExitDelegationTransaction.
|
|
25
|
+
*
|
|
26
|
+
* @param {ExitDelegationTransaction} tx - The transaction to initialize the builder with
|
|
27
|
+
*/
|
|
28
|
+
initBuilder(tx) {
|
|
29
|
+
this._transaction = tx;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Gets the exit delegation transaction instance.
|
|
33
|
+
*
|
|
34
|
+
* @returns {ExitDelegationTransaction} The exit delegation transaction
|
|
35
|
+
*/
|
|
36
|
+
get exitDelegationTransaction() {
|
|
37
|
+
return this._transaction;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Gets the transaction type for unstaking.
|
|
41
|
+
*
|
|
42
|
+
* @returns {TransactionType} The transaction type
|
|
43
|
+
*/
|
|
44
|
+
get transactionType() {
|
|
45
|
+
return sdk_core_1.TransactionType.StakingUnlock;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Validates the transaction clauses for unstaking.
|
|
49
|
+
* @param {TransactionClause[]} clauses - The transaction clauses to validate.
|
|
50
|
+
* @returns {boolean} - Returns true if the clauses are valid, false otherwise.
|
|
51
|
+
*/
|
|
52
|
+
isValidTransactionClauses(clauses) {
|
|
53
|
+
try {
|
|
54
|
+
if (!clauses || !Array.isArray(clauses) || clauses.length === 0) {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
const clause = clauses[0];
|
|
58
|
+
if (!clause.to || !utils_1.default.isValidAddress(clause.to)) {
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
// For unstaking transactions, value must be exactly '0x0'
|
|
62
|
+
if (clause.value !== 0) {
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
// Check if the data starts with the exitDelegation method ID
|
|
66
|
+
if (!clause.data.startsWith(constants_1.EXIT_DELEGATION_METHOD_ID)) {
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
return true;
|
|
70
|
+
}
|
|
71
|
+
catch (e) {
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Sets the token ID for this unstaking transaction.
|
|
77
|
+
*
|
|
78
|
+
* @param {string} tokenId - The ID of the NFT token to unstake
|
|
79
|
+
* @returns {ExitDelegationBuilder} This transaction builder
|
|
80
|
+
*/
|
|
81
|
+
tokenId(tokenId) {
|
|
82
|
+
this.exitDelegationTransaction.tokenId = tokenId;
|
|
83
|
+
return this;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Sets the delegation contract address for this unstaking transaction.
|
|
87
|
+
* If not provided, uses the network-appropriate default address.
|
|
88
|
+
*
|
|
89
|
+
* @param {string} address - The delegation contract address
|
|
90
|
+
* @returns {ExitDelegationBuilder} This transaction builder
|
|
91
|
+
*/
|
|
92
|
+
delegationContract(address) {
|
|
93
|
+
const contractAddress = address || utils_1.default.getDefaultDelegationAddress(this._coinConfig);
|
|
94
|
+
this.validateAddress({ address: contractAddress });
|
|
95
|
+
this.exitDelegationTransaction.contract = contractAddress;
|
|
96
|
+
return this;
|
|
97
|
+
}
|
|
98
|
+
/** @inheritdoc */
|
|
99
|
+
validateTransaction(transaction) {
|
|
100
|
+
if (!transaction) {
|
|
101
|
+
throw new Error('transaction not defined');
|
|
102
|
+
}
|
|
103
|
+
(0, assert_1.default)(transaction.contract, 'Delegation contract address is required');
|
|
104
|
+
(0, assert_1.default)(transaction.tokenId, 'Token ID is required');
|
|
105
|
+
this.validateAddress({ address: transaction.contract });
|
|
106
|
+
}
|
|
107
|
+
/** @inheritdoc */
|
|
108
|
+
async buildImplementation() {
|
|
109
|
+
this.transaction.type = this.transactionType;
|
|
110
|
+
await this.exitDelegationTransaction.build();
|
|
111
|
+
return this.transaction;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
exports.ExitDelegationBuilder = ExitDelegationBuilder;
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhpdERlbGVnYXRpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbkJ1aWxkZXIvZXhpdERlbGVnYXRpb25CdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG9EQUE0QjtBQUU1QixtREFBdUQ7QUFHdkQsNkRBQTBEO0FBQzFELGtFQUEwRTtBQUUxRSxxREFBNkI7QUFDN0IsNENBQXlEO0FBRXpELE1BQWEscUJBQXNCLFNBQVEsdUNBQWtCO0lBQzNEOzs7O09BSUc7SUFDSCxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNuQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksMENBQXlCLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxXQUFXLENBQUMsRUFBNkI7UUFDdkMsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFJLHlCQUF5QjtRQUMzQixPQUFPLElBQUksQ0FBQyxZQUF5QyxDQUFDO0lBQ3hELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBYyxlQUFlO1FBQzNCLE9BQU8sMEJBQWUsQ0FBQyxhQUFhLENBQUM7SUFDdkMsQ0FBQztJQUVEOzs7O09BSUc7SUFDTyx5QkFBeUIsQ0FBQyxPQUE0QjtRQUM5RCxJQUFJLENBQUM7WUFDSCxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNoRSxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7WUFFRCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQyxlQUFLLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUNuRCxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7WUFFRCwwREFBMEQ7WUFDMUQsSUFBSSxNQUFNLENBQUMsS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUN2QixPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7WUFFRCw2REFBNkQ7WUFDN0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLHFDQUF5QixDQUFDLEVBQUUsQ0FBQztnQkFDdkQsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1lBRUQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE9BQU8sQ0FBQyxPQUFlO1FBQ3JCLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ2pELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILGtCQUFrQixDQUFDLE9BQWdCO1FBQ2pDLE1BQU0sZUFBZSxHQUFHLE9BQU8sSUFBSSxlQUFLLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3ZGLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMseUJBQXlCLENBQUMsUUFBUSxHQUFHLGVBQWUsQ0FBQztRQUMxRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsbUJBQW1CLENBQUMsV0FBdUM7UUFDekQsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUM3QyxDQUFDO1FBQ0QsSUFBQSxnQkFBTSxFQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUseUNBQXlDLENBQUMsQ0FBQztRQUN4RSxJQUFBLGdCQUFNLEVBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO1FBRXBELElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxPQUFPLEVBQUUsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELGtCQUFrQjtJQUNSLEtBQUssQ0FBQyxtQkFBbUI7UUFDakMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUM3QyxNQUFNLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM3QyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztDQUNGO0FBakhELHNEQWlIQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQ2xhdXNlIH0gZnJvbSAnQHZlY2hhaW4vc2RrLWNvcmUnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuXG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBFeGl0RGVsZWdhdGlvblRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vdHJhbnNhY3Rpb24vZXhpdERlbGVnYXRpb24nO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuLi90cmFuc2FjdGlvbi90cmFuc2FjdGlvbic7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgRVhJVF9ERUxFR0FUSU9OX01FVEhPRF9JRCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBjbGFzcyBFeGl0RGVsZWdhdGlvbkJ1aWxkZXIgZXh0ZW5kcyBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBFeGl0RGVsZWdhdGlvbkJ1aWxkZXIgaW5zdGFuY2UuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhZG9ubHk8Q29pbkNvbmZpZz59IF9jb2luQ29uZmlnIC0gVGhlIGNvaW4gY29uZmlndXJhdGlvbiBvYmplY3RcbiAgICovXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IG5ldyBFeGl0RGVsZWdhdGlvblRyYW5zYWN0aW9uKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplcyB0aGUgYnVpbGRlciB3aXRoIGFuIGV4aXN0aW5nIEV4aXREZWxlZ2F0aW9uVHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7RXhpdERlbGVnYXRpb25UcmFuc2FjdGlvbn0gdHggLSBUaGUgdHJhbnNhY3Rpb24gdG8gaW5pdGlhbGl6ZSB0aGUgYnVpbGRlciB3aXRoXG4gICAqL1xuICBpbml0QnVpbGRlcih0eDogRXhpdERlbGVnYXRpb25UcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gdHg7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgZXhpdCBkZWxlZ2F0aW9uIHRyYW5zYWN0aW9uIGluc3RhbmNlLlxuICAgKlxuICAgKiBAcmV0dXJucyB7RXhpdERlbGVnYXRpb25UcmFuc2FjdGlvbn0gVGhlIGV4aXQgZGVsZWdhdGlvbiB0cmFuc2FjdGlvblxuICAgKi9cbiAgZ2V0IGV4aXREZWxlZ2F0aW9uVHJhbnNhY3Rpb24oKTogRXhpdERlbGVnYXRpb25UcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uIGFzIEV4aXREZWxlZ2F0aW9uVHJhbnNhY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgdHJhbnNhY3Rpb24gdHlwZSBmb3IgdW5zdGFraW5nLlxuICAgKlxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25UeXBlfSBUaGUgdHJhbnNhY3Rpb24gdHlwZVxuICAgKi9cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvblR5cGUoKTogVHJhbnNhY3Rpb25UeXBlIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdVbmxvY2s7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoZSB0cmFuc2FjdGlvbiBjbGF1c2VzIGZvciB1bnN0YWtpbmcuXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25DbGF1c2VbXX0gY2xhdXNlcyAtIFRoZSB0cmFuc2FjdGlvbiBjbGF1c2VzIHRvIHZhbGlkYXRlLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBSZXR1cm5zIHRydWUgaWYgdGhlIGNsYXVzZXMgYXJlIHZhbGlkLCBmYWxzZSBvdGhlcndpc2UuXG4gICAqL1xuICBwcm90ZWN0ZWQgaXNWYWxpZFRyYW5zYWN0aW9uQ2xhdXNlcyhjbGF1c2VzOiBUcmFuc2FjdGlvbkNsYXVzZVtdKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghY2xhdXNlcyB8fCAhQXJyYXkuaXNBcnJheShjbGF1c2VzKSB8fCBjbGF1c2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNsYXVzZSA9IGNsYXVzZXNbMF07XG5cbiAgICAgIGlmICghY2xhdXNlLnRvIHx8ICF1dGlscy5pc1ZhbGlkQWRkcmVzcyhjbGF1c2UudG8pKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgLy8gRm9yIHVuc3Rha2luZyB0cmFuc2FjdGlvbnMsIHZhbHVlIG11c3QgYmUgZXhhY3RseSAnMHgwJ1xuICAgICAgaWYgKGNsYXVzZS52YWx1ZSAhPT0gMCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIC8vIENoZWNrIGlmIHRoZSBkYXRhIHN0YXJ0cyB3aXRoIHRoZSBleGl0RGVsZWdhdGlvbiBtZXRob2QgSURcbiAgICAgIGlmICghY2xhdXNlLmRhdGEuc3RhcnRzV2l0aChFWElUX0RFTEVHQVRJT05fTUVUSE9EX0lEKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgdG9rZW4gSUQgZm9yIHRoaXMgdW5zdGFraW5nIHRyYW5zYWN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdG9rZW5JZCAtIFRoZSBJRCBvZiB0aGUgTkZUIHRva2VuIHRvIHVuc3Rha2VcbiAgICogQHJldHVybnMge0V4aXREZWxlZ2F0aW9uQnVpbGRlcn0gVGhpcyB0cmFuc2FjdGlvbiBidWlsZGVyXG4gICAqL1xuICB0b2tlbklkKHRva2VuSWQ6IHN0cmluZyk6IHRoaXMge1xuICAgIHRoaXMuZXhpdERlbGVnYXRpb25UcmFuc2FjdGlvbi50b2tlbklkID0gdG9rZW5JZDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBkZWxlZ2F0aW9uIGNvbnRyYWN0IGFkZHJlc3MgZm9yIHRoaXMgdW5zdGFraW5nIHRyYW5zYWN0aW9uLlxuICAgKiBJZiBub3QgcHJvdmlkZWQsIHVzZXMgdGhlIG5ldHdvcmstYXBwcm9wcmlhdGUgZGVmYXVsdCBhZGRyZXNzLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWRkcmVzcyAtIFRoZSBkZWxlZ2F0aW9uIGNvbnRyYWN0IGFkZHJlc3NcbiAgICogQHJldHVybnMge0V4aXREZWxlZ2F0aW9uQnVpbGRlcn0gVGhpcyB0cmFuc2FjdGlvbiBidWlsZGVyXG4gICAqL1xuICBkZWxlZ2F0aW9uQ29udHJhY3QoYWRkcmVzcz86IHN0cmluZyk6IHRoaXMge1xuICAgIGNvbnN0IGNvbnRyYWN0QWRkcmVzcyA9IGFkZHJlc3MgfHwgdXRpbHMuZ2V0RGVmYXVsdERlbGVnYXRpb25BZGRyZXNzKHRoaXMuX2NvaW5Db25maWcpO1xuICAgIHRoaXMudmFsaWRhdGVBZGRyZXNzKHsgYWRkcmVzczogY29udHJhY3RBZGRyZXNzIH0pO1xuICAgIHRoaXMuZXhpdERlbGVnYXRpb25UcmFuc2FjdGlvbi5jb250cmFjdCA9IGNvbnRyYWN0QWRkcmVzcztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uPzogRXhpdERlbGVnYXRpb25UcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIGlmICghdHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndHJhbnNhY3Rpb24gbm90IGRlZmluZWQnKTtcbiAgICB9XG4gICAgYXNzZXJ0KHRyYW5zYWN0aW9uLmNvbnRyYWN0LCAnRGVsZWdhdGlvbiBjb250cmFjdCBhZGRyZXNzIGlzIHJlcXVpcmVkJyk7XG4gICAgYXNzZXJ0KHRyYW5zYWN0aW9uLnRva2VuSWQsICdUb2tlbiBJRCBpcyByZXF1aXJlZCcpO1xuXG4gICAgdGhpcy52YWxpZGF0ZUFkZHJlc3MoeyBhZGRyZXNzOiB0cmFuc2FjdGlvbi5jb250cmFjdCB9KTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgYnVpbGRJbXBsZW1lbnRhdGlvbigpOiBQcm9taXNlPFRyYW5zYWN0aW9uPiB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi50eXBlID0gdGhpcy50cmFuc2FjdGlvblR5cGU7XG4gICAgYXdhaXQgdGhpcy5leGl0RGVsZWdhdGlvblRyYW5zYWN0aW9uLmJ1aWxkKCk7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb247XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,66 @@
|
|
|
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 { FlushTokenTransaction } from '../transaction/flushTokenTransaction';
|
|
7
|
+
export declare class FlushTokenTransactionBuilder extends TransactionBuilder {
|
|
8
|
+
/**
|
|
9
|
+
* Creates a new FlushTokenTransactionBuilder 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 FlushTokenTransaction.
|
|
16
|
+
*
|
|
17
|
+
* @param {FlushTokenTransaction} tx - The transaction to initialize the builder with
|
|
18
|
+
*/
|
|
19
|
+
initBuilder(tx: FlushTokenTransaction): void;
|
|
20
|
+
/**
|
|
21
|
+
* Gets the flush token transaction instance.
|
|
22
|
+
*
|
|
23
|
+
* @returns {FlushTokenTransaction} The flush token transaction
|
|
24
|
+
*/
|
|
25
|
+
get flushTokenTransaction(): FlushTokenTransaction;
|
|
26
|
+
/**
|
|
27
|
+
* Gets the transaction type for flush token.
|
|
28
|
+
*
|
|
29
|
+
* @returns {TransactionType} The transaction type
|
|
30
|
+
*/
|
|
31
|
+
protected get transactionType(): TransactionType;
|
|
32
|
+
/**
|
|
33
|
+
* Validates the transaction clauses for flush token 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 token address for this token flush tx.
|
|
40
|
+
*
|
|
41
|
+
* @param {string} address - The token address to be set for the token flush transaction
|
|
42
|
+
* @returns {FlushTokenTransactionBuilder} This transaction builder
|
|
43
|
+
*/
|
|
44
|
+
tokenAddress(address: string): this;
|
|
45
|
+
/**
|
|
46
|
+
* Sets the forwarder version for this token flush transaction.
|
|
47
|
+
* The forwarder version must be 4 or higher.
|
|
48
|
+
*
|
|
49
|
+
* @param {number} version - The forwarder version to use (must be >= 4)
|
|
50
|
+
* @returns {FlushTokenTransactionBuilder} This transaction builder
|
|
51
|
+
* @throws {BuildTransactionError} When version is less than 4
|
|
52
|
+
*/
|
|
53
|
+
forwarderVersion(version: number): this;
|
|
54
|
+
/** @inheritdoc */
|
|
55
|
+
validateTransaction(transaction?: FlushTokenTransaction): void;
|
|
56
|
+
/** @inheritdoc */
|
|
57
|
+
protected buildImplementation(): Promise<Transaction>;
|
|
58
|
+
/**
|
|
59
|
+
* Generates the transaction data for flush token transaction
|
|
60
|
+
*
|
|
61
|
+
* @private
|
|
62
|
+
* @returns {string} The encoded transaction data as a hex string
|
|
63
|
+
*/
|
|
64
|
+
private getFlushTokenTransactionData;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=flushTokenTransactionBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flushTokenTransactionBuilder.d.ts","sourceRoot":"","sources":["../../../../src/lib/transactionBuilder/flushTokenTransactionBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAyB,MAAM,sBAAsB,CAAC;AAE9E,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,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAG7E,qBAAa,4BAA6B,SAAQ,kBAAkB;IAClE;;;;OAIG;gBACS,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C;;;;OAIG;IACH,WAAW,CAAC,EAAE,EAAE,qBAAqB,GAAG,IAAI;IAI5C;;;;OAIG;IACH,IAAI,qBAAqB,IAAI,qBAAqB,CAEjD;IAED;;;;OAIG;IACH,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED;;;;OAIG;IACH,SAAS,CAAC,yBAAyB,CAAC,OAAO,EAAE,iBAAiB,EAAE,GAAG,OAAO;IA6B1E;;;;;OAKG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAMnC;;;;;;;OAOG;IACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IASvC,kBAAkB;IAClB,mBAAmB,CAAC,WAAW,CAAC,EAAE,qBAAqB,GAAG,IAAI;IAW9D,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAQ3D;;;;;OAKG;IACH,OAAO,CAAC,4BAA4B;CAQrC"}
|