@bitgo-beta/sdk-coin-vet 1.0.1-beta.57 → 1.0.1-beta.570

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.
Files changed (151) hide show
  1. package/dist/src/index.d.ts +1 -0
  2. package/dist/src/index.d.ts.map +1 -1
  3. package/dist/src/index.js +2 -1
  4. package/dist/src/lib/constants.d.ts +26 -0
  5. package/dist/src/lib/constants.d.ts.map +1 -1
  6. package/dist/src/lib/constants.js +28 -2
  7. package/dist/src/lib/iface.d.ts +27 -2
  8. package/dist/src/lib/iface.d.ts.map +1 -1
  9. package/dist/src/lib/iface.js +1 -1
  10. package/dist/src/lib/index.d.ts +19 -0
  11. package/dist/src/lib/index.d.ts.map +1 -1
  12. package/dist/src/lib/index.js +40 -2
  13. package/dist/src/lib/transaction/addressInitializationTransaction.d.ts +31 -0
  14. package/dist/src/lib/transaction/addressInitializationTransaction.d.ts.map +1 -0
  15. package/dist/src/lib/transaction/addressInitializationTransaction.js +170 -0
  16. package/dist/src/lib/transaction/burnNftTransaction.d.ts +29 -0
  17. package/dist/src/lib/transaction/burnNftTransaction.d.ts.map +1 -0
  18. package/dist/src/lib/transaction/burnNftTransaction.js +138 -0
  19. package/dist/src/lib/transaction/claimRewards.d.ts +31 -0
  20. package/dist/src/lib/transaction/claimRewards.d.ts.map +1 -0
  21. package/dist/src/lib/transaction/claimRewards.js +151 -0
  22. package/dist/src/lib/transaction/delegateClauseTransaction.d.ts +27 -0
  23. package/dist/src/lib/transaction/delegateClauseTransaction.d.ts.map +1 -0
  24. package/dist/src/lib/transaction/delegateClauseTransaction.js +158 -0
  25. package/dist/src/lib/transaction/exitDelegation.d.ts +29 -0
  26. package/dist/src/lib/transaction/exitDelegation.d.ts.map +1 -0
  27. package/dist/src/lib/transaction/exitDelegation.js +143 -0
  28. package/dist/src/lib/transaction/flushTokenTransaction.d.ts +20 -0
  29. package/dist/src/lib/transaction/flushTokenTransaction.d.ts.map +1 -0
  30. package/dist/src/lib/transaction/flushTokenTransaction.js +98 -0
  31. package/dist/src/lib/transaction/nftTransaction.d.ts +17 -0
  32. package/dist/src/lib/transaction/nftTransaction.d.ts.map +1 -0
  33. package/dist/src/lib/transaction/nftTransaction.js +108 -0
  34. package/dist/src/lib/transaction/stakeClauseTransaction.d.ts +27 -0
  35. package/dist/src/lib/transaction/stakeClauseTransaction.d.ts.map +1 -0
  36. package/dist/src/lib/transaction/stakeClauseTransaction.js +158 -0
  37. package/dist/src/lib/transaction/stakingTransaction.d.ts +31 -0
  38. package/dist/src/lib/transaction/stakingTransaction.d.ts.map +1 -0
  39. package/dist/src/lib/transaction/stakingTransaction.js +169 -0
  40. package/dist/src/lib/transaction/tokenTransaction.d.ts +14 -0
  41. package/dist/src/lib/transaction/tokenTransaction.d.ts.map +1 -0
  42. package/dist/src/lib/transaction/tokenTransaction.js +95 -0
  43. package/dist/src/lib/transaction/transaction.d.ts +18 -28
  44. package/dist/src/lib/transaction/transaction.d.ts.map +1 -1
  45. package/dist/src/lib/transaction/transaction.js +98 -58
  46. package/dist/src/lib/transactionBuilder/addressInitializationBuilder.d.ts +78 -0
  47. package/dist/src/lib/transactionBuilder/addressInitializationBuilder.d.ts.map +1 -0
  48. package/dist/src/lib/transactionBuilder/addressInitializationBuilder.js +158 -0
  49. package/dist/src/lib/transactionBuilder/burnNftBuilder.d.ts +59 -0
  50. package/dist/src/lib/transactionBuilder/burnNftBuilder.d.ts.map +1 -0
  51. package/dist/src/lib/transactionBuilder/burnNftBuilder.js +118 -0
  52. package/dist/src/lib/transactionBuilder/claimRewardsBuilder.d.ts +59 -0
  53. package/dist/src/lib/transactionBuilder/claimRewardsBuilder.d.ts.map +1 -0
  54. package/dist/src/lib/transactionBuilder/claimRewardsBuilder.js +117 -0
  55. package/dist/src/lib/transactionBuilder/delegateTxnBuilder.d.ts +72 -0
  56. package/dist/src/lib/transactionBuilder/delegateTxnBuilder.d.ts.map +1 -0
  57. package/dist/src/lib/transactionBuilder/delegateTxnBuilder.js +133 -0
  58. package/dist/src/lib/transactionBuilder/exitDelegationBuilder.d.ts +59 -0
  59. package/dist/src/lib/transactionBuilder/exitDelegationBuilder.d.ts.map +1 -0
  60. package/dist/src/lib/transactionBuilder/exitDelegationBuilder.js +118 -0
  61. package/dist/src/lib/transactionBuilder/flushTokenTransactionBuilder.d.ts +66 -0
  62. package/dist/src/lib/transactionBuilder/flushTokenTransactionBuilder.d.ts.map +1 -0
  63. package/dist/src/lib/transactionBuilder/flushTokenTransactionBuilder.js +129 -0
  64. package/dist/src/lib/transactionBuilder/nftTransactionBuilder.d.ts +23 -0
  65. package/dist/src/lib/transactionBuilder/nftTransactionBuilder.d.ts.map +1 -0
  66. package/dist/src/lib/transactionBuilder/nftTransactionBuilder.js +93 -0
  67. package/dist/src/lib/transactionBuilder/stakeClauseTxnBuilder.d.ts +73 -0
  68. package/dist/src/lib/transactionBuilder/stakeClauseTxnBuilder.d.ts.map +1 -0
  69. package/dist/src/lib/transactionBuilder/stakeClauseTxnBuilder.js +146 -0
  70. package/dist/src/lib/transactionBuilder/stakingBuilder.d.ts +73 -0
  71. package/dist/src/lib/transactionBuilder/stakingBuilder.d.ts.map +1 -0
  72. package/dist/src/lib/transactionBuilder/stakingBuilder.js +147 -0
  73. package/dist/src/lib/transactionBuilder/tokenTransactionBuilder.d.ts +21 -0
  74. package/dist/src/lib/transactionBuilder/tokenTransactionBuilder.d.ts.map +1 -0
  75. package/dist/src/lib/transactionBuilder/tokenTransactionBuilder.js +70 -0
  76. package/dist/src/lib/transactionBuilder/transactionBuilder.d.ts +10 -9
  77. package/dist/src/lib/transactionBuilder/transactionBuilder.d.ts.map +1 -1
  78. package/dist/src/lib/transactionBuilder/transactionBuilder.js +25 -19
  79. package/dist/src/lib/transactionBuilderFactory.d.ts +52 -0
  80. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
  81. package/dist/src/lib/transactionBuilderFactory.js +115 -1
  82. package/dist/src/lib/types.d.ts +21 -0
  83. package/dist/src/lib/types.d.ts.map +1 -1
  84. package/dist/src/lib/types.js +1 -1
  85. package/dist/src/lib/utils.d.ts +98 -1
  86. package/dist/src/lib/utils.d.ts.map +1 -1
  87. package/dist/src/lib/utils.js +262 -8
  88. package/dist/src/register.d.ts.map +1 -1
  89. package/dist/src/register.js +5 -1
  90. package/dist/src/vet.d.ts +94 -3
  91. package/dist/src/vet.d.ts.map +1 -1
  92. package/dist/src/vet.js +505 -10
  93. package/dist/src/vetNFTCollection.d.ts +18 -0
  94. package/dist/src/vetNFTCollection.d.ts.map +1 -0
  95. package/dist/src/vetNFTCollection.js +52 -0
  96. package/dist/src/vetToken.d.ts +1 -1
  97. package/dist/src/vetToken.d.ts.map +1 -1
  98. package/dist/src/vetToken.js +2 -2
  99. package/dist/test/resources/vet.d.ts +73 -0
  100. package/dist/test/resources/vet.d.ts.map +1 -0
  101. package/dist/test/resources/vet.js +128 -0
  102. package/dist/test/transactionBuilder/addressInitializationBuilder.d.ts +2 -0
  103. package/dist/test/transactionBuilder/addressInitializationBuilder.d.ts.map +1 -0
  104. package/dist/test/transactionBuilder/addressInitializationBuilder.js +141 -0
  105. package/dist/test/transactionBuilder/burnNftBuilder.d.ts +2 -0
  106. package/dist/test/transactionBuilder/burnNftBuilder.d.ts.map +1 -0
  107. package/dist/test/transactionBuilder/burnNftBuilder.js +150 -0
  108. package/dist/test/transactionBuilder/claimRewardsBuilder.d.ts +2 -0
  109. package/dist/test/transactionBuilder/claimRewardsBuilder.d.ts.map +1 -0
  110. package/dist/test/transactionBuilder/claimRewardsBuilder.js +175 -0
  111. package/dist/test/transactionBuilder/delegateClauseTxnBuilder.d.ts +2 -0
  112. package/dist/test/transactionBuilder/delegateClauseTxnBuilder.d.ts.map +1 -0
  113. package/dist/test/transactionBuilder/delegateClauseTxnBuilder.js +184 -0
  114. package/dist/test/transactionBuilder/exitDelegationBuilder.d.ts +2 -0
  115. package/dist/test/transactionBuilder/exitDelegationBuilder.d.ts.map +1 -0
  116. package/dist/test/transactionBuilder/exitDelegationBuilder.js +150 -0
  117. package/dist/test/transactionBuilder/flushTokenTransactionBuilder.d.ts +2 -0
  118. package/dist/test/transactionBuilder/flushTokenTransactionBuilder.d.ts.map +1 -0
  119. package/dist/test/transactionBuilder/flushTokenTransactionBuilder.js +132 -0
  120. package/dist/test/transactionBuilder/nftTransactionBuilder.d.ts +2 -0
  121. package/dist/test/transactionBuilder/nftTransactionBuilder.d.ts.map +1 -0
  122. package/dist/test/transactionBuilder/nftTransactionBuilder.js +242 -0
  123. package/dist/test/transactionBuilder/stakeClauseTransactionBuilder.d.ts +2 -0
  124. package/dist/test/transactionBuilder/stakeClauseTransactionBuilder.d.ts.map +1 -0
  125. package/dist/test/transactionBuilder/stakeClauseTransactionBuilder.js +247 -0
  126. package/dist/test/transactionBuilder/stakingTransaction.d.ts +2 -0
  127. package/dist/test/transactionBuilder/stakingTransaction.d.ts.map +1 -0
  128. package/dist/test/transactionBuilder/stakingTransaction.js +250 -0
  129. package/dist/test/transactionBuilder/tokenTransactionBuilder.d.ts +2 -0
  130. package/dist/test/transactionBuilder/tokenTransactionBuilder.d.ts.map +1 -0
  131. package/dist/test/transactionBuilder/tokenTransactionBuilder.js +249 -0
  132. package/dist/test/transactionBuilder/transferBuilder.d.ts +2 -0
  133. package/dist/test/transactionBuilder/transferBuilder.d.ts.map +1 -0
  134. package/dist/test/transactionBuilder/transferBuilder.js +244 -0
  135. package/dist/test/unit/keyPair.d.ts +2 -0
  136. package/dist/test/unit/keyPair.d.ts.map +1 -0
  137. package/dist/test/unit/keyPair.js +181 -0
  138. package/dist/test/unit/stakingFlowE2E.d.ts +2 -0
  139. package/dist/test/unit/stakingFlowE2E.d.ts.map +1 -0
  140. package/dist/test/unit/stakingFlowE2E.js +222 -0
  141. package/dist/test/unit/utils.d.ts +2 -0
  142. package/dist/test/unit/utils.d.ts.map +1 -0
  143. package/dist/test/unit/utils.js +106 -0
  144. package/dist/test/unit/vet.d.ts +2 -0
  145. package/dist/test/unit/vet.d.ts.map +1 -0
  146. package/dist/test/unit/vet.js +336 -0
  147. package/dist/tsconfig.tsbuildinfo +1 -0
  148. package/package.json +16 -10
  149. package/.eslintignore +0 -5
  150. package/.mocharc.yml +0 -8
  151. package/CHANGELOG.md +0 -34
