@bitgo-beta/sdk-coin-vet 1.0.1-beta.41 → 1.0.1-beta.411
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 +24 -1
- package/dist/src/lib/constants.d.ts.map +1 -1
- package/dist/src/lib/constants.js +26 -3
- 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 +15 -0
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +32 -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/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/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 +95 -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/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/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 +46 -0
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilderFactory.js +97 -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 +79 -1
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +219 -10
- 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 +68 -0
- package/dist/test/resources/vet.d.ts.map +1 -0
- package/dist/test/resources/vet.js +123 -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/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/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 -28
|
@@ -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,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"}
|
|
@@ -0,0 +1,129 @@
|
|
|
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.FlushTokenTransactionBuilder = void 0;
|
|
7
|
+
const assert_1 = __importDefault(require("assert"));
|
|
8
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
9
|
+
const abstract_eth_1 = require("@bitgo-beta/abstract-eth");
|
|
10
|
+
const transactionBuilder_1 = require("./transactionBuilder");
|
|
11
|
+
const utils_1 = __importDefault(require("../utils"));
|
|
12
|
+
class FlushTokenTransactionBuilder extends transactionBuilder_1.TransactionBuilder {
|
|
13
|
+
/**
|
|
14
|
+
* Creates a new FlushTokenTransactionBuilder instance.
|
|
15
|
+
*
|
|
16
|
+
* @param {Readonly<CoinConfig>} _coinConfig - The coin configuration object
|
|
17
|
+
*/
|
|
18
|
+
constructor(_coinConfig) {
|
|
19
|
+
super(_coinConfig);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Initializes the builder with an existing FlushTokenTransaction.
|
|
23
|
+
*
|
|
24
|
+
* @param {FlushTokenTransaction} tx - The transaction to initialize the builder with
|
|
25
|
+
*/
|
|
26
|
+
initBuilder(tx) {
|
|
27
|
+
this._transaction = tx;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Gets the flush token transaction instance.
|
|
31
|
+
*
|
|
32
|
+
* @returns {FlushTokenTransaction} The flush token transaction
|
|
33
|
+
*/
|
|
34
|
+
get flushTokenTransaction() {
|
|
35
|
+
return this._transaction;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Gets the transaction type for flush token.
|
|
39
|
+
*
|
|
40
|
+
* @returns {TransactionType} The transaction type
|
|
41
|
+
*/
|
|
42
|
+
get transactionType() {
|
|
43
|
+
return sdk_core_1.TransactionType.FlushTokens;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Validates the transaction clauses for flush token transaction.
|
|
47
|
+
* @param {TransactionClause[]} clauses - The transaction clauses to validate.
|
|
48
|
+
* @returns {boolean} - Returns true if the clauses are valid, false otherwise.
|
|
49
|
+
*/
|
|
50
|
+
isValidTransactionClauses(clauses) {
|
|
51
|
+
try {
|
|
52
|
+
if (!clauses || !Array.isArray(clauses) || clauses.length === 0) {
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
const clause = clauses[0];
|
|
56
|
+
if (!clause.to || !utils_1.default.isValidAddress(clause.to)) {
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
// For address init transactions, value must be exactly 0
|
|
60
|
+
if (clause.value !== 0) {
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
const { tokenAddress } = (0, abstract_eth_1.decodeFlushTokensData)(clause.data, clause.to);
|
|
64
|
+
if (!utils_1.default.isValidAddress(tokenAddress)) {
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
catch (e) {
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Sets the token address for this token flush tx.
|
|
75
|
+
*
|
|
76
|
+
* @param {string} address - The token address to be set for the token flush transaction
|
|
77
|
+
* @returns {FlushTokenTransactionBuilder} This transaction builder
|
|
78
|
+
*/
|
|
79
|
+
tokenAddress(address) {
|
|
80
|
+
this.validateAddress({ address });
|
|
81
|
+
this.flushTokenTransaction.tokenAddress = address;
|
|
82
|
+
return this;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Sets the forwarder version for this token flush transaction.
|
|
86
|
+
* The forwarder version must be 4 or higher.
|
|
87
|
+
*
|
|
88
|
+
* @param {number} version - The forwarder version to use (must be >= 4)
|
|
89
|
+
* @returns {FlushTokenTransactionBuilder} This transaction builder
|
|
90
|
+
* @throws {BuildTransactionError} When version is less than 4
|
|
91
|
+
*/
|
|
92
|
+
forwarderVersion(version) {
|
|
93
|
+
if (version < 4) {
|
|
94
|
+
throw new sdk_core_1.BuildTransactionError(`Invalid forwarder version: ${version}`);
|
|
95
|
+
}
|
|
96
|
+
this.flushTokenTransaction.forwarderVersion = version;
|
|
97
|
+
return this;
|
|
98
|
+
}
|
|
99
|
+
/** @inheritdoc */
|
|
100
|
+
validateTransaction(transaction) {
|
|
101
|
+
if (!transaction) {
|
|
102
|
+
throw new Error('transaction not defined');
|
|
103
|
+
}
|
|
104
|
+
(0, assert_1.default)(transaction.contract, 'Contract address is required');
|
|
105
|
+
(0, assert_1.default)(transaction.tokenAddress, 'Token address is required');
|
|
106
|
+
this.validateAddress({ address: transaction.contract });
|
|
107
|
+
this.validateAddress({ address: transaction.tokenAddress });
|
|
108
|
+
}
|
|
109
|
+
/** @inheritdoc */
|
|
110
|
+
async buildImplementation() {
|
|
111
|
+
const transactionData = this.getFlushTokenTransactionData();
|
|
112
|
+
this.transaction.type = this.transactionType;
|
|
113
|
+
this.flushTokenTransaction.transactionData = transactionData;
|
|
114
|
+
await this.flushTokenTransaction.build();
|
|
115
|
+
return this.transaction;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Generates the transaction data for flush token transaction
|
|
119
|
+
*
|
|
120
|
+
* @private
|
|
121
|
+
* @returns {string} The encoded transaction data as a hex string
|
|
122
|
+
*/
|
|
123
|
+
getFlushTokenTransactionData() {
|
|
124
|
+
const flushTokenData = (0, abstract_eth_1.flushTokensData)(this.flushTokenTransaction.contract, this.flushTokenTransaction.tokenAddress, this.flushTokenTransaction.forwarderVersion);
|
|
125
|
+
return flushTokenData;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
exports.FlushTokenTransactionBuilder = FlushTokenTransactionBuilder;
|
|
129
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmx1c2hUb2tlblRyYW5zYWN0aW9uQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb25CdWlsZGVyL2ZsdXNoVG9rZW5UcmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsb0RBQTRCO0FBRTVCLG1EQUE4RTtBQUM5RSwyREFBa0Y7QUFHbEYsNkRBQTBEO0FBRzFELHFEQUE2QjtBQUU3QixNQUFhLDRCQUE2QixTQUFRLHVDQUFrQjtJQUNsRTs7OztPQUlHO0lBQ0gsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxXQUFXLENBQUMsRUFBeUI7UUFDbkMsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFJLHFCQUFxQjtRQUN2QixPQUFPLElBQUksQ0FBQyxZQUFxQyxDQUFDO0lBQ3BELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBYyxlQUFlO1FBQzNCLE9BQU8sMEJBQWUsQ0FBQyxXQUFXLENBQUM7SUFDckMsQ0FBQztJQUVEOzs7O09BSUc7SUFDTyx5QkFBeUIsQ0FBQyxPQUE0QjtRQUM5RCxJQUFJLENBQUM7WUFDSCxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNoRSxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7WUFFRCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQyxlQUFLLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUNuRCxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7WUFFRCx5REFBeUQ7WUFDekQsSUFBSSxNQUFNLENBQUMsS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUN2QixPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7WUFFRCxNQUFNLEVBQUUsWUFBWSxFQUFFLEdBQUcsSUFBQSxvQ0FBcUIsRUFBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUV2RSxJQUFJLENBQUMsZUFBSyxDQUFDLGNBQWMsQ0FBQyxZQUFzQixDQUFDLEVBQUUsQ0FBQztnQkFDbEQsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1lBRUQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFlBQVksQ0FBQyxPQUFlO1FBQzFCLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDO1FBQ2xELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxnQkFBZ0IsQ0FBQyxPQUFlO1FBQzlCLElBQUksT0FBTyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyw4QkFBOEIsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUMzRSxDQUFDO1FBRUQsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGdCQUFnQixHQUFHLE9BQU8sQ0FBQztRQUN0RCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsbUJBQW1CLENBQUMsV0FBbUM7UUFDckQsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUM3QyxDQUFDO1FBQ0QsSUFBQSxnQkFBTSxFQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsOEJBQThCLENBQUMsQ0FBQztRQUM3RCxJQUFBLGdCQUFNLEVBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSwyQkFBMkIsQ0FBQyxDQUFDO1FBRTlELElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxPQUFPLEVBQUUsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsa0JBQWtCO0lBQ1IsS0FBSyxDQUFDLG1CQUFtQjtRQUNqQyxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztRQUM1RCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1FBQzdDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxlQUFlLEdBQUcsZUFBZSxDQUFDO1FBQzdELE1BQU0sSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyw0QkFBNEI7UUFDbEMsTUFBTSxjQUFjLEdBQUcsSUFBQSw4QkFBZSxFQUNwQyxJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxFQUNuQyxJQUFJLENBQUMscUJBQXFCLENBQUMsWUFBWSxFQUN2QyxJQUFJLENBQUMscUJBQXFCLENBQUMsZ0JBQWdCLENBQzVDLENBQUM7UUFDRixPQUFPLGNBQWMsQ0FBQztJQUN4QixDQUFDO0NBQ0Y7QUF2SUQsb0VBdUlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlLCBCdWlsZFRyYW5zYWN0aW9uRXJyb3IgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBkZWNvZGVGbHVzaFRva2Vuc0RhdGEsIGZsdXNoVG9rZW5zRGF0YSB9IGZyb20gJ0BiaXRnby1iZXRhL2Fic3RyYWN0LWV0aCc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkNsYXVzZSB9IGZyb20gJ0B2ZWNoYWluL3Nkay1jb3JlJztcblxuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuLi90cmFuc2FjdGlvbi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBGbHVzaFRva2VuVHJhbnNhY3Rpb24gfSBmcm9tICcuLi90cmFuc2FjdGlvbi9mbHVzaFRva2VuVHJhbnNhY3Rpb24nO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGNsYXNzIEZsdXNoVG9rZW5UcmFuc2FjdGlvbkJ1aWxkZXIgZXh0ZW5kcyBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBGbHVzaFRva2VuVHJhbnNhY3Rpb25CdWlsZGVyIGluc3RhbmNlLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWRvbmx5PENvaW5Db25maWc+fSBfY29pbkNvbmZpZyAtIFRoZSBjb2luIGNvbmZpZ3VyYXRpb24gb2JqZWN0XG4gICAqL1xuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgdGhlIGJ1aWxkZXIgd2l0aCBhbiBleGlzdGluZyBGbHVzaFRva2VuVHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7Rmx1c2hUb2tlblRyYW5zYWN0aW9ufSB0eCAtIFRoZSB0cmFuc2FjdGlvbiB0byBpbml0aWFsaXplIHRoZSBidWlsZGVyIHdpdGhcbiAgICovXG4gIGluaXRCdWlsZGVyKHR4OiBGbHVzaFRva2VuVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IHR4O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGZsdXNoIHRva2VuIHRyYW5zYWN0aW9uIGluc3RhbmNlLlxuICAgKlxuICAgKiBAcmV0dXJucyB7Rmx1c2hUb2tlblRyYW5zYWN0aW9ufSBUaGUgZmx1c2ggdG9rZW4gdHJhbnNhY3Rpb25cbiAgICovXG4gIGdldCBmbHVzaFRva2VuVHJhbnNhY3Rpb24oKTogRmx1c2hUb2tlblRyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb24gYXMgRmx1c2hUb2tlblRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHRyYW5zYWN0aW9uIHR5cGUgZm9yIGZsdXNoIHRva2VuLlxuICAgKlxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25UeXBlfSBUaGUgdHJhbnNhY3Rpb24gdHlwZVxuICAgKi9cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvblR5cGUoKTogVHJhbnNhY3Rpb25UeXBlIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLkZsdXNoVG9rZW5zO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgdHJhbnNhY3Rpb24gY2xhdXNlcyBmb3IgZmx1c2ggdG9rZW4gdHJhbnNhY3Rpb24uXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25DbGF1c2VbXX0gY2xhdXNlcyAtIFRoZSB0cmFuc2FjdGlvbiBjbGF1c2VzIHRvIHZhbGlkYXRlLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBSZXR1cm5zIHRydWUgaWYgdGhlIGNsYXVzZXMgYXJlIHZhbGlkLCBmYWxzZSBvdGhlcndpc2UuXG4gICAqL1xuICBwcm90ZWN0ZWQgaXNWYWxpZFRyYW5zYWN0aW9uQ2xhdXNlcyhjbGF1c2VzOiBUcmFuc2FjdGlvbkNsYXVzZVtdKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghY2xhdXNlcyB8fCAhQXJyYXkuaXNBcnJheShjbGF1c2VzKSB8fCBjbGF1c2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNsYXVzZSA9IGNsYXVzZXNbMF07XG5cbiAgICAgIGlmICghY2xhdXNlLnRvIHx8ICF1dGlscy5pc1ZhbGlkQWRkcmVzcyhjbGF1c2UudG8pKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgLy8gRm9yIGFkZHJlc3MgaW5pdCB0cmFuc2FjdGlvbnMsIHZhbHVlIG11c3QgYmUgZXhhY3RseSAwXG4gICAgICBpZiAoY2xhdXNlLnZhbHVlICE9PSAwKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgeyB0b2tlbkFkZHJlc3MgfSA9IGRlY29kZUZsdXNoVG9rZW5zRGF0YShjbGF1c2UuZGF0YSwgY2xhdXNlLnRvKTtcblxuICAgICAgaWYgKCF1dGlscy5pc1ZhbGlkQWRkcmVzcyh0b2tlbkFkZHJlc3MgYXMgc3RyaW5nKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgdG9rZW4gYWRkcmVzcyBmb3IgdGhpcyB0b2tlbiBmbHVzaCB0eC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3MgLSBUaGUgdG9rZW4gYWRkcmVzcyB0byBiZSBzZXQgZm9yIHRoZSB0b2tlbiBmbHVzaCB0cmFuc2FjdGlvblxuICAgKiBAcmV0dXJucyB7Rmx1c2hUb2tlblRyYW5zYWN0aW9uQnVpbGRlcn0gVGhpcyB0cmFuc2FjdGlvbiBidWlsZGVyXG4gICAqL1xuICB0b2tlbkFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogdGhpcyB7XG4gICAgdGhpcy52YWxpZGF0ZUFkZHJlc3MoeyBhZGRyZXNzIH0pO1xuICAgIHRoaXMuZmx1c2hUb2tlblRyYW5zYWN0aW9uLnRva2VuQWRkcmVzcyA9IGFkZHJlc3M7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgZm9yd2FyZGVyIHZlcnNpb24gZm9yIHRoaXMgdG9rZW4gZmx1c2ggdHJhbnNhY3Rpb24uXG4gICAqIFRoZSBmb3J3YXJkZXIgdmVyc2lvbiBtdXN0IGJlIDQgb3IgaGlnaGVyLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gdmVyc2lvbiAtIFRoZSBmb3J3YXJkZXIgdmVyc2lvbiB0byB1c2UgKG11c3QgYmUgPj0gNClcbiAgICogQHJldHVybnMge0ZsdXNoVG9rZW5UcmFuc2FjdGlvbkJ1aWxkZXJ9IFRoaXMgdHJhbnNhY3Rpb24gYnVpbGRlclxuICAgKiBAdGhyb3dzIHtCdWlsZFRyYW5zYWN0aW9uRXJyb3J9IFdoZW4gdmVyc2lvbiBpcyBsZXNzIHRoYW4gNFxuICAgKi9cbiAgZm9yd2FyZGVyVmVyc2lvbih2ZXJzaW9uOiBudW1iZXIpOiB0aGlzIHtcbiAgICBpZiAodmVyc2lvbiA8IDQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoYEludmFsaWQgZm9yd2FyZGVyIHZlcnNpb246ICR7dmVyc2lvbn1gKTtcbiAgICB9XG5cbiAgICB0aGlzLmZsdXNoVG9rZW5UcmFuc2FjdGlvbi5mb3J3YXJkZXJWZXJzaW9uID0gdmVyc2lvbjtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uPzogRmx1c2hUb2tlblRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgaWYgKCF0cmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd0cmFuc2FjdGlvbiBub3QgZGVmaW5lZCcpO1xuICAgIH1cbiAgICBhc3NlcnQodHJhbnNhY3Rpb24uY29udHJhY3QsICdDb250cmFjdCBhZGRyZXNzIGlzIHJlcXVpcmVkJyk7XG4gICAgYXNzZXJ0KHRyYW5zYWN0aW9uLnRva2VuQWRkcmVzcywgJ1Rva2VuIGFkZHJlc3MgaXMgcmVxdWlyZWQnKTtcblxuICAgIHRoaXMudmFsaWRhdGVBZGRyZXNzKHsgYWRkcmVzczogdHJhbnNhY3Rpb24uY29udHJhY3QgfSk7XG4gICAgdGhpcy52YWxpZGF0ZUFkZHJlc3MoeyBhZGRyZXNzOiB0cmFuc2FjdGlvbi50b2tlbkFkZHJlc3MgfSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkSW1wbGVtZW50YXRpb24oKTogUHJvbWlzZTxUcmFuc2FjdGlvbj4ge1xuICAgIGNvbnN0IHRyYW5zYWN0aW9uRGF0YSA9IHRoaXMuZ2V0Rmx1c2hUb2tlblRyYW5zYWN0aW9uRGF0YSgpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24udHlwZSA9IHRoaXMudHJhbnNhY3Rpb25UeXBlO1xuICAgIHRoaXMuZmx1c2hUb2tlblRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uRGF0YSA9IHRyYW5zYWN0aW9uRGF0YTtcbiAgICBhd2FpdCB0aGlzLmZsdXNoVG9rZW5UcmFuc2FjdGlvbi5idWlsZCgpO1xuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyB0aGUgdHJhbnNhY3Rpb24gZGF0YSBmb3IgZmx1c2ggdG9rZW4gdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHJldHVybnMge3N0cmluZ30gVGhlIGVuY29kZWQgdHJhbnNhY3Rpb24gZGF0YSBhcyBhIGhleCBzdHJpbmdcbiAgICovXG4gIHByaXZhdGUgZ2V0Rmx1c2hUb2tlblRyYW5zYWN0aW9uRGF0YSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGZsdXNoVG9rZW5EYXRhID0gZmx1c2hUb2tlbnNEYXRhKFxuICAgICAgdGhpcy5mbHVzaFRva2VuVHJhbnNhY3Rpb24uY29udHJhY3QsXG4gICAgICB0aGlzLmZsdXNoVG9rZW5UcmFuc2FjdGlvbi50b2tlbkFkZHJlc3MsXG4gICAgICB0aGlzLmZsdXNoVG9rZW5UcmFuc2FjdGlvbi5mb3J3YXJkZXJWZXJzaW9uXG4gICAgKTtcbiAgICByZXR1cm4gZmx1c2hUb2tlbkRhdGE7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import BigNumber from 'bignumber.js';
|
|
2
|
+
import { TransactionClause } from '@vechain/sdk-core';
|
|
3
|
+
import { Recipient, TransactionType } from '@bitgo-beta/sdk-core';
|
|
4
|
+
import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
|
|
5
|
+
import { TransactionBuilder } from './transactionBuilder';
|
|
6
|
+
import { NFTTransaction } from '../transaction/nftTransaction';
|
|
7
|
+
export declare class NFTTransactionBuilder extends TransactionBuilder {
|
|
8
|
+
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
9
|
+
initBuilder(tx: NFTTransaction): void;
|
|
10
|
+
get nftTransaction(): NFTTransaction;
|
|
11
|
+
protected get transactionType(): TransactionType;
|
|
12
|
+
validateRecipientValue(value: BigNumber): void;
|
|
13
|
+
recipients(recipients: Recipient[]): this;
|
|
14
|
+
/**
|
|
15
|
+
* Validates the transaction clauses for NFT transaction.
|
|
16
|
+
* @param {TransactionClause[]} clauses - The transaction clauses to validate.
|
|
17
|
+
* @returns {boolean} - Returns true if the clauses are valid, false otherwise.
|
|
18
|
+
*/
|
|
19
|
+
protected isValidTransactionClauses(clauses: TransactionClause[]): boolean;
|
|
20
|
+
nftCollectionId(nftCollectionId: string): this;
|
|
21
|
+
tokenId(tokenId: string): this;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=nftTransactionBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nftTransactionBuilder.d.ts","sourceRoot":"","sources":["../../../../src/lib/transactionBuilder/nftTransactionBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EAAyB,SAAS,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACzF,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAG/D,qBAAa,qBAAsB,SAAQ,kBAAkB;gBAC/C,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,WAAW,CAAC,EAAE,EAAE,cAAc,GAAG,IAAI;IAIrC,IAAI,cAAc,IAAI,cAAc,CAEnC;IAED,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED,sBAAsB,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAQ9C,UAAU,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,IAAI;IASzC;;;;OAIG;IACH,SAAS,CAAC,yBAAyB,CAAC,OAAO,EAAE,iBAAiB,EAAE,GAAG,OAAO;IAmC1E,eAAe,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI;IAW9C,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;CAQ/B"}
|