@@ -0,0 +1,93 @@
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.NFTTransactionBuilder = void 0;
7
+ const bignumber_js_1 = __importDefault(require("bignumber.js"));
8
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
9
+ const transactionBuilder_1 = require("./transactionBuilder");
10
+ const utils_1 = __importDefault(require("../utils"));
11
+ class NFTTransactionBuilder extends transactionBuilder_1.TransactionBuilder {
12
+ constructor(_coinConfig) {
13
+ super(_coinConfig);
14
+ }
15
+ initBuilder(tx) {
16
+ super.initBuilder(tx);
17
+ }
18
+ get nftTransaction() {
19
+ return this._transaction;
20
+ }
21
+ get transactionType() {
22
+ return sdk_core_1.TransactionType.SendNFT;
23
+ }
24
+ validateRecipientValue(value) {
25
+ if (value.isNaN()) {
26
+ throw new sdk_core_1.BuildTransactionError('Invalid amount format');
27
+ }
28
+ else if (!value.isEqualTo(1)) {
29
+ throw new sdk_core_1.BuildTransactionError('Value cannot be anything other than 1 for NFT transfer');
30
+ }
31
+ }
32
+ recipients(recipients) {
33
+ for (const recipient of recipients) {
34
+ this.validateAddress({ address: recipient.address });
35
+ this.validateRecipientValue(new bignumber_js_1.default(recipient.amount));
36
+ }
37
+ this.transaction.recipients = recipients;
38
+ return this;
39
+ }
40
+ /**
41
+ * Validates the transaction clauses for NFT transaction.
42
+ * @param {TransactionClause[]} clauses - The transaction clauses to validate.
43
+ * @returns {boolean} - Returns true if the clauses are valid, false otherwise.
44
+ */
45
+ isValidTransactionClauses(clauses) {
46
+ try {
47
+ if (!clauses || !Array.isArray(clauses) || clauses.length === 0) {
48
+ return false;
49
+ }
50
+ const clause = clauses[0];
51
+ if (!clause.to || !utils_1.default.isValidAddress(clause.to)) {
52
+ return false;
53
+ }
54
+ // For NFT transactions, the value should be 0
55
+ if (clause.value !== 0) {
56
+ return false;
57
+ }
58
+ const { recipients, sender } = utils_1.default.decodeTransferNFTData(clause.data);
59
+ const recipientAddress = recipients[0].address.toLowerCase();
60
+ if (!recipientAddress || !utils_1.default.isValidAddress(recipientAddress)) {
61
+ return false;
62
+ }
63
+ if (!sender || !utils_1.default.isValidAddress(sender)) {
64
+ return false;
65
+ }
66
+ return true;
67
+ }
68
+ catch (e) {
69
+ return false;
70
+ }
71
+ }
72
+ nftCollectionId(nftCollectionId) {
73
+ // nftCollectionId is basically a contract address, so we can use the same validation
74
+ try {
75
+ this.validateAddress({ address: nftCollectionId });
76
+ }
77
+ catch (e) {
78
+ throw new sdk_core_1.BuildTransactionError('Invalid nftCollectionId, must be a valid contract address');
79
+ }
80
+ this.nftTransaction.nftCollectionId = nftCollectionId;
81
+ return this;
82
+ }
83
+ tokenId(tokenId) {
84
+ const tokenIdBN = new bignumber_js_1.default(tokenId);
85
+ if (!tokenIdBN.isInteger() || tokenIdBN.isNegative()) {
86
+ throw new Error('Invalid tokenId, must be a non-negative integer');
87
+ }
88
+ this.nftTransaction.tokenId = tokenIdBN.toFixed(0);
89
+ return this;
90
+ }
91
+ }
92
+ exports.NFTTransactionBuilder = NFTTransactionBuilder;
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmZ0VHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbkJ1aWxkZXIvbmZ0VHJhbnNhY3Rpb25CdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGdFQUFxQztBQUdyQyxtREFBeUY7QUFHekYsNkRBQTBEO0FBRTFELHFEQUE2QjtBQUU3QixNQUFhLHFCQUFzQixTQUFRLHVDQUFrQjtJQUMzRCxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsV0FBVyxDQUFDLEVBQWtCO1FBQzVCLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxZQUE4QixDQUFDO0lBQzdDLENBQUM7SUFFRCxJQUFjLGVBQWU7UUFDM0IsT0FBTywwQkFBZSxDQUFDLE9BQU8sQ0FBQztJQUNqQyxDQUFDO0lBRUQsc0JBQXNCLENBQUMsS0FBZ0I7UUFDckMsSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUNsQixNQUFNLElBQUksZ0NBQXFCLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUMzRCxDQUFDO2FBQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUMvQixNQUFNLElBQUksZ0NBQXFCLENBQUMsd0RBQXdELENBQUMsQ0FBQztRQUM1RixDQUFDO0lBQ0gsQ0FBQztJQUVELFVBQVUsQ0FBQyxVQUF1QjtRQUNoQyxLQUFLLE1BQU0sU0FBUyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDckQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksc0JBQVMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUMvRCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQ3pDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7O09BSUc7SUFDTyx5QkFBeUIsQ0FBQyxPQUE0QjtRQUM5RCxJQUFJLENBQUM7WUFDSCxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNoRSxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7WUFFRCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQyxlQUFLLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUNuRCxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7WUFFRCw4Q0FBOEM7WUFDOUMsSUFBSSxNQUFNLENBQUMsS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUN2QixPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7WUFFRCxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLGVBQUssQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFeEUsTUFBTSxnQkFBZ0IsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBRTdELElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLGVBQUssQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDO2dCQUNqRSxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7WUFFRCxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsZUFBSyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUM3QyxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7WUFFRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQztJQUVELGVBQWUsQ0FBQyxlQUF1QjtRQUNyQyxxRkFBcUY7UUFDckYsSUFBSSxDQUFDO1lBQ0gsSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDO1FBQ3JELENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsTUFBTSxJQUFJLGdDQUFxQixDQUFDLDJEQUEyRCxDQUFDLENBQUM7UUFDL0YsQ0FBQztRQUNELElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxHQUFHLGVBQWUsQ0FBQztRQUN0RCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxPQUFPLENBQUMsT0FBZTtRQUNyQixNQUFNLFNBQVMsR0FBRyxJQUFJLHNCQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxTQUFTLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztZQUNyRCxNQUFNLElBQUksS0FBSyxDQUFDLGlEQUFpRCxDQUFDLENBQUM7UUFDckUsQ0FBQztRQUNELElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0NBQ0Y7QUE3RkQsc0RBNkZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25DbGF1c2UgfSBmcm9tICdAdmVjaGFpbi9zZGstY29yZSc7XG5cbmltcG9ydCB7IEJ1aWxkVHJhbnNhY3Rpb25FcnJvciwgUmVjaXBpZW50LCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5cbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IE5GVFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vdHJhbnNhY3Rpb24vbmZ0VHJhbnNhY3Rpb24nO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGNsYXNzIE5GVFRyYW5zYWN0aW9uQnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIGluaXRCdWlsZGVyKHR4OiBORlRUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHN1cGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgfVxuXG4gIGdldCBuZnRUcmFuc2FjdGlvbigpOiBORlRUcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uIGFzIE5GVFRyYW5zYWN0aW9uO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvblR5cGUoKTogVHJhbnNhY3Rpb25UeXBlIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLlNlbmRORlQ7XG4gIH1cblxuICB2YWxpZGF0ZVJlY2lwaWVudFZhbHVlKHZhbHVlOiBCaWdOdW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodmFsdWUuaXNOYU4oKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBhbW91bnQgZm9ybWF0Jyk7XG4gICAgfSBlbHNlIGlmICghdmFsdWUuaXNFcXVhbFRvKDEpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdWYWx1ZSBjYW5ub3QgYmUgYW55dGhpbmcgb3RoZXIgdGhhbiAxIGZvciBORlQgdHJhbnNmZXInKTtcbiAgICB9XG4gIH1cblxuICByZWNpcGllbnRzKHJlY2lwaWVudHM6IFJlY2lwaWVudFtdKTogdGhpcyB7XG4gICAgZm9yIChjb25zdCByZWNpcGllbnQgb2YgcmVjaXBpZW50cykge1xuICAgICAgdGhpcy52YWxpZGF0ZUFkZHJlc3MoeyBhZGRyZXNzOiByZWNpcGllbnQuYWRkcmVzcyB9KTtcbiAgICAgIHRoaXMudmFsaWRhdGVSZWNpcGllbnRWYWx1ZShuZXcgQmlnTnVtYmVyKHJlY2lwaWVudC5hbW91bnQpKTtcbiAgICB9XG4gICAgdGhpcy50cmFuc2FjdGlvbi5yZWNpcGllbnRzID0gcmVjaXBpZW50cztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIHRyYW5zYWN0aW9uIGNsYXVzZXMgZm9yIE5GVCB0cmFuc2FjdGlvbi5cbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbkNsYXVzZVtdfSBjbGF1c2VzIC0gVGhlIHRyYW5zYWN0aW9uIGNsYXVzZXMgdG8gdmFsaWRhdGUuXG4gICAqIEByZXR1cm5zIHtib29sZWFufSAtIFJldHVybnMgdHJ1ZSBpZiB0aGUgY2xhdXNlcyBhcmUgdmFsaWQsIGZhbHNlIG90aGVyd2lzZS5cbiAgICovXG4gIHByb3RlY3RlZCBpc1ZhbGlkVHJhbnNhY3Rpb25DbGF1c2VzKGNsYXVzZXM6IFRyYW5zYWN0aW9uQ2xhdXNlW10pOiBib29sZWFuIHtcbiAgICB0cnkge1xuICAgICAgaWYgKCFjbGF1c2VzIHx8ICFBcnJheS5pc0FycmF5KGNsYXVzZXMpIHx8IGNsYXVzZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY2xhdXNlID0gY2xhdXNlc1swXTtcblxuICAgICAgaWYgKCFjbGF1c2UudG8gfHwgIXV0aWxzLmlzVmFsaWRBZGRyZXNzKGNsYXVzZS50bykpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICAvLyBGb3IgTkZUIHRyYW5zYWN0aW9ucywgdGhlIHZhbHVlIHNob3VsZCBiZSAwXG4gICAgICBpZiAoY2xhdXNlLnZhbHVlICE9PSAwKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgeyByZWNpcGllbnRzLCBzZW5kZXIgfSA9IHV0aWxzLmRlY29kZVRyYW5zZmVyTkZURGF0YShjbGF1c2UuZGF0YSk7XG5cbiAgICAgIGNvbnN0IHJlY2lwaWVudEFkZHJlc3MgPSByZWNpcGllbnRzWzBdLmFkZHJlc3MudG9Mb3dlckNhc2UoKTtcblxuICAgICAgaWYgKCFyZWNpcGllbnRBZGRyZXNzIHx8ICF1dGlscy5pc1ZhbGlkQWRkcmVzcyhyZWNpcGllbnRBZGRyZXNzKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGlmICghc2VuZGVyIHx8ICF1dGlscy5pc1ZhbGlkQWRkcmVzcyhzZW5kZXIpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIG5mdENvbGxlY3Rpb25JZChuZnRDb2xsZWN0aW9uSWQ6IHN0cmluZyk6IHRoaXMge1xuICAgIC8vIG5mdENvbGxlY3Rpb25JZCBpcyBiYXNpY2FsbHkgYSBjb250cmFjdCBhZGRyZXNzLCBzbyB3ZSBjYW4gdXNlIHRoZSBzYW1lIHZhbGlkYXRpb25cbiAgICB0cnkge1xuICAgICAgdGhpcy52YWxpZGF0ZUFkZHJlc3MoeyBhZGRyZXNzOiBuZnRDb2xsZWN0aW9uSWQgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBuZnRDb2xsZWN0aW9uSWQsIG11c3QgYmUgYSB2YWxpZCBjb250cmFjdCBhZGRyZXNzJyk7XG4gICAgfVxuICAgIHRoaXMubmZ0VHJhbnNhY3Rpb24ubmZ0Q29sbGVjdGlvbklkID0gbmZ0Q29sbGVjdGlvbklkO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgdG9rZW5JZCh0b2tlbklkOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBjb25zdCB0b2tlbklkQk4gPSBuZXcgQmlnTnVtYmVyKHRva2VuSWQpO1xuICAgIGlmICghdG9rZW5JZEJOLmlzSW50ZWdlcigpIHx8IHRva2VuSWRCTi5pc05lZ2F0aXZlKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB0b2tlbklkLCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGludGVnZXInKTtcbiAgICB9XG4gICAgdGhpcy5uZnRUcmFuc2FjdGlvbi50b2tlbklkID0gdG9rZW5JZEJOLnRvRml4ZWQoMCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,73 @@
1
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
2
+ import { TransactionType } from '@bitgo-beta/sdk-core';
3
+ import { TransactionClause } from '@vechain/sdk-core';
4
+ import { TransactionBuilder } from './transactionBuilder';
5
+ import { Transaction } from '../transaction/transaction';
6
+ import { StakeClauseTransaction } from '../transaction/stakeClauseTransaction';
7
+ export declare class StakeClauseTxnBuilder extends TransactionBuilder {
8
+ /**
9
+ * Creates a new StakingBuilder instance.
10
+ *
11
+ * @param {Readonly<CoinConfig>} _coinConfig - The coin configuration object
12
+ */
13
+ constructor(_coinConfig: Readonly<CoinConfig>);
14
+ /**
15
+ * Initializes the builder with an existing StakingTransaction.
16
+ *
17
+ * @param {StakingTransaction} tx - The transaction to initialize the builder with
18
+ */
19
+ initBuilder(tx: StakeClauseTransaction): void;
20
+ /**
21
+ * Gets the staking transaction instance.
22
+ *
23
+ * @returns {StakingTransaction} The staking transaction
24
+ */
25
+ get stakingTransaction(): StakeClauseTransaction;
26
+ /**
27
+ * Gets the transaction type for staking.
28
+ *
29
+ * @returns {TransactionType} The transaction type
30
+ */
31
+ protected get transactionType(): TransactionType;
32
+ /**
33
+ * Validates the transaction clauses for staking transaction.
34
+ * @param {TransactionClause[]} clauses - The transaction clauses to validate.
35
+ * @returns {boolean} - Returns true if the clauses are valid, false otherwise.
36
+ */
37
+ protected isValidTransactionClauses(clauses: TransactionClause[]): boolean;
38
+ /**
39
+ * Sets the staking contract address for this staking tx.
40
+ * The address must be explicitly provided to ensure the correct contract is used.
41
+ *
42
+ * @param {string} address - The staking contract address (required)
43
+ * @returns {StakingBuilder} This transaction builder
44
+ * @throws {Error} If no address is provided
45
+ */
46
+ stakingContractAddress(address: string): this;
47
+ /**
48
+ * Sets the level ID for this staking tx.
49
+ *
50
+ * @param {number} levelId - The level ID for staking
51
+ * @returns {StakingBuilder} This transaction builder
52
+ */
53
+ levelId(levelId: number): this;
54
+ /**
55
+ * Sets the amount to stake for this staking tx (VET amount being sent).
56
+ *
57
+ * @param {string} amount - The amount to stake in wei
58
+ * @returns {StakingBuilder} This transaction builder
59
+ */
60
+ amountToStake(amount: string): this;
61
+ /**
62
+ * Sets the transaction data for this staking tx.
63
+ *
64
+ * @param {string} data - The transaction data
65
+ * @returns {StakingBuilder} This transaction builder
66
+ */
67
+ transactionData(data: string): this;
68
+ /** @inheritdoc */
69
+ validateTransaction(transaction?: StakeClauseTransaction): void;
70
+ /** @inheritdoc */
71
+ protected buildImplementation(): Promise<Transaction>;
72
+ }
73
+ //# sourceMappingURL=stakeClauseTxnBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stakeClauseTxnBuilder.d.ts","sourceRoot":"","sources":["../../../../src/lib/transactionBuilder/stakeClauseTxnBuilder.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,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAG/E,qBAAa,qBAAsB,SAAQ,kBAAkB;IAC3D;;;;OAIG;gBACS,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C;;;;OAIG;IACH,WAAW,CAAC,EAAE,EAAE,sBAAsB,GAAG,IAAI;IAI7C;;;;OAIG;IACH,IAAI,kBAAkB,IAAI,sBAAsB,CAE/C;IAED;;;;OAIG;IACH,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED;;;;OAIG;IACH,SAAS,CAAC,yBAAyB,CAAC,OAAO,EAAE,iBAAiB,EAAE,GAAG,OAAO;IAuB1E;;;;;;;OAOG;IACH,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAS7C;;;;;OAKG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAK9B;;;;;OAKG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAKnC;;;;;OAKG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKnC,kBAAkB;IAClB,mBAAmB,CAAC,WAAW,CAAC,EAAE,sBAAsB,GAAG,IAAI;IAuB/D,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;CAK5D"}
@@ -0,0 +1,146 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.StakeClauseTxnBuilder = void 0;
7
+ const assert_1 = __importDefault(require("assert"));
8
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
9
+ const transactionBuilder_1 = require("./transactionBuilder");
10
+ const stakeClauseTransaction_1 = require("../transaction/stakeClauseTransaction");
11
+ const utils_1 = __importDefault(require("../utils"));
12
+ class StakeClauseTxnBuilder extends transactionBuilder_1.TransactionBuilder {
13
+ /**
14
+ * Creates a new StakingBuilder instance.
15
+ *
16
+ * @param {Readonly<CoinConfig>} _coinConfig - The coin configuration object
17
+ */
18
+ constructor(_coinConfig) {
19
+ super(_coinConfig);
20
+ this._transaction = new stakeClauseTransaction_1.StakeClauseTransaction(_coinConfig);
21
+ }
22
+ /**
23
+ * Initializes the builder with an existing StakingTransaction.
24
+ *
25
+ * @param {StakingTransaction} tx - The transaction to initialize the builder with
26
+ */
27
+ initBuilder(tx) {
28
+ this._transaction = tx;
29
+ }
30
+ /**
31
+ * Gets the staking transaction instance.
32
+ *
33
+ * @returns {StakingTransaction} The staking transaction
34
+ */
35
+ get stakingTransaction() {
36
+ return this._transaction;
37
+ }
38
+ /**
39
+ * Gets the transaction type for staking.
40
+ *
41
+ * @returns {TransactionType} The transaction type
42
+ */
43
+ get transactionType() {
44
+ return sdk_core_1.TransactionType.StakingActivate;
45
+ }
46
+ /**
47
+ * Validates the transaction clauses for staking transaction.
48
+ * @param {TransactionClause[]} clauses - The transaction clauses to validate.
49
+ * @returns {boolean} - Returns true if the clauses are valid, false otherwise.
50
+ */
51
+ isValidTransactionClauses(clauses) {
52
+ try {
53
+ if (!clauses || !Array.isArray(clauses) || clauses.length === 0) {
54
+ return false;
55
+ }
56
+ const clause = clauses[0];
57
+ if (!clause.to || !utils_1.default.isValidAddress(clause.to)) {
58
+ return false;
59
+ }
60
+ // For staking transactions, value must be greater than 0
61
+ if (!clause.value || clause.value === '0x0' || clause.value === '0') {
62
+ return false;
63
+ }
64
+ return true;
65
+ }
66
+ catch (e) {
67
+ return false;
68
+ }
69
+ }
70
+ /**
71
+ * Sets the staking contract address for this staking tx.
72
+ * The address must be explicitly provided to ensure the correct contract is used.
73
+ *
74
+ * @param {string} address - The staking contract address (required)
75
+ * @returns {StakingBuilder} This transaction builder
76
+ * @throws {Error} If no address is provided
77
+ */
78
+ stakingContractAddress(address) {
79
+ if (!address) {
80
+ throw new Error('Staking contract address is required');
81
+ }
82
+ this.validateAddress({ address });
83
+ this.stakingTransaction.stakingContractAddress = address;
84
+ return this;
85
+ }
86
+ /**
87
+ * Sets the level ID for this staking tx.
88
+ *
89
+ * @param {number} levelId - The level ID for staking
90
+ * @returns {StakingBuilder} This transaction builder
91
+ */
92
+ levelId(levelId) {
93
+ this.stakingTransaction.levelId = levelId;
94
+ return this;
95
+ }
96
+ /**
97
+ * Sets the amount to stake for this staking tx (VET amount being sent).
98
+ *
99
+ * @param {string} amount - The amount to stake in wei
100
+ * @returns {StakingBuilder} This transaction builder
101
+ */
102
+ amountToStake(amount) {
103
+ this.stakingTransaction.amountToStake = amount;
104
+ return this;
105
+ }
106
+ /**
107
+ * Sets the transaction data for this staking tx.
108
+ *
109
+ * @param {string} data - The transaction data
110
+ * @returns {StakingBuilder} This transaction builder
111
+ */
112
+ transactionData(data) {
113
+ this.stakingTransaction.transactionData = data;
114
+ return this;
115
+ }
116
+ /** @inheritdoc */
117
+ validateTransaction(transaction) {
118
+ if (!transaction) {
119
+ throw new Error('transaction not defined');
120
+ }
121
+ (0, assert_1.default)(transaction.stakingContractAddress, 'Staking contract address is required');
122
+ (0, assert_1.default)(transaction.amountToStake, 'Amount to stake is required');
123
+ // Validate amount is a valid number string
124
+ if (transaction.amountToStake) {
125
+ try {
126
+ const bn = new (require('bignumber.js'))(transaction.amountToStake);
127
+ if (!bn.isFinite() || bn.isNaN()) {
128
+ throw new Error('Invalid character');
129
+ }
130
+ }
131
+ catch (e) {
132
+ throw new Error('Invalid character');
133
+ }
134
+ }
135
+ (0, assert_1.default)(transaction.levelId, 'Level ID is required');
136
+ this.validateAddress({ address: transaction.stakingContractAddress });
137
+ }
138
+ /** @inheritdoc */
139
+ async buildImplementation() {
140
+ this.transaction.type = this.transactionType;
141
+ await this.stakingTransaction.build();
142
+ return this.transaction;
143
+ }
144
+ }
145
+ exports.StakeClauseTxnBuilder = StakeClauseTxnBuilder;
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rha2VDbGF1c2VUeG5CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbkJ1aWxkZXIvc3Rha2VDbGF1c2VUeG5CdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG9EQUE0QjtBQUU1QixtREFBdUQ7QUFHdkQsNkRBQTBEO0FBRTFELGtGQUErRTtBQUMvRSxxREFBNkI7QUFFN0IsTUFBYSxxQkFBc0IsU0FBUSx1Q0FBa0I7SUFDM0Q7Ozs7T0FJRztJQUNILFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSwrQ0FBc0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFdBQVcsQ0FBQyxFQUEwQjtRQUNwQyxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQUksa0JBQWtCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFlBQXNDLENBQUM7SUFDckQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFjLGVBQWU7UUFDM0IsT0FBTywwQkFBZSxDQUFDLGVBQWUsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLHlCQUF5QixDQUFDLE9BQTRCO1FBQzlELElBQUksQ0FBQztZQUNILElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ2hFLE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztZQUVELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUUxQixJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLGVBQUssQ0FBQyxj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O1FBQ3RDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0NBQ0Y7QUFsSkQsc0RBa0pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25DbGF1c2UgfSBmcm9tICdAdmVjaGFpbi9zZGstY29yZSc7XG5cbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vdHJhbnNhY3Rpb24vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgU3Rha2VDbGF1c2VUcmFuc2FjdGlvbiB9IGZyb20gJy4uL3RyYW5zYWN0aW9uL3N0YWtlQ2xhdXNlVHJhbnNhY3Rpb24nO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGNsYXNzIFN0YWtlQ2xhdXNlVHhuQnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IFN0YWtpbmdCdWlsZGVyIGluc3RhbmNlLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWRvbmx5PENvaW5Db25maWc+fSBfY29pbkNvbmZpZyAtIFRoZSBjb2luIGNvbmZpZ3VyYXRpb24gb2JqZWN0XG4gICAqL1xuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24gPSBuZXcgU3Rha2VDbGF1c2VUcmFuc2FjdGlvbihfY29pbkNvbmZpZyk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgdGhlIGJ1aWxkZXIgd2l0aCBhbiBleGlzdGluZyBTdGFraW5nVHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7U3Rha2luZ1RyYW5zYWN0aW9ufSB0eCAtIFRoZSB0cmFuc2FjdGlvbiB0byBpbml0aWFsaXplIHRoZSBidWlsZGVyIHdpdGhcbiAgICovXG4gIGluaXRCdWlsZGVyKHR4OiBTdGFrZUNsYXVzZVRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24gPSB0eDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBzdGFraW5nIHRyYW5zYWN0aW9uIGluc3RhbmNlLlxuICAgKlxuICAgKiBAcmV0dXJucyB7U3Rha2luZ1RyYW5zYWN0aW9ufSBUaGUgc3Rha2luZyB0cmFuc2FjdGlvblxuICAgKi9cbiAgZ2V0IHN0YWtpbmdUcmFuc2FjdGlvbigpOiBTdGFrZUNsYXVzZVRyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb24gYXMgU3Rha2VDbGF1c2VUcmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSB0cmFuc2FjdGlvbiB0eXBlIGZvciBzdGFraW5nLlxuICAgKlxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25UeXBlfSBUaGUgdHJhbnNhY3Rpb24gdHlwZVxuICAgKi9cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvblR5cGUoKTogVHJhbnNhY3Rpb25UeXBlIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdBY3RpdmF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIHRyYW5zYWN0aW9uIGNsYXVzZXMgZm9yIHN0YWtpbmcgdHJhbnNhY3Rpb24uXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25DbGF1c2VbXX0gY2xhdXNlcyAtIFRoZSB0cmFuc2FjdGlvbiBjbGF1c2VzIHRvIHZhbGlkYXRlLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBSZXR1cm5zIHRydWUgaWYgdGhlIGNsYXVzZXMgYXJlIHZhbGlkLCBmYWxzZSBvdGhlcndpc2UuXG4gICAqL1xuICBwcm90ZWN0ZWQgaXNWYWxpZFRyYW5zYWN0aW9uQ2xhdXNlcyhjbGF1c2VzOiBUcmFuc2FjdGlvbkNsYXVzZVtdKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghY2xhdXNlcyB8fCAhQXJyYXkuaXNBcnJheShjbGF1c2VzKSB8fCBjbGF1c2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNsYXVzZSA9IGNsYXVzZXNbMF07XG5cbiAgICAgIGlmICghY2xhdXNlLnRvIHx8ICF1dGlscy5pc1ZhbGlkQWRkcmVzcyhjbGF1c2UudG8pKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgLy8gRm9yIHN0YWtpbmcgdHJhbnNhY3Rpb25zLCB2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwXG4gICAgICBpZiAoIWNsYXVzZS52YWx1ZSB8fCBjbGF1c2UudmFsdWUgPT09ICcweDAnIHx8IGNsYXVzZS52YWx1ZSA9PT0gJzAnKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBzdGFraW5nIGNvbnRyYWN0IGFkZHJlc3MgZm9yIHRoaXMgc3Rha2luZyB0eC5cbiAgICogVGhlIGFkZHJlc3MgbXVzdCBiZSBleHBsaWNpdGx5IHByb3ZpZGVkIHRvIGVuc3VyZSB0aGUgY29ycmVjdCBjb250cmFjdCBpcyB1c2VkLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWRkcmVzcyAtIFRoZSBzdGFraW5nIGNvbnRyYWN0IGFkZHJlc3MgKHJlcXVpcmVkKVxuICAgKiBAcmV0dXJucyB7U3Rha2luZ0J1aWxkZXJ9IFRoaXMgdHJhbnNhY3Rpb24gYnVpbGRlclxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgbm8gYWRkcmVzcyBpcyBwcm92aWRlZFxuICAgKi9cbiAgc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAoIWFkZHJlc3MpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU3Rha2luZyBjb250cmFjdCBhZGRyZXNzIGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuICAgIHRoaXMudmFsaWRhdGVBZGRyZXNzKHsgYWRkcmVzcyB9KTtcbiAgICB0aGlzLnN0YWtpbmdUcmFuc2FjdGlvbi5zdGFraW5nQ29udHJhY3RBZGRyZXNzID0gYWRkcmVzcztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBsZXZlbCBJRCBmb3IgdGhpcyBzdGFraW5nIHR4LlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gbGV2ZWxJZCAtIFRoZSBsZXZlbCBJRCBmb3Igc3Rha2luZ1xuICAgKiBAcmV0dXJucyB7U3Rha2luZ0J1aWxkZXJ9IFRoaXMgdHJhbnNhY3Rpb24gYnVpbGRlclxuICAgKi9cbiAgbGV2ZWxJZChsZXZlbElkOiBudW1iZXIpOiB0aGlzIHtcbiAgICB0aGlzLnN0YWtpbmdUcmFuc2FjdGlvbi5sZXZlbElkID0gbGV2ZWxJZDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBhbW91bnQgdG8gc3Rha2UgZm9yIHRoaXMgc3Rha2luZyB0eCAoVkVUIGFtb3VudCBiZWluZyBzZW50KS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFtb3VudCAtIFRoZSBhbW91bnQgdG8gc3Rha2UgaW4gd2VpXG4gICAqIEByZXR1cm5zIHtTdGFraW5nQnVpbGRlcn0gVGhpcyB0cmFuc2FjdGlvbiBidWlsZGVyXG4gICAqL1xuICBhbW91bnRUb1N0YWtlKGFtb3VudDogc3RyaW5nKTogdGhpcyB7XG4gICAgdGhpcy5zdGFraW5nVHJhbnNhY3Rpb24uYW1vdW50VG9TdGFrZSA9IGFtb3VudDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB0cmFuc2FjdGlvbiBkYXRhIGZvciB0aGlzIHN0YWtpbmcgdHguXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhIC0gVGhlIHRyYW5zYWN0aW9uIGRhdGFcbiAgICogQHJldHVybnMge1N0YWtpbmdCdWlsZGVyfSBUaGlzIHRyYW5zYWN0aW9uIGJ1aWxkZXJcbiAgICovXG4gIHRyYW5zYWN0aW9uRGF0YShkYXRhOiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLnN0YWtpbmdUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkRhdGEgPSBkYXRhO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24/OiBTdGFrZUNsYXVzZVRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgaWYgKCF0cmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd0cmFuc2FjdGlvbiBub3QgZGVmaW5lZCcpO1xuICAgIH1cbiAgICBhc3NlcnQodHJhbnNhY3Rpb24uc3Rha2luZ0NvbnRyYWN0QWRkcmVzcywgJ1N0YWtpbmcgY29udHJhY3QgYWRkcmVzcyBpcyByZXF1aXJlZCcpO1xuICAgIGFzc2VydCh0cmFuc2FjdGlvbi5hbW91bnRUb1N0YWtlLCAnQW1vdW50IHRvIHN0YWtlIGlzIHJlcXVpcmVkJyk7XG5cbiAgICAvLyBWYWxpZGF0ZSBhbW91bnQgaXMgYSB2YWxpZCBudW1iZXIgc3RyaW5nXG4gICAgaWYgKHRyYW5zYWN0aW9uLmFtb3VudFRvU3Rha2UpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGJuID0gbmV3IChyZXF1aXJlKCdiaWdudW1iZXIuanMnKSkodHJhbnNhY3Rpb24uYW1vdW50VG9TdGFrZSk7XG4gICAgICAgIGlmICghYm4uaXNGaW5pdGUoKSB8fCBibi5pc05hTigpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGNoYXJhY3RlcicpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjaGFyYWN0ZXInKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhc3NlcnQodHJhbnNhY3Rpb24ubGV2ZWxJZCwgJ0xldmVsIElEIGlzIHJlcXVpcmVkJyk7XG4gICAgdGhpcy52YWxpZGF0ZUFkZHJlc3MoeyBhZGRyZXNzOiB0cmFuc2FjdGlvbi5zdGFraW5nQ29udHJhY3RBZGRyZXNzIH0pO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBhc3luYyBidWlsZEltcGxlbWVudGF0aW9uKCk6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnR5cGUgPSB0aGlzLnRyYW5zYWN0aW9uVHlwZTtcbiAgICBhd2FpdCB0aGlzLnN0YWtpbmdUcmFuc2FjdGlvbi5idWlsZCgpO1xuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,73 @@
1
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
2
+ import { TransactionType } from '@bitgo-beta/sdk-core';
3
+ import { TransactionClause } from '@vechain/sdk-core';
4
+ import { TransactionBuilder } from './transactionBuilder';
5
+ import { Transaction } from '../transaction/transaction';
6
+ import { StakingTransaction } from '../transaction/stakingTransaction';
7
+ export declare class StakingBuilder extends TransactionBuilder {
8
+ /**
9
+ * Creates a new StakingBuilder instance.
10
+ *
11
+ * @param {Readonly<CoinConfig>} _coinConfig - The coin configuration object
12
+ */
13
+ constructor(_coinConfig: Readonly<CoinConfig>);
14
+ /**
15
+ * Initializes the builder with an existing StakingTransaction.
16
+ *
17
+ * @param {StakingTransaction} tx - The transaction to initialize the builder with
18
+ */
19
+ initBuilder(tx: StakingTransaction): void;
20
+ /**
21
+ * Gets the staking transaction instance.
22
+ *
23
+ * @returns {StakingTransaction} The staking transaction
24
+ */
25
+ get stakingTransaction(): StakingTransaction;
26
+ /**
27
+ * Gets the transaction type for staking.
28
+ *
29
+ * @returns {TransactionType} The transaction type
30
+ */
31
+ protected get transactionType(): TransactionType;
32
+ /**
33
+ * Validates the transaction clauses for staking transaction.
34
+ * @param {TransactionClause[]} clauses - The transaction clauses to validate.
35
+ * @returns {boolean} - Returns true if the clauses are valid, false otherwise.
36
+ */
37
+ protected isValidTransactionClauses(clauses: TransactionClause[]): boolean;
38
+ /**
39
+ * Sets the staking contract address for this staking tx.
40
+ * The address must be explicitly provided to ensure the correct contract is used.
41
+ *
42
+ * @param {string} address - The staking contract address (required)
43
+ * @returns {StakingBuilder} This transaction builder
44
+ * @throws {Error} If no address is provided
45
+ */
46
+ stakingContractAddress(address: string): this;
47
+ /**
48
+ * Sets the level ID for this staking tx.
49
+ *
50
+ * @param {number} levelId - The level ID for staking
51
+ * @returns {StakingBuilder} This transaction builder
52
+ */
53
+ levelId(levelId: number): this;
54
+ /**
55
+ * Sets the amount to stake for this staking tx (VET amount being sent).
56
+ *
57
+ * @param {string} amount - The amount to stake in wei
58
+ * @returns {StakingBuilder} This transaction builder
59
+ */
60
+ amountToStake(amount: string): this;
61
+ /**
62
+ * Sets the transaction data for this staking tx.
63
+ *
64
+ * @param {string} data - The transaction data
65
+ * @returns {StakingBuilder} This transaction builder
66
+ */
67
+ transactionData(data: string): this;
68
+ /** @inheritdoc */
69
+ validateTransaction(transaction?: StakingTransaction): void;
70
+ /** @inheritdoc */
71
+ protected buildImplementation(): Promise<Transaction>;
72
+ }
73
+ //# sourceMappingURL=stakingBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stakingBuilder.d.ts","sourceRoot":"","sources":["../../../../src/lib/transactionBuilder/stakingBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAGvE,qBAAa,cAAe,SAAQ,kBAAkB;IACpD;;;;OAIG;gBACS,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C;;;;OAIG;IACH,WAAW,CAAC,EAAE,EAAE,kBAAkB,GAAG,IAAI;IAIzC;;;;OAIG;IACH,IAAI,kBAAkB,IAAI,kBAAkB,CAE3C;IAED;;;;OAIG;IACH,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED;;;;OAIG;IACH,SAAS,CAAC,yBAAyB,CAAC,OAAO,EAAE,iBAAiB,EAAE,GAAG,OAAO;IAuB1E;;;;;;;OAOG;IACH,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAS7C;;;;;OAKG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAK9B;;;;;OAKG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAKnC;;;;;OAKG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKnC,kBAAkB;IAClB,mBAAmB,CAAC,WAAW,CAAC,EAAE,kBAAkB,GAAG,IAAI;IAwB3D,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;CAK5D"}
@@ -0,0 +1,147 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.StakingBuilder = void 0;
7
+ const assert_1 = __importDefault(require("assert"));
8
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
9
+ const transactionBuilder_1 = require("./transactionBuilder");
10
+ const stakingTransaction_1 = require("../transaction/stakingTransaction");
11
+ const utils_1 = __importDefault(require("../utils"));
12
+ class StakingBuilder extends transactionBuilder_1.TransactionBuilder {
13
+ /**
14
+ * Creates a new StakingBuilder instance.
15
+ *
16
+ * @param {Readonly<CoinConfig>} _coinConfig - The coin configuration object
17
+ */
18
+ constructor(_coinConfig) {
19
+ super(_coinConfig);
20
+ this._transaction = new stakingTransaction_1.StakingTransaction(_coinConfig);
21
+ }
22
+ /**
23
+ * Initializes the builder with an existing StakingTransaction.
24
+ *
25
+ * @param {StakingTransaction} tx - The transaction to initialize the builder with
26
+ */
27
+ initBuilder(tx) {
28
+ this._transaction = tx;
29
+ }
30
+ /**
31
+ * Gets the staking transaction instance.
32
+ *
33
+ * @returns {StakingTransaction} The staking transaction
34
+ */
35
+ get stakingTransaction() {
36
+ return this._transaction;
37
+ }
38
+ /**
39
+ * Gets the transaction type for staking.
40
+ *
41
+ * @returns {TransactionType} The transaction type
42
+ */
43
+ get transactionType() {
44
+ return sdk_core_1.TransactionType.ContractCall;
45
+ }
46
+ /**
47
+ * Validates the transaction clauses for staking transaction.
48
+ * @param {TransactionClause[]} clauses - The transaction clauses to validate.
49
+ * @returns {boolean} - Returns true if the clauses are valid, false otherwise.
50
+ */
51
+ isValidTransactionClauses(clauses) {
52
+ try {
53
+ if (!clauses || !Array.isArray(clauses) || clauses.length === 0) {
54
+ return false;
55
+ }
56
+ const clause = clauses[0];
57
+ if (!clause.to || !utils_1.default.isValidAddress(clause.to)) {
58
+ return false;
59
+ }
60
+ // For staking transactions, value must be greater than 0
61
+ if (!clause.value || clause.value === '0x0' || clause.value === '0') {
62
+ return false;
63
+ }
64
+ return true;
65
+ }
66
+ catch (e) {
67
+ return false;
68
+ }
69
+ }
70
+ /**
71
+ * Sets the staking contract address for this staking tx.
72
+ * The address must be explicitly provided to ensure the correct contract is used.
73
+ *
74
+ * @param {string} address - The staking contract address (required)
75
+ * @returns {StakingBuilder} This transaction builder
76
+ * @throws {Error} If no address is provided
77
+ */
78
+ stakingContractAddress(address) {
79
+ if (!address) {
80
+ throw new Error('Staking contract address is required');
81
+ }
82
+ this.validateAddress({ address });
83
+ this.stakingTransaction.stakingContractAddress = address;
84
+ return this;
85
+ }
86
+ /**
87
+ * Sets the level ID for this staking tx.
88
+ *
89
+ * @param {number} levelId - The level ID for staking
90
+ * @returns {StakingBuilder} This transaction builder
91
+ */
92
+ levelId(levelId) {
93
+ this.stakingTransaction.levelId = levelId;
94
+ return this;
95
+ }
96
+ /**
97
+ * Sets the amount to stake for this staking tx (VET amount being sent).
98
+ *
99
+ * @param {string} amount - The amount to stake in wei
100
+ * @returns {StakingBuilder} This transaction builder
101
+ */
102
+ amountToStake(amount) {
103
+ this.stakingTransaction.amountToStake = amount;
104
+ return this;
105
+ }
106
+ /**
107
+ * Sets the transaction data for this staking tx.
108
+ *
109
+ * @param {string} data - The transaction data
110
+ * @returns {StakingBuilder} This transaction builder
111
+ */
112
+ transactionData(data) {
113
+ this.stakingTransaction.transactionData = data;
114
+ return this;
115
+ }
116
+ /** @inheritdoc */
117
+ validateTransaction(transaction) {
118
+ if (!transaction) {
119
+ throw new Error('transaction not defined');
120
+ }
121
+ (0, assert_1.default)(transaction.stakingContractAddress, 'Staking contract address is required');
122
+ (0, assert_1.default)(transaction.amountToStake, 'Amount to stake is required');
123
+ // Validate amount is a valid number string
124
+ if (transaction.amountToStake) {
125
+ try {
126
+ const bn = new (require('bignumber.js'))(transaction.amountToStake);
127
+ if (!bn.isFinite() || bn.isNaN()) {
128
+ throw new Error('Invalid character');
129
+ }
130
+ }
131
+ catch (e) {
132
+ throw new Error('Invalid character');
133
+ }
134
+ }
135
+ (0, assert_1.default)(transaction.levelId, 'Level ID is required');
136
+ (0, assert_1.default)(transaction.autorenew, 'Autorenew flag is required');
137
+ this.validateAddress({ address: transaction.stakingContractAddress });
138
+ }
139
+ /** @inheritdoc */
140
+ async buildImplementation() {
141
+ this.transaction.type = this.transactionType;
142
+ await this.stakingTransaction.build();
143
+ return this.transaction;
144
+ }
145
+ }
146
+ exports.StakingBuilder = StakingBuilder;
147
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rha2luZ0J1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uQnVpbGRlci9zdGFraW5nQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxvREFBNEI7QUFFNUIsbURBQXVEO0FBR3ZELDZEQUEwRDtBQUUxRCwwRUFBdUU7QUFDdkUscURBQTZCO0FBRTdCLE1BQWEsY0FBZSxTQUFRLHVDQUFrQjtJQUNwRDs7OztPQUlHO0lBQ0gsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLHVDQUFrQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsV0FBVyxDQUFDLEVBQXNCO1FBQ2hDLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBSSxrQkFBa0I7UUFDcEIsT0FBTyxJQUFJLENBQUMsWUFBa0MsQ0FBQztJQUNqRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQWMsZUFBZTtRQUMzQixPQUFPLDBCQUFlLENBQUMsWUFBWSxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7OztPQUlHO0lBQ08seUJBQXlCLENBQUMsT0FBNEI7UUFDOUQsSUFBSSxDQUFDO1lBQ0gsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDaEUsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1lBRUQsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRTFCLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLENBQUMsZUFBSyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENB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QyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN0QyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztDQUNGO0FBbkpELHdDQW1KQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQ2xhdXNlIH0gZnJvbSAnQHZlY2hhaW4vc2RrLWNvcmUnO1xuXG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4uL3RyYW5zYWN0aW9uL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IFN0YWtpbmdUcmFuc2FjdGlvbiB9IGZyb20gJy4uL3RyYW5zYWN0aW9uL3N0YWtpbmdUcmFuc2FjdGlvbic7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi4vdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgU3Rha2luZ0J1aWxkZXIgZXh0ZW5kcyBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBTdGFraW5nQnVpbGRlciBpbnN0YW5jZS5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFkb25seTxDb2luQ29uZmlnPn0gX2NvaW5Db25maWcgLSBUaGUgY29pbiBjb25maWd1cmF0aW9uIG9iamVjdFxuICAgKi9cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gbmV3IFN0YWtpbmdUcmFuc2FjdGlvbihfY29pbkNvbmZpZyk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgdGhlIGJ1aWxkZXIgd2l0aCBhbiBleGlzdGluZyBTdGFraW5nVHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7U3Rha2luZ1RyYW5zYWN0aW9ufSB0eCAtIFRoZSB0cmFuc2FjdGlvbiB0byBpbml0aWFsaXplIHRoZSBidWlsZGVyIHdpdGhcbiAgICovXG4gIGluaXRCdWlsZGVyKHR4OiBTdGFraW5nVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IHR4O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHN0YWtpbmcgdHJhbnNhY3Rpb24gaW5zdGFuY2UuXG4gICAqXG4gICAqIEByZXR1cm5zIHtTdGFraW5nVHJhbnNhY3Rpb259IFRoZSBzdGFraW5nIHRyYW5zYWN0aW9uXG4gICAqL1xuICBnZXQgc3Rha2luZ1RyYW5zYWN0aW9uKCk6IFN0YWtpbmdUcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uIGFzIFN0YWtpbmdUcmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSB0cmFuc2FjdGlvbiB0eXBlIGZvciBzdGFraW5nLlxuICAgKlxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25UeXBlfSBUaGUgdHJhbnNhY3Rpb24gdHlwZVxuICAgKi9cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvblR5cGUoKTogVHJhbnNhY3Rpb25UeXBlIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLkNvbnRyYWN0Q2FsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIHRyYW5zYWN0aW9uIGNsYXVzZXMgZm9yIHN0YWtpbmcgdHJhbnNhY3Rpb24uXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25DbGF1c2VbXX0gY2xhdXNlcyAtIFRoZSB0cmFuc2FjdGlvbiBjbGF1c2VzIHRvIHZhbGlkYXRlLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBSZXR1cm5zIHRydWUgaWYgdGhlIGNsYXVzZXMgYXJlIHZhbGlkLCBmYWxzZSBvdGhlcndpc2UuXG4gICAqL1xuICBwcm90ZWN0ZWQgaXNWYWxpZFRyYW5zYWN0aW9uQ2xhdXNlcyhjbGF1c2VzOiBUcmFuc2FjdGlvbkNsYXVzZVtdKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghY2xhdXNlcyB8fCAhQXJyYXkuaXNBcnJheShjbGF1c2VzKSB8fCBjbGF1c2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNsYXVzZSA9IGNsYXVzZXNbMF07XG5cbiAgICAgIGlmICghY2xhdXNlLnRvIHx8ICF1dGlscy5pc1ZhbGlkQWRkcmVzcyhjbGF1c2UudG8pKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgLy8gRm9yIHN0YWtpbmcgdHJhbnNhY3Rpb25zLCB2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwXG4gICAgICBpZiAoIWNsYXVzZS52YWx1ZSB8fCBjbGF1c2UudmFsdWUgPT09ICcweDAnIHx8IGNsYXVzZS52YWx1ZSA9PT0gJzAnKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBzdGFraW5nIGNvbnRyYWN0IGFkZHJlc3MgZm9yIHRoaXMgc3Rha2luZyB0eC5cbiAgICogVGhlIGFkZHJlc3MgbXVzdCBiZSBleHBsaWNpdGx5IHByb3ZpZGVkIHRvIGVuc3VyZSB0aGUgY29ycmVjdCBjb250cmFjdCBpcyB1c2VkLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWRkcmVzcyAtIFRoZSBzdGFraW5nIGNvbnRyYWN0IGFkZHJlc3MgKHJlcXVpcmVkKVxuICAgKiBAcmV0dXJucyB7U3Rha2luZ0J1aWxkZXJ9IFRoaXMgdHJhbnNhY3Rpb24gYnVpbGRlclxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgbm8gYWRkcmVzcyBpcyBwcm92aWRlZFxuICAgKi9cbiAgc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAoIWFkZHJlc3MpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU3Rha2luZyBjb250cmFjdCBhZGRyZXNzIGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuICAgIHRoaXMudmFsaWRhdGVBZGRyZXNzKHsgYWRkcmVzcyB9KTtcbiAgICB0aGlzLnN0YWtpbmdUcmFuc2FjdGlvbi5zdGFraW5nQ29udHJhY3RBZGRyZXNzID0gYWRkcmVzcztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBsZXZlbCBJRCBmb3IgdGhpcyBzdGFraW5nIHR4LlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gbGV2ZWxJZCAtIFRoZSBsZXZlbCBJRCBmb3Igc3Rha2luZ1xuICAgKiBAcmV0dXJucyB7U3Rha2luZ0J1aWxkZXJ9IFRoaXMgdHJhbnNhY3Rpb24gYnVpbGRlclxuICAgKi9cbiAgbGV2ZWxJZChsZXZlbElkOiBudW1iZXIpOiB0aGlzIHtcbiAgICB0aGlzLnN0YWtpbmdUcmFuc2FjdGlvbi5sZXZlbElkID0gbGV2ZWxJZDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBhbW91bnQgdG8gc3Rha2UgZm9yIHRoaXMgc3Rha2luZyB0eCAoVkVUIGFtb3VudCBiZWluZyBzZW50KS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFtb3VudCAtIFRoZSBhbW91bnQgdG8gc3Rha2UgaW4gd2VpXG4gICAqIEByZXR1cm5zIHtTdGFraW5nQnVpbGRlcn0gVGhpcyB0cmFuc2FjdGlvbiBidWlsZGVyXG4gICAqL1xuICBhbW91bnRUb1N0YWtlKGFtb3VudDogc3RyaW5nKTogdGhpcyB7XG4gICAgdGhpcy5zdGFraW5nVHJhbnNhY3Rpb24uYW1vdW50VG9TdGFrZSA9IGFtb3VudDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB0cmFuc2FjdGlvbiBkYXRhIGZvciB0aGlzIHN0YWtpbmcgdHguXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhIC0gVGhlIHRyYW5zYWN0aW9uIGRhdGFcbiAgICogQHJldHVybnMge1N0YWtpbmdCdWlsZGVyfSBUaGlzIHRyYW5zYWN0aW9uIGJ1aWxkZXJcbiAgICovXG4gIHRyYW5zYWN0aW9uRGF0YShkYXRhOiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLnN0YWtpbmdUcmFuc2FjdGlvbi50cmFuc2FjdGlvbkRhdGEgPSBkYXRhO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24/OiBTdGFraW5nVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICBpZiAoIXRyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3RyYW5zYWN0aW9uIG5vdCBkZWZpbmVkJyk7XG4gICAgfVxuICAgIGFzc2VydCh0cmFuc2FjdGlvbi5zdGFraW5nQ29udHJhY3RBZGRyZXNzLCAnU3Rha2luZyBjb250cmFjdCBhZGRyZXNzIGlzIHJlcXVpcmVkJyk7XG4gICAgYXNzZXJ0KHRyYW5zYWN0aW9uLmFtb3VudFRvU3Rha2UsICdBbW91bnQgdG8gc3Rha2UgaXMgcmVxdWlyZWQnKTtcblxuICAgIC8vIFZhbGlkYXRlIGFtb3VudCBpcyBhIHZhbGlkIG51bWJlciBzdHJpbmdcbiAgICBpZiAodHJhbnNhY3Rpb24uYW1vdW50VG9TdGFrZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgYm4gPSBuZXcgKHJlcXVpcmUoJ2JpZ251bWJlci5qcycpKSh0cmFuc2FjdGlvbi5hbW91bnRUb1N0YWtlKTtcbiAgICAgICAgaWYgKCFibi5pc0Zpbml0ZSgpIHx8IGJuLmlzTmFOKCkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgY2hhcmFjdGVyJyk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGNoYXJhY3RlcicpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGFzc2VydCh0cmFuc2FjdGlvbi5sZXZlbElkLCAnTGV2ZWwgSUQgaXMgcmVxdWlyZWQnKTtcbiAgICBhc3NlcnQodHJhbnNhY3Rpb24uYXV0b3JlbmV3LCAnQXV0b3JlbmV3IGZsYWcgaXMgcmVxdWlyZWQnKTtcbiAgICB0aGlzLnZhbGlkYXRlQWRkcmVzcyh7IGFkZHJlc3M6IHRyYW5zYWN0aW9uLnN0YWtpbmdDb250cmFjdEFkZHJlc3MgfSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkSW1wbGVtZW50YXRpb24oKTogUHJvbWlzZTxUcmFuc2FjdGlvbj4ge1xuICAgIHRoaXMudHJhbnNhY3Rpb24udHlwZSA9IHRoaXMudHJhbnNhY3Rpb25UeXBlO1xuICAgIGF3YWl0IHRoaXMuc3Rha2luZ1RyYW5zYWN0aW9uLmJ1aWxkKCk7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb247XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,21 @@
1
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
2
+ import { TransactionType } from '@bitgo-beta/sdk-core';
3
+ import { TransactionClause } from '@vechain/sdk-core';
4
+ import { TransactionBuilder } from './transactionBuilder';
5
+ import { TokenTransaction } from '../transaction/tokenTransaction';
6
+ export declare class TokenTransactionBuilder extends TransactionBuilder {
7
+ constructor(_coinConfig: Readonly<CoinConfig>);
8
+ initBuilder(tx: TokenTransaction): void;
9
+ get tokenTransaction(): TokenTransaction;
10
+ protected get transactionType(): TransactionType;
11
+ /**
12
+ * Validates the transaction clauses for flush token transaction.
13
+ * @param {TransactionClause[]} clauses - The transaction clauses to validate.
14
+ * @returns {boolean} - Returns true if the clauses are valid, false otherwise.
15
+ */
16
+ protected isValidTransactionClauses(clauses: TransactionClause[]): boolean;
17
+ tokenAddress(address: string): this;
18
+ /** @inheritdoc */
19
+ validateTransaction(transaction?: TokenTransaction): void;
20
+ }
21
+ //# sourceMappingURL=tokenTransactionBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenTransactionBuilder.d.ts","sourceRoot":"","sources":["../../../../src/lib/transactionBuilder/tokenTransactionBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAGnE,qBAAa,uBAAwB,SAAQ,kBAAkB;gBACjD,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,WAAW,CAAC,EAAE,EAAE,gBAAgB,GAAG,IAAI;IAIvC,IAAI,gBAAgB,IAAI,gBAAgB,CAEvC;IAED,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED;;;;OAIG;IACH,SAAS,CAAC,yBAAyB,CAAC,OAAO,EAAE,iBAAiB,EAAE,GAAG,OAAO;IA8B1E,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAMnC,kBAAkB;IAClB,mBAAmB,CAAC,WAAW,CAAC,EAAE,gBAAgB,GAAG,IAAI;CAW1D"